Files
msd-core/docs/pt-BR/reference/plan-md.md
Tom Boucher ffd5370464 fix(#2903): use the command form that actually works in reader-facing docs (#3047)
* fix(#2903): use the command form that actually works in reader-facing docs

Docs told readers to type the colon form, which no runtime registers -- 18 of
19 runtimes use slash-hyphen and the 19th uses shell-var -- so anyone copying an
example got an unrecognized command. Swept 178 occurrences across 53 files,
locale mirrors included so they do not re-diverge from English.

The colon form is a source-authoring token, not a user-facing one: install-time
converters key on it to produce the hyphen form runtimes actually register. So
the sweep is scoped, and three things are deliberately left alone:

- ADRs, which are a historical record; editing their prose falsifies what was
  written at the time.
- The legacy release-notes archive, pending a maintainer decision on whether it
  follows the same historical carve-out. Excluding it keeps a later reversal
  additive rather than a revert.
- Source artifacts under commands, workflows and agents, where the colon form is
  load-bearing. Rewriting those would break the installed-skill guarantee across
  every runtime -- the single largest hazard here.

The plugin namespace form is a real, separate token and survives untouched.

Adds a lint enforcing exactly that boundary, since the correct form genuinely
differs by directory and nothing previously caught the drift.

Also fixes a hardcoded colon form in the capability-matrix generator. The sweep
alone would have left the generated matrix disagreeing with the template that
produces it, so the fix is at the source and the output regenerated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(#2903): stop the sweep misquoting source frontmatter

Adversarial review caught three lines where the sweep rewrote a citation of the
literal YAML name: key from a source command file. That key genuinely is the
colon form -- this change's own carve-out logic says source-authoring tokens keep
it -- so the docs ended up misquoting the real files. One of the three is an
acceptance-checklist assertion, which the sweep turned into a false statement.

Restored the three citations to match their sources verbatim, surgically: where a
line carried both a name: citation and a real reader-facing slash command, only
the citation reverted and the command stayed corrected.

The guard needed the same distinction, or it would have flagged the restoration
and reddened the build: a gsd:<cmd> token preceded by name: is a citation of a
source token and is now permitted. The exemption is deliberately narrow -- a bare
gsd:<cmd> anywhere else still fails -- with a test pinning that narrowness.

Also makes the detection case-insensitive. Review found /GSD:next slipped through
silently; no such casing exists in the tree today, so this closes a latent gap
rather than fixing a live one.

Swept the whole tree for further corrupted citations: none beyond the three.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* fix(#2903): retire the stale-next invariant and sweep next like every other command

Maintainer decision on a genuine conflict between two contracts.

Invariant #3054 banned the literal /gsd-next from user-facing docs because it
named a retired workflow-advance command. But commands/gsd/next.md is a live
command -- the state-aware smart-entry launcher -- and this issue requires docs
to use the hyphen form every runtime actually registers. Both could not hold for
this one command, so docs had been sidestepping the ban by keeping the colon
form, which is exactly the defect this issue exists to remove.

FEATURES.md already recorded the reassignment: the hyphen form "is not the
retired workflow-advance command; it is reserved for the state-aware smart-entry
launcher. Workflow advancement remains under /gsd-progress --next." With that
reassignment the invariant's premise is obsolete and the guard now contradicts
the documented command form, so it is retired with a comment recording why
rather than deleted silently.

next is now swept like every other command, and the earlier exemption added to
the new guard is removed so nothing is special-cased.

Four citations of the literal name: frontmatter key stay in colon form, because
the source file really does carry name: gsd:next and a doc quoting it must
reproduce it verbatim. Two of those lines were reworded to say which side is the
frontmatter key and which is the slash command, since they previously conflated
the two.

Verified the retired scan would now genuinely fail against this tree -- the
conflict was real and resolved, not dodged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* chore(#2903): backfill changeset pr number

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 13:23:44 -04:00

14 KiB
Raw Blame History

Referência do esquema PLAN.md

Um PLAN.md por plano é a unidade executável de trabalho do GSD Core — um documento estruturado que instrui exatamente um agente executor sobre o que construir e como verificar se foi construído corretamente. Esta página documenta sua estrutura. Veja o índice da documentação.


Visão geral

Os planos ficam dentro de diretórios de fase em:

.planning/phases/<NN>-<slug>/<NN>-<PP>-PLAN.md

Por exemplo: .planning/phases/03-post-feed/03-02-PLAN.md (Fase 3, Plano 2).

Os planos são produzidos pelo agente gsd-planner (disparado por /gsd-plan-phase) e consumidos por execute-phase. Uma fase normalmente contém entre um e quatro planos; os planos dentro de uma fase são atribuídos a ondas de execução para que trabalhos independentes sejam executados em paralelo.


Frontmatter YAML

Todo PLAN.md começa com um bloco de frontmatter YAML entre delimitadores ---.

Exemplo comentado

---
phase: 03-post-feed
plan: 02
type: execute
wave: 2
depends_on: ["03-01"]
files_modified:
  - src/components/PostFeed.tsx
  - src/components/PostCard.tsx
  - src/app/feed/page.tsx
autonomous: true
requirements: ["FEED-01", "FEED-03"]
user_setup: []

must_haves:
  truths:
    - "User can scroll through posts from followed accounts"
    - "Each post shows author avatar, name, timestamp, and content"
    - "Empty state appears when no posts exist"
  artifacts:
    - path: "src/components/PostFeed.tsx"
      provides: "Scrollable post list"
      min_lines: 40
    - path: "src/components/PostCard.tsx"
      provides: "Individual post card"
      exports: ["PostCard"]
  key_links:
    - from: "src/components/PostFeed.tsx"
      to: "/api/feed"
      via: "fetch in useEffect"
      pattern: "fetch.*api/feed"
---

Referência dos campos de frontmatter

Campo Obrigatório Tipo Finalidade
phase Sim string Identificador da fase, ex.: 03-post-feed.
plan Sim string Número do plano dentro da fase, ex.: 02.
type Sim execute ou tdd execute para planos padrão; tdd para planos orientados a testes, onde os testes são escritos antes da implementação.
wave Sim inteiro Onda de execução. Planos na onda 1 são executados em paralelo (sem dependências). Planos na onda 2 ou superior aguardam a conclusão de todos os planos da onda anterior. Pré-calculado durante o planejamento pelo gsd-planner.
depends_on Sim array de IDs de planos Planos dos quais este plano depende. Array vazio = onda 1. Exemplo: ["03-01"] significa que este plano é executado após o Plano 01 da Fase 3.
files_modified Sim array de caminhos Todos os arquivos que este plano cria ou modifica. Usado pelo verificador de planos para detectar conflitos de arquivos na mesma onda e pelo execute-phase para rastreamento de merge.
autonomous Sim booleano true quando todas as tarefas são do tipo auto. false quando o plano contém alguma tarefa checkpoint:* que requer interação humana.
requirements Sim array de IDs IDs de requisitos do ROADMAP.md que este plano atende. Todo ID de requisito de fase deve aparecer no campo requirements de pelo menos um plano. Arrays vazios são um BLOQUEADOR.
user_setup Não array de objetos Etapas de configuração de serviços externos que o Claude não pode automatizar (criação de conta, recuperação de segredos, configuração de painel). Quando presente, o execute-phase gera um checklist USER-SETUP.md para o desenvolvedor.
must_haves Sim objeto Critérios de verificação orientados ao objetivo final. Veja abaixo.

Campo must_haves

must_haves captura o que deve ser observavelmente verdadeiro para que o objetivo da fase seja alcançado. É derivado durante o planejamento e verificado após a execução pelo agente gsd-verifier.

Sub-campos

Sub-campo Tipo Finalidade
truths array de strings Comportamentos observáveis do ponto de vista do usuário. Cada um deve ser verificável. Exemplo: "User can send a message", não "WebSocket library installed".
artifacts array de objetos Arquivos que devem existir com implementação substantiva (não stubs).
artifacts[].path string Caminho do arquivo relativo à raiz do projeto.
artifacts[].provides string Qual capacidade este arquivo entrega.
artifacts[].min_lines inteiro (opcional) Contagem mínima de linhas para não ser considerado um stub.
artifacts[].exports array de strings (opcional) Exportações nomeadas esperadas para verificação.
artifacts[].contains string (opcional) Expressão regular ou padrão literal que deve aparecer no arquivo.
key_links array de objetos Conexões críticas entre artefatos — a ligação que faz o sistema funcionar de ponta a ponta.
key_links[].from string Arquivo ou componente de origem.
key_links[].to string Arquivo, endpoint ou módulo de destino.
key_links[].via string Descrição de como eles se conectam (ex.: fetch in useEffect, Prisma query, import).
key_links[].pattern string (opcional) Expressão regular para verificar se a conexão existe no código-fonte.

Estrutura do corpo

Após o frontmatter, o corpo do plano utiliza blocos no estilo XML lidos pelo agente executor.

<objective>

Declara o que o plano entrega e por que isso importa para o projeto:

<objective>
Implement the post feed as a scrollable card list.

Purpose: Core display feature for the social feed phase.
Output: PostFeed and PostCard components wired to /api/feed.
</objective>

<execution_context>

Lista os arquivos de workflow que o executor lê antes de começar. Sempre inclui o workflow execute-plan; adiciona a referência de checkpoints quando o plano contém tarefas de checkpoint:

<execution_context>
@~/.claude/gsd-core/workflows/execute-plan.md
@~/.claude/gsd-core/templates/summary.md
</execution_context>

<context>

Referencia os arquivos-fonte que o executor precisa ler. Inclui documentos de planejamento no nível do projeto e quaisquer arquivos-fonte cujos padrões ou tipos o plano deve replicar. Arquivos SUMMARY.md de planos anteriores são incluídos apenas quando há uma dependência genuína (tipos importados, decisão compartilhada) — não de forma reflexiva:

<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@src/components/UserCard.tsx
</context>

<tasks>

Contém um ou mais elementos <task>. Todo elemento de tarefa deve ter <name>, <files>, <read_first>, <action>, <verify>, <acceptance_criteria> e <done> para tarefas do tipo type="auto".


Tipos de tarefa

Tipo Uso Autonomia
auto Tudo o que o executor pode fazer de forma independente. Totalmente autônomo.
checkpoint:human-verify Verificação visual ou funcional que requer que um humano observe uma UI ou serviço em execução. Pausa a execução; apresenta ao desenvolvedor; retoma com aprovação.
checkpoint:decision Escolhas de implementação que surgiram durante a execução e requerem a contribuição do desenvolvedor. Pausa a execução; apresenta opções; retoma com a seleção.
checkpoint:human-action Etapas manuais verdadeiramente inevitáveis (criação de conta, interação com hardware). Usadas com parcimônia. Pausa a execução; retoma com confirmação.

Planos que contêm qualquer tarefa de checkpoint devem definir autonomous: false no frontmatter.


Estrutura de tarefa auto

<task type="auto">
  <name>Task 1: Create PostCard component</name>
  <files>src/components/PostCard.tsx</files>
  <read_first>src/components/UserCard.tsx, src/types/post.ts</read_first>
  <action>Create PostCard component accepting a Post prop (id, authorId, content, createdAt,
    reactionCount). Render author avatar using UserAvatar from UserCard pattern. Show timestamp
    using date-fns formatDistanceToNow. Export as named export PostCard.</action>
  <verify>npx tsc --noEmit</verify>
  <acceptance_criteria>
    - src/components/PostCard.tsx exports named export PostCard
    - PostCard.tsx contains "reactionCount" prop usage
    - npx tsc --noEmit exits 0
  </acceptance_criteria>
  <done>PostCard renders post content with author and timestamp</done>
</task>

Campos obrigatórios para tarefas auto

Campo Regra
<files> Todo arquivo que a tarefa cria ou modifica. O executor escreve apenas nesses arquivos.
<read_first> Arquivos que o executor deve ler antes de tocar em qualquer coisa — o arquivo sendo modificado, qualquer arquivo de padrão de referência, qualquer arquivo cujos tipos ou convenções devem ser replicados.
<action> Instruções concretas com identificadores exatos, caminhos de arquivo, assinaturas de função e valores esperados. Nunca diz "alinhe X com Y" sem especificar o estado-alvo. Nunca contém blocos de código cercados ou implementações completas.
<verify> Um comando ou verificação executável que comprova o sucesso da tarefa. Deve distinguir aprovação de falha — echo "done" não é válido.
<acceptance_criteria> Condições verificáveis: strings verificáveis por grep, códigos de saída de comandos, comportamentos observáveis. Sem linguagem subjetiva ("parece correto", "configurado corretamente").
<done> Uma declaração curta e mensurável do resultado concluído.

Dimensões de qualidade do plano

O agente gsd-plan-checker avalia cada PLAN.md em 12 dimensões antes do início da execução. Um plano que falha em qualquer verificação de severidade BLOQUEADOR é devolvido ao gsd-planner para revisão (até 3 iterações):

Dimensão O que verifica
1 — Cobertura de Requisitos Todo ID de requisito de fase do ROADMAP.md aparece no campo de frontmatter requirements de pelo menos um plano e possui tarefa(s) correspondente(s).
2 — Completude das Tarefas Toda tarefa auto contém todos os campos obrigatórios (<files>, <action>, <verify>, <acceptance_criteria>, <done>). Nenhum campo vago ou vazio.
3 — Correção de Dependências As referências de depends_on são válidas, acíclicas e consistentes com os números de onda. Um plano da Onda N depende apenas de planos em ondas < N.
4 — Links Principais Planejados Artefatos em must_haves.key_links possuem tarefas correspondentes que implementam a ligação — não apenas a criação do artefato.
5 — Sanidade do Escopo Os planos permanecem dentro do orçamento de contexto: 2–3 tarefas por plano (4 = aviso, 5+ = BLOQUEADOR), ≤ 8–10 arquivos por plano (15+ = BLOQUEADOR).
6 — Derivação de Verificação must_haves.truths são comportamentos observáveis pelo usuário, não detalhes de implementação. Artefatos mapeiam para truths. Links principais cobrem a ligação crítica.
7 — Conformidade de Contexto Toda decisão D-NN do CONTEXT.md é abordada por pelo menos uma tarefa. Nenhuma tarefa implementa nada de <deferred>.
7b — Detecção de Redução de Escopo As ações das tarefas não reduzem silenciosamente uma decisão bloqueada para um "v1", "stub" ou "melhoria futura" sem entregar o escopo completo da decisão. Sempre é um BLOQUEADOR quando encontrado.
7c — Conformidade de Nível Arquitetural As tarefas atribuem capacidades ao nível correto conforme o Mapa de Responsabilidade Arquitetural do RESEARCH.md (quando presente). Capacidades sensíveis à segurança no nível errado são BLOCKEADOREs.
8 — Conformidade Nyquist Quando workflow.nyquist_validation está habilitado e RESEARCH.md existe, toda tarefa tem um comando de verificação <automated>, nenhuma janela consecutiva de 3 tarefas carece de cobertura, e VALIDATION.md está presente.
9 — Contratos de Dados Entre Planos Quando planos compartilham pipelines de dados, suas transformações são compatíveis — nenhum plano remove dados que outro plano precisa em sua forma original.
10 — Conformidade com CLAUDE.md Os planos respeitam convenções específicas do projeto, padrões proibidos, ferramentas obrigatórias e requisitos de segurança do ./CLAUDE.md.
11 — Resolução de Pesquisa Quando RESEARCH.md existe, sua seção ## Open Questions está marcada como (RESOLVED) antes de o planejamento prosseguir.
12 — Conformidade de Padrões Quando PATTERNS.md existe, as tarefas referenciam os padrões analógicos corretos para cada arquivo novo ou modificado.

Modelo de execução por ondas

Os números de onda são pré-calculados durante o planejamento. O execute-phase agrupa os planos por número de onda e executa os planos de cada onda em paralelo:

Wave 1: Plan 01, Plan 02, Plan 03  (all run simultaneously — no dependencies)
Wave 2: Plan 04                    (waits for Wave 1 to complete)
Wave 3: Plan 05                    (waits for Wave 2 to complete)

Planos dentro de uma mesma onda que modificam arquivos sobrepostos não devem estar na mesma onda — a Dimensão 3 do verificador de planos sinaliza isso como um BLOQUEADOR.


Saída do plano

Após a execução bem-sucedida de um plano, o executor escreve um SUMMARY.md em:

.planning/phases/<NN>-<slug>/<NN>-<PP>-SUMMARY.md

O SUMMARY.md é o registro canônico do que foi construído. Planos subsequentes na mesma fase podem referenciá-lo quando há uma dependência genuína em seus tipos ou decisões.


Relacionados