Como escrever um prompt no Claude Code que ele consegue verificar sozinho antes de dizer que terminou

Um prompt no Claude Code que se verifica sozinho é aquele que nomeia a prova: você descreve a tarefa com precisão, anexa o comando de checagem que decide se ficou pronto (teste, build, linter, diff contra fixture ou screenshot) e pede a evidência da rodada, não a afirmação de sucesso. A documentação oficial trata verificação como a prática de maior impacto, ao ponto de dizer que, se você adotar só uma, adote essa. Com um sinal de passa ou falha, o Claude roda, lê o resultado e itera até passar, em vez de parar no "parece pronto"
O jeito mais comum de um agente te frustrar não é errando o código, é dizendo que corrigiu sem ter verificado nada
Isso não é impressão minha: afirmar sucesso sem verificar é o modo de falha mais citado nas boas práticas oficiais do Claude Code
E a diferença aqui não está no modelo, está em COMO o pedido foi escrito
Sem uma checagem que o próprio agente possa rodar, o único sinal disponível é "parece pronto", e quem vira o laço de verificação é você, abrindo o terminal, rodando o teste, voltando pra conversa e explicando o que quebrou
Agora, quando o pedido carrega uma checagem que devolve passa ou falha, o laço fecha sozinho: o Claude faz o trabalho, roda a checagem, lê o resultado e itera até passar
A doc oficial é bem direta nisso, chega a dizer que se você for adotar só uma prática, adote a verificação
Bora montar esse pedido na prática?
O que você precisa antes de escrever o pedido
Nada de PC da Nasa aqui, é lista curta e verificável:
- Claude Code instalado e rodando no diretório do projeto, não numa pasta qualquer
- Um comando de checagem que JÁ funciona na sua máquina, e que devolve saída legível: pode ser a suíte de testes, o build ou o linter. Se ele não roda pra você, também não vai rodar pro agente
- Um
CLAUDE.mdno projeto, que é o arquivo markdown que o Claude lê automaticamente no início de toda sessão naquele diretório
Não tem o CLAUDE.md ainda? O comando /init faz o Claude explorar o projeto e rascunhar esse arquivo cobrindo comandos de build, comandos de teste, visão da estrutura e convenções detectadas
É o atalho mais barato pra sair do zero, e você revisa depois o que ele escreveu
Domine o Claude Code do básico ao avançado
Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!
Como escrever o pedido passo a passo
- Descreva a tarefa com precisão
A doc coloca de um jeito que eu gosto: o Claude infere intenção, mas não lê mentes, e quanto mais precisa a instrução, menos correção depois
Compare o vago com o específico:
ruim: arruma o login
bom: o login falha quando o email tem maiúscula
normaliza o email pra minúsculo antes de comparar no banco
não muda a rota nem o formato da respostaErro comum deste passo: escrever o sintoma e achar que o resto "tá óbvio". Óbvio pra você, que abriu o arquivo
- Anexe o critério de aceite, com o comando exato
Aqui é a virada do post: sai o "faça X" e entra o "faça X e prove que funciona rodando Y"
O Y tem nome, não é "teste aí":
normaliza o email pra minúsculo antes de comparar no banco
critério de aceite: npm test -- auth passa inteiro
não considere a tarefa concluída enquanto esse comando falharTroque npm test pelo comando que roda de verdade no seu projeto, beleza? O que importa é que seja um comando que devolva passa ou falha sozinho
Erro comum deste passo: pedir "verifique se funciona" sem nomear NADA rodável. Isso não é critério, é torcida
- Peça evidência, não a afirmação de sucesso
A recomendação oficial é justamente essa: em vez de aceitar o "pronto, corrigido", peça a saída do teste, o comando que rodou e o que ele devolveu, ou o screenshot do resultado
quando terminar, me mostre:
o comando que você rodou
a saída dele, colada, não resumidaErro comum deste passo: aceitar resumo do tipo "todos os testes passaram". Saída colada é evidência, resumo é opinião
- Comece pelo modo de plano quando houver incerteza
A doc separa pesquisa e planejamento da implementação exatamente pra evitar resolver o problema errado, com o Claude lendo arquivos e respondendo perguntas sem alterar nada
O critério oficial de quando usar é bem prático: vale a pena quando você tem dúvida sobre a abordagem, quando a mudança toca vários arquivos ou quando o código é desconhecido
E o contrário também é regra: se dá pra descrever o diff em uma frase, pula o plano e vai
Erro comum deste passo: planejar mudança de uma linha e transformar 30 segundos em 10 minutos
- Se o critério ainda não existe, escreva os testes primeiro
Essa é a razão pela qual a abordagem TDD aparece recomendada: os testes dão ao Claude critérios claros de validação pra perseguir, e apanham problemas guiando a iteração até a solução funcionar
Sem teste, você está pedindo pro agente adivinhar o que é "funcionando"
Vale lembrar que dá pra delegar a escrita dos testes também, desde que você confira na mão o que ele considerou como caso válido
Erro comum deste passo: deixar o mesmo agente escrever o teste E o código na mesma tacada sem você olhar o teste. Aí ele ajusta o critério até passar 😅
Que checagem usar em cada tipo de tarefa
O catálogo oficial de sinais é mais largo do que "rodar teste"
Serve qualquer coisa que devolva um sinal legível na conversa: suíte de testes, código de saída de um build, linter, script que compara a saída com um fixture, ou screenshot do navegador comparado com o design
Traduzindo pra situação real:
| Tipo de tarefa | Checagem | O que o agente lê |
|---|---|---|
| Correção de bug | Suíte de testes | Passou ou falhou, e qual caso quebrou |
| Refatoração ampla | Build do projeto | Código de saída do build |
| Padronização de código | Linter | Lista de violações restantes |
| Transformação de dados ou saída de script | Diff contra um fixture | Diferença entre o esperado e o gerado |
| Mudança visual | Screenshot do navegador | Comparação com o design |
O ponto de todos eles é o mesmo: o agente precisa CONSEGUIR ler o resultado dentro da conversa
Se a única forma de saber que deu certo é você abrir a tela e olhar, o laço continua sendo você
O que mudou no meu fluxo quando o pedido passou a carregar a prova
No vídeo abaixo eu instalo o GSD no Claude Code e passo pelo fluxo inteiro, e ele funciona bem como estudo de caso disso aqui
A instalação eu fiz por fora do Claude Code, direto no terminal, com o comando tirado da documentação oficial do projeto, que eu li antes de gravar
Na hora de instalar dá pra escolher pra qual ferramenta de IA vai, e eu fui de instalação global, notando que nada é ativado até você pedir
Pra confirmar que ficou tudo certo, abri o Claude Code e digitei a barra com o nome do framework, e a lista de comandos apareceu
Um detalhe de bastidor: eu iniciei pulando as permissões, porque aprovar cada arquivo criado deixaria a fase de planejamento arrastada demais
Aí começa a parte que interessa pro assunto deste post
Eu comecei um projeto do zero e passei por uma ENTREVISTA antes de qualquer linha de código: a ferramenta pergunta o que você quer construir e vai desdobrando a sua resposta em perguntas mais específicas
Dá pra responder escolhendo uma das opções prontas ou pedir pra explicar com as suas próprias palavras, e eu usei a segunda quando quis detalhar
Respondi em português e a conversa seguiu em português, o que já ajuda bastante
O que eu mais fiz na entrevista foi RESTRINGIR escopo de propósito: defini que um prompt salvo seria só o texto por enquanto, que a conta seria obrigatória e cortei itens que não entrariam na primeira versão
Quando não soube definir a stack, pedi recomendação e deixei a pesquisa da ferramenta apontar a escolha, em vez de chutar
Depois da entrevista ainda tem uma fase de discussão, pra resolver o que ficou mal esclarecido e capturar decisões antes de planejar
E o planejamento é rigoroso, às vezes até sofrido, com um ciclo que verifica os requisitos e repete até o plano ser aprovado
Parece burocracia? Parece
Mas é exatamente o mesmo princípio do critério de aceite: em vez de a IA adivinhar, ela ganha algo pra conferir contra
Eu inclusive defendo que esse rigor é especialmente bom pra quem entende pouco de programação, porque força o detalhe no planejamento
Onde eu ainda precisei entrar no meio: a verificação final não é obrigatoriamente o passo seguinte à execução, dá pra voltar ao planejamento e abrir novas tarefas antes de fechar, e foi o que fiz
No fim da primeira fase a ferramenta gerou uma pasta de planejamento com as informações que eu tinha respondido
E fica a recomendação que eu dei lá: leia a documentação oficial do projeto, que é a fonte mais fiel, em vez de ficar só no que eu mostrei
No vídeo você vê a entrevista rodando na tela, as respostas cortando escopo e o plano sendo verificado antes de virar código
Como travar a verificação no projeto (CLAUDE.md e hook de Stop)
Repetir o critério em TODO prompt cansa, e é onde a gente esquece
Dá pra deixar isso combinado no projeto:
- Registre o comando de checagem no
CLAUDE.md
Como esse arquivo é lido automaticamente no início de toda sessão naquele diretório, o comando de teste e de build entram no contexto sem você digitar de novo
Se você rodou /init, esses comandos provavelmente já estão lá, é só conferir se batem com a realidade
Erro comum deste passo: deixar no CLAUDE.md um comando que mudou de nome faz meses. Contexto errado é pior que contexto nenhum
- Configure um hook de
Stop
Esse é o pulo do gato: um hook de Stop pode rodar a sua checagem como script e BLOQUEAR o encerramento do turno até que ela passe
Ou seja, o agente não consegue te devolver um "terminei" enquanto o teste estiver vermelho
Combinado com a ideia de deixar o agente rodando tarefas sozinho, é o que dá pra chamar de guardrail de verdade
Erro comum deste passo: apontar o hook pra um script que só existe na sua máquina, fora do repositório
- Saiba onde a configuração mora
Hooks são configurados adicionando um bloco hooks a um arquivo de settings: .claude/settings.json pros hooks do projeto e ~/.claude/settings.json pros globais
A configuração tem três níveis: o evento (como PreToolUse ou Stop), um grupo matcher que filtra quando dispara, e um ou mais handlers que rodam quando casa
Alguns eventos usam os campos de topo decision e reason no retorno pra bloquear ou dar feedback, e é por aí que o "não deixa fechar" acontece
Se quiser a referência exata, a documentação de hooks é o lugar
Erro comum deste passo: tentar cadastrar pelo menu /hooks, que é somente leitura. Pra adicionar, alterar ou remover, você edita o JSON de settings direto ou pede pro próprio Claude fazer a alteração
O que remover do prompt se você usa o Claude Opus 5
Essa parte pega muita gente que copiou prompt antigo e nunca mais mexeu
O Claude Opus 5 verifica o próprio trabalho sem ser instruído, e a orientação oficial é REMOVER as instruções explícitas de verificação herdadas de prompts de modelos anteriores
Motivo: elas causam verificação excessiva e gastam tokens sem ganho de qualidade
Então some com coisas assim:
confira sua resposta
reverifique antes de responder
revise tudo de novo antes de finalizarRechecagem que o modelo já executa sozinho se soma ao comportamento próprio dele e vira custo sem ganho
Mas atenção pra não jogar o bebê fora com a água: o critério de aceite RODÁVEL é outra coisa
"passa o npm test -- auth antes de considerar concluído" não é redundância, é um sinal externo, medido fora da cabeça do modelo
O que sai é o pedido genérico de "pensa de novo"
O que fica é o comando que decide
Próximo passo
O resumo cabe em uma linha: o pedido que se verifica sozinho é o pedido que NOMEIA a prova
Sem isso, sobra "parece pronto", e você continua sendo o CI do seu próprio projeto 😅
Próximo passo bem concreto, pra fazer hoje: escolhe UMA tarefa pequena do projeto que você já tem aberto
Escreve o pedido com a descrição precisa, com o comando de checagem embutido e com o pedido de evidência da rodada
Depois compara com o jeito que você pedia antes
Se fizer sentido, você registra o comando no CLAUDE.md e nem precisa repetir na próxima
faça o teste! até o próximo post!
Perguntas frequentes
Como faço o Claude Code provar que o código funciona antes de dizer que terminou?
Você inclui no pedido um comando de checagem que devolve passa ou falha, tipo a suíte de testes ou o build, e pede a saída colada, não resumida. Esse é o formato de prompt no Claude Code que fecha o laço sozinho: ele roda a checagem, lê o resultado e só para quando ela passa.
Qual comando devo usar como critério de aceite no prompt do Claude Code?
Use um comando que já roda na sua máquina e devolve um sinal legível, como npm test, o build do projeto ou o linter. Se o comando não funciona pra você, também não vai funcionar pro agente, então o critério de aceite precisa nomear esse comando exato, não um genérico ‘teste aí’.
Preciso escrever testes antes de pedir uma tarefa pro Claude Code?
Quando ainda não existe um critério de aceite pronto, vale escrever os testes primeiro. É a abordagem TDD recomendada porque os testes dão ao Claude critérios claros de validação pra perseguir, e apanham problemas guiando a iteração até a solução funcionar.
Quando vale a pena usar o modo de plano no Claude Code em vez de pedir direto?
Vale quando há dúvida sobre a abordagem, a mudança toca vários arquivos ou o código é desconhecido, porque o Claude entra em modo de plano pra ler arquivos e responder perguntas sem alterar nada. Se dá pra descrever o diff em uma frase, pula o plano e vai direto.
Por que o Claude Code às vezes diz que corrigiu um bug sem ter testado de verdade?
Porque esse é o modo de falha mais citado nas boas práticas oficiais: afirmar sucesso sem verificar. Sem uma checagem que o próprio agente possa rodar, o único sinal disponível é ‘parece pronto’, e aí quem vira a verificação é você.
Pedir ‘verifique de novo’ substitui o critério de aceite no prompt?
Não substitui, são coisas diferentes. O pedido genérico de reconferir é rechecagem interna, e no Claude Opus 5 a orientação oficial é até remover esse tipo de instrução herdada de prompts antigos, porque soma custo em tokens sem ganho de qualidade. O que não sai do pedido é o comando de checagem: ‘passa o npm test — auth antes de considerar concluído’ é um sinal externo, que o agente roda e lê, e sem ele o único sinal disponível continua sendo ‘parece pronto’.
Formações
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Blog | Mais populares

As diferenças de var, let e const

Como fazer redirecionamento com PHP
Neste artigo você vai aprender a como fazer redirecionamento com PHP, utilizaremos abordagens fáceis de entender e de aplicar Fala programador(a), beleza? Bora aprender mais […]

ChatGPT: o que é, como usar, dicas e como acessar login
ChatGPT é uma ferramenta de processamento de linguagem natural (NLP) baseada na arquitetura GPT-3.5, desenvolvida pela OpenAI. Sua criação representa um marco significativo no campo […]
