spec¶
Da intenção a cenários que o revisor pode verificar. A fase em que você decide o que será construído.
| Papel | O analista. Se importa com o resultado observável, não com a solução. Faz no máximo três perguntas por rodada, propõe padrões, nunca aceita "funciona bem" como resultado. |
| Quem decide | Você aprova a proposta na conversa: estes cenários junto com a abordagem e os testes do plano; o assistente a registra com atipspec accept <slug> proposal --code <code>. Ponto de parada 1. |
| Produz | requisitos e cenários em .atipspec/specs/<capability>.md; o spec.md da entrega com a intenção, o que fica fora do escopo, os limites de qualidade e os IDs que ela lista |
Como executar¶
Se a entrega ainda não existe, o modelo a cria com atipspec new. Em
seguida, a skill executa atipspec spec password-reset, que imprime o
workflow, as regras e o contexto. Uma entrega guiada não precisa de mais
nada para começar; check avisa enquanto o contrato não está aceito. Uma
entrega de fix usa o fix em vez disso, e uma
entrega antiga precisa antes da
aceitação do contrato.
O que o modelo faz¶
- Lê o contexto que o comando imprimiu: o contrato, a visão geral, o glossário, as specs vivas na lista de impacto e as decisões que as afetam. Usa as palavras do glossário e pergunta antes de aceitar um sinônimo.
- Pergunta apenas o que o projeto ainda não responde, em rodadas de no máximo três perguntas, as de maior impacto primeiro, cada uma vinculada à decisão que ela muda e com um padrão proposto; faz outra rodada enquanto uma decisão com consequências estiver em aberto. Resolve, nesta ordem: ator e gatilho; caminho feliz; caminhos de falha (entrada inválida, dados ausentes, permissões, timeouts); dados criados, alterados ou excluídos; fora do escopo; atributos de qualidade como um número com a forma de medi-lo, ou nenhum; conflitos com o comportamento existente ou com o contrato.
-
Obtém um prefixo de ID uma vez para a entrega com
atipspec ids authe escreve os requisitos e seus cenários na spec viva da capacidade,.atipspec/specs/auth.md:### REQ-AUTH-7KQ2M-001: The user can request a reset link From the sign-in screen the user enters an email and receives a link. Why: support tickets for forgotten passwords are 40% of the queue. #### AC-AUTH-7KQ2M-001: Registered email - **GIVEN** a registered user with the email "ana@example.com" - **WHEN** the user requests a reset for "ana@example.com" - **THEN** the system sends a reset link to "ana@example.com" within 60 seconds #### AC-AUTH-7KQ2M-002: Unknown email - **WHEN** a reset is requested for "nobody@example.com", which no user has - **THEN** the system shows "Check your email" and sends nothing ### REQ-AUTH-7KQ2M-002: The link expires #### AC-AUTH-7KQ2M-003: Link older than 30 minutes - **WHEN** a link issued 31 minutes ago is opened - **THEN** the page shows "link expired" and sends nothing ### REQ-AUTH-7KQ2M-003: Reset requests under load #### AC-AUTH-7KQ2M-004: One hundred requests a minute - **WHEN** 100 users request a reset within one minute - **THEN** the p95 response time measured at the API gateway is below 300 ms -
Preenche o
spec.mdda entrega:requirementslista os IDs que esta mudança escreve,## Intentdeclara o ator, o gatilho, o resultado observável e como você saberá que funcionou, e## Out of scopee## Quality attributes(uma linha- REQ-...: limitpor requisito que declara um limite) ficam decididos,- Noneinclusive:--- title: "Password reset" status: draft capability: auth owner: ana requirements: [REQ-AUTH-7KQ2M-001, REQ-AUTH-7KQ2M-002, REQ-AUTH-7KQ2M-003] risk: normal --- # Password reset ## Intent A user who forgot the password requests a reset link by email and sets a new password with it, without contacting support. ## Out of scope - Password policy changes. ## Quality attributes - REQ-AUTH-7KQ2M-003: p95 below 300 ms with 100 requests per minute ## Assumptions - The link is single-use. ## Open questions - NoneQuando você traz um documento ou uma lista de critérios de aceitação, o modelo executa
atipspec spec-bind password-reset --file <path>, que escreve a spec viva e os IDs; com uma lista, mantém o original e lista em## Import review noteso que verificar. -
Executa
atipspec check password-resete reescreve o que ele aponta até que o único pendente restante seja sua aprovação. Cita apenas textos que a interface mostra palavra por palavra, e nomeia cada aviso que mantém ao apresentar. - Propõe o risco da entrega, prepara o plano e
apresenta
atipspec proposal password-reset, que mostra o código de aprovação, o tipo e o risco, com que rigor os critérios são verificados, os avisos de especificação e o diff da spec viva, e pede sua aprovação na conversa.
Regras da entrevista¶
- No máximo três perguntas por rodada, cada uma vinculada à decisão que ela muda; mais rodadas enquanto uma decisão com consequências estiver em aberto.
- Um padrão que o modelo propõe se torna um requisito e uma suposição que você confirma na aceitação, nunca uma escolha silenciosa.
- Todo cenário com WHEN e THEN e um valor concreto em cada THEN, sem termos
vagos, e marcado
[manual]quando uma pessoa o observa; caso contrário,checko reporta. Veja como escrever critérios. - Um requisito por comportamento que um usuário valoriza, independente de outras mudanças abertas, pequeno o bastante para a entrega e testável.
- Atributos de qualidade são números com uma forma de medi-los, ou nada.
- Uma
## Intentvazia bloqueia a proposta, assim como uma## Out of scopeou## Quality attributesvazia: escreva- Nonequando nada se aplica. - Uma entrega cabe em um dia de trabalho. Acima de
max_requirementso modelo propõe dividi-la em entregas sob uma iniciativa antes de pedir a aceitação;checkavisa de qualquer forma. - Comportamento, nunca implementação.
- Uma spec com perguntas em aberto não pode ser aprovada: a proposta não mostra nenhum código.
capabilityé a spec viva que contém os requisitos.impactlista toda outra spec viva ou seção do contrato que a entrega toca:contextas carrega estatusavisa sobre sobreposições com outras entregas abertas.### REQ-AUTH-7KQ2M-003 [remove]: Exact titlena spec viva, listado emrequirements, exclui esse requisito no deliver. É assim que um comportamento é aposentado: explicitamente.- Requisitos que outra entrega aberta ou a spec viva já contém mantêm seus IDs; a entrega lista apenas o que ela escreve.
- Um requisito que a entrega adiciona, altera ou remove em
specs/sem listá-lo, na spec viva da sua capacidade ou em outra, é um erro em todos os níveis de risco: a aprovação inclui no hash apenas os listados, emerge-checkbloqueia os demais.
Risco¶
O spec.md de uma entrega guiada declara risk: low, normal (o que new
escreve) ou high. O modelo propõe o nível; você o aprova com a proposta,
que mostra Kind: ... · Risk: ... e o que o nível pede do portão. risk
faz parte do que a aprovação da proposta inclui no hash, então mudá-lo
depois anula essa aprovação. O nível não adiciona nem remove nenhuma
aprovação.
| Nível | O que o portão pede |
|---|---|
low |
um critério em Tests: cujo teste nomeado em Proof: passou na evidência atual não precisa de veredito do revisor (check diz isso com um info, e o dossiê mostra NOT NEEDED com o motivo); review.md continua obrigatório, todo outro critério, inclusive os manuais, precisa do seu veredito e um FAIL continua bloqueando. Remover um requisito (marcado [remove] ou excluído de specs/), mesmo listado, ou mudar contract.md é um erro: check compara specs/ com os requisitos que estavam no commit base da entrega e com o que trouxeram desde então o branch de integração e as entregas arquivadas no branch |
normal |
um veredito do revisor para cada critério |
high |
plan.md declara um scope, e um arquivo fora dele é um erro, mesmo com strict_scope: false; todo critério em Tests: nomeia seu teste em Proof:, com um Report: (um erro que bloqueia a proposta); o review vem de uma sessão isolada (session: isolated) |
Uma entrega sem risk, as antigas inclusive, é normal; uma entrega antiga
que o define manualmente recebe seus efeitos, e check registra o nível.
Outro valor é um erro. O pacote de review declara o nível, e o dossiê o
mostra.
Sua parte¶
Leia a proposta como o acordo que ela é. Mude o texto, adicione cenários, corte escopo. Quando ela disser o que você quer, aprove na conversa; o assistente então executa, com o código que apresentou:
Ele recusa enquanto uma pergunta está em aberto, um cenário está incompleto
ou o plano tem um erro, e quando o código não corresponde ao conteúdo atual;
caso contrário, define status: ready e registra um hash dos cenários, do
spec.md da entrega, dos compromissos do plano, do contrato e da
configuração, o código e o canal. A partir daí, qualquer edição neles
transforma a entrega de volta em rascunho até você aprovar de novo, e
check nomeia o que mudou. O Claude Code pergunta a você antes de o comando
rodar.
Mudando a spec depois
Se o build revelar que um critério não pode ser atendido, o modelo deve parar e avisar você. A spec muda com seu acordo, e a entrega passa pelo portão de novo. Critérios nunca são enfraquecidos silenciosamente e nunca são adiados.