O fluxo¶
Nove fases. Sete formam o caminho de uma entrega, com fix como o caminho
curto para um defeito; duas são transversais. Cada fase tem uma palavra, e
essa palavra é o comando da CLI, o arquivo de workflow e a skill. Você invoca
uma fase com sua skill; a skill executa o comando da fase; o comando recusa
enquanto um passo obrigatório estiver faltando e, caso contrário, imprime o
workflow, as regras e o contexto. A entrega guiada acompanha
uma mudança por todos os passos, com os comandos e os arquivos que cada um
escreve.
flowchart TB
subgraph delivery [Uma entrega]
direction LR
E[explore] --> S[spec] --> P[plan] --> B[build] --> R[review] --> D[deliver]
end
C[contract] -. regras verificadas em plan, build e review .-> delivery
K[curate] -. mantém a visão geral, o glossário e as specs pequenos .-> delivery
| Fase | O que dizer ao seu cliente | Produz | Quem decide |
|---|---|---|---|
| explore | /atipspec-explore <slug>: <idea> |
brief.md |
você: faça a spec, reduza o escopo ou descarte |
| spec | /atipspec-spec <slug>: <what you want> |
cenários em specs/<capability>.md, o spec.md da entrega |
você aprova a proposta, com o plano. Ponto de parada 1 |
| fix | /atipspec-fix <slug>: <the defect> |
o requisito aceito que ele quebra, corrigido, e um plano de uma tarefa | você aprova a proposta. Ponto de parada 1 |
| plan | /atipspec-plan <slug> |
plan.md: escopo, abordagem, tarefas, verificação final |
parte da proposta |
| build | /atipspec-build <slug> |
código e testes, registros de task-done, evidência |
o desenvolvedor com o modelo |
| review | /atipspec-review <slug> |
review.md pelo revisor |
atipspec check |
| deliver | /atipspec-deliver <slug> |
sua aceitação do resultado, spec viva atualizada, pasta arquivada | você aceita o resultado. Ponto de parada 2 |
| contract | /atipspec-contract |
contract.md, decisões |
você aprova, uma vez por projeto |
| curate | /atipspec-curate |
overview.md, glossary.md |
o modelo, dentro dos limites |
O que cada fase exige¶
O comando da fase verifica isso antes de imprimir qualquer coisa. Quando um deles está faltando, ele sai com código 1 e uma única linha nomeando o passo e quem o resolve.
| Comando | Exige |
|---|---|
atipspec explore <slug> |
a entrega existe (atipspec new) |
atipspec spec <slug> |
entregas guiadas: nada (check avisa enquanto o contrato não está aceito); entregas antigas: a aceitação do contrato está registrada para seu conteúdo e suas decisões atuais (atipspec accept contract --code <code>) |
atipspec fix <slug> |
a entrega foi criada com --kind fix; para um fix criado antes da 0.3.0, também a aceitação do contrato registrada para seu conteúdo atual |
atipspec plan <slug> |
entregas guiadas: cenários completos sem um achado de especificação bloqueante (os achados estritos bloqueiam com strict_criteria: true), uma intenção declarada, seções de fora do escopo e de qualidade decididas (para um fix, seu defeito declarado e os requisitos que ele corrige listados), e nenhuma pergunta em aberto; entregas antigas: a spec está aceita para seu conteúdo atual (atipspec accept <slug> spec --code <code>) |
atipspec build <slug> |
entregas guiadas: a proposta atual está aceita (atipspec accept <slug> proposal --code <code>); entregas antigas: um plano com tarefas e sem erros de plano, aceito com atipspec accept <slug> plan --code <code> quando approve_plan está ativo. Ele nomeia a próxima tarefa |
atipspec review <slug> |
toda tarefa registrada com task-done (ou, em uma entrega antiga, um marcador de commit), evidência atualizada, nenhuma violação do contrato, revisões restantes (review_rounds, contando a primeira); só então ele escreve o pacote |
atipspec deliver <slug> |
o portão está verde e sua aceitação do resultado atual está registrada (atipspec accept <slug> result --code <code>); com uma política de confiança, o portão confiável está verified |
atipspec contract, atipspec curate |
nada |
atipspec ship <slug> |
a entrega existe; imprime a próxima fase em que entrar |
Modo ship¶
atipspec ship <slug> nomeia a próxima fase em que a entrega pode entrar; o
modelo entra nela, termina e pergunta de novo. Ele executa plan, build,
review e deliver sem pausar, exceto nos dois pontos de parada, diante de uma
mudança material no acordo aprovado, diante de um bloqueio e para perguntas
que mudam a spec (e, em uma entrega antiga, na aprovação do plano quando
approve_plan está ativo). Termina com um relatório: o que mudou,
evidência, resultado do review, itens adiados, próxima ação. Para uma
execução não assistida por meio de um processo configurado, veja
o adaptador de execução.
Risco¶
Cada entrega guiada declara risk: low, normal ou high em seu spec.md,
e você o aprova com a proposta, que mostra o que o nível pede do portão.
normal pede um veredito do revisor para cada critério. low deixa sem
veredito um critério cujo teste nomeado passou, e não pode remover um
requisito nem mudar o contrato. high exige um escopo declarado, um teste
nomeado com um relatório JUnit para cada critério automatizado e um review
de uma sessão isolada. O nível não adiciona nem remove nenhuma aprovação;
mudá-lo depois da aprovação anula essa aprovação. Veja risco.
Pontos de parada¶
Ponto de parada 1: a proposta
Nada é construído até você aprovar a proposta: cenários, abordagem,
testes e risco juntos (a spec, em uma entrega antiga). Você aprova na
conversa; o assistente registra isso com atipspec accept <slug>
proposal --code <code>, informando o código que atipspec proposal
<slug> mostrou a você. O Claude Code, configurado pelo init e aberto
na raiz do projeto, pergunta a você antes de esse comando rodar, e o
registro declara esse canal. O
comando define status: ready e registra o que você aceitou. É aqui que
uma ideia errada custa menos.
Ponto de parada 2: o resultado
Nada é arquivado até você aceitar o resultado revisado. O assistente
apresenta atipspec report <slug>: cada critério com sua evidência e seu
veredito, e cada arquivo alterado com o diff. Você aceita na conversa; o
assistente registra isso com atipspec accept <slug> result --code
<code>, e deliver então atualiza a spec viva e arquiva a entrega em
seu branch. Commit, push e merge seguem a política do seu repositório:
atipspec merge-check --base <target> confirma que cada entrega que o
branch toca está aceita e que seu código ainda é o código aceito. O
AtipSpec nunca faz push nem merge.
Papéis¶
A fase aciona o que o modelo faz, não você: o comando da fase imprime a fase
que abre ("Phase spec: Password reset (password-reset)"). Os workflows de
explore, fix, contract e curate começam com o papel que o modelo adota ali.
As fases guiadas descrevem o trabalho em vez disso, e os seis papéis guiados
(guide, analyst, designer, tester, implementer e reviewer) são instruções
que atipspec context --role imprime e o executor de processos envia;
risk os ajusta.