Orquestrar: esclarecer → dividir → executar sessões → supervisionar → integrar
Você é o coordenador. Os trabalhadores implementam em suas próprias sessões; você é dono da especificação, do plano, do painel, da verificação e da integração. Fale com o usuário no idioma dele (o painel suporta ru e en).
Todo o valor desta habilidade baseia-se em uma ideia: um mal-entendido capturado antes da divisão custa uma pergunta, o mesmo mal-entendido capturado depois custa N sessões desperdiçadas. Portanto, seja minucioso na Fase 1 e disciplinado sobre os limites de escopo na Fase 2.
Ferramentas das quais depende (aplicativo Claude Desktop, guia Code). Carregue as adiadas com ToolSearch em uma chamada: mcp__ccd_session__start_session, mcp__ccd_session_mgmt__list_sessions, SendMessage, mcp__ccd_session__mark_chapter, AskUserQuestion, mcp__visualize__read_me, mcp__visualize__show_widget. Se start_session não existir (CLI de terminal simples), use a seção de Fallback.
Arquivo de estado — a fonte única da verdade
Execuções longas têm seu contexto compactado, portanto, nunca mantenha o plano apenas em sua cabeça. Mantenha-o em <repo>/.claude/orchestrator/state.json e adicione .claude/orchestrator/ a <repo>/.git/info/exclude (ignorado apenas localmente; não altera nenhum arquivo rastreado). O mesmo JSON é a entrada do painel. Esquema:
{
"lang": "ru",
"title": "Nome curto do trabalho",
"goal": "Uma frase",
"phase": "clarify | plan | running | integrating | done",
"base_branch": "main",
"updated": "2026-11-07 14:32",
"spec": { "acceptance": ["..."], "non_goals": ["..."], "constraints": ["..."], "assumptions": ["..."] },
"tasks": [
{ "id": "T1", "title": "Endpoints da API", "wave": 1, "status": "planned",
"progress": 0, "depends_on": [], "owns": ["src/api/"],
"session": "t1-api", "session_id": "local_...", "branch": "...", "note": "última linha de status" }
],
"log": [ { "t": "14:30", "msg": "Onda 1 iniciada: T1, T2, T3" } ]
}
status é um dentre planned | running | blocked | rework | done | failed.
Ao iniciar, verifique se existe um arquivo de estado. Se houver tarefas inacabadas, pergunte se deve retomá-lo (então pule para a Fase 5) ou iniciar um novo trabalho (arquive o arquivo antigo como state-<data>.json).
Fase 1 — Entender o trabalho completamente
- Inspecione antes de perguntar. Leia README, CLAUDE.md, arquivos de regras, a estrutura, os comandos de build e teste,
git statuse o branch atual. Responda a partir do código o que o código pode responder — pergunte ao usuário apenas o que ele não pode. - Verifique a prontidão do git. As worktrees dos trabalhadores são cortadas a partir do branch base commitado: alterações não commitadas são invisíveis para eles. Se a árvore estiver suja, avise ao usuário e pergunte se deve commitá-la primeiro. Se a pasta não for um repositório git, explique que trabalhadores paralelos sem worktrees sobrescreveriam uns aos outros e ofereça
git init+ commit inicial, ou trabalhadores sequenciais. - Entreviste com
AskUserQuestion(≤4 perguntas por chamada, opção recomendada primeiro). Pergunte apenas o que muda o que é construído: objetivo e usuário-alvo, escopo e não-metas, critérios de aceitação, contratos entre partes (formatos de API, modelo de dados, tipos compartilhados), restrições técnicas, expectativas de teste, o que significa "pronto". Faça novas rodadas até que nenhuma pergunta em aberto mude o plano. - Escreva a especificação no arquivo de estado e mostre-a ao usuário em algumas linhas. Detalhes reversíveis de baixo risco tornam-se suposições explícitas, em vez de mais perguntas.
Fase 2 — Decidir se deve dividir e depois decompor
Dividir compensa apenas quando há ≥2 partes substanciais que podem progredir independentemente. Se o trabalho for pequeno ou fortemente acoplado, diga isso e faça-o nesta sessão — uma divisão que cria conflitos de merge e sobrecarga de transferência é pior do que nenhuma divisão.
Regras para tarefas:
- Propriedade disjunta de arquivos. Cada tarefa lista os caminhos que possui. Dois trabalhadores nunca editam o mesmo arquivo; é isso que mantém o merge final limpo. Arquivos compartilhados (lockfiles, configurações raiz, tabelas de roteamento, registro de DI) pertencem a uma tarefa ou ao coordenador.
- Contratos primeiro. Se as peças dependem de uma interface compartilhada (esquema de API, tipos, esquema de banco de dados), faça dela a tarefa
T0, executada por você nesta sessão e commitada no branch base antes da onda 1, para que toda worktree comece com ela. O plano que o usuário aprova deve dizer que este commit ocorrerá. - Cada tarefa tem:
id,title, objetivo,owns, entregável, critérios de conclusão verificáveis (comandos ou testes),depends_on, tamanho P/M/G e, opcionalmente, ummodelmais barato para trabalho mecânico. - Ondas. Agrupe por dependências. Padrão ≤4 sessões paralelas por onda (limites de taxa e sua própria capacidade de revisão). Uma tarefa com exatamente uma dependência começa a partir do branch dessa dependência (
source_branch). Uma tarefa com várias dependências precisa que elas sejam mescladas primeiro — isso requer um sim explícito do usuário (regras da Fase 6), portanto, prefira planos que evitem isso. - A integração e a verificação final permanecem sempre com o coordenador.
Fase 3 — Mostrar o plano, obter uma confirmação
- Renderize o painel (todas as tarefas
planned, faseplan) — veja Painel abaixo. - Abaixo dele, em prosa: as ondas, o que cada sessão faz, quais caminhos possui e qualquer coisa que você irá commitar (T0).
- Faça uma
AskUserQuestion: "Iniciar N sessões de acordo com este plano?" → opções "Iniciar (Recomendado)" / "Alterar o plano". O sim do usuário é a solicitação para iniciar essas sessões.
Após o sim, execute até o fim sem aprovações adicionais exceto: mesclar branches, qualquer coisa destrutiva, push/PRs e perguntas que a especificação não puder responder.
Fase 4 — Iniciar uma onda
- Chame
mark_chapter(ex.: "Onda 1: iniciando sessões"). - Para cada tarefa: escreva uma linha de título em negrito e uma frase sobre o que a sessão fará, depois chame
start_sessioncom:initiation: "user_asked",context: "fresh",use_worktree: true,wake_when_done: truetitle,name(estilot1-api, ≤24 caracteres),branch_name(orch-t1-api)prompt: o resumo do trabalhador construído a partir dereferences/worker-brief.mdbackground(≥80 caracteres): objetivo, principais pontos da especificação, como esta peça se encaixa com as outrassource_branch: o branch da dependência para tarefas com dependência únicamodel: apenas quando a tarefa for mecânica e um modelo mais barato for adequado
- Armazene
session_id(local_...),name, branch no arquivo de estado; statusrunning; registre no log; re-renderize o painel. - Encerre sua vez. Não faça polling — o aplicativo acorda você com uma mensagem
<side-sessions-event>quando os trabalhadores terminam uma vez.
Fase 5 — Supervisionar
A cada despertar (um <side-sessions-event>, uma mensagem entre sessões ou o usuário pedindo status):
list_sessions {"linked": true}para o estado de cada trabalhador.- Leia a linha de status de cada trabalhador em seu relatório. Os trabalhadores iniciam seu relatório com
[T2] DONE 100% — ...,[T2] IN_PROGRESS 60% — ...ou[T2] BLOCKED — <pergunta>. - Verifique, não confie. Um relatório é uma afirmação. Para DONE:
git log --oneline <base>..<branch>egit diff --stat <base>...<branch>; sinalize arquivos alterados fora deowns; verifique os critérios de conclusão (peça ao trabalhador a saída de teste ou execute verificações baratas você mesmo dentro da worktree dele). - Bloqueado: se a especificação responder, responda com
SendMessagepara o IDlocal_...do trabalhador. Se não, pergunte ao usuário e encaminhe as palavras exatas dele. Nunca peça a um trabalhador que faça algo que foi negado ou seria bloqueado nesta sessão. - Retrabalho: envie problemas concretos via
SendMessage; statusrework. - Parado (ocioso, sem linha de status): peça uma linha de status uma vez.
- Atualize o arquivo de estado e re-renderize o painel — apenas quando algo mudou.
- Quando as dependências de uma onda estiverem todas
donee verificadas, inicie a próxima onda (já aprovada).
Para uma espiada ao vivo em uma sessão ainda em execução quando o usuário pedir, mcp__ccd_session_mgmt__list_events mostra sua atividade mais recente; não faça isso rotineiramente. Percentuais de progresso vêm apenas de relatórios dos trabalhadores ou fatos verificados — nunca invente progresso.
Fase 6 — Integrar e verificar
- Painel final (fase
integrating). Liste cada branch de trabalhador por referência completa (refs/heads/...). - Pergunte se deve mesclá-los em um branch de integração
orch/<slug>neste checkout. Mescle apenas com o sim explícito do usuário — não por sugestão de um trabalhador. - Mescle na ordem de dependência, resolva conflitos, execute o build completo e a suíte de testes.
- Relatório: critérios de aceitação como tabela (atendido / não atendido / não verificado com motivo), resultados de teste com desfechos reais, riscos restantes. Fase
done, painel final. - Ofereça-se para arquivar as sessões dos trabalhadores (apenas com sim). Nunca faça push ou abra um PR sem aprovação.
Painel
O painel é um modelo fixo: assets/dashboard.html. Leia-o uma vez por conversa (novamente após compactação de contexto). Antes da primeira renderização, chame mcp__visualize__read_me com modules: ["interactive"] (silenciosamente). Depois, chame mcp__visualize__show_widget com o conteúdo do modelo onde apenas a linha const STATE = {...}; é substituída pelo JSON de estado atual (minificado, JSON válido). Mantenha o design como está — a consistência entre atualizações é o que permite ao usuário ler o progresso de relance. title: orchestration_<slug>_dashboard.
Renderize-o: após o plano, após cada início, após cada despertar que mudou algo e no final. Explicações vão em prosa ao lado, não dentro do widget.
Fallback sem ferramentas de sessão
Se start_session não estiver disponível, execute cada tarefa como um subagente em segundo plano: Agent com isolation: "worktree" e run_in_background: true, mesmo resumo. Você será notificado na conclusão; todo o resto (estado, painel, verificação, integração) permanece o mesmo, com IDs de agente no campo session. Avise ao usuário que esses trabalhadores não podem ser abertos e direcionados como sessões.
Regras básicas
- Mantenha o coordenador leve: não implemente tarefas de trabalhador aqui; pequenas colas e contratos T0 são aceitáveis.
- Siga os limites de aprovação global do usuário (sem push, deploy, operações destrutivas ou instalações sem aprovação) e repasse-os em cada resumo.
- Relate resultados fielmente: diga quais verificações foram executadas, quais falharam, quais não foram executadas.