Pular para o conteúdo
hugo.pessoni
Voltar aos cases
Engenharia com IAAgentes & MCP~5 min

Fábrica: do pedido ao sistema verificado

Skills do Claude Code que levam um PEDIDO.md a um sistema rodando, e quem aprova cada etapa é um script, não o agente.

Resultados

5/5

pedidos com 100% dos critérios de aceite, 4 deles inéditos

de 17/17 a 31/31 critérios por pedido

medidoout/2026execuções pelo caminho da banca, conferidas com fabrica verificar

~30 min

do PEDIDO.md ao sistema verificado, sem intervenção humana

27 a 31 min nas 5 execuções

medidoout/2026logs das execuções headless

0

voltas de gate nas 5 execuções finais

medidorelatórios gerados pelo pacote

513

testes do próprio pacote, 0 falhas no Windows e no Linux

medidosuíte de testes do repositório

Resumo

Contexto

No Hackathon Ideen 2026, o desafio era levar um pedido em linguagem natural até um sistema funcionando, com concepção, especificação, construção e revisão de verdade, e com evidência que outra pessoa conseguisse conferir. Sozinho, um agente de código tende a pular etapas, escrever testes que só confirmam o próprio código e declarar sucesso sem prova.

Ação

Construí sozinho, em três dias, um pacote de skills para o Claude Code com nove papéis em subagentes de contexto limpo: PM, Arquiteto, Conselho, QA, Dev, três revisores e Retro. Cada etapa termina num gate decidido por um script em Node, e não pelo modelo. O QA escreve e sela por hash os testes de aceite antes do código, a revisão roda quatro ferramentas de segurança e as evidências são geradas a partir dos próprios artefatos.

Resultado

Pelo caminho exato da banca (claude -p numa pasta limpa), cinco pedidos, quatro deles inéditos, passaram com 100% dos critérios, de 17/17 a 31/31, em 27 a 31 minutos cada e sem nenhuma volta de gate. Antes disso, 12 execuções por subagente somaram 339/339 critérios. O pacote tem 513 testes próprios.

Lição

Confiabilidade em agentes vem de tirar do modelo a decisão de que o trabalho terminou: quem aprova precisa ser determinístico e externo.

Arquitetura

Pipeline da FábricaO pedido passa por Concepção, Especificação, Construção e Revisão; um script decide cada gate e a Retro gera as evidências.PEDIDO.mdlinguagem naturalConcepçãoPM · PRDEspecificaçãoArquiteto + ConselhoConstruçãoQA sela · DevRevisão3 lentesGate por scriptreprova → volta (máx. 3)Retrorelatório e evidências

Versão longa

O problema

O kit do hackathon pedia uma coisa simples de dizer e difícil de fazer: receber um PEDIDO.md e entregar um sistema que outra pessoa consiga verificar. A falha típica de um agente não é escrever código ruim. É dizer que terminou quando não terminou, ou escrever testes moldados ao que ele mesmo implementou.

As decisões

1. Quem aprova é um script. Cada etapa (Concepção, Especificação, Construção, Revisão) termina num gate executado por fabrica.mjs, um CLI em Node sem dependências. Um gate reprovado devolve o trabalho ao papel responsável, e na terceira volta a etapa fica bloqueada. O agente não tem como "achar" que passou.

2. Testes selados antes do código. O QA escreve os testes de aceite a partir da spec e grava o hash deles. Se o Dev altera um teste, o gate reprova. Quando um teste contradiz a spec, existe um caminho formal: o Dev contesta e o QA decide e sela de novo, com o motivo registrado.

3. Um papel por contexto. São nove papéis, cada um num subagente com contexto limpo e um "cartão" de instruções. O revisor de segurança não carrega o viés de quem escreveu o código.

4. Revisão em três lentes. Qualidade, aderência ao pedido e segurança, essa última com bandit, pip-audit, detect-secrets e semgrep. Um achado de severidade alta ou média ainda aberto reprova o gate final.

5. Evidência gerada, não declarada. O relatório liga critério → teste → resultado, e a retro lista os erros da execução. Há também um painel offline e prints das telas com dados, como os abaixo.

Tela inicial do sistema de reserva de salas gerado pela Fábrica, com dados fictícios
Sistema gerado a partir do pedido de treino. Dados fictícios.

Como medi

Medi pelo caminho exato que a banca usaria: claude -p com o prompt do kit, numa pasta limpa só com o PEDIDO.md e as skills, sem nenhum ajuste manual. A conferência foi feita depois, por fora do agente.

| Pedido | Critérios do pedido | Total (com derivados) | Gates | Duração | |---|---|---|---|---| | Treino: reserva de salas | 10/10 | 19/19 | 4, sem voltas | 31 min | | Inédito: visitantes na portaria | 10/10 | 22/22 | 4, sem voltas | 27 min | | Inédito: manutenção preventiva (critérios só em prosa) | 7 → 7 | 17/17 | 4, sem voltas | 28 min | | Inédito: escala de plantão (regras cruzadas) | 10/10 | 23/23 | 4, sem voltas | 31 min | | Inédito: despesas de viagem (escopo maior) | 12/12 | 31/31 | 4, sem voltas | 31 min |

Os critérios derivados são escritos pelo Arquiteto a partir das regras do pedido: bordas, validações e a tela.

Teste de aceite de tela: reserva criada aparece na agenda do dia
Fim de um teste de aceite de tela (Playwright), capturado automaticamente.

Onde a IA errou

Registrei 31 erros. Quatro deles mudaram o pacote:

| Erro | O que mudou | |---|---| | Um subagente travou por falha da API e o orquestrador parou para perguntar ao usuário | Modo autônomo que nunca pergunta; o subagente é reaberto até 2 vezes, continuando do disco | | Dois revisores ficaram 13 min presos numa trava de arquivo, porque no Node do Windows o rmSync não apagava caminho com acento e não dava erro | Remoção com alternativa em todo o pacote e espera de trava com prazo | | Um taskkill /IM python.exe derrubou todo Python da máquina | Matar processo por nome ficou proibido; o encerramento usa o PID gravado | | O Dev mudou código na revisão sem achado, e o código novo não foi varrido | O gate final reprova código alterado depois da varredura de segurança |

Como se compara

Comparei a documentação de 19 projetos públicos parecidos, entre eles Spec Kit, BMAD, Kiro, superpowers e Taskmaster. A Fábrica é a única que junta gate decidido por script, testes imutáveis antes do código, papel por contexto isolado, segurança com ferramentas e pedido → sistema sem humano. Em troca, eles suportam várias linguagens e projetos existentes; a Fábrica validou um perfil (web em Python) para sistemas novos.

Limitações

  • Caminho da banca medido com 5 pedidos, só no Windows e com um único modelo. Uma sexta execução parou no meio e está registrada junto com a correção.
  • Um perfil validado (FastAPI, SQLite e tela HTML/JS).
  • Os pedidos sintéticos foram escritos por mim.

Lições aprendidas

  • Gate fora do modelo. Um script que reprova é mais confiável que um prompt pedindo rigor.
  • Selar antes de construir. Com os testes de aceite selados por hash, o Dev não consegue ajustar a régua ao próprio código.
  • O log de erros é o roadmap. Documentei 31 erros da IA durante o projeto, e cada um virou uma regra do pacote.