Executar TDD orientado pelo BDD da especificação
SkillDev toolsUse quando o usuário pede TDD, BDD, testes derivados do Gherkin de referência da especificação, rastreabilidade entre `spec.md` e testes, ou um ciclo RED-GREEN-REFACTOR. Use também quando uma transição automática pedir materialização, RED ou verificação de testes. Use para editar as seções 11–13 e executar testes; `specsfy-07-implement` continua responsável pelas tarefas de produção na seção 14 do mesmo arquivo.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Executar TDD orientado pelo BDD da especificação skill
What this skill tells your AI
The instructions your AI receives, as published by promovaweb/specsfy in skills/specsfy-06-tdd-bdd/SKILL.md and read by ahel’s review.
Preparação obrigatória
Antes de executar esta skill, carregue obrigatoriamente $specsfy-setup na
raiz do projeto. Em handoff automático, carregue-o de novo antes desta etapa.
Reutilize a raiz confirmada na conversa e não prossiga se o setup apontar uma
pendência.
Modo de interação
Modo de interação: perguntas.
Antes de formular qualquer pergunta, leia e aplique o
Contrato de perguntas numeradas de .specsfy/Spec.md.
Leia o BDD como referência e converta o comportamento especificado em testes TDD executáveis e evidência rastreável. O Gherkin ajuda o usuário e o agente a entender contexto, ação e resultado; ele próprio não é uma suíte de testes.
Proteção obrigatória do banco
Antes de executar qualquer teste focal, suíte ou regressão, confira o comando e o ambiente:
node .agents/skills/specsfy-setup/scripts/check_database_safety.mjs \
--project <raiz> --command "<comando-de-teste>"
Em Laravel, a conferência exige .env.testing, APP_ENV=testing e um banco
explicitamente diferente do banco de desenvolvimento registrado no .env.
Não execute nenhum teste enquanto o resultado for PENDING. Corrija o ambiente
de testes, repita a conferência e prossiga somente depois de SAFE.
Trate IGNORED como descarte obrigatório do comando. Não execute, não adapte
com --force e não peça autorização para rodar migrate:fresh,
migrate:refresh, migrate:reset, migrate:rollback, db:wipe,
schema:drop, prisma migrate reset, DROP DATABASE, DROP SCHEMA,
DROP TABLE, TRUNCATE ou equivalentes. Não use RefreshDatabase nem
DatabaseMigrations; em Laravel, prefira DatabaseTransactions e factories
que criem somente os registros usados pelo caso.
Orquestrar a conversa
Ao concluir esta etapa ou detectar trabalho de outra etapa, anuncie
Pendência detectada: <descrição> — ação: resolvendo nesta etapa e resolva-a
quando pertencer ao próprio escopo. Quando houver troca de responsabilidade,
anuncie Transição automática: $specsfy-06-tdd-bdd → $<destino> — motivo: <motivo> — resultado esperado: <resultado> e carregue imediatamente a skill de
destino, sem pedir confirmação nem repetir o comando. Continue na mesma
conversa. Depois de uma correção necessária a esta etapa, anuncie Retomada automática: $<destino> → $specsfy-06-tdd-bdd — pendência resolvida: <resultado> e retome-a imediatamente. Reavalie o estado após cada handoff para
evitar ciclos. Não peça confirmação para o handoff; ações sensíveis continuam
exigindo autorização específica.
Escolher o modo
prepare: antes da implementação, criar o próximo teste/scenario e provar RED sem escrever código de produção.cycle: executar RED → GREEN → REFACTOR para uma fatia explicitamente escolhida.verify: executar suites e auditar rastreabilidade sem criar comportamento novo.
Se o usuário não indicar o modo, use prepare quando a seção 14 ainda não estiver em execução e cycle quando houver uma tarefa ativa.
Preparar
- Leia
specs/<estado>/<NNNN>-<slug>/spec.md, testes e configuração do projeto. - Exija
Formato: Specsfy/2.0eDefinition Gate: Passed. No modoprepare, useStatus: DefinedePlan Gate: Pending; nos modoscycleeverify, useStatus: PlannedouImplementing. - Selecione uma fatia vertical pequena: um
ACGherkin e seusFR/NFR. - Resolva o runner de testes pela stack antes de escrever testes:
- projeto PHP (
composer.jsonouartisan), inclusive PHP + Node: use Pest; - projeto Node sem PHP: pergunte ao usuário qual runner adotar antes de instalar ou configurar; recomende Vitest por padrão;
- outra stack: preserve o runner de testes existente ou pergunte quando não houver decisão reproduzível.
- projeto PHP (
- Confira o ambiente e o comando com
check_database_safety.mjs. Se o estado não forSAFE, não execute teste algum e mantenha a etapa pendente. - Em Node, considere a decisão materializada quando
package.jsonexpuser o scripttest:tdd; não escolha nem instale dependência silenciosamente. - Leia
references/test-levels.mdpara escolher o nível mais baixo que ainda prova o comportamento.
Usar o BDD para escrever TDD
- Use o bloco Gherkin do
ACemspec.mdcomo contrato de referência sem mudar seu significado. - Não crie, copie nem execute arquivos
.featureou step definitions. Os termos Given/When/Then permanecem apenas naspec.md. - Em PHP, escreva o teste TDD com Pest em
tests/Feature/outests/Unit/, no menor nível que prova o comportamento. Marque cada caso executável, imediatamente junto à sua definição, com:
// SPECSFY: US-001 FR-001 AC-001
- Em Node, depois da resposta do usuário, escreva o teste TDD no runner
escolhido e use
SPECSFY: US-001 FR-001 AC-001. - Materialize no mínimo três casos TDD distintos para a feature inteira e para
cada
US,FReNFR: caminho feliz, regra/variação crítica e falha ou limite material. Um único marcadorSPECSFY:compartilhado pelo arquivo conta como um caso, mesmo que o arquivo contenha vários testes. - Cubra cada
ACcom ao menos um caso TDD, sem multiplicar casos equivalentes. - Escolha unidade, integração, contrato ou browser conforme a fronteira descrita pelo BDD; não crie uma segunda suíte apenas para rotulá-la como BDD.
- Não use mocks para remover justamente a fronteira que o cenário pretende provar.
Ciclo obrigatório
RED
- Leia o BDD de referência e escreva o menor teste TDD que prova o
ACe seus requisitos. - Execute o teste TDD; nunca execute Gherkin.
- Confirme falha pelo comportamento ausente ou incorreto.
- Se falhar por sintaxe, fixture, importação ou ambiente, corrija o teste e repita.
- Se passar antes da mudança, o teste não demonstra o gap: refine-o ou prove que a funcionalidade já existe.
No modo prepare, pare após o RED válido, registre evidência e conclua o
checklist da tarefa [TEST] correspondente. Não
altere Plan Gate; anuncie e retorne automaticamente para
$specsfy-05-tasks, que valida todos os predecessores antes de promover a
spec para Planned.
Registre a linha correspondente na tabela Evidência RED-GREEN-REFACTOR com o RED observado.
GREEN
No modo cycle, escreva o mínimo de código de produção que satisfaça o cenário. Execute primeiro o teste focal e depois a suite relacionada. Não generalize antes de haver um exemplo que exija generalização.
Atualize a mesma linha de evidência com o GREEN observado.
REFACTOR
Com tudo verde, elimine duplicação e melhore nomes/estrutura sem alterar comportamento. Execute novamente as suites relacionadas. Registre o comando de regressão na seção 11 e a evidência na matriz da seção 12.
Auditar rastreabilidade
Execute:
node .agents/skills/specsfy-06-tdd-bdd/scripts/check_traceability.mjs specs/<estado>/<NNNN>-<slug>/spec.md .
Trate como gap cada feature, US, FR ou NFR com menos de três casos TDD e
cada AC sem ao menos um caso. Para NFR verificado manualmente ou por
observabilidade, cite a evidência sem dispensar os três casos automatizáveis;
quando necessário, ajuste --kinds sem remover IDs aplicáveis.
Em specs com Evidence Contract: 1, acrescente --full-chain para exigir
US/FR/NFR/AC → teste → tarefa → evidência.
Durante execução, mantenha Delivery Gate: In Progress e atualize o
Gate do Ato III — Entrega da seção 13. Use Passed somente quando não houver
gap obrigatório, todas as tarefas estiverem concluídas e a Definition of Done
estiver comprovada.
Disciplina sob pressão
| Tentação | Regra |
|---|---|
| “É uma mudança pequena.” | Mudanças pequenas recebem testes pequenos; tamanho não substitui RED. |
| “O código já está pronto.” | Escreva um teste de caracterização; não altere produção para fabricar RED. Para comportamento novo, escolha um caso ainda não atendido. |
| “O prazo permite pular RED.” | Sem falha observada não há prova de que o teste protege o requisito. |
| “O líder autorizou.” | Autoridade pode mudar escopo, não transformar ausência de evidência em TDD. |
| “Testar depois é equivalente.” | Test-first guia o contrato e prova sensibilidade antes da implementação. |
Em uma tarefa de teste, atualize PREP, EXECUTE, VERIFY, VISUAL,
EVIDENCE e IMPROVE conforme cada etapa acontecer. O item VISUAL também é
obrigatório para confirmar se o teste toca uma interface; quando não tocar,
registre Não aplicável e o motivo. Não marque o pai como concluído sem
arquivo, marcador, RED válido, comando/evidência e revisão do processo.
Não escreva código de produção antes que o predecessor TDD informado pelo BDD
da mesma fatia esteja concluído e com RED registrado na spec.
Auditar QA
Depois de executar os runners pertencentes ao repositório, registre Passed ou
a falha na coluna Evidência da seção 12 e audite:
node .agents/skills/specsfy-06-tdd-bdd/scripts/verify_acceptance.mjs \
specs/<estado>/<NNNN>-<slug>/spec.md .
O auditor não executa comandos extraídos de Markdown. AC manual exige método,
responsável e evidência; AC sem resultado impede Delivery Gate: Passed.
Quando houver atestação do runner, repita com --attestation PATH: o auditor
exige exatamente o check acceptance:<slug> aprovado, detail JSON válido e
cobertura de todos os ACs. Texto Passed isolado não substitui essa prova.
Relatar evidência
Informe a fatia, IDs cobertos, arquivo do teste, comando RED, causa da falha, comando GREEN quando aplicável, suite de regressão e gaps de rastreabilidade.
Especialistas sob demanda
Leia references/specialists.md quando o runner, boundary ou oráculo de teste for específico de uma tecnologia. O especialista complementa; esta skill preserva RED/GREEN e rastreabilidade.
Signals
- GitHub stars
- 79
- Forks
- 37
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
specsfy-06-tdd-bdd- Source
- github.com/promovaweb/specsfy