CommunityImagemgithub.com

yasyf/orca

Inicie e supervisione workers Orca através do ponto de entrada canônico Sprite prepare-and-attach, com uma rota local explícita para raízes Opus e a rara atribuição Fable para o trabalho mais sensível, e recupere o que um Dispatch finalizado deixou para trás. Use para despacho de workers, mensagens nativas Run, diagnóstico remoto, encerramento de uma lane concluída ou retorno de fonte.

O que é orca?

O skill 'yasyf/orca' fornece um sistema completo de gerenciamento de workers Orca, utilizando o ponto de entrada canônico 'Sprite prepare-and-attach'. Ele permite iniciar workers em workspaces pré-instalados e ociosos, suportando tanto uma rota remota (Sprite) quanto uma rota local (para raízes Opus ou trabalho extremamente sensível com Fable). O skill gerencia todo o ciclo de vida: desde a alocação exclusiva de workspaces, preparação do ambiente e anexação de tarefas nativas, até a coleta de resultados e retorno de fonte para revisão. É particularmente útil para desenvolvedores que trabalham com Claude Code, Codex ou outras plataformas de agentes, pois mantém workspaces aquecidos para despachos subsequentes, oferece diagnóstico remoto via logs do servidor Orca e gerencia chaves de API de forma segura. A ferramenta também inclui um contrato de retorno de fonte, onde workers concluídos podem ser persistidos para revisão, armazenando artefatos como briefs, resultados de preparação e logs de inicialização em diretórios dedicados.

Funciona com✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/yasyf/cc-skills/tree/HEAD/plugins/orca/skills/orca

Installed? Explore more Imagem skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Workers Orca

Carregue primeiro os guias com versão correspondente: orca skills get orca-cli e orca skills get orchestration. Este skill define o ponto de entrada do worker e o contrato de retorno de fonte.

Cada comando orca orchestration aqui passa --full: desde o Orca 1.4.246 ele imprime uma visão concisa sem isso, o que elimina os campos que estes passos leem. orca-worker-launch.sh e orca-reclaim.py, no PATH através do bin/ deste plugin, passam --full --json por si mesmos. Execute ambos a partir da raiz do checkout.

Valores do repositório

Um repositório que inicia workers verifica .orca.json em sua raiz, e ambas as ferramentas o leem do diretório de trabalho:

{
  "ccRemote": "tools/cc-remote/bin/cc-remote",
  "ccRemoteConfig": "tools/cc-remote/config.yaml",
  "repo": "<orca-repository-id>",
  "baseBranch": "origin/main",
  "sparse": [".agents", ".claude"]
}
ChaveVariável de ambiente que preencheRota
ccRemoteWORKER_CC_REMOTE, a CLI cc-remote, um caminho da raiz do checkout ou um nome de PATHSprite, e orca-reclaim.py
ccRemoteConfigCC_REMOTE_CONFIG, a configuração cc-remote, a partir da raiz do checkoutSprite, e orca-reclaim.py
repoWORKER_REPO, o ID do repositório Orcalocal
baseBranchWORKER_BASE_BRANCH, o branch a partir do qual uma worktree local começalocal
sparseleva a WORKER_SPARSE, o cone esparso da worktree locallocal

Uma variável de ambiente definida prevalece sobre sua chave, e WORKER_SPARSE adiciona diretórios após o cone do arquivo. Cada chave é opcional, e um repositório sem .orca.json passa as variáveis ele mesmo.

Iniciar um worker

Workers de implementação e teste usam por padrão um workspace de agentes Sprite pré-instalado não utilizado. O lançador o reivindica exclusivamente, atualiza o ref solicitado superficialmente, prepara o agente e anexa a Task nativa em uma única invocação. Quando nenhum workspace não utilizado compatível está pronto, ele cria o workspace da lane. Cada alocação inicia um preenchimento de fundo finito em direção à configuração orca.pool.ready, então lançamentos em sequência reivindicam workspaces aquecidos. Workers reivindicados permanecem reivindicados após a conclusão; a reutilização de um agente retido requer um novo Dispatch nativo explícito.

Um nome de lane Sprite tem no máximo 55 letras minúsculas, dígitos e traços, e começa com uma letra ou dígito:

WORKER_RUN="<owned-run-id>" WORKER_REF=<branch> \
  orca-worker-launch.sh "<lane>" "<model>" "<effort>" "<brief.md>"

Execute isso a partir do terminal que já possui o Run nativo nomeado. O script verifica essa vinculação antes da alocação, chama cc-remote orca prepare --warm uma vez, então inicia o worker ocioso preparado com um worker-start nativo no servidor Orca do Sprite, reutilizando seu terminal e worktree preparados. Prepare copia o brief completo para a VM e registra seu hash, tamanho e o HEAD de checkout real. A primeira tarefa é um ponteiro informando ao worker para ler e verificar esse arquivo.

Prepare inicia o runtime Orca do Sprite através de sua CLI orca, e o Orca 1.4.224 o serve em seu servidor gerenciado, orcad. A tarefa preparada registra essa compilação do servidor como managedServer, lida do evento orca serve --json que imprime. O script não inicia nada quando o campo está ausente, o que significa que o Orca recorreu ao Electron. A razão do Orca é a linha [serve] em ~/.cc-remote/orca/serve.log no Sprite.

O lançador executa a CLI que WORKER_CC_REMOTE ou ccRemote nomeia contra a configuração que CC_REMOTE_CONFIG ou ccRemoteConfig nomeia. Com nenhuma CLI definida, ele executa cc-remote do PATH, onde o PATH de uma sessão de longa duração ou uma instalação mais recente do Homebrew pode conter outra versão, então um repositório que fixa sua versão nomeia seu wrapper em ccRemote. Um lançamento Sprite sem configuração recusa antes da alocação.

cc-remote prepara um Sprite apenas quando a CLI é a versão exata do orca.bootstrap_helper da configuração; uma versão de patch mais recente falha como uma antiga, então o pin da CLI e o helper se movem em uma única mudança de pin. Antes da alocação, o lançador compara a version que a CLI selecionada imprime com o bootstrapHelper.version do agents-payload.json ao lado da configuração, links resolvidos, e recusa uma diferença, nomeando ambos. cc-remote faz a mesma verificação por conta própria, mas uma reivindicação aquecida a alcança após o space ser reivindicado, e esse espaço então permanece reivindicado como falho. Uma configuração sem agents-payload.json ao lado dela deixa a verificação para cc-remote.

Quando uma versão assinada recém-instalada trava em seu primeiro lançamento em um Mac, recupere-a você mesmo. Esta é uma recuperação de instalação, nunca uma pergunta para o proprietário. Verifique se o executável selecionado é a versão assinada, remova com.apple.quarantine desse único arquivo e repita seu comando de versão:

exe="$(readlink -f "<selected-executable>")"
codesign --verify --strict --check-notarization --verbose=2 \
  -R='notarized and certificate leaf[subject.OU] = "SXKCTF23Q2"' "$exe" &&
  xattr -d com.apple.quarantine "$exe"
"<selected-cc-remote>" version

xattr imprime No such xattr quando o atributo já se foi. Nunca passe -r, nomeie um diretório ou altere a política de sistema do Gatekeeper.

O lançador não passa --config. Ele exporta CC_REMOTE_CONFIG para cc-remote como um caminho absoluto, e um valor relativo é resolvido a partir do diretório do chamador. A configuração selecionada nomeia o repositório que o Sprite verifica. WORKER_REPO seleciona apenas um repositório Orca local; defini-lo na rota Sprite recusa antes de uma tentativa ou alocação. O lançador não mapeia um ID de repositório local para um repositório remoto.

Forneça outro par binário/configuração, como um runner que mantém uma versão enquanto seu checkout se move, como este:

WORKER_CC_REMOTE=/absolute/path/to/cc-remote \
CC_REMOTE_CONFIG=/absolute/path/to/config.yaml \
WORKER_RUN="<owned-run-id>" WORKER_REF=<branch> \
  orca-worker-launch.sh "<lane>" opus xhigh "<brief.md>"

WORKER_REF nomeia um branch remoto ou tag e passa inalterado; quando omitido, a configuração fornece seu ref. WORKER_BASE_BRANCH pertence à rota de worktree local explícita. Não o passe como o branch remoto, remova prefixos arbitrários ou substitua o ref solicitado por um ID de commit de uma pré-consulta local. O baseCommit do registro preparado é a base real da VM. Definir WORKER_BASE_BRANCH na rota remota recusa; WORKER_REF e WORKER_EXPECT_BASE recusam na rota local.

Movimentos ordinários de branch são válidos. Defina WORKER_EXPECT_BASE apenas quando a tarefa exigir uma base exata. Forneça um ID de commit completo de 40 ou 64 caracteres em minúsculas. O lançador o compara após a preparação; uma discordância retém o worker ocioso preparado e para antes do worker-start. Esta comparação não seleciona o checkout. Prepare não tem uma opção separada de checkout com commit exato, e um nome de branch ou tag ainda é um ref quando sua grafia parece hexadecimal.

Preserve o modelo e esforço selecionados. WORKER_SERVICE_TIER passa um nível de serviço explícito do Codex inalterado; ele recusa com um modelo Claude. O nível rápido é apenas para lanes de incidente: WORKER_SERVICE_TIER=fast recusa a menos que WORKER_INCIDENT=1. Sem um nível, o lançador não passa nenhuma flag de nível de serviço, e o codex executa no nível padrão.

Use WORKER_LOCAL=1 para uma raiz local, que executa Opus, ou para trabalho extremamente sensível autorizado pela raiz, o único caso para Fable:

WORKER_RUN="<owned-run-id>" WORKER_LOCAL=1 \
  orca-worker-launch.sh "<lane>" opus xhigh "<brief.md>"

A rota local recusa sem um repositório e branch base, de WORKER_REPO e WORKER_BASE_BRANCH ou repo e baseBranch.

A worktree local é nomeada <lane>-<primeiros 8 hex do SHA-256 do ID do Run>, então dois Runs nunca cortam um nome. Um segundo lançamento para essa lane no mesmo Run retoma sua worktree ativa; quando a worktree que uma tentativa anterior cortou se foi, o lançamento recusa, porque um nome nunca é cortado duas vezes.

Uma nova worktree local é esparsa sobre sparse seguido pelos diretórios que WORKER_SPARSE nomeia, separados por espaço, e é um checkout completo quando ambos estão vazios. O lançador imprime o comando de alargamento. O brief de uma lane esparsa carrega "esta lane é esparsa: alargue com git sparse-checkout add <dir> antes de ler fora dela".

Um WORKER_LOCAL não definido ou vazio seleciona Sprite; qualquer outro valor não vazio recusa. A rota local inicia apenas Claude e recusa modelos Codex. Fable remoto recusa antes da preparação; ele nunca se transforma em um lançamento local ou um modelo diferente. Claude local mantém a autenticação interativa existente da máquina e o comportamento de bypass com escopo de tarefa. Ele é iniciado simplificado sob lane_env e lane_settings, sem auto-atualização, observador nativo ~/.claude, animação, telemetria ou linha de status, e lane_denied_tools o impede de estacionar em um humano. Sessões interativas e claude plugin update ainda atualizam o cache de plugins. Defina CLAUDE_LANE_SETTINGS como um objeto JSON para adicionar configurações locais.

Inicie apenas os servidores do Model Context Protocol nomeados na lista de permissões da tarefa. No Sprite, WORKER_MCP_CONFIG passa um objeto JSON inline para Claude ou uma tabela TOML inline para Codex para o --mcp-config do prepare; não é um caminho de arquivo local. Na rota local, o valor segue a sintaxe --mcp-config do Claude.

Claude e Codex remotos usam chaves de API dedicadas dos callbacks configurados do cc-remote. Claude usa autenticação de ambiente de API normal; seus processos de ferramentas comuns podem herdar essas chaves. Para Codex, a CLI fixada exclui OPENAI_API_KEY, CODEX_API_KEY, ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN e CLAUDE_CODE_OAUTH_TOKEN de ferramentas shell embutidas. O ator e seus hooks nativos retêm o ambiente necessário para chamadas de API. Essas exclusões não fornecem isolamento de processo ou sistema de arquivos sob modo de bypass.

Mantenha as credenciais de API no ator remoto e seus descendentes permitidos. Avaliadores de hooks locais ao ator podem passar chaves selecionadas para filhos de inferência de curta duração. Mantenha as chaves fora de daemons de hook residentes, imagens, artefatos, logs, arquivos compartilhados e configuração global. Não defina variáveis de chave de API globalmente, substitua a autenticação interativa local ou copie tokens de atualização OAuth ou caches de autenticação inteiros para um worker.

Cada brief reivindica <brief-stem>.worker ao lado do brief. Para /briefs/lane-a.md, isso é /briefs/lane-a.worker. Um diretório existente, link, tentativa falha ou <brief-stem>.dispatch.json legado recusa reprodução. O diretório registra request.json com a rota solicitada, modelo, esforço, nível, ref, base esperada opcional e hash/bytes do brief local.

A rota remota retém o allocation.json, prepare.err e prepare.status brutos. Ela valida a lane solicitada, workspace real, ref solicitado, tipo de alocação, HEAD da tarefa, agente, brief, ambiente, terminal e worktree <repoId>::<projectRoot> antes de extrair a tarefa em prepared.json. Ela então executa worker-start com --on o ambiente preparado, --worktree id:<worktreeId> e --terminal o terminal preparado. Ambas as rotas retêm worker-start.json, worker-start.err e worker-start.status. Mantenha esses arquivos em todos os resultados.

Sucesso requer que worker-start saia com zero e um recibo lendo ok, estado ready, o Run possuído e IDs de Task e Dispatch imprimíveis. IDs em um recibo com falha não o tornam pronto. Sucesso imprime uma linha JSON com os campos state, task, dispatch, terminal e worktree.

No Sprite, o JSON também nomeia lane, o workspace real e allocation (warm ou created). terminal é prepared.terminal e worktree é prepared.projectRoot, o checkout na VM. Use esse workspace real para chamadas posteriores de cc-remote orca collect. Um início com falha ou não comprovado não imprime JSON de sucesso e retém a tentativa sem repetição ou limpeza.

Preparar e anexar separadamente

Use a CLI e configuração selecionadas descritas acima quando a preparação e o anexo da primeira tarefa precisarem de inspeção separada. Este exemplo explícito de agentes Sprite novos retorna uma tarefa preparada simples:

"<selected-cc-remote>" orca prepare "<lane>" --config "<configured-yaml>" \
  --provider sprites --profile agents --agent claude \
  --model claude-opus-5-5 --effort xhigh --ref "<branch-or-tag>" \
  --brief-file "<complete-brief.md>" >"<new-prepared.json>"

Prepare inicia o agente selecionado e para no estado ocioso nativo sem enviar sua tarefa. Exija saída zero do comando, prepared:true, o modelo/esforço solicitado, baseCommit real e hash e tamanho exatos do brief antes do anexo. Para uma atribuição Codex, preserve seu tipo de agente, modelo, esforço e nível de serviço explícito solicitados. Mantenha as credenciais de API nos callbacks somente de processo configurados.

A partir do coordenador que já possui o Run, anexe uma vez com os campos do registro preparado e um novo arquivo de recibo:

orca orchestration worker-start --run "<owned-run-id>" --on "<environment>" \
  --worktree "id:<worktreeId>" --terminal "<terminal>" --task-title "<lane>" \
  --spec "Lane <lane>: leia o brief completo em <brief.path>, verifique se seu SHA-256 é <brief.sha256> e seu tamanho é <brief.bytes> bytes, então siga-o exatamente." \
  --full --json >"<new-receipt.json>"

Isso reutiliza o terminal e worktree preparados e cria a Task nativa com um ponteiro para o brief completo. Não passe agente, modelo, esforço ou nível de serviço, para que o processo preparado mantenha os seus próprios. O recibo pronto nomeia a Task e o Dispatch. O proprietário da caixa de entrada existente lida com suas mensagens; não envie um segundo ponteiro de tarefa ou inicie outro consumidor. Na conclusão aceita, retenha a sessão e use o contrato de retorno de fonte e coleta. Retenha recibos em todos os resultados. Uma falha de criação nova pode executar o rollback normal da CLI; relate os recursos restantes reais e nunca repita uma tentativa ambígua.

Primeiro worker em um workspace registrado

A versão 0.15.0 adiciona --existing somente preparação para um primeiro worker no workspace registrado exato e checkout retido:

"<selected-cc-remote>" orca prepare "<recorded-workspace>" --existing \
  --config "<same-config>" --provider sprites --profile agents --agent claude \
  --model claude-opus-5-5 --effort xhigh --ref "<branch-or-tag>" \
  --brief-file "<complete-brief.md>" >"<new-prepared.json>"

Retenha artefatos e use a rota de coleta separada.

Retornar fonte para revisão de raiz

Workers concluídos que um proprietário aceita como fonte candidata persistem no repositório de artefatos do agente. Use orca-reclaim.py para recolher um worker para revisão de raiz. A ferramenta transfere o diretório .worker no workspace preparado e registra o commit de retorno como uma referência imutável no registro do Run.

export WORKER_CC_REMOTE=<pinned-cli-path>
export CC_REMOTE_CONFIG=<pinned-config-path>
python3 orca-reclaim.py "<lane>" "<owned-run-id>" <path/to/artifact-repo>

Encerrar uma lane

Quando uma lane está concluída ou deve ser abandonada, use o comando nativo de despacho do Orca para encerrá-la. A partir do coordenador que possui o Run:

orca orchestration dispatch-close --run "<owned-run-id>" --dispatch "<native-dispatch-id>"

Enviar mensagens para um worker ativo

Use o sistema de mensagens nativo do Run para comunicação com o worker. A partir do proprietário do Run:

orca orchestration run-message --run "<owned-run-id>" --message "<mensagem>"

Coletar artefatos de um worker concluído

Use orca-reclaim.py para coletar artefatos quando um worker termina, mesmo sem retorno de fonte. Isso preserva briefs, logs de preparação, e arquivos de início:

export WORKER_CC_REMOTE=<pinned-cli-path>
export CC_REMOTE_CONFIG=<pinned-config-path>
python3 orca-reclaim.py "<lane>" "<owned-run-id>" <path/to/artifact-repo> --no-source

Diagnóstico remoto

Quando um worker Sprite falha ao iniciar, verifique os logs no servidor Orca:

# No Sprite, leia o log do servidor
cat ~/.cc-remote/orca/serve.log | grep '\[serve\]'

O campo managedServer no registro preparado indica se o Orca está servindo corretamente. Se estiver ausente, o Orca recorreu ao Electron e o worker não pode iniciar.

Solução de problemas

ProblemaCausa provávelAção
prepare falha com erro de versãoCLI cc-remote não corresponde ao bootstrapHelper.versionAtualize o pin do cc-remote para corresponder à configuração
worker-start falha com recibo inválidoAmbiente, worktree ou terminal preparado são inválidosRefatore e prepare novamente com --existing no workspace registrado
Lane local falha sem worktreeWorktree anterior foi removida ou o nome colidiuUse um novo lane name ou verifique o workspace
Lançamento remoto Fable recusa antes da preparaçãoFable não é suportado em rota remotaUse rota local com WORKER_LOCAL=1 e modelo Opus ou Fable

Individual skills in this repo

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

yasyf/design-doc

Run an assumptions-first architecture design and ship it as an interactive design doc. Ground truths land in a register with stable IDs, every design fork goes through a question round with a recorded escape hatch, an adversarial review attacks the middle draft, and every estimate is gated on a named spike. The deliverable is a registers.json-driven single-file HTML doc that opens on a hand-written executive summary, cites every entry by a human-readable handle, carries declared interactive components, and answers questions in the page when an AI config is deployed beside it, plus a generated PDF, written as a humble proposal that explains and asks for feedback. Use when asked to "write a design doc", "architecture proposal", "help me design <system>", "redesign <system>", "assumptions-first design", or to turn a systems discussion into a reviewable design document.

yasyf/long-running

Runs a multi-lane drive so no coordinator becomes its bottleneck. The session the owner types in is the communicator; a sibling Orca session bound as lane root is the coordinator; a standing meta lane takes every skill, tooling and process change and turns each ruling into a skill update; every question has a verb of the drive tool lr; landing, grading, lane liveness, incident spawn, release tracking and owner updates run as processes that reach the coordinator only with a decision to make. Use when orchestrating multi-lane work, driving a CI or infra bring-up, running a migration or audit across many units, supervising background agents or PR landings, tracking more than ten open PRs, landing PRs through a merge queue from many lanes, or on any task that will plainly exceed one context window.

yasyf/open-pr

Open a pull request that reads like the repo's own maintainers wrote it — pick a depth first, where an express lane for "just open the PR" or "just ship it" orients, writes, and ships without the research passes, and the full lane orients with `ccx vcs lane` and `ccx vcs guidelines`, learns the house style from a bot-filtered sample of recent human-authored merged PRs via a cached per-repo style card, calibrate register against a local wlm voice profile, run a politeness and standards-conformance pass with issue-first handling on repos the user does not own, write the title, body, and commit messages to the repo's own conventions, ship through `ccx vcs ship`, and hand the CI and bot-comment watch to a background pr-watcher agent. Use when opening, submitting, or contributing a pull request, drafting a PR title or body, contributing a change to an open-source repo, or shipping a branch as a PR.

Habilidades Relacionadas