Implementar as tarefas e criar o código
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.
Execute a seção 14. Tarefas de spec.md em ordem de dependência, mantendo a fonte única, testes, código, evidências e checkboxes coerentes.
Para Laravel, consulte .specsfy/PACKAGES.md, docs/packages/README.md e as fichas existentes antes de adicionar ou substituir uma dependência. Se a tarefa trouxer uma URL GitHub ou mudar Composer, carregue $specsfy-specialist-laravel-package-manager e reutilize pacotes já instalados quando eles atenderem ao requisito.
Proteção obrigatória do banco
Antes de executar qualquer teste, suíte, regressão ou migration, rode:
node .agents/skills/specsfy-setup/scripts/check_database_safety.mjs \
--project <raiz> --command "<comando-pretendido>"
Em Laravel, exija .env.testing, APP_ENV=testing e um banco explicitamente diferente do banco de desenvolvimento definido no .env. Enquanto o estado for PENDING, não execute teste algum. Corrija o ambiente, repita a conferência e continue somente após SAFE.
Ignore todo comando classificado como IGNORED. Não execute, não transforme em tarefa 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. A mesma recusa vale para scripts indiretos e para testes com RefreshDatabase ou DatabaseMigrations. Use isolamento transacional e fixtures mínimas sem apagar o banco.
Revisão visual obrigatória
Toda tarefa de desenvolvimento executa uma revisão visual, mesmo sem pedido da pessoa. O item VISUAL vem depois de VERIFY e precisa estar concluído antes de EVIDENCE.
Para qualquer alteração com interface, leia DESIGNSYSTEM.MD, INTERFACE.md e os componentes afetados. Inspecione a renderização ou o DOM nos viewports e estados relevantes. Confira bordas, espaçamentos, margens, padding e tipografia do sistema, além de alinhamento, largura, overflow, foco, zoom e quebra de texto. Registre método, viewport, estados, ajustes e resultado na tarefa.
Quando a tarefa não alterar interface, conclua VISUAL com Não aplicável e um motivo concreto. Nunca pule esse item porque a pessoa não pediu revisão visual.
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-07-implement → $<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-07-implement — 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.
Gate inicial
- Resolva a raiz pelo caminho confirmado no
$specsfy-setup. Se a pessoa
informar um subdiretório, trate-o como projeto e não o promova para a raiz Git. Leia <raiz>/specs/planned/<NNNN>-<slug>/spec.md, evidências indexadas em research/, instruções do repositório e código relevante. Não procure tasks.md, plan.md, research.md ou data-model.md.
- Exija
Formato: Specsfy/2.0, Status: Planned ou Implementing,
Definition Gate: Passed e Plan Gate: Passed.
- Se
Interface para pessoas for Sim, leia a seção 10 e confirme que o
plano contém tarefas para stack local, telas, menus e navegação principal, formulários, ações, blocos React, componentes shadcn/ui/ReUI, estados e testes de interação. Compare a stack, as telas e os fluxos atuais com o projeto antes de alterar código. Preserve componentes, rotas, conteúdo, permissões e comportamentos existentes fora do alcance registrado. Se faltar algum deles ou a tecnologia proposta divergir sem confirmação, retorne automaticamente para $specsfy-05-tasks; não implemente um CRUD somente como API ou persistência. Antes de programar, confirme os itens escolhidos na tabela da seção 10 e em INTERFACE.md; depois de programar, atualize INTERFACE.md com todos os blocos criados, alterados ou reaproveitados. Em projeto React, carregue obrigatoriamente $specsfy-specialist-react-ui-components antes de escrever JSX ou TSX. Se a skill não estiver instalada, retorne ao $specsfy-setup para instalar o especialista detectado e não implemente a tela até concluir esse preparo. Para um CRUD, confirme também um único PageHeader reutilizável em todas as telas, DataGrid em largura total, coluna ID sempre visível, link da linha para o detalhe e botões de editar e apagar independentes na linha.
- Execute os validadores contra
specs/<estado>/<NNNN>-<slug>/spec.md. Se um gate
falhar por tarefa, predecessor TDD ou RED ausente em um plano antes aprovado, anuncie a pendência e retorne automaticamente para $specsfy-05-tasks; não altere produção. Essa skill reabre o Ato II, chama TDD/BDD e retoma esta implementação depois de validar novamente o plano. Para outra falha, carregue automaticamente a skill responsável pelo gate.
- Confira o comando da suíte base com
checkdatabasesafety.mjs. Execute-a
somente após SAFE; sem ambiente de teste separado, não rode nenhum teste. Registre falhas preexistentes e não as atribua à nova mudança.
- Antes da primeira alteração de produção, defina
Status: Implementing,
Delivery Gate: In Progress e execute specsfy transition <id> in-progress.
- Selecione trabalho pronto com:
node .agents/skills/specsfy-07-implement/scripts/next_task.mjs \
<raiz>/specs/<estado>/<NNNN>-<slug>/spec.md
Se não houver tarefa pronta, diferencie concluído de bloqueado por dependência.
Executar uma tarefa
- Confirme ID, tipo, referências, dependências, arquivos e resultado verificável; marque
PREP imediatamente após essa confirmação.
- Para
[TEST], siga $specsfy-06-tdd-bdd: leia o Gherkin de referência na
spec e use-o para desenhar o teste TDD; adicione marcadores e observe RED válido. Nunca crie ou execute .feature. Em PHP, use Pest; em Node, use somente o runner confirmado pelo usuário.
- Para
[CODE], confirme o predecessor TDD concluído cobrindo os mesmos IDs,
com RED registrado na seção 11. Sem isso, pare e não altere produção. Anuncie a pendência e retorne automaticamente para $specsfy-05-tasks, que reabre o plano, chama $specsfy-06-tdd-bdd e retoma esta skill depois do novo Plan Gate: Passed.
- Escreva a menor mudança de produção que torna o teste TDD verde.
Para uma tarefa de interface, implemente a tela, os menus, o formulário e a interação definidos na spec com os estados descritos; não substitua o fluxo por uma rota de API, um componente vazio ou um atalho sem a tela acordada. Em React, siga $specsfy-specialist-react-ui-components para localizar, reaproveitar, adaptar e registrar os componentes antes de criar uma nova composição. Quando a tarefa usa [MIGRATION], crie primeiro o arquivo versionado no caminho planejado. Passe o comando pelo checkdatabasesafety.mjs, aplique a migration no banco de teste e consulte o estado logo depois. Registre os dois comandos com saída zero no comentário specsfy:evidence da tarefa.
- Depois de alterar produção e antes de marcar
EXECUTE, monitore o contexto:
node .agents/skills/specsfy-setup/scripts/monitor_context.mjs \
--project <raiz> --check
Para stack pendente, faça handoff a $specsfy-aux-stack; para persistência, a $specsfy-aux-database; para regra confirmada, a $specsfy-aux-rules. Revise PROJECT.md em toda mudança de aplicação. Se não houver impacto material na história, finalidade, capacidades ou limites, registre a avaliação na evidência da tarefa e repita com --acknowledge-project-no-change. Não marque a tarefa enquanto o monitor retornar PENDING.
- Depois de cada tarefa
[CODE], anuncie
Transição automática: $specsfy-07-implement → $specsfy-documentator — motivo: implementação alterou o sistema — resultado esperado: docs/ reconstruído e atual e carregue $specsfy-documentator. Reconstrua a documentação a partir de todo o código existente, execute seu --check e retome esta skill somente quando a documentação estiver atual.
- Para
[DOC] ou [OPS], produza a evidência específica pedida.
- Marque
EXECUTE somente quando a entrega e a documentação exigida existirem
nos caminhos declarados.
- Confira novamente cada comando de teste com
checkdatabasesafety.mjs.
Execute o teste TDD focal, a suite relacionada e checks estáticos somente após SAFE; marque VERIFY somente com o resultado esperado.
- Refatore somente com tudo verde.
- Registre comando, resultado e IDs nas seções 11–13 e então marque
EVIDENCE.
Quando houver Evidence Contract: 1, grave também o comentário JSON specsfy:evidence no bloco da tarefa e execute:
node .agents/skills/specsfy-07-implement/scripts/verify_evidence.mjs \
specs/<estado>/<NNNN>-<slug>/spec.md . --task TNNN
Quando uma execução completa produzir atestação schema 2, verifique novamente com --attestation PATH. Exija commit compatível, binding da mesma spec/tarefa, refs e comandos idênticos, checks realmente aprovados e SHA-256 atual de cada arquivo. Atestação de --self-test não prova entrega.
- Faça uma micro-retrospectiva: aplique uma melhoria segura encontrada ou registre “nenhuma melhoria necessária” com justificativa; então marque
IMPROVE.
- Na seção 14 de
specs/<estado>/<NNNN>-<slug>/spec.md, altere o pai de - [ ] para - [x] somente quando os seis itens estiverem concluídos, incluindo VISUAL.
- Execute
validatetasks.mjs, recalcule a próxima tarefa e confira o próximo item retornado por nexttask.mjs.
Uma tarefa [MIGRATION] não pode ser concluída apenas porque o model, a query ou o teste existe. verify_evidence.mjs exige o arquivo da migration, o comando que a aplicou e a consulta que confirma seu estado. Se faltar qualquer um, mantenha EXECUTE, VERIFY e a tarefa abertos.
Atualize os itens conforme o trabalho acontece; não os marque em lote no encerramento. Tarefas [P] podem ser agrupadas apenas quando não tocam os mesmos arquivos ou estado. Se a execução revelar dependência oculta, torne-a explícita na seção 14.
Controlar mudança de escopo
Pare quando a implementação exigir comportamento não descrito, contradizer um AC ou mudar interface pública, dados, segurança ou fora de escopo. Anuncie a pendência e carregue automaticamente $specsfy-update-spec. Essa skill preserva o pedido, decide se precisa refinar a pessoa, atualiza a fonte normativa, reabre somente os gates afetados e percorre validação, tarefas e TDD/BDD. Retome esta skill somente com os gates novamente aprovados. Atualize na ordem:
specs/<estado>/<NNNN>-<slug>/spec.md (seções 1–13) → tarefas (seção 14) → testes → código → evidências na mesma spec
Correções internas reversíveis podem ser decididas no código e registradas no relato sem reabrir a especificação.
Gate de conclusão
Quando todas as tarefas da seção 14 estiverem marcadas:
- execute a suite completa disponível, lint, tipos e build;
- execute a rastreabilidade de testes;
- compare cada
AC, FR, NFR e item da Definition of Done com evidência atual;
- procure tarefas abertas, placeholders, testes pulados e falhas conhecidas;
- execute novamente
monitor_context.mjs --project <raiz> --check e resolva toda
documentação pendente;
- carregue
$specsfy-documentator, reconstrua docs/ e exija que o
build_documentation.mjs --project <raiz> --check passe;
- não declare conclusão se alguma evidência estiver ausente;
- para toda tarefa
[MIGRATION], execute verify_evidence.mjs e confirme o
arquivo, a aplicação e a consulta de estado;
- altere
Delivery Gate para Passed somente com rastreabilidade completa,
defina Status: Reviewing e execute specsfy transition <id> review. $specsfy-04-validate conclui o aceite e move a spec para completed.
Depois do gate final, projete o resumo de entrega sem criar arquivo:
node .agents/skills/specsfy-07-implement/scripts/render_delivery.mjs \
specs/<estado>/<NNNN>-<slug>/spec.md --format markdown
Use --preview enquanto a entrega estiver aberta. Publicar o texto em PR, commit ou ferramenta externa exige pedido explícito; o script escreve somente em stdout.
Leia references/completion-gates.md para o fechamento.
Relatar
Informe tarefas concluídas, arquivos alterados, comandos e resultados, cobertura de IDs, falhas preexistentes, próxima tarefa pronta ou o gate final. Ao final, anuncie e carregue automaticamente $specsfy-progress para conferir a visão global derivada da fonte. Em falha, anuncie a pendência, carregue automaticamente a skill responsável quando necessário e deixe a tarefa aberta até a correção e retomada.
Especialistas sob demanda
Leia [references/specialists.md](references/specialists.md) antes de executar uma tarefa cuja tecnologia ou risco não esteja coberto pelo contexto local. Instale somente com autorização no projeto consumidor.