Clownfish Cloud PR
Use esta skill quando o usuário quiser que o Codex peça ao Clownfish para criar um PR na nuvem a partir de referências de issues/PRs mais um prompt personalizado.
Início
cd ~/Projects/clownfish
git status --short --branch
gh variable list --repo openclaw/clownfish --json name,value \
--jq 'map(select(.name|test("^CLOWNFISH_"))) | sort_by(.name) | .[] | {name,value}'
Mantenha o merge bloqueado a menos que Peter abra explicitamente. Portões de execução/correção estão fechados a menos que as variáveis do repositório sejam literalmente 1; trabalho normal de correção de PR precisa de uma janela de execução intencional:
gh variable set CLOWNFISH_ALLOW_EXECUTE --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_FIX_PR --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_MERGE --repo openclaw/clownfish --body 0
gh variable set CLOWNFISH_ALLOW_AUTOMERGE --repo openclaw/clownfish --body 0
Reinicie CLOWNFISH_ALLOW_EXECUTE=0 e CLOWNFISH_ALLOW_FIX_PR=0 após a janela. Se essas variáveis estiverem ausentes ou não forem 1, execuções autônomas/de fluxo de trabalho permanecem apenas em modo de planejamento/sem mutação.
Criar Um Job
A partir de referências e um prompt personalizado:
npm run create-job -- \
--repo openclaw/openclaw \
--refs 123,456 \
--prompt-file /tmp/clownfish-prompt.md
A partir de um relatório ClawSweeper:
npm run create-job -- \
--from-report ../clawsweeper/records/openclaw-openclaw/items/123.md
O script verifica se já existe um PR aberto com corpo correspondente e um branch remoto chamado clownfish/<cluster-id> antes de escrever um job duplicado. Use --dry-run para inspecionar o corpo exato do job e --force somente após decidir que a verificação de duplicidade está desatualizada.
Solicitar Um PR de Substituição
A skill pode disparar a escrita de PRs de substituição através do caminho normal create-job e dispatch. Coloque a decisão do mantenedor no prompt:
Trate #123 como trabalho fonte útil. Se o branch fonte não puder ser atualizado com segurança porque não é editável, está obsoleto, é apenas rascunho, não pode ser mesclado ou é inseguro, crie um PR de substituição estreito do Clownfish em vez de esperar. Preserve o autor do PR fonte como co-autor, credite o PR fonte no corpo do PR de substituição e feche apenas o PR fonte após o PR de substituição ser aberto.
O worker deve emitir repair_strategy=replace_uneditable_branch e listar a URL do PR fonte em source_prs. O executor determinístico abre ou atualiza clownfish/<cluster-id>, adiciona autores de PR fonte não-bot como trailers Co-authored-by e fecha o PR fonte substituído somente após o PR de substituição existir. Novos PRs de substituição são bloqueados quando a área tocada já possui CLOWNFISH_MAX_ACTIVE_PRS_PER_AREA PRs do Clownfish abertos.
Validar e Despachar
npm run validate:job -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md
npm run render -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md --mode autonomous >/tmp/clownfish-rendered-prompt.md
git add jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md
git commit -m "chore: add ClawSweeper promoted job"
git push origin main
npm run dispatch -- jobs/openclaw/inbox/clawsweeper-openclaw-openclaw-123.md \
--mode autonomous \
--runner blacksmith-4vcpu-ubuntu-2404 \
--execution-runner blacksmith-16vcpu-ubuntu-2404 \
--model gpt-5.5
Não use --dispatch até que o job seja commitado e enviado; o fluxo de trabalho lê o caminho do job do GitHub.
Comandos de Comentário do Mantenedor
O Clownfish também pode ser acionado a partir de comentários do repositório alvo, mas apenas por mantenedores. Use /clownfish ... ou @openclaw-clownfish ...; não use @clownfish porque é um usuário GitHub separado.
Comandos suportados:
/clownfish status
/clownfish fix ci
/clownfish address review
/clownfish rebase
/clownfish automerge
/clownfish explain
/clownfish stop
@openclaw-clownfish fix ci
O roteador aceita comentários de OWNER, MEMBER e COLLABORATOR por padrão. Comentários de contribuidores são ignorados sem resposta. Comandos de reparo despacham cluster-worker.yml apenas para PRs existentes do Clownfish com a label clownfish ou branch clownfish/*.
npm run comment-router -- --repo openclaw/openclaw --lookback-minutes 180
npm run comment-router -- --repo openclaw/openclaw --execute --wait-for-capacity
O roteamento agendado permanece seco até que CLOWNFISH_COMMENT_ROUTER_EXECUTE=1 seja definido nas variáveis do repositório openclaw/clownfish.
Automerge Limitado Revisado pelo ClawSweeper
Use isso apenas para um PR existente do Clownfish que mapeia de volta para um branch clownfish/* e arquivo de job:
/clownfish automerge
O roteador verifica se o comentarista é um mantenedor, adiciona clownfish:automerge, despacha o ClawSweeper para o head atual do PR e aguarda marcadores confiáveis do ClawSweeper. needs-changes / fix-required despacha o worker de reparo normal. pass, approved ou no-changes podem mesclar apenas quando o SHA do marcador corresponde ao head atual do PR, os checks estão verdes, o GitHub diz que o PR é mesclável, nenhuma label clownfish:human-review está presente e ambos os portões de merge estão abertos:
gh variable set CLOWNFISH_ALLOW_MERGE --repo openclaw/clownfish --body 1
gh variable set CLOWNFISH_ALLOW_AUTOMERGE --repo openclaw/clownfish --body 1
O comando de merge real é fixado com a proteção de correspondência de head do GitHub, portanto um push de branch após a revisão do ClawSweeper não pode mesclar um head não revisado. Se algum portão de merge estiver fechado quando o ClawSweeper passar, o Clownfish rotula o PR como clownfish:merge-ready somente após as verificações de prontidão terem passado; checks com falha, heads obsoletos, conflitos, estado de rascunho ou labels de revisão humana não devem obter essa label. Pause com /clownfish stop, que adiciona clownfish:human-review.
O loop de reparo é limitado por CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_PR (padrão 5) e CLOWNFISH_CLAWSWEEPER_MAX_REPAIRS_PER_HEAD (padrão 1).
Proteções
- Um cluster, um branch, um PR:
clownfish/<cluster-id>. - Nenhum trabalho sensível à segurança.
- Novos PRs de substituição são limitados por área tocada por
CLOWNFISH_MAX_ACTIVE_PRS_PER_AREA. - Não faça merge do Clownfish a menos que Peter peça explicitamente.
- Não abra
CLOWNFISH_ALLOW_AUTOMERGEa menos que Peter peça explicitamente uma janela de automerge. - Não feche duplicatas antes de o caminho de PR de correção existir, ser implantado ou ser comprovadamente desnecessário.
- Workers do Codex não recebem tokens GitHub; scripts determinísticos são responsáveis pelas escritas.