clownfish-cloud-pr

Use ao iniciar o Clownfish em GitHub Actions para criar ou atualizar um PR de implementação protegido a partir de referências de issues/PRs, um relatório do ClawSweeper, um prompt personalizado de mantenedor, ou para ativar um PR do Clownfish existente no automerge revisado pelo ClawSweeper.

O que é clownfish-cloud-pr?

Esta skill permite que o Codex solicite ao Clownfish a criação de um Pull Request na nuvem a partir de referências de issues/PRs combinadas com um prompt personalizado, ou a partir de relatórios do ClawSweeper. Ela suporta a criação de jobs individuais, validação e despacho, além de comandos de mantenedor em comentários (como `/clownfish fix ci`). A skill também implementa um automerge limitado revisado pelo ClawSweeper para PRs existentes do Clownfish, com verificações rigorosas de segurança, como confirmação de hash, checks verdes e portões de merge controlados por variáveis de repositório. Para evitar loops infinitos, há limites máximos de reparos por PR e por head. A skill opera em GitHub Actions, usando scripts determinísticos para escrita de PRs e não concede tokens GitHub aos workers do Codex.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/clownfish-cloud-pr

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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_AUTOMERGE a 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.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Habilidades Relacionadas