plan-orchestrate
affaan-m/ECC
Lê um documento de plano, o divide em etapas, projeta uma cadeia de agentes para cada etapa a partir do catálogo do ECC e gera prompts personalizados prontos para colar ou orquestrar, sem executá-los.
...Expandir tudoPlanejar e orquestrar
Conecte um documento de plano ao /orchestrate custom, gerando uma invocação pronta para colar a cada etapa. A habilidade é apenas generativa — ela nunca executa o /orchestrate. O usuário cola cada linha quando estiver pronto.
Quando ativar
- O usuário possui um documento de plano com várias etapas (PRD, RFC, plano de implementação) e deseja executá-lo por meio do
/orchestrate. - O usuário diz “orquestre este plano”, “me dê prompts do /orchestrate para cada etapa”, “compose cadeias para este plano”.
- Existe um plano passo a passo, mas o usuário não deseja selecionar manualmente os agentes para cada etapa.
Ignore quando:
- O trabalho consiste em uma única etapa ad hoc → chame o
/orchestrate customdiretamente. - O plano estiver ilegível ou vazio. A falta de numeração explícita, por si só, não é uma condição para pular — consulte o caso extremo “Sem etapas claras” abaixo.
Entradas
[--lang=python|typescript|go|rust|cpp|java|kotlin|flutter|auto] [--scope=all|step:|range:-] [--dry-run]
— obrigatório; caminho relativo ou absoluto (aceita-se@docs/...).--lang— variante de idioma do revisor; o padrão éauto(detectado a partir do projeto).--scope— limita as etapas exibidas; o padrão éall.--dry-run— exibe apenas a decomposição e a justificativa da cadeia; não exibe solicitações finais.
Formato oficial do /orchestrate (não se desvie)
{ORCH_CMD} custom ",,...," ""
Onde {ORCH_CMD} é determinado na Fase 0 (veja abaixo). A sequência de comando na saída emitida sempre usa uma forma concreta — nunca ambas, nunca um espaço reservado.
customé uma cadeia sequencial; o HANDOFF de cada agente alimenta o seguinte.- Lista de agentes separada por vírgulas. É preferível não usar espaços; um espaço é tolerado.
- Não existem sinalizadores
--mode/--gate/--agents=...— nunca os invente. - Os nomes dos agentes provêm do catálogo desta skill. As aspas duplas embutidas na descrição da tarefa são escapadas como
\".
Formato de instalação do ECC e espaços de nomes
Dois formatos de instalação determinam o prefixo tanto no comando de barra quanto em cada nome de agente. Os dois DEVEM permanecer sincronizados — um formato por saída, nunca misturados:
Seja denote o diretório raiz do Claude Code: ~/.claude no macOS/Linux, %USERPROFILE%\.claude no Windows. Resolva-o da mesma forma que a plataforma hospedeira resolve o diretório raiz do usuário (não codifique ~).
| Forma | Detecção | {ORCH_CMD} |
Formato do nome do agente |
|---|---|---|---|
| Instalação do plug-in (1.9.0+) | existe |
/everything-claude-code:orchestrate |
everything-claude-code: |
| Instalação básica legada | O item acima está ausente; arquivos do agente em |
/orchestrate |
|
Por que isso é importante: na instalação via plug-in, os agentes são registrados como everything-claude-code:tdd-guide. Nomes simples forçam a correspondência aproximada, o que falha intermitentemente em chamadas paralelas. Na instalação legada, as formas com prefixo não são registradas e falham imediatamente.
Catálogo de agentes disponíveis (é preciso escolher entre estes)
Geral:
planner— reformulação de requisitos, decomposição de riscos, planejamento de etapasarchitect— arquitetura, projeto de sistema, propostas de refatoraçãotdd-guide— escrever testes → implementar → cobertura de 80% ou maisrevisor de código— revisão genérica de códigorevisor de segurança— auditoria de segurança, OWASP, vazamento de informações confidenciaislimpador de refatoração— código morto, duplicatas, limpeza de classes knipatualizador de documentação— documentação, mapa de código, READMEdocs-lookup— consultas à API de bibliotecas de terceiros (Context7)e2e-runner— orquestração de testes de ponta a pontadatabase-reviewer— esquema do PostgreSQL, migração, desempenhoharness-optimizer— configuração do harness do agente localloop-operator— loops autônomos de longa duraçãochief-of-staff— triagem multicanal (raramente adequado para etapas do plano)
Resolvedores de erros de compilação:
build-error-resolver(genérico) /cpp-build-resolver/go-build-resolver/java-build-resolver/kotlin-build-resolver/rust-build-resolver/pytorch-build-resolver
Revisores de código:
python-reviewer/typescript-reviewer/go-reviewer/rust-reviewer/cpp-reviewer/java-reviewer/kotlin-reviewer/flutter-reviewer
Um nome de agente com erro ortográfico faz com que o /orchestrate falhe. Verifique esta lista antes de emitir.
Como funciona
Fase 0 — Detectar o modo ECC + linguagem
Leia
. Se estiver ausente ou vazio, gere um relatório e interrompa.Detecte o formulário de instalação do ECC uma vez e fixe-o em
ECC_MODE. Algoritmo (execute na ordem, pare na primeira correspondência):- Se
existir →/plugins/marketplaces/everything-claude-code/ ECC_MODE=plugin. - Caso contrário, se
existir e contiver pelo menos um arquivo de agente ECC (por exemplo,/agents/ tdd-guide.md,code-reviewer.md) →ECC_MODE=legacy. - Caso contrário → o padrão é
ECC_MODE=legacye é exibido um aviso de uma linha no início da saída:> Aviso: não foi possível detectar a instalação do ECC; usando o formato legado como padrão. Se você usar a instalação do plugin, edite os prefixos manualmente. - Se ambos os marcadores existirem (instalação mista),
o plug-inprevalece — o namespace do plug-in é o único que resolve nomes de agentes sem correspondência aproximada.
A partir deste ponto, cada linha emitida usa o prefixo correspondente tanto no comando de barra quanto em cada nome de agente. Nunca emita ambas as formas na mesma saída.
- Se
Resolva
--lang. Quando estiver em“auto”, execute uma detecção compatível com várias linguagens:- Marcadores de sondagem:
pyproject.toml/uv.lock/requirements.txt→ python;package.json→ typescript;go.mod→ go;Cargo.toml→ rust;CMakeLists.txtou*.cppde nível superior → cpp;pom.xml/build.gradle(Java) → java;build.gradle.ktsou Kotlin de nível superior → kotlin;pubspec.yaml→ flutter. - Desempate em casos de poliglotismo: se mais de um marcador corresponder, escolha a linguagem cujos arquivos-fonte sejam mais numerosos do que os das outras (conte usando
git ls-files, excluindovendor/,node_modules/,dist/,build/,.venv/, arquivos gerados e fixtures de teste óbvios). Em caso de empate ou quando nenhuma linguagem exceder 60% dos arquivos-fonte, definalang=unknown. - Nenhum marcador correspondeu → defina
lang=unknown. lang=unknowné um sentinela — não é um nome de agente. As regras 4 e 5 da Fase 2 o transformam emrevisor de código/solucionador de erros de compilaçãono momento da composição da cadeia.
- Marcadores de sondagem:
Detecte um subperfil PyTorch: quando
lang=pythone qualquer um dosarquivos pyproject.toml/requirements.txt/uv.lockdeclarar uma dependência dotorch, definapytorch=true. Isso afeta apenas a seleção da cadeiade compilação(regra da Fase 2 abaixo); o revisor continua sendopython-reviewer.Normalize quaisquer nomes de agentes declarados no plano: se o texto do plano referenciar agentes por meio de sua forma com prefixo de plug-in (por exemplo,
everything-claude-code:tdd-guide), remova o prefixo para obter o nome puro do catálogo antes de validar ou compor cadeias. A reaplicação do prefixo ocorre apenas no momento da saída, de acordo como ECC_MODE(Fase 4). Nunca permita que um nome com prefixo pré-aplicado entre na composição da cadeia — isso resultaria em um prefixo duplo no modo plugin.
Fase 1 — Decompor etapas
Identifique “unidades de etapa” em ordem de prioridade:
- Numeração explícita:
## Etapa N/### Fase N/## N. .../ lista ordenada de nível superior. - Uma coluna “Etapa” em uma tabela.
- ----blocos
separadospor títulos que começam com um verbo. - Caso contrário, trate cada H2 como uma etapa.
Por etapa, extraia o ID (com base em 1), o título (≤ 80 caracteres), a intenção (1–3 frases) e as tags.
Fase 2 — Etiquetagem e seleção de cadeia
Marque por intenção (é permitido usar várias tags; a cadeia é construída a partir da tag principal + tags secundárias empilhadas):
As palavras-chave abaixo são comparadas sem distinção de maiúsculas e minúsculas. Planos multilíngues são suportados pela correspondência dos radicais das palavras em qualquer idioma, desde que o significado esteja alinhado com as palavras-chave em inglês listadas.
| Tag | Palavras-chave | Cadeia padrão |
|---|---|---|
design |
arquitetura, design, escolher, avaliar, RFC | planejador, arquiteto |
plano |
plano, detalhamento, marco | planejador |
impl |
implementar, construir, adicionar, criar, portar | guia de TDD, |
teste |
teste, cobertura, e2e, integração | tdd-guide, e2e-runner |
refatorar |
refatoração, limpeza, deduplicação, divisão | arquiteto, limpador de refatoração, revisor de |
migração |
migração, atualização, reescrita, portabilidade | arquiteto, guia-tdd, |
banco de dados |
esquema, migração, índice, SQL, Postgres, alembic, sqlmodel | revisor de banco de dados, |
segurança |
criptografia, autenticação, segredo, OWASP, PII | revisor de segurança, |
compilação |
compilação, compilar, falha de lint, CI | (recorre ao resolvedor-de-erros-de-compilação) |
documentação |
documentação, readme, mapa de código, registro de alterações | atualizador de documentação |
pesquisa |
pesquisa, referência, uso da API | pesquisa-documentação |
revisão |
revisão, auditoria, verificação | |
ciclo |
loop, autônomo, watchdog | operador de loop |
Regras de composição de cadeias:
- Seleção da tag primária: quando uma etapa corresponde a várias tags, a primeira na ordem da tabela (topo da tabela = prioridade mais alta) é a primária; as demais são secundárias. As regras de composição 2 e 3 abaixo tratam explicitamente combinações específicas de várias tags; caso contrário, acrescente cadeias secundárias na ordem da tabela de tags.
impl+security→tdd-guide,.-reviewer,security-reviewer impl+db→tdd-guide,database-reviewer,.-reviewer - Desduplique a cadeia resultante (preserve a primeira ocorrência). Por exemplo,
review+lang=unknownresultaria emcode-reviewer,code-reviewerapós a regra 5; a desduplicação reduz isso acode-reviewer. resolve como-reviewer code-reviewerquandolang=unknown.é resolvido como-build-resolver build-error-resolverquandolang=unknown. Caso especial: se a Fase 0 definirpytorch=true, usepytorch-build-resolverpara cadeiasde compilação, independentemente de. Não existepython-build-resolver;--lang=pythonsempytorch=trueresulta embuild-error-resolver.- Etapas sem tag: se nenhuma palavra-gatilho corresponder, defina a cadeia como
code-reviewere registre“nenhuma tag correspondente”; cadeia padrão apenas para revisãoconforme “Fundamentação da cadeia”. - Comprimento da cadeia ≤ 4 após a deduplicação. Se excedido, descarte a tag mais fraca (
procuraedocumentaçãoprimeiro). - Não emparelhe
o planejadoreo arquitetoem uma cadeiade implementação(desperdício de tokens). Emparelhe-os apenas em etapasde projeto. - Etapas marcadas com
impl,refactoroumigrationterminam com um agente da classe reviewer — qualquer umd,-reviewer code-reviewer,security-revieweroudatabase-reviewer. O revisor mais específico do domínio ocupa a posição final (por exemplo,a etapa “impl+security”da regra 2 termina com“security-reviewer”;a etapa “impl+db”da regra 3 termina com“, pois-reviewer” o “database-reviewer”já controla a migração anteriormente na cadeia). As etapasde testeecompilaçãosão controladas por seus próprios validadores (e2e-runnere o resolveador de compilação, respectivamente) e não exigem um revisor adicional.
Fase 3 — Compactar a descrição da tarefa
Cada deve:
- Ser autônoma (o primeiro agente não precisa ter o documento do plano aberto).
- Começar com
[Plano:.#step- ] - Incluir de 1 a 3 critérios de aceitação verificáveis.
- Incluir uma restrição de escopo (
Fora do escopo: ...) somente se o plano declarar uma para esta etapa. Herdar literalmente. Se o plano não tiver nenhuma declaração de fora do escopo, omitir a cláusula por completo — não inventar uma. - Tenha de 200 a 600 caracteres; uma linha; caracteres
“”escapados como\; sem quebras de linha literais.
Fase 4 — Saída
Gere Markdown usando o formato determinado por ECC_MODE. A saída utiliza um único formato em todo o texto — cada {ORCH_CMD} e cada nome de agente é renderizado com o prefixo correspondente da Fase 0. Não emita os dois formatos; não inclua instruções do tipo “este é o formato do plugin” / “remova o prefixo” na saída renderizada.
Regras concretas de renderização:
{ORCH_CMD}=/everything-claude-code:orchestratenoplugin,/orchestratenolegado.{AGENT(nome)}=everything-claude-code:noplugin,em“legacy”.- A coluna “Chain” da tabela de visão geral usa a mesma renderização
{AGENT(name)}. - Os blocos bash por etapa contêm apenas o comando executável. Não há comentários
do tipo # plugin formou# legacy form— o formato é implícito e uniforme em toda a saída.
Estrutura da saída:
# Resultado de Plan-Orchestrate
**Plano**: ``
**Linguagem**: ``
**Modo ECC**: ``
**Etapas**:
**Escopo**:
## Visão geral das etapas
| # | Título | Tags | Chain |
|---|---|---|---|
| 1 | ... | impl, db | `{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}` |
| ... | | | |
---
## Etapa 1 —
**Objetivo**: <1–3 sentences>
**Tags**:
**Justificativa da cadeia**:
```bash
{ORCH_CMD} custom "{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}" "[Plano: docs/foo.md#step-1] ; Aceitação: <1–3 items>; Fora do escopo: <…>"
```
A notação
{ORCH_CMD}e{AGENT(...)}acima descreve a substituição que esta habilidade realiza em tempo de execução. O Markdown efetivamente emitido contém as strings resolvidas, nunca os placeholders.
Acrescente um bloco final de “Execução em lote” que agrupe os comandos de cada etapa em ordem, para que o usuário possa colá-los todos de uma vez. Ignore o bloco de Execução em lote no modo apenas de visão geral (consulte o caso extremo “Plano grande”): quando apenas a tabela de visão geral está sendo emitida, não há comandos por etapa para agrupar.
Fase 5 — Autoverificação (executada antes da emissão)
- Cada agente em cada cadeia provém do catálogo (após remover qualquer prefixo
“everything-claude-code:”que tenha aparecido no plano; consulte a Etapa 5 da Fase 0). - Os
{ORCH_CMD}resolvidos e todosos {AGENT(...)}resolvidos usam o mesmo formato (plug-inoulegado) — nunca misturados em uma única saída. - Nenhuma anotação
do tipo # formato de plugin/# formato legadoe nenhuma instrução do tipo “remover o prefixo” permanece na saída renderizada. - Não há campos inventados como
--mode/--gate/--agents=... - Cada descrição de tarefa ocupa uma única linha, entre aspas duplas, com o caractere
“”escapado. - Cada descrição de tarefa começa com
[Plano:e inclui Aceitação (1–3 itens). A cláusula#etapa- ] “Fora do escopo:”está presente apenas quando herdada do plano. - Não há agentes duplicados em nenhuma cadeia após a deduplicação da Fase 2.
- Comprimento da cadeia ≤ 4.
- Etapas marcadas com
impl/refactor/migrationterminam com um agente da classe revisor (,-reviewer code-reviewer,security-revieweroudatabase-reviewer).testebuildestão isentas — consulte a regra 10 da Fase 2. - Etapas sem tag emitem
“code-reviewer”com a justificativa“nenhuma tag correspondente”; cadeia padrão apenas para revisão. - A tabela de visão geral lista todas as etapas do plano, independentemente de
--scope. - A contagem de blocos de detalhes por etapa corresponde ao
`--scope`definido (plano completo quando`--scope=all`; um bloco para`step:n`; tamanho do intervalo para`range:a-b`). No modo “somente visão geral”, não são emitidos blocos por etapa nem o bloco “Batch”.
Casos extremos
- Sem etapas claras: dar preferência à divisão em H2/H3; se ainda houver ambiguidade, relatar “nenhuma etapa estruturada detectada” com o esboço do documento e solicitar que o usuário confirme a execução de acordo com o esboço.
- Plano extenso (>1.500 linhas): entre no modo “somente visão geral” — emita apenas a tabela de visão geral e peça ao usuário para restringir com
--scopeantes de executar novamente para obter detalhes. Neste modo, pule os blocos de detalhes por etapa e pule o bloco de execução em lote. - Etapa muito ampla (por exemplo, “concluir todo o trabalho de back-end”): não force uma única cadeia. Sugira a divisão em N.a e N.b e proponha uma divisão.
- O plano declara agentes (raro): primeiro remova qualquer prefixo
“everything-claude-code:”para obter o nome básico do catálogo (Fase 0, etapa 5); em seguida, valide em relação ao catálogo. Substitua agentes inválidos e explique em “Justificativa da cadeia”. O nome básico recebe um novo prefixo no momento da saída, de acordo comECC_MODE. - Projeto poliglota em que
--lang=autonão consegue escolher um vencedor: definalang=unknown; o revisor é resolvido comocode-reviewere o resolvedor de compilação comobuild-error-resolver. Mencione o plano alternativo em “Justificativa da cadeia”.
Exemplos
Exemplo 1 — Modo de plug-in, plano em Python
Entrada:
plan-orchestrate @docs/plan/example-feature.md --lang=python
Trecho da saída esperada:
## Etapa 2 — Criptografar campos confidenciais do UserProfile
**Objetivo**: Introduzir um tipo `EncryptedString` do SQLAlchemy e criptografar `birth_datetime` / `location` usando AES-GCM antes da persistência; carregar a chave a partir de uma variável de ambiente.
**Tags**: impl, segurança, banco de dados
**Fundamentação da cadeia**: Caminho de gravação sensível à segurança, portanto o `security-reviewer` encerra a cadeia; o `database-reviewer` valida a migração do Alembic; o `python-reviewer` verifica a tipagem e a conformidade com o PEP 8.
```bash
/everything-claude-code:orchestrate custom "everything-claude-code:tdd-guide,everything-claude-code:database-reviewer,everything-claude-code:python-reviewer,everything-claude-code:security-reviewer" "[Plano: docs/plan/example-feature.md#step-2] Implementar o tipo EncryptedString do SQLAlchemy e migrar as colunas UserProfile.birth_datetime/location; chave proveniente de ENV APP_DB_KEY; Aceitação: testes de ida e volta de criptografia/descriptografia são aprovados; atualização/reversão do Alembic é realizada corretamente em banco de dados vazio; nenhum texto em claro no banco de dados após a migração; Fora do escopo: lógica de compartilhamento de perfil entre locatários"
```
Exemplo 2 — Modo legado, mesma etapa
Se ECC_MODE=legacy fosse detectado, a mesma etapa seria emitida como um único comando uniforme (sem formas com prefixo de plugin em nenhuma parte da saída):
/orchestrate custom "tdd-guide,database-reviewer,python-reviewer,security-reviewer" "[Plano: docs/plan/example-feature.md#step-2] ..."
Os dois exemplos acima ilustram as duas saídas possíveis para dois ambientes diferentes. Uma única invocação de skill produz apenas uma delas, do início ao fim.
Observações
- Apenas gerativo. Nunca invoque
/orchestratede dentro desta skill. - Use o mesmo idioma do documento do plano para as descrições das tarefas (os nomes dos agentes permanecem sempre em inglês).
- Não insira linhas “Co-Authored-By” nem emojis na saída, a menos que o usuário solicite explicitamente.
---
name: plan-orchestrate
description: Reads a plan document, decomposes it into steps, designs a per-step agent chain from the ECC catalogue, and emits ready-to-paste /orchestrate custom prompts without executing them.
---
# Plan Orchestrate
Bridge a plan document to `/orchestrate custom` by emitting one ready-to-paste invocation per step. The skill is generative only — it never executes `/orchestrate`. The user pastes each line when ready.
## When to Activate
- User has a multi-step plan document (PRD, RFC, implementation plan) and wants to drive it through `/orchestrate`.
- User says "orchestrate this plan", "give me orchestrate prompts for each step", "compose chains for this plan".
- A step-by-step plan exists but the user does not want to manually pick agents per step.
Skip when:
- The work is one ad-hoc step → call `/orchestrate custom` directly.
- The plan is unreadable or empty. Lack of explicit numbering alone is not a skip condition — see the "No clear steps" edge case below.
## Inputs
```
<plan-doc-path> [--lang=python|typescript|go|rust|cpp|java|kotlin|flutter|auto] [--scope=all|step:<n>|range:<a>-<b>] [--dry-run]
```
- `<plan-doc-path>` — required; relative or absolute path (`@docs/...` accepted).
- `--lang` — reviewer language variant; defaults to `auto` (detected from project).
- `--scope` — limits emitted steps; defaults to `all`.
- `--dry-run` — print decomposition + chain rationale only; do not emit final prompts.
## Authoritative `/orchestrate` shape (do not deviate)
```
{ORCH_CMD} custom "<agent1>,<agent2>,...,<agentN>" "<task description>"
```
Where `{ORCH_CMD}` is determined in Phase 0 (see below). The command string in the emitted output **always uses one concrete form** — never both, never a placeholder.
- `custom` is a sequential chain; each agent's HANDOFF feeds the next.
- Comma-separated agent list. No spaces preferred; one space tolerated.
- No `--mode` / `--gate` / `--agents=...` flags exist — never invent them.
- Agent names come from the catalogue in this skill. Embedded double quotes in the task description are escaped as `\"`.
## ECC install form and namespacing
Two install forms determine the prefix on **both** the slash command and every agent name. The two MUST stay in sync — one form per output, never mixed:
Let `<claude-home>` denote the Claude Code home directory: `~/.claude` on macOS/Linux, `%USERPROFILE%\.claude` on Windows. Resolve it the way the host platform resolves the user home directory (do not hardcode `~`).
| Form | Detection | `{ORCH_CMD}` | Agent name format |
|---|---|---|---|
| Plugin install (1.9.0+) | `<claude-home>/plugins/marketplaces/everything-claude-code/` exists | `/everything-claude-code:orchestrate` | `everything-claude-code:<name>` |
| Legacy bare install | Above absent; agent files under `<claude-home>/agents/` | `/orchestrate` | `<name>` |
Why this matters: under the plugin install, agents register as `everything-claude-code:tdd-guide`. Bare names force fuzzy matching, which fails intermittently under parallel calls. Under legacy, the prefixed forms are not registered and fail outright.
## Available agent catalogue (must pick from these)
General:
- `planner` — requirement restatement, risk decomposition, step planning
- `architect` — architecture, system design, refactor proposals
- `tdd-guide` — write tests → implement → 80%+ coverage
- `code-reviewer` — generic code review
- `security-reviewer` — security audit, OWASP, secret leakage
- `refactor-cleaner` — dead code, duplicates, knip-class cleanup
- `doc-updater` — documentation, codemap, README
- `docs-lookup` — third-party library API lookups (Context7)
- `e2e-runner` — end-to-end test orchestration
- `database-reviewer` — PostgreSQL schema, migration, performance
- `harness-optimizer` — local agent harness configuration
- `loop-operator` — long-running autonomous loops
- `chief-of-staff` — multi-channel triage (rarely a fit for plan steps)
Build error resolvers:
- `build-error-resolver` (generic) / `cpp-build-resolver` / `go-build-resolver` / `java-build-resolver` / `kotlin-build-resolver` / `rust-build-resolver` / `pytorch-build-resolver`
Code reviewers:
- `python-reviewer` / `typescript-reviewer` / `go-reviewer` / `rust-reviewer` / `cpp-reviewer` / `java-reviewer` / `kotlin-reviewer` / `flutter-reviewer`
A misspelled agent name fails `/orchestrate`. Cross-check against this list before emitting.
## How It Works
### Phase 0 — Detect ECC mode + language
1. Read `<plan-doc-path>`. If missing or empty, report and stop.
2. Detect ECC install form once and freeze it into `ECC_MODE`. Algorithm (run in order, stop at the first match):
1. If `<claude-home>/plugins/marketplaces/everything-claude-code/` exists → `ECC_MODE=plugin`.
2. Else if `<claude-home>/agents/` exists and contains at least one ECC agent file (e.g. `tdd-guide.md`, `code-reviewer.md`) → `ECC_MODE=legacy`.
3. Else → default to `ECC_MODE=legacy` and emit a one-line warning at the top of the output: `> Warning: could not detect ECC install; defaulting to legacy form. If you use the plugin install, edit the prefixes manually.`
4. If both markers exist (mixed install), `plugin` wins — the plugin namespace is the only one that resolves agent names without fuzzy matching.
From this point on, every emitted line uses the matching prefix on **both** the slash command and every agent name. **Never emit both forms in the same output.**
3. Resolve `--lang`. When `auto`, run a polyglot-aware detection:
- Probe markers: `pyproject.toml` / `uv.lock` / `requirements.txt` → python; `package.json` → typescript; `go.mod` → go; `Cargo.toml` → rust; `CMakeLists.txt` or top-level `*.cpp` → cpp; `pom.xml` / `build.gradle` (Java) → java; `build.gradle.kts` or top-level Kotlin → kotlin; `pubspec.yaml` → flutter.
- **Polyglot tie-break**: if more than one marker matches, pick the language whose source files outnumber the others (count via `git ls-files`, excluding `vendor/`, `node_modules/`, `dist/`, `build/`, `.venv/`, generated files, and obvious test fixtures). On a tie or when no language exceeds 60% of source files, set `lang=unknown`.
- No marker matched → set `lang=unknown`.
- `lang=unknown` is a sentinel — it is **not** an agent name. Phase 2 rules 4 and 5 turn it into `code-reviewer` / `build-error-resolver` at chain composition time.
4. Detect a **PyTorch sub-profile**: when `lang=python` and any of `pyproject.toml` / `requirements.txt` / `uv.lock` declares a dependency on `torch`, set `pytorch=true`. This only affects `build` chain selection (Phase 2 rule below); the reviewer remains `python-reviewer`.
5. **Normalize any agent names declared in the plan**: if the plan text references agents by their plugin-prefixed form (e.g. `everything-claude-code:tdd-guide`), strip the prefix to get the bare catalogue name before validating or composing chains. Re-prefixing happens only at output time per `ECC_MODE` (Phase 4). Never let a pre-prefixed name flow into chain composition — it would double-prefix in plugin mode.
### Phase 1 — Decompose steps
Identify "step units" in priority order:
1. Explicit numbering: `## Step N` / `### Phase N` / `## N. ...` / top-level ordered list.
2. A "Step" column in a table.
3. `---`-separated blocks with verb-led headings.
4. Otherwise treat each H2 as one step.
Per step extract `id` (1-based), `title` (≤ 80 chars), `intent` (1–3 sentences), `tags`.
### Phase 2 — Tag and pick chain
Tag by intent (multi-tag allowed; chain built from primary + stacked secondaries):
Trigger words below are matched case-insensitively. Multilingual plans are supported by matching the word stems in any language as long as the meaning aligns with the listed English trigger words.
| Tag | Trigger words | Default chain |
|---|---|---|
| `design` | architecture, design, choose, evaluate, RFC | `planner,architect` |
| `plan` | plan, breakdown, milestone | `planner` |
| `impl` | implement, build, add, create, port | `tdd-guide,<lang>-reviewer` |
| `test` | test, coverage, e2e, integration | `tdd-guide,e2e-runner` |
| `refactor` | refactor, cleanup, dedupe, split | `architect,refactor-cleaner,<lang>-reviewer` |
| `migration` | migrate, upgrade, rewrite, port | `architect,tdd-guide,<lang>-reviewer` |
| `db` | schema, migration, index, SQL, Postgres, alembic, sqlmodel | `database-reviewer,<lang>-reviewer` |
| `security` | encrypt, auth, secret, OWASP, PII | `security-reviewer,<lang>-reviewer` |
| `build` | build, compile, lint failure, CI | `<lang>-build-resolver` (falls back to `build-error-resolver`) |
| `docs` | docs, readme, codemap, changelog | `doc-updater` |
| `lookup` | lookup, reference, API usage | `docs-lookup` |
| `review` | review, audit, verify | `<lang>-reviewer,code-reviewer` |
| `loop` | loop, autonomous, watchdog | `loop-operator` |
Chain composition rules:
1. **Primary tag selection**: when a step matches multiple tags, the **first one in table order** (top of the table = highest priority) is the primary; the rest are secondaries. Composition rules 2 and 3 below handle specific multi-tag combinations explicitly; otherwise, append secondary chains in tag table order.
2. `impl` + `security` → `tdd-guide,<lang>-reviewer,security-reviewer`.
3. `impl` + `db` → `tdd-guide,database-reviewer,<lang>-reviewer`.
4. **Deduplicate** the resulting chain (preserve first occurrence). E.g. `review` + `lang=unknown` would yield `code-reviewer,code-reviewer` after rule 5; deduplication collapses it to `code-reviewer`.
5. `<lang>-reviewer` resolves to `code-reviewer` when `lang=unknown`.
6. `<lang>-build-resolver` resolves to `build-error-resolver` when `lang=unknown`. **Special case**: if Phase 0 set `pytorch=true`, use `pytorch-build-resolver` for `build` chains regardless of `<lang>`. There is no `python-build-resolver`; `--lang=python` without `pytorch=true` resolves to `build-error-resolver`.
7. **Zero-tag steps**: if no trigger word matches, set chain to `code-reviewer` and write `no tag matched; default review-only chain` under "Chain rationale".
8. Chain length ≤ 4 after deduplication. If exceeded, drop weakest tag (`lookup` and `docs` first).
9. Do not pair `planner` and `architect` in an `impl` chain (token waste). Pair them only on `design` steps.
10. Steps tagged `impl`, `refactor`, or `migration` end with a **reviewer-class** agent — any of `<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`. The most domain-specific reviewer wins the tail position (e.g. rule 2's `impl+security` ends with `security-reviewer`; rule 3's `impl+db` ends with `<lang>-reviewer` because `database-reviewer` already gates the migration earlier in the chain). `test` and `build` steps are gated by their own validators (`e2e-runner` and the build resolver respectively) and do not require an additional reviewer.
### Phase 3 — Compress task description
Each emitted `<task description>` must:
- Be self-contained (the first agent does not need the plan document open).
- Start with `[Plan: <path>#step-<id>]`.
- Include 1–3 verifiable Acceptance criteria.
- Include a Scope guard (`Out of scope: ...`) **only if the plan declares one for this step**. Inherit verbatim. If the plan has no out-of-scope statement, omit the clause entirely — do not invent one.
- Be 200–600 characters; one line; embedded `"` escaped as `\"`; no literal newlines.
### Phase 4 — Output
Emit Markdown using **the form determined by `ECC_MODE`**. The output uses one form throughout — every `{ORCH_CMD}` and every agent name is rendered with the matching prefix from Phase 0. **Do not emit both forms; do not include "this is plugin form" / "strip the prefix" instructions in the rendered output.**
Concrete rendering rules:
- `{ORCH_CMD}` = `/everything-claude-code:orchestrate` under `plugin`, `/orchestrate` under `legacy`.
- `{AGENT(name)}` = `everything-claude-code:<name>` under `plugin`, `<name>` under `legacy`.
- The overview-table "Chain" column uses the same `{AGENT(name)}` rendering.
- Per-step bash blocks contain only the runnable command. **No `# plugin form` or `# legacy form` comments** — the form is implicit and uniform across the whole output.
Output structure:
````markdown
# Plan-Orchestrate Result
**Plan**: `<path>`
**Lang**: `<detected-or-given>`
**ECC mode**: `<plugin | legacy>`
**Steps**: <N>
**Scope**: <all | step:n | range:a-b>
## Steps overview
| # | Title | Tags | Chain |
|---|---|---|---|
| 1 | ... | impl, db | `{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}` |
| ... | | | |
---
## Step 1 — <title>
**Intent**: <1–3 sentences>
**Tags**: <a, b>
**Chain rationale**: <why this chain; which agent closes the loop>
```bash
{ORCH_CMD} custom "{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}" "[Plan: docs/foo.md#step-1] <compressed task description>; Acceptance: <1–3 items>; Out of scope: <…>"
```
````
> The `{ORCH_CMD}` and `{AGENT(...)}` notation above describes the substitution this skill performs at runtime. The actual emitted Markdown contains the resolved strings, never the placeholders.
Append a final "Batch execution" block aggregating every step's command in order so the user can paste them all at once. **Skip the Batch block in overview-only mode** (see "Large plan" edge case): when only the overview table is being emitted, there are no per-step commands to aggregate.
### Phase 5 — Self-check (run before emitting)
- [ ] Every agent in every chain comes from the catalogue (after stripping any `everything-claude-code:` prefix that appeared in the plan; see Phase 0 step 5).
- [ ] Resolved `{ORCH_CMD}` and every resolved `{AGENT(...)}` use the **same** form (`plugin` or `legacy`) — never mixed in one output.
- [ ] No `# plugin form` / `# legacy form` annotations and no "strip the prefix" instructions remain in the rendered output.
- [ ] No invented `--mode` / `--gate` / `--agents=...` fields.
- [ ] Each task description is single-line, double-quoted, with embedded `"` escaped.
- [ ] Each task description begins with `[Plan: <path>#step-<id>]` and includes Acceptance (1–3 items). The `Out of scope:` clause is present only when inherited from the plan.
- [ ] No duplicate agent in any chain after Phase 2 dedup.
- [ ] Chain length ≤ 4.
- [ ] Steps tagged `impl`/`refactor`/`migration` end with a reviewer-class agent (`<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`). `test` and `build` are exempt — see Phase 2 rule 10.
- [ ] Zero-tag steps emit `code-reviewer` with the rationale `no tag matched; default review-only chain`.
- [ ] Overview table lists every step in the plan, regardless of `--scope`.
- [ ] Per-step detail block count matches the resolved `--scope` (full plan when `--scope=all`; one block for `step:n`; range size for `range:a-b`). In overview-only mode, no per-step blocks and no Batch block are emitted.
## Edge cases
- **No clear steps**: prefer H2/H3 splitting; if still ambiguous, report "no structured steps detected" with the document outline and ask the user to confirm running by outline.
- **Large plan (>1500 lines)**: enter **overview-only mode** — emit only the overview table and ask the user to narrow with `--scope` before re-running for details. In this mode, skip per-step detail blocks and skip the Batch execution block.
- **Step too broad** (e.g. "complete all backend work"): do not force a single chain. Suggest splitting into N.a and N.b and propose a split.
- **Plan declares agents** (rare): first **strip any `everything-claude-code:` prefix** to get the bare catalogue name (Phase 0 step 5), then validate against the catalogue. Replace invalid agents and explain under "Chain rationale". The bare name is re-prefixed at output time per `ECC_MODE`.
- **Polyglot project where `--lang=auto` cannot pick a winner**: set `lang=unknown`; reviewer resolves to `code-reviewer` and build resolver to `build-error-resolver`. Mention the fallback under "Chain rationale".
## Examples
### Example 1 — Plugin mode, Python plan
Input:
```
plan-orchestrate @docs/plan/example-feature.md --lang=python
```
Excerpt of expected output:
````markdown
## Step 2 — Encrypt sensitive UserProfile fields
**Intent**: Introduce an `EncryptedString` SQLAlchemy type and AES-GCM encrypt `birth_datetime` / `location` before persistence; load the key from an environment variable.
**Tags**: impl, security, db
**Chain rationale**: Security-sensitive write path, so `security-reviewer` closes the chain; `database-reviewer` validates the alembic migration; `python-reviewer` covers typing and PEP 8.
```bash
/everything-claude-code:orchestrate custom "everything-claude-code:tdd-guide,everything-claude-code:database-reviewer,everything-claude-code:python-reviewer,everything-claude-code:security-reviewer" "[Plan: docs/plan/example-feature.md#step-2] Implement EncryptedString SQLAlchemy type and migrate UserProfile.birth_datetime/location columns; key from ENV APP_DB_KEY; Acceptance: encrypt/decrypt roundtrip tests pass; alembic upgrade/downgrade clean on empty DB; no plaintext in DB after migrate; Out of scope: cross-tenant profile sharing logic"
```
````
### Example 2 — Legacy mode, same step
If `ECC_MODE=legacy` were detected, the same step would be emitted as a single uniform command (no plugin-prefixed forms anywhere in the output):
```bash
/orchestrate custom "tdd-guide,database-reviewer,python-reviewer,security-reviewer" "[Plan: docs/plan/example-feature.md#step-2] ..."
```
The two examples above illustrate **the two possible outputs** for two different environments. A single skill invocation produces only one of them, end to end.
## Notes
- Generative only. Never invoke `/orchestrate` from inside this skill.
- Match the language of the plan document for task descriptions (agent names always remain English).
- Do not insert "Co-Authored-By" lines or emoji in the output unless the user explicitly asks.
Todos os arquivos
1 arquivosInstalar plan-orchestrate
Baixe e descompacte os arquivos de habilidades no diretório .claude/skills/.
Baixar ZIPClone o repositório e copie os arquivos da habilidade para o seu projeto.
git clone https://github.com/affaan-m/ECC/tree/main/skills/plan-orchestrate # Copy SKILL.md to your .claude/skills/ directory
Copiar





Lar
