Templates de Prompt para Goals e Loops
Você parou de ser a pessoa que fica apertando "continuar". Agora você escreve o loop, e ele conduz a máquina.
Só que tem um detalhe. A máquina só vai longe sozinha se você souber dizer, com precisão, duas coisas: o que ela tem que alcançar, e como ela vai saber, sem te perguntar, que alcançou.
É isso que separa um agente que entrega de um que roda horas e devolve lixo. Não é o comando bonito. É o critério de pronto.
Estes são 9 prompts prontos pra isso. Você copia, troca os campos pelo seu caso, e cola. Cada um já vem com a parte que quase todo mundo esquece: o jeito de provar que terminou, com evidência, não com um "confia que ficou bom".
São dois tipos, pra duas situações:
Goal: você dá um objetivo e uma condição de parada, e o agente trabalha até a condição valer. Um avaliador separado confere a cada rodada.
Loop: o agente repete um prompt, num intervalo fixo ou no ritmo que ele mesmo escolhe, até a fila acabar ou você mandar parar.
Onde funcionam: os goals rodam no Claude Code (/goal) e no Codex (modo Goal). Os loops são só do Claude Code (/loop e /goal); o Codex não tem loop, então nele use sempre a Categoria 1.
Todos seguem a mesma estrutura de 4 blocos. Você entende ela em 30 segundos na próxima seção.
Como usar
Copie qualquer template daqui e monte um prompt sob medida pro seu caso. Dois jeitos:
Você preenche: troque cada
{campo entre chaves}pelo seu valor. Não deixe nenhum campo genérico. Um prompt que serviria pra dezenas de casos diferentes está vago demais; deixe tão específico que só sirva pro SEU caso.O agente preenche: cole o template no Claude Code ou no Codex com uma linha antes: "Preencha este template para o meu caso: {descreva o caso em 2-3 frases}. Me devolva o prompt pronto e me pergunte o que estiver faltando." O próprio agente vira o seu montador de prompt.
Os 4 blocos, traduzidos. Eles são as etiquetas que aparecem dentro de cada template:
Bloco | O que é | Exemplo |
|---|---|---|
GOAL | O objetivo: verbo + resultado que dá pra ver | "Adicionar a opção --json ao leitor de argumentos, cobrindo entrada vazia e malformada" |
CONTEXT | Onde mexer e o que ler antes | "olhe o fluxo de login em |
CONSTRAINTS | O que NÃO fazer | "não mexa na parte pública do código; sem bibliotecas novas" |
DONE WHEN | Pronto quando (sempre um comando que dá pra rodar) | "rode |
A regra de ouro da especificidade. Toda versão boa de um prompt adiciona estes 4 itens sobre a versão vaga:
Adicione | Vai no bloco | Exemplo |
|---|---|---|
(a) Onde fica | CONTEXT | "olhe o fluxo de login em |
(b) O cenário, a situação-limite | GOAL | "a falha que acontece depois que a sessão expira" |
(c) Um critério de pronto que é sim ou não | DONE WHEN | "rode |
(d) Uma restrição | CONSTRAINTS | "resolva a causa de verdade, não esconda o erro; sem bibliotecas novas" |
Onde colocar regra que vale pro projeto inteiro: não vai no prompt. Vai num arquivo de regras do projeto (CLAUDE.md no Claude, AGENTS.md no Codex). Encher o prompt de regra que sempre vale só dilui a instrução do momento.
Um limite importante: o que você cola no /goal do Claude Code precisa caber em 4000 caracteres (acima disso o comando recusa). Estourou? Corte a prosa, aponte para arquivos em vez de colar o conteúdo deles, ou quebre em prompts menores numerados. E guarde essa fila num arquivo, não só no chat.
CATEGORIA 1 — GOALS (a especificação da tarefa)
Funciona igual no Claude Code e no Codex. Estrutura fixa: GOAL / CONTEXT / CONSTRAINTS / DONE WHEN.
Prompt 1 — Tarefa padrão (a estrutura de 4 blocos)
Para qualquer tarefa de escopo claro: uma funcionalidade pequena, um ajuste, uma reorganização pontual de código.
GOAL: {verbo + resultado observável + cenário que importa}.
(ex.: "Adicionar flag --json ao parser, cobrindo input vazio e input malformado"
— nunca "melhorar o parser")
CONTEXT: Trabalhe em {arquivo(s)/diretório exatos}.
Leia ANTES de editar: {arquivo-exemplo} — siga esse padrão.
{se houver: erro/log/spec relevante, colado ou referenciado}
CONSTRAINTS:
- Não altere {API pública / schema / arquivos fora do escopo}.
- Não adicione dependências além das já usadas no projeto.
- Trate a causa raiz — não suprima erro, não desative teste para passar.
- {constraint específica do seu domínio}
DONE WHEN:
- {comando exato: npm test / pytest tests/x -v / npm run build} sai com exit 0.
- Rode o check e ME MOSTRE A SAÍDA — saída colada, não "feito".
Por que funciona: cada bloco corta um jeito de dar errado. O objetivo com verbo + resultado mata o adjetivo vago; o contexto mandando "leia antes de editar" garante que o padrão é seguido, não inventado; as restrições barram o escopo inflando sem controle e o costume de esconder o erro; o "pronto quando" com comando e código de saída fecha o ciclo sem você precisar ser o revisor.
Prompt 2 — Correção de bug (atacar a causa, não esconder o sintoma)
GOAL: Corrigir o bug: {sintoma específico — o que acontece, quando, para quem}.
CONTEXT: Erro exato (não resuma, use isto):
{cole o erro/stack trace completo}
Onde olhar primeiro: {diretório/módulo}, especialmente {função/fluxo}.
Como reproduzir: {passos ou comando}.
CONSTRAINTS:
- Corrija a CAUSA RAIZ. Proibido: suprimir o erro, capturar exceção genérica,
ajustar o teste para passar, adicionar retry que mascara o problema.
- Mudança mínima: não refatore nada além do necessário para o fix.
DONE WHEN:
1. Existe um teste novo que FALHAVA antes do fix (mostre-o falhando).
2. O teste passa após o fix.
3. {suite completa: comando exato} sai com exit 0 — nenhum outro teste quebrou.
Cole o output dos 3 passos como evidência.
Por que funciona: o teste que falha primeiro torna o bug reproduzível e o conserto verificável; a lista de táticas proibidas bloqueia as 4 formas mais comuns de a IA trapacear o teste em vez de resolver o problema; os 3 passos numerados do "pronto quando" são sim ou não: ou tem evidência, ou não terminou.
Prompt 3 — Funcionalidade grande (entrevista primeiro, depois a especificação)
Use ANTES de implementar qualquer coisa com mais de ~1h de trabalho. Duas sessões obrigatórias.
SESSÃO 1 (spec — só conversa, nenhum código):
Quero construir {descrição breve}. Me entreviste em detalhe.
Pergunte sobre implementação técnica, UX, edge cases, riscos e tradeoffs.
Não pergunte o óbvio — cave nas partes difíceis que eu posso não ter considerado.
Continue até cobrirmos tudo, depois escreva a spec completa em SPEC.md contendo:
- Objetivos E não-objetivos (o que está explicitamente FORA de escopo)
- Requisitos funcionais + constraints (libs proibidas, padrões a manter)
- Arquivos e interfaces envolvidos (a spec deve ser autocontida:
quem ler SÓ a spec consegue implementar)
- Exemplos concretos de input/output
- Critérios de aceite: 1 por linha, cada um verificável por teste ou comando
- Verificação end-to-end final que PROVA que a feature funciona
SESSÃO 2 (execução — sessão NOVA, contexto limpo):
Leia SPEC.md POR INTEIRO antes de qualquer edição.
Implemente exatamente o que está na spec — nada além (não-objetivos são vetos).
DONE WHEN: todos os critérios de aceite passam + a verificação end-to-end
da spec executa com sucesso. Rode e cole o output de cada critério.
No prompt acima, "spec" é a especificação: um documento (o arquivo SPEC.md) que descreve o que vai ser construído. "Edge cases" são os casos extremos (entrada vazia, valor gigante, sessão expirada). "Não-objetivos" é o que você decide deixar de fora de propósito.
Por que funciona: a entrevista passa a tarefa de extrair os requisitos pro agente (ele pergunta o que você não pensou); a especificação que se basta, com os não-objetivos, vira um contrato, e os não-objetivos funcionam como vetos contra o escopo inflar; rodar numa sessão limpa evita que a conversa contamine a implementação.
Prompt 4 — Goal mensurável (Claude /goal e Codex modo Goal)
A fórmula: ação + estado final que um avaliador de fora consegue checar sem te perguntar nada.
/goal {ação no codebase}. {Condição de término: comando exato + exit code ou threshold}.
Exemplos preenchidos (repare: sempre comando + critério, nunca adjetivo):
/goal Migrar src/ de JavaScript para TypeScript. `npx tsc --noEmit --strict` sai com exit 0 e o diff não contém nenhum `any` explícito.
/goal Eliminar os warnings de lint. `npm run lint` sai com exit 0.
/goal Subir a cobertura de payments/ para >= 80%. `npm run coverage` reporta >= 80% no módulo e todos os testes passam.
Regras do bloco:
Teto duro de 4000 caracteres no
/goaldo Claude Code. Não chute, conte:node -e "console.log(require('fs').readFileSync('goal.txt','utf8').length)".Condição com 2 pernas quando der: o comando passa E não há gambiarra na mudança de código. Uma perna só é fácil de burlar.
Regra que sempre vale NÃO entra aqui. Aponte pro arquivo de regras ("respeite as restrições do CLAUDE.md" já é automático; não repita).
Por que funciona: nos dois programas, um avaliador separado re-confere a condição a cada rodada. Se a condição não der pra medir por comando, o avaliador não tem o que checar e o goal vira "opinião do modelo". A segunda perna ("sem any na mudança") fecha o atalho óbvio.
Prompt 5 — Revisão crítica (quem faz não é quem audita)
Rode num agente separado, ou numa sessão nova, diferente de quem implementou. Coisa importante ou entregável criativo: este prompt é obrigatório, não opcional.
Use um subagente (ou sessão nova) para revisar o diff de {feature} contra {SPEC.md / plano / critérios}.
O revisor deve verificar:
- todo requisito listado está implementado (cite requisito → arquivo:linha que o cumpre)
- os edge cases listados têm teste correspondente
- nada FORA do escopo declarado mudou (liste qualquer arquivo tocado que a spec não prevê)
Reporte GAPS DE CORREÇÃO, não preferências de estilo.
Sinalize apenas o que afeta correção ou os requisitos declarados — gap apontado
sem requisito correspondente será descartado.
Formato do veredito: APROVADO ou lista numerada de gaps com requisito + evidência.
Por que funciona: um contexto novo não herda os vícios de quem escreveu (um "pronto, terminei" auto-relatado já passou com alegação inventada dentro, caso real). Exigir que cada apontamento cite requisito e o arquivo:linha que o cumpre torna o veredito auditável; a regra "apontamento sem requisito é descartado" evita que o revisor invente problema só pra parecer útil.
CATEGORIA 2 — LOOPS (comandos nativos /goal e /loop do Claude Code)
Só os comandos nativos. /goal = continue até a condição valer (um avaliador separado confere a cada rodada). /loop = repita um prompt num intervalo fixo, ou no ritmo que o próprio agente escolhe. O Codex não tem nada equivalente; nele, use o Prompt 4.
Prompt 6 — /goal contínuo ("não pare até terminar")
Para trabalho longo, de condição única, dentro da sessão, sem supervisão. O texto vai INTEIRO no /goal (teto de 4000 caracteres).
/goal {condição binária verificável: comando + exit/threshold}. Trabalhe item a item em {fonte dos itens: lista/diretório/arquivo}: conclua e verifique UM item antes de começar o próximo. Constraints: {o que não tocar}; causa raiz sempre, nunca suprimir erro. Se travar num item: registre o bloqueio em {progress.txt} com o motivo, PULE para o próximo e liste os bloqueios no final — não invente solução, não declare concluído com bloqueio aberto.
Exemplo preenchido:
/goal `npm test` sai com exit 0 em todos os arquivos de tests/legacy/ e nenhum teste está marcado como skip. Trabalhe arquivo por arquivo: corrija, rode o teste do arquivo, só então avance. Constraints: não altere o código de produção em src/core/; causa raiz sempre. Se um teste depender de serviço externo indisponível: registre em progress.txt, pule, e liste no final — não marque skip para passar.
Por que funciona: a condição é re-conferida por um avaliador separado a cada rodada, então o agente não consegue "se dar alta" sozinho. "Um item por vez" mantém cada passo verificável. O combinado de registrar o bloqueio num arquivo fecha os dois erros clássicos: inventar progresso pra satisfazer a condição, ou esconder o bloqueio (marcar como pulado) só pro comando passar.
Prompt 7 — /loop com intervalo fixo (repetir de tempos em tempos)
Para vigiar ou repetir algo num ritmo conhecido: a esteira de testes do projeto, uma fila, um deploy, uma rotina de manutenção. O prompt roda DO ZERO a cada disparo.
/loop {intervalo: 5m / 30m / 1h} {prompt idempotente e autossuficiente, com os 3 ramos: estado-bom / estado-ruim / não-sei}
Exemplos preenchidos:
/loop 10m Verifique o status do CI no branch {branch} via `gh run list --branch {branch} -L 1`. Se o último run FALHOU: leia o log com `gh run view --log-failed`, corrija a causa raiz, commite e push. Se PASSOU: responda só "verde" e nada mais. Se o comando falhar ou o estado for ambíguo: reporte o que viu e NÃO aja.
/loop 1h Rode {validador: comando exato}. Se exit != 0: corrija as violações apontadas e commite com mensagem "fix: {escopo}". Se exit 0: não faça NADA (nenhum commit, nenhuma melhoria espontânea).
Regras do bloco: cada disparo nasce sem lembrar do anterior, então todo o contexto vai NA frase. O prompt precisa ser idempotente (rodar 2x seguidas no mesmo estado não pode causar dano). Os 3 ramos são obrigatórios: o ramo "não-sei, então não aja" evita estrago em cima de um estado ambíguo; o ramo "está bom, então não faça nada" evita que ele fique inventando melhoria não pedida a cada hora.
Prompt 8 — /loop no próprio ritmo (esvaziar a fila até acabar)
Para varrer uma lista de trabalho até o fim, deixando o agente decidir o ritmo. Omita o intervalo.
/loop Processe o PRÓXIMO item pendente de {arquivo de backlog: tasks.yaml / prd.json}.
UNIDADE: 1 item = {defina exatamente o que conta como 1 item — ex.: "1 story do prd.json com passes:false"}.
Por ciclo: implemente o item, rode {checks: comando exato}, e SÓ com exit 0 commite ({formato: feat: [ID] - título}) e marque o item como concluído no arquivo.
Item grande demais para 1 ciclo: quebre-o em sub-itens NO PRÓPRIO arquivo de backlog e conclua só o primeiro.
Item bloqueado: marque "blocked: {motivo}" no arquivo e siga para o próximo.
Encerre o loop quando não houver itens pendentes nem desbloqueáveis — diga quantos ficaram blocked.
Por que funciona: o progresso vive no arquivo da fila, então qualquer pessoa ou script confere com uma busca de texto, sem depender do relato do modelo. Travar o que conta como "1 item" evita um caso real: um lote de ~100 itens virou só 12 porque ninguém tinha definido o que era 1 item. E a condição de parada ("sem itens pendentes") é um dado no arquivo, não uma opinião.
Prompt 9 — Trava de conclusão (bloco que serve pra tudo)
Cole no FIM de qualquer goal ou loop pra endurecer o critério de término. Use o comando LITERAL do seu validador: uma trava parafraseada ("rode o validador") sem o código de saída não bloqueia nada.
## Gate de conclusão (obrigatório)
Antes de declarar conclusão:
1. Rode: {comando literal do validador — ex.: node scripts/validate-x.cjs --file out.yaml}
2. Critério: {exit 0 / score >= N / 0 erros — o número exato}.
3. Se o critério falhar: corrija e repita. Você NÃO está autorizado a concluir
com o gate falhando, nem a relaxar o critério, nem a editar o validador.
4. Somente com o gate passando: cole o OUTPUT COMPLETO do comando e então declare concluído.
A sua avaliação de "parece pronto" não substitui o gate. Evidência, não asserção.
Por que funciona: a trava não liga pro que o modelo ACHA que terminou: ela liga pra se o comando passa. As duas proibições extras (relaxar o critério, editar o próprio validador) fecham as saídas que uma trava ingênua deixa abertas. Exigir o resultado completo colado torna o encerramento auditável depois.
Checklist antes de despachar
[ ] O objetivo tem verbo + resultado observável (não um adjetivo vago)?
[ ] Passa no teste das "dezenas de cenários" (só serve pro SEU caso)?
[ ] O contexto aponta arquivos específicos E manda ler ("leia antes de editar"), não só lista caminhos?
[ ] As restrições dizem o que NÃO fazer (incluindo não esconder o erro)?
[ ] O "pronto quando" é comando + código de saída/número, com "me mostre a saída"?
[ ] Para
/goal: cabe em 4000 caracteres, contados por comando (não estimados)?[ ] As regras que sempre valem foram pro arquivo de regras do projeto (não repetidas no prompt)?
[ ] Pedido grande demais? Quebre em prompts numerados e guarde a fila num arquivo.
[ ] Coisa importante ou entregável criativo? Some o Prompt 5 (revisão crítica) ao fluxo.
[ ] Vários arquivos ou caminho incerto? No Claude, peça o plano antes; no Codex, peça o plano antes.
Calibração por programa
Codex tem viés de ação: quando falta um detalhe, ele assume e entrega. Reforce as restrições e o "pronto quando" pra ele não assumir errado.
Claude Code prefere explorar, planejar e só então codar. Em caminho incerto ou com vários arquivos, mande planejar antes ("apresente o plano, espere meu ok").
Guia rápido: qual usar
Situação | Template | Claude Code | Codex |
|---|---|---|---|
Tarefa pontual com escopo claro | Prompt 1 | sim | sim |
Bug reportado | Prompt 2 | sim | sim |
Funcionalidade com mais de 1h de trabalho | Prompt 3 | sim | sim |
Objetivo longo, condição única | Prompt 4 | sim, | sim, modo Goal |
Revisão de qualquer entrega | Prompt 5 | sim, subagente | sim, sessão nova |
"Não pare até terminar", com supervisão | Prompt 6 | sim, | não (use o Prompt 4) |
Vigiar/repetir em ritmo fixo | Prompt 7 | sim, | não |
Esvaziar a fila item a item | Prompt 8 | sim, | em parte (modo Goal por item) |
Endurecer qualquer goal/loop | Prompt 9 | sim | sim |
