Communitygithub.com

yasyf/orquestração-de-longa-duração

Executa uma unidade de múltiplas vias para que nenhum coordenador se torne um gargalo. A sessão na qual o proprietário digita é o comunicador; uma sessão Orca irmã vinculada como raiz da via é o coordenador; uma metavia permanente captura toda mudança de habilidade, ferramenta e processo e transforma cada decisão em uma atualização da habilidade; cada pergunta tem um verbo da ferramenta de unidade lr; pouso, classificação, atividade da via, criação de incidentes, rastreamento de versões e atualizações do proprietário rodam como processos que alcançam o coordenador apenas com uma decisão a ser tomada. Use ao orquestrar trabalho em múltiplas vias, operar CI ou inicialização de infraestrutura, executar migração ou auditoria em muitas unidades, supervisionar agentes em segundo plano ou pousos de PR, rastrear mais de dez PRs abertos, pousar PRs através de uma fila de merge de muitas vias, ou em qualquer tarefa que claramente exceda uma janela de contexto.

O que é orquestração-de-longa-duração?

Esta habilidade implementa um padrão de orquestração de longa duração para o Claude Code, projetado para gerenciar cargas de trabalho que excedem uma única janela de contexto ou exigem coordenação entre múltiplas vias de execução. Ela estabelece uma arquitetura onde uma sessão 'comunicador' (onde o proprietário interage) trabalha ao lado de uma sessão 'coordenador' (uma sessão Orca irmã) que gerencia a criação de vias, tomada de decisões e roteamento. Uma 'metavia' dedicada captura e aplica mudanças nas habilidades, ferramentas e processos, transformando decisões em atualizações permanentes da habilidade. A habilidade garante que nenhum ponto de decisão serial se torne um gargalo, mantendo o trabalho fluindo através de processos que só alcançam o coordenador quando uma decisão real é necessária. Ela suporta uma ampla gama de cenários, incluindo CI, inicialização de infraestrutura, migrações, auditorias, supervisão de agentes em segundo plano e gerenciamento de múltiplos PRs através de uma fila de merge. A implementação depende de uma ferramenta Go chamada `lr` e segue regras estritas sobre como ler o estado, criar vias para tarefas com corpo e garantir que nenhuma tarefa fique parada ou bloqueada. As decisões são registradas como linhas de razão e aplicadas através da metavia, garantindo que o sistema evolua de forma consistente.

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

Perguntar na sua IA favorita

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

Documentação

Orquestração de longa duração

Um coordenador é um ponto de decisão serial: cada leitura que ele faz e cada decisão roteada através dele espera em uma fila sem relógio, e quando ele satura o trabalho para em silêncio. Esta habilidade impede que qualquer coisa chegue a tal fila.

O nível superior de uma unidade tem duas sessões. O comunicador é a sessão na qual o proprietário digita; seu único trabalho é ele. O coordenador é uma sessão Orca irmã vinculada como via root: ele cria uma via para cada pedido com um corpo no turno em que chega, decide o que um processo escalou e retransmite o que as mesas produzem. Ao lado deles estão a metavia, que captura toda mudança de habilidade, ferramenta e processo e transforma cada decisão em uma atualização da habilidade, e a via de sinal, que monitora o coordenador para que o comunicador nunca precise. Todo o resto é um verbo da ferramenta de unidade lr ou um processo que roda sem nenhum deles. Uma regra aqui nomeia o verbo ou processo que torna uma falha impossível; uma regra sem nenhum deles é um defeito a ser corrigido no pacote.

Esta habilidade está em ~/.claude/CLAUDE.md, que controla a forma de fan-out, roteamento de modelo e profundidade de verificação. O pacote é um binário Go, lr, com os scripts Python que ele substitui mantidos apenas até cada verbo entrar em produção (design).

Três ou mais vias ao mesmo tempo, uma tarefa que ultrapassa uma janela de contexto, uma espera por CI, uma fila, um apply ou soak, ou uma varredura sobre muitas unidades independentes é uma unidade. Uma investigação com uma única via é um subagente em modo direto, não uma unidade.

Índice

Leia o arquivo para sua função

Leia apenas a linha que você está executando. Cada arquivo declara suas regras por completo.

Você éLeia
Respondendo ao proprietário: respostas, escolhas, redesigns, Slack e quadro delecommunicator-brief.md
Renderizando a atualização do proprietário ou mantendo o dashboardowner-report-table.md, drive-dashboard.md
O coordenadorcoordenador-brief.md
A metavia ou seu implementadormeta-lane-brief.md
A via de sinal; a via de tarefassignal-lane-brief.md; chores-lane-brief.md
Escrevendo um brief de via, ou trabalhando como uma via ou mesa sob umorca-lane-brief.md
Rotacionando o contexto de uma via; uma transferência ou uma compactaçãohandoff-subagent-brief.md, compaction.md
Lançando ou retransmitindo trabalhadores Orca, no Mac ou em um Spriteorca-desk-brief.md, orca-workers.md, orca-sprite-workers.md
Pousando um PR, a fila de merge, D1 a D23landing.md, merge-train-brief.md
Classificando um head, um pouso ou um planograding-principles.md, finder-brief.md, finder-desk-brief.md, finder-desk-rows.md, fidelity-desk-brief.md, fidelity-job-brief.md, semantic-collisions-brief.md
Assumindo um vermelho sem proprietáriored-sweep-brief.md
Um alerta ou incidenteactive-alert-brief.md, alert-fix-brief.md, alerts-desk-brief.md, alert-evidence-brief.md, alert-comms-brief.md, unfixed-case-brief.md
Uma versãorelease-lanes.md, manual-release-brief.md
Postando no Slackslack-lane-brief.md, comms-desk-brief.md
Postando ou lendo registros cci, o bus de via, regras Bbus-contracts.md
Registrando ou aplicando uma decisão do proprietário, o registrador, juízesowner-rulings.md
Atividade da via: por que uma via não pode ficar quieta, o supervisor e as vigiassupervisor.md, watchers.md, drive-watchdog-brief.md
O único resultado número um; disputando o proprietário contra uma superfíciepriority-desk-brief.md; user-test-brief.md
Iniciando uma subunidadesub-drives.md
Lendo um grande corpus em vias de correçãoa habilidade bulk-read
Perguntando por que uma regra existe; nenhuma via precisa disso para fazer seu trabalholessons.md

Julgar primeiro

  • Nenhuma regra proíbe ler a única linha em que uma decisão se baseia.
  • Uma constatação em mãos é uma correção, nunca uma via, uma reauditoria ou um workflow.
  • Leia cada frase do proprietário como um colega cuidadoso faria. Uma correção nomeia um defeito na leitura, nunca um redesign de algo que ele decidiu antes; leia as linhas do registrador sobre esse assunto antes de agir. Uma repetição é um relato de defeito sobre a primeira leitura: corrija todo lugar onde ela sobreviveu, naquele turno.

Hooks e recusas

  • Hooks avisam. Eles bloqueiam apenas por confiança: um merge sem a aprovação do proprietário, uma mudança em quem aprova pousos, um revert sem a palavra dele, um runner ou mesa iniciado a partir do comunicador, uma via dirigindo o navegador logado dele em produção, edições nos arquivos de hook instalados e os guards de proteção de sessão. Uma falha de leitura apenas avisa; tests/test_fail_open.py a impõe e lista as exceções, e o hook de permissão do Slack falha aberto (slack-lane-brief.md).
  • Um hook que falha em seu trabalho recebe uma via de correção no turno em que o bloqueia, e você continua trabalhando no que ele não bloqueia. Uma recusa que está correta, como o guard de identidade de produção, não recebe nenhuma. A sessão bloqueada a lança, seja via, mesa, coordenador ou comunicador, sem pedir a root e sem metavia: lr launch lane hook-fix-<hook> opus high <brief> --drive <drive> --lane <you>, a menos que lr lanes hook-fix-<hook> mostre uma ativa.
  • Hooks vivem em plugins/long-running/capt-hook/hooks/ em yasyf/cc-skills e em captain_hook/builtin_packs/ em yasyf/captain-hook, e toda mudança segue captain-hook:authoring-hooks, cujo lint e teste rodam no CI desse repositório. A via de correção corrige o defeito real do hook com um teste de regressão, o envia, o instala onde a sessão bloqueada roda, e sua prova é a chamada recusada passar (orca-lane-brief.md).
  • Corrigir não é contornar: enquanto uma recusa persiste, ninguém executa a coisa bloqueada através de um wrapper, cc-sudo ou script. As regras de segurança do proprietário permanecem como escritas: merge, Slack, testes de carga e o guard de processo. Um hook guardando um deles que falha recebe sua falha corrigida com um teste de regressão, e a regra em si só muda pela palavra dele. O único hook desabilitado antes de sua correção é um que bloqueia toda parada do comunicador: comente-o na fonte do pacote com um TODO nomeando sua via de correção, em um PR mergeado imediatamente, já que uma edição no cache instalado dura apenas até a próxima instalação, que este Mac roda em minutos.
  • Um hook que não bloqueia nada e poderia ser melhor vai para a metavia como um cci post --kind note --to meta-desk. Qualquer outra recusa de ferramenta vai para a metavia no mesmo turno e o trabalho prossegue em seu caminho manual. Nenhuma recusa é desculpa ou pergunta para o proprietário, e nem a plataforma: um registro que culpa um Sprite, um host ou uma ferramenta compartilhada por uma espera ou falha nomeia a via corrigindo sua causa raiz e o relógio dessa correção, e sem tal via pede ao coordenador por uma naquele turno. Substituir uma máquina é um paliativo e nunca a resposta.

Mudanças meta chegam na habilidade

A via que recebe uma mudança meta globalmente aplicável, qualquer decisão sobre como vias, cartões, esperas, respostas, hooks, roteamento ou respostas funcionam, envia para a metavia no turno em que chega, como um registro cci. A metavia sempre a torna uma atualização desta habilidade, ou do template de brief, hook ou documento cc-notes que a possui, mergeada e instalada, reescrevendo e refatorando a seção que toca para que a habilidade seja lida como um design, nunca uma linha apendada nua. Um arquivo de memória ou um registro é um ponteiro e nunca conta como feito.

Antes de toda chamada de ferramenta

Se a chamada forFaça
Algo que um verbo respondeExecute o verbo.
Trabalho com um corpoCrie a via com sua tarefa e linha de razão.
Uma esperaIncorpore-a na via que age.
StatusO comunicador envia a renderização da mesa de atualização; o coordenador não envia nada.
Uma mensagem do proprietárioO comunicador cria um subagente para ela, que responde na superfície de onde veio; o coordenador aplica a decisão em todos os lugares; uma decisão sobre como a unidade funciona vai para a metavia naquele turno, que a torna uma atualização da habilidade.
Um alerta que o supervisor não respondeulr incident run <slug> agora.
Uma recusa de ferramenta, ou algo que deu errado duas vezesUm hook bloqueando seu trabalho recebe a via de correção que você lança neste turno (Hooks e recusas); qualquer outra coisa vai para a metavia neste turno, onde a correção é um verbo Go. Prosseguir de qualquer forma.
Uma aprovação, retenção, início ou cancelamentoA ordem do proprietário a carrega ou uma via a possui.

Agentes finalizados parados, operações de produção registradas, nada chamado de feito que não esteja ativo e verificado. Uma chamada que sobrevive à lista decide algo que nenhum verbo e nenhuma via pode decidir. Todo o resto é uma via.

Pergunte ao verbo, nunca leia

Para saberExecute
Uma via está ativa, e o que ela disse por últimolr lanes <lane> --config <lr.json>
Cada via, seu estado, PRs e dever permanentelr lanes
O que aconteceu desde a última vez que olhoucci digest --drive <drive>, então cci tail --drive <drive> --cursor root
O que espera pelo proprietáriocci owner-waits --drive <drive>
Quais subunidades estão abertas e o que cada uma ainda contémlr drive sub list
O estado dos PRs que deve nomearccx vcs pr status <n1> <n2> ..., em lote
Quais PRs o proprietário aprovou no quadro, e quais deles ainda estão abertoslr approved [--since <seq>], vereditos backfilled excluídos
Cada pedido aberto, e o que está pousado mas não ativolr asks
A atualização do proprietário, completa e de fonteslr update render, executado pelo update-desk do comunicador
O que um incidente está fazendo; uma frase sobre o que élr incident status <slug>; lr incident describe <slug>
Para onde vai o correio de uma via; todo verbo lr aceita um stem, meta-desk, para sua via ativa mais novalr route <lane>

Uma leitura que a tabela não contém pertence a uma via: um PR, um log de CI, um thread do Slack, um arquivo longo, uma listagem de nuvem, uma página de build. Um diff, plano ou veredito que você está aprovando é seu para ler. O coordenador cria um leitor e recebe de volta no máximo cinco linhas; uma busca é uma chamada, lr ask-lane '<question>'. Os hooks root_context e root_reads avisam sobre cada leitura desses tipos, em uma segunda fonte aberta para um pedido do proprietário, e em registros de uma via canalizados por tail ou grep; na janela do comunicador root_context recusa uma busca ampla e nomeia lr ask-lane.

As regras

Os IDs são estáveis; scripts, hooks e referências os citam. root significa o coordenador a menos que a regra nomeie o comunicador.

R1. A verdade fundamental vem da via proprietária ou do verbo, nunca de um grep, uma listagem, um curl ou uma página de build; no máximo cinco linhas de volta. O estado prioritário de PR é lido em uma chamada ccx vcs pr status em lote.

R2. Qualquer coisa com um corpo é uma via: uma leitura além de uma janela limitada, um log, uma investigação, PR ou mecânica de merge, uma enumeração. Uma leitura limitada de um arquivo nomeado, até 150 linhas, é permitida.

R3. Uma via por cadeia de espera-então-faça, e nenhuma via estaciona: uma via espera em um Monitor, uma notificação de Agente, CronCreate para um relógio, ou uma chamada lr wait, até um estado terminal, e relata uma vez. shell_waits bloqueia um loop ou sleep de shell. O Monitor de uma mesa rearma na expiração.

R4. Nunca re-brief uma via, nunca responda a uma duplicata. Uma SendMessage para um agente finalizado re-executa seu brief. lr wait marca correio impresso como lido.

R5. Escreva, não segure: constatações para cc-notes da via que as encontrou, briefs como anexos no log briefs: <slug>, nada feito à mão em ~/.claude/scratch.

R6. Toda solicitação do proprietário está em andamento no turno em que chega, uma via por pedido, nunca anexada a uma fila de uma via ocupada. Uma via possui um PR por entregável e pousa suas correções como commits nele; orca-lane-brief.md diz quando ela empilha.

R7. O estado de um PR é lido antes de ser relatado: ccx vcs status ou o commit squash em trunk buscada, nunca uma mensagem ou memória.

R8. Cada pedido do proprietário é uma linha de razão no turno em que chega, e feito apenas em LIVE; antes disso a resposta é "em #N, ainda não ativo: <bloqueador>".

…

[truncado para tradução]

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/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.

yasyf/orca

Launch and supervise Orca workers through the canonical Sprite prepare-and-attach entrypoint, with an explicit local route for Opus roots and the rare Fable assignment for the most sensitive work, and reclaim what a settled Dispatch left behind. Use for worker dispatch, native Run messaging, remote diagnosis, ending a done lane, or source return.

Habilidades Relacionadas