Skills.

Quando o mesmo contexto escreve e aprova, “parece pronto” vira critério. Um crítico separado, que roda comando de verdade e devolve nota 0-100, transforma isso em evidência — ou diz exatamente o que falta.

O problema: quem constrói não pode dar a nota

Agente que revisa o próprio trabalho não revisa nada: ele confirma a intenção que já tinha. O sintoma é conhecido — rodadas de revisão que não convergem, “já está pronto” repetido, e o defeito aparecendo depois, na mão de quem confiou.

A correção não é pedir “seja rigoroso”. É tirar a nota de dentro do agente: um script que mede, com comandos reais, e um contexto separado que audita a nota.

Quatro papéis, nunca fundidos no mesmo contexto

Regra zero: construtor ≠ crítico ≠ revisor. Se o mesmo contexto faz os três, o loop é teatro.

O loop, passo a passo

  1. Declare os checks antes de escrever códigoPara cada check: nome, comando, peso e o que significa “passar”. Os pesos somam 100. {"checks":[{"name":"pytest","cmd":"set -o pipefail; pytest -q","weight":40}, {"name":"no_secret_scan","cmd":"gitleaks detect --no-banner","weight":30}]}
  2. Rode o críticoEle executa cada comando de verdade, grava a evidência e nunca pergunta a um modelo se o trabalho está bom — mede. python scripts/loop_runner.py --config loop.json --round 1
  3. Nota, comparação, decisãoNota acima do limite vai para o revisor; abaixo, pegue a maior lacuna, corrija e rode de novo. Limite as rodadas (8 é bastante): se nunca converge, o conjunto de checks está errado, não o código.
  4. Revisão independente antes de entregarMesmo artefato, contexto novo, sem a justificativa do construtor. Painel de 2-3 especialistas (qualidade e segurança sempre) devolvendo JSON estrito.
  5. Gate de segurança, fail-closedSegredo no diff ou no histórico, achado de alta severidade, falha de autenticação/travessia de caminho/injeção bloqueiam a entrega mesmo com testes perfeitos. Resposta inconclusiva conta como bloqueio, nunca como passe.
  6. Relate com nota, evidência e o que não foi verificávelO relatório diz o que foi medido, com a saída crua, e o que não deu para verificar — sem “provavelmente ok”.

Como é a saída real

Vermelho é o caso quebrado (o gate barra); verde é o que passa. Os dois abaixo são execuções de verdade, não ilustração.

$ python scripts/loop_runner.py --config loop.json --round 3
SCORE=55
GAPS=[pytest::exit_1, no_secret_scan::missing]
GATE=failed
$ echo $?
1

$ python scripts/loop_runner.py --config loop.json --round 7
SCORE=100
GATE=passed
$ echo $?
0

Os quatro jeitos de um loop verde mentir

O que isso muda no dia a dia

O efeito prático não é a nota: é a conversa. “Está pronto?” deixa de ser opinião de quem construiu e passa a ser SCORE=100 com a saída dos comandos anexada — ou uma lista de lacunas com nome e peso. Quando algo não pôde ser verificado, isso aparece escrito, em vez de virar um verde falso.

É o mesmo padrão em qualquer entrega: código, pipeline, migração de dados, documento que alguém vai usar para decidir.

Comece agora

A skill que faz isso está publicada como AI Test Loop — o pacote traz o loop_runner.py, a rubrica de pontuação, o prompt do revisor e os checks de segurança. O repositório é aberto (MIT) e a versão da loja inclui os guardas prontos.

Ver a skill AI Test Loop Pegar a versão grátis

Prefere que eu instale no seu projeto? Setup guiado a partir de R$ 1.500, com o primeiro ciclo rodado junto.

← todas as skills

Pagamento processado pelo Stripe — nenhum dado de cartão passa por este servidor. Entrega imediata após a confirmação. Termos, entrega e reembolso.