Engenharia de prompt: exemplos de antes e depois em tarefas de programação

Engenharia de prompt exemplos na prática: este post reúne prompts fracos de programação reescritos lado a lado, mostrando qual alavanca mudou (verbo de execução, papel, contexto, delimitadores, exemplos, formato, restrição) e por que a resposta muda. A base vem da documentação oficial: pedido vago devolve sugestão em vez de implementação nos modelos Claude 4.5 e posteriores, tags XML separam as partes do prompt e o melhor prompt é o que resolve com a estrutura mínima necessária. No fim, onde guardar o prompt que deu certo: CLAUDE.md e o prompt improver do Console da Anthropic
Pedir "melhora esse código" e pedir "atua como revisor, olha só este arquivo e devolve o diff, mais nada" são duas tarefas diferentes pro modelo, mesmo que na tua cabeça sejam a mesma coisa
Este post é uma coletânea de prompts fracos reescritos lado a lado, cada par isolando UMA alavanca (papel, contexto, formato de saída, restrição) e explicando por que o resultado muda
Nada de fórmula mágica nem prompt secreto, essas coisas toscas
É pra copiar, adaptar e usar na próxima tarefa de programação
Bora ver na prática? 😀
O que você precisa antes de reescrever seus prompts
Antes de sair mexendo no texto, vale entender o PORQUÊ da coisa toda
A documentação da Anthropic define a regra de ouro do prompt claro assim: trate o Claude como um funcionário brilhante, porém recém-chegado, que não tem contexto nenhum sobre suas normas e seus fluxos de trabalho
Ele é ótimo, só que acabou de sentar na cadeira e não sabe como as coisas funcionam aí
Quanto mais preciso o pedido, melhor o resultado
Com isso em mente, o checklist do que ter em mãos:
- Saber qual é a saída ideal: a orientação da OpenAI pra prompts de trabalho é descrever papel, público e formato antes de pedir qualquer coisa
- Ter o contexto que o modelo não infere lendo o código: comandos de terminal, estilo de código e regras de fluxo de trabalho, que é justamente o tipo de coisa que a Anthropic recomenda deixar escrito
- Aceitar que prompt é processo iterativo: a própria OpenAI trata assim, rodar, revisar a resposta e ajustar o texto, além de quebrar tarefa grande em passos menores
Se você quer a base teórica antes dos exemplos, tem um material mais longo sobre engenharia de prompt para devs aqui no blog
O teste do colega sem contexto:
Formação Vibe Coding
Do Prompt ao Produto: Crie Software Real com IA
- 474 aulas
- 20 projetos
- 39h 27min
Esse aqui é a melhor régua que eu conheço, e é da própria Anthropic
Mostre o prompt pra um colega que tem pouco contexto da tarefa e peça pra ELE executar a instrução
Se o colega se confunde, o modelo também se confunde
Simples assim, e funciona antes de você gastar uma rodada de execução pra descobrir que o pedido estava ambíguo
Exemplos de engenharia de prompt: antes e depois em tarefas de programação
Cada bloco abaixo muda UMA coisa
A ideia não é empilhar tudo de uma vez, é você ver qual alavanca resolve o teu problema específico
1. Trocar o pedido vago pelo verbo de execução
Antes:
você pode sugerir algumas mudanças nesse componente?
Depois:
Refatore o componente abaixo para extrair a lógica de fetch em um hook próprio
Aplique a mudança nos arquivos, não me devolva apenas sugestões
Por que muda: os modelos Claude 4.5 e posteriores são treinados pra seguir instruções de forma precisa e se beneficiam de direção explícita
A documentação registra esse comportamento de forma bem literal: pedir "você pode sugerir algumas mudanças" às vezes devolve sugestões em vez de implementar as mudanças, mesmo quando implementar era a intenção
Ou seja, o modelo respondeu exatamente o que você perguntou, o problema é que você perguntou errado 😛
O erro comum deste passo: achar que o conserto é escrever mais texto. O conserto é trocar o verbo
2. Definir papel, público e formato da saída
Antes:
explica esse erro de CORS
Depois:
Você é um dev backend explicando para alguém que nunca configurou servidor
Explique a causa deste erro de CORS e devolva a correção em um bloco de código do Express, com um comentário curto em cada linha alterada
Por que muda: descrever a saída ideal (papel, público e formato) está na orientação da OpenAI pra prompts de trabalho
Sem isso, o modelo escolhe o público sozinho, e a chance de vir uma resposta genérica demais ou técnica demais é alta
Esse mesmo ajuste de papel e público resolve muita coisa fora do código também, tipo quando você quer uma resposta do ChatGPT mais humana em vez do textão robotizado
O erro comum deste passo: inventar um papel decorativo ("você é um mestre lendário do JavaScript"). Papel serve pra recortar o público e o nível da resposta, não pra elogiar o modelo
3. Colocar a instrução na primeira linha, sem enfeite
Antes:
## Contexto do projeto
Esse projeto é um monorepo com web, worker e db
A gente usa Drizzle
Enfim, queria que você olhasse a query de listagem que tá lenta
Depois:
Otimize a query de listagem de posts que está lenta
Contexto:
Monorepo com web, worker e db
ORM: Drizzle
Banco: Postgres
Por que muda: a OpenAI orienta colocar a instrução concisa da tarefa como primeira linha do prompt, sem cabeçalho de seção, e usar delimitadores pra separar as partes distintas da entrada
A tarefa aparece antes do contexto, e o contexto vira apoio em vez de enterrar o pedido
O erro comum deste passo: contar a história do projeto por três parágrafos e deixar o pedido real na última linha
4. Separar as partes do prompt com delimitadores
Antes:
revisa esse código e usa o padrão do outro arquivo que eu te mandei antes
Depois:
<instructions>
Revise a função abaixo procurando bug de borda e devolva o código corrigido
</instructions>
<code>
... cole aqui a função ...
</code>
<formatting>
Devolva apenas o código final, sem explicação antes nem depois
</formatting>
Por que muda: a Anthropic documenta o uso de tags XML pra separar as partes do prompt, com exemplos de tags como instructions, example e formatting
A recomendação é manter os MESMOS nomes de tag ao longo do prompt, e as tags podem ser aninhadas
A OpenAI vai na mesma direção no guia do GPT-4.1: títulos markdown pras seções principais, crases (inline ou em bloco) pro código, e observa que XML também funciona bem porque delimita início e fim de uma seção, aceita metadados na tag e permite aninhamento
O erro comum deste passo: trocar o nome da tag no meio do caminho (<code> vira <codigo> três linhas depois) e achar que o modelo vai adivinhar que é a mesma coisa
5. Colocar exemplo dentro do prompt
Antes:
escreve os testes desse service
Depois:
<instructions>
Escreva os testes do service abaixo seguindo exatamente o mesmo estilo do exemplo
</instructions>
<example>
describe('slugify', () => {
it('troca espaço por hífen', () => {
expect(slugify('hora de codar')).toBe('hora-de-codar')
})
})
</example>
<code>
... cole aqui o service ...
</code>
Por que muda: a Anthropic documenta o multishot prompting (prompt com exemplos) como técnica própria, e recomenda combinar tags XML com blocos de exemplos e de raciocínio
Um exemplo bom vale mais que três parágrafos descrevendo o estilo que você quer
Se você conhece snippet de editor, é a mesma lógica: em vez de explicar o padrão, você MOSTRA o padrão
O erro comum deste passo: colar um exemplo que não é do teu projeto. Aí o modelo copia o estilo do exemplo, que é exatamente o que você pediu, só que o exemplo estava errado
6. Amarrar formato de saída e restrição
Antes:
me ajuda a arrumar esse componente
Depois:
Corrija o bug de re-render do componente abaixo
Restrições:
Não adicione biblioteca nova
Não mexa em nenhum arquivo fora deste
Mantenha a assinatura do componente igual
Saída:
O arquivo completo em um único bloco de código, e três linhas explicando o que mudou
Por que muda: restrição é o que impede a resposta de crescer pros lados
E o formato explícito é o que te deixa colar o resultado direto no editor sem ficar garimpando o código no meio do textão
O erro comum deste passo: confundir restrição com tamanho de prompt. O blog oficial da Claude é direto nisso: o melhor prompt não é o mais longo nem o mais complexo, e sim o que atinge o objetivo de forma confiável com a estrutura mínima necessária
7. Transformar fluxo de vários passos em etapas condicionais
Antes:
faz o deploy funcionar de novo
Depois:
Siga estas etapas na ordem:
1. Rode o build
2. Quando o build falhar, leia o erro e corrija apenas o arquivo apontado
3. Quando o build passar, rode a suíte de testes
4. Quando um teste falhar, corrija e volte para a etapa 1
5. Quando tudo passar, pare e me mostre o resumo do que mudou
Por que muda: pra fluxos de vários passos, a OpenAI recomenda estrutura explícita de etapas no formato "quando X acontecer, faça Y", com seções separadas por delimitadores claros
Repara que cada linha amarra uma condição a uma ação, em vez de descrever um objetivo solto e torcer pro modelo montar a ordem sozinho
Isso casa com a outra orientação dela, de quebrar tarefas grandes em passos menores
O erro comum deste passo: escrever as etapas sem dizer onde PARA. Sem a linha final, o agente continua achando trabalho pra fazer
8. Dar permissão explícita de dizer "não sei"
Antes:
qual função desse projeto está causando o vazamento de memória?
Depois:
Qual função deste projeto está causando o vazamento de memória?
Se os arquivos que você leu não forem suficientes para afirmar, diga que não sabe e liste o que precisaria ver para responder
Não chute
Por que muda: o material da Claude sobre boas práticas recomenda dar ao modelo permissão explícita pra declarar incerteza em vez de chutar, o que reduz alucinação e aumenta confiabilidade
Em debug isso é ouro, porque um palpite confiante te faz perder meia hora refatorando o arquivo errado
Já me ferrei uma vez por causa disso
O erro comum deste passo: perguntar "tem certeza?" depois que a resposta ruim já veio. A permissão tem que estar no pedido, não na bronca
9. Pedir o comportamento extra em vez de esperar que ele venha sozinho
Antes:
cria a tela de listagem
Depois:
Crie a tela de listagem
Além do caminho feliz, trate estado vazio, estado de carregamento e erro de rede
Inclua os tipos e deixe a tela acessível por teclado
Por que muda: a Anthropic orienta que comportamento "acima do esperado" precisa ser pedido explicitamente nos modelos mais novos, já que eles não inferem esse extra a partir de prompts vagos como versões anteriores faziam
Se você quer o capricho, escreve o capricho
O erro comum deste passo: virar uma lista de 40 exigências que você nem vai testar. Peça o extra que importa pra ESTA entrega, não o mundo inteiro
Onde guardar o prompt que deu certo: CLAUDE.md e o prompt improver
Reescrever prompt é ótimo, mas reescrever o MESMO prompt toda semana é desperdício
A parte que se repete (comandos, estilo, regra de fluxo) tem que virar contexto persistente
Como o CLAUDE.md entra nessa:
No Claude Code, o arquivo CLAUDE.md é lido no início de toda conversa
E ele pode morar em lugares diferentes, dependendo de quem você quer que aquelas regras alcancem:
| Onde o arquivo fica | Alcance |
|---|---|
| Raiz do repositório | o projeto, compartilhado com o time |
| Diretórios pais | caso de monorepo |
| Pasta home do usuário | todos os seus projetos |
Pra começar sem folha em branco, o comando /init gera um CLAUDE.md inicial analisando o projeto atual (sistema de build, framework de testes, padrões de código), e aí você refina em cima
A orientação da Anthropic é manter o arquivo curto e denso em sinal, na faixa de menos de cerca de 200 linhas
O motivo é bem prático: cada linha entra no contexto a cada requisição, e um arquivo longo faz as regras importantes se perderem no ruído
O conteúdo indicado são comandos de terminal, estilo de código e regras de fluxo de trabalho, ou seja, contexto que o modelo não consegue inferir só lendo o código
E tem uma régua muito boa pra saber o que adicionar: quando o Claude erra a mesma coisa duas vezes, é sinal de que falta uma regra no arquivo
O erro comum aqui: despejar a documentação inteira do projeto lá dentro. Isso é o oposto do que o arquivo faz de bom
E o prompt improver?
O Console da Anthropic oferece uma ferramenta chamada prompt improver, que pega um prompt existente e reescreve preservando as variáveis do template
Ela adiciona uma seção de raciocínio passo a passo e aplica organização em tags XML e formatação padronizada de exemplos, exatamente as alavancas que a gente viu ali em cima
Nos testes reportados pela Anthropic, o prompt improver elevou a acurácia em 30% em um teste de classificação multirrótulo e levou a aderência à contagem de palavras a 100% em uma tarefa de sumarização
Dois números medidos em tarefas específicas, então não trate como promessa universal, trate como sinal de que estrutura importa 🙂
Prompt bom também é saber quando pedir o plano antes do código
Tem um caso em que a melhor reescrita do prompt é não pedir código nenhum ainda
A orientação da Anthropic é clara sobre quando planejar: o modo de planejamento compensa quando a abordagem é incerta, quando a mudança toca vários arquivos ou quando o código é desconhecido
Pra escopo claro e correção pequena (corrigir um typo, adicionar um log, renomear variável), o certo é pedir a execução direta
A régua que eu gosto: se o diff cabe em uma frase, pula o plano
No Claude Code, o modo de planejamento é acessado pelo atalho Shift+Tab, que cicla entre os modos (a primeira pressionada entra em acceptEdits)
O fluxo típico é entrar em plan mode, refinar o plano e só então executar
Como eu fiz isso na prática:
No vídeo abaixo eu testo uma IDE de programação assistida por IA que começa justamente pela etapa de planejamento, e montei um projeto do zero pra avaliar: um encurtador de URL full stack com login, redirecionamento, registro de cliques e dashboard com gráficos
Em vez de já pedir código, meu primeiro prompt descreve o produto inteiro (o que o usuário faz, o que o sistema salva, o que aparece no dashboard), fecha a stack desejada e termina pedindo ajuda pra planejar antes de codar
Liguei o modo de planejamento na opção de performance, em que mais de um modelo debate o projeto antes de qualquer linha de código, e dá pra subir o nível de raciocínio ao máximo nessa etapa
O planejador devolveu objetivo do projeto, estrutura de pastas sugerida e esquema do banco, e depois comparou os planos gerados por cada modelo pra chegar numa estrutura final
Aí vem a parte que eu acho mais importante: eu NÃO mandei construir o plano inteiro de uma vez
Preferi escrever meus próprios prompts, particionando o plano em tarefas menores, por dois motivos práticos: limite de tokens e o risco de o plano completo gerar um monte de coisa que eu não quero no MVP
O segundo prompt já foi tarefa fechada de estruturação (criar o projeto Next.js, configurar o banco com as tabelas planejadas e deixar o middleware protegendo as páginas do dashboard)
Depois pedi só a camada de autenticação num prompt específico: tela de login com e-mail e senha, tela de registro e header do dashboard com nome do usuário e botão de sair
E deixei o coração do projeto pra depois da base pronta, detalhando comportamento (colar URL grande, escolher slug ou gerar automático, redirecionar, registrar o clique com informação de quem clicou) e interface (lista de links com total de cliques, botão de copiar, editar e excluir)
Eu faço assim em qualquer ferramenta, não é coisa de uma só: entregas parciais concretas, porque eu sei exatamente o que testar a cada etapa e o resultado fica previsível
Na execução eu baixei o esforço e o modo do agente, depois de ter usado o modo mais caro no planejamento
Pedi pra própria ferramenta iniciar o projeto pra eu testar, e reforço: testar por conta continua sendo necessário mesmo com os testes automáticos da ferramenta
O servidor caiu no meio de uma etapa, inclusive, e eu resolvi pedindo pra ferramenta colocar o projeto no ar de novo
Conclusão
Se você olhar os nove pares de novo, dá pra ver que quase tudo se resume a poucas alavancas
Verbo de execução em vez de pedido vago, papel e público, contexto no lugar certo, delimitadores, exemplo dentro do prompt, formato de saída, restrição e permissão explícita de dizer "não sei"
E por cima de tudo isso o princípio que o material oficial da Claude repete: a estrutura mínima necessária pra atingir o objetivo de forma confiável, não o prompt mais longo
Seu próximo passo é bem concreto
Pega o último prompt que te deu resultado ruim, aplica DUAS alavancas dessa lista (não as nove), roda de novo e compara
O que funcionar e for se repetir, move pro CLAUDE.md e para de redigitar
E quando a tarefa for daquelas incertas, que tocam vários arquivos, peça o plano antes do código
até o próximo post! 😀
Perguntas frequentes
Qual a diferença entre engenharia de prompt e simplesmente pedir algo pro Claude de qualquer jeito?
É a diferença entre um pedido vago, tipo ‘melhora esse código’, e um pedido com papel, contexto e formato de saída definidos. A Anthropic recomenda tratar o Claude como um funcionário brilhante, mas recém-chegado, que não tem contexto sobre suas normas e fluxos de trabalho. Quanto mais preciso o pedido, melhor o resultado.
Como usar tags XML para estruturar um prompt de programação?
A Anthropic documenta tags como instructions, example e formatting pra separar as partes do prompt, e recomenda manter os mesmos nomes de tag do início ao fim, permitindo aninhamento. A OpenAI segue direção parecida no guia do GPT-4.1: XML delimita bem início e fim de uma seção e aceita metadados na tag. Na prática, isso evita que o modelo misture instrução, código e formato esperado.
O que é multishot prompting e quando vale colocar exemplos no prompt?
Multishot prompting é a técnica de incluir exemplos dentro do prompt pra mostrar o padrão esperado, documentada pela própria Anthropic no guia de prompt engineering da Claude. A recomendação é combinar isso com tags XML e, quando fizer sentido, um bloco de raciocínio. Funciona bem quando a instrução sozinha ainda deixa espaço pra ambiguidade.
Como escrever um prompt para uma tarefa de vários passos, tipo consertar o build e rodar os testes?
A OpenAI recomenda, pra fluxos de vários passos, estrutura explícita de etapas no formato ‘quando X acontecer, faça Y’, com seções separadas por delimitadores claros. Na prática você numera as etapas, amarra cada condição a uma ação e deixa escrita a etapa de parada, senão o agente segue procurando trabalho. Isso conversa com a outra orientação da OpenAI, de quebrar tarefas grandes em passos menores.
Como o CLAUDE.md evita ter que reescrever o mesmo prompt toda vez no Claude Code?
O CLAUDE.md é lido no início de toda conversa e pode ficar na raiz do repositório, em diretórios pais (caso de monorepo) ou na pasta home do usuário. Nele entram comandos de terminal, estilo de código e regras de fluxo de trabalho, ou seja, contexto que o modelo não consegue inferir só lendo o código. A orientação da Anthropic é manter o arquivo abaixo de aproximadamente 200 linhas, e o comando /init gera uma versão inicial analisando o projeto.
Quando vale usar o plan mode do Claude Code em vez de pedir a execução direta?
O plan mode, acessado pelo atalho Shift+Tab, compensa quando a abordagem é incerta, quando a mudança toca vários arquivos ou quando o código é desconhecido. Pra escopo claro e correção pequena, tipo corrigir um typo, adicionar um log ou renomear variável, o certo é pedir a execução direta. A régua prática é: se o diff cabe em uma frase, pula o plano.
O prompt improver do Anthropic Console substitui escrever o prompt manualmente?
Não substitui, ele reescreve um prompt que você já tem, preservando as variáveis do template, adiciona uma seção de raciocínio passo a passo e aplica tags XML e formatação padronizada de exemplos. Nos testes reportados pela Anthropic, ele elevou a acurácia em 30% numa tarefa de classificação multirrótulo e levou a aderência à contagem de palavras a 100% numa tarefa de sumarização. É uma ferramenta de refino, disponível no Console e compatível com todos os modelos Claude, não um substituto pra entender o porquê do prompt.
Formações
Formação SAAS com IA
Tire usas ideias do papel criando softwares com IA, integre pagamentos e lance seu projeto!
- 291 aulas
- 18 projetos
- 24h 17min
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 […]
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação
Checklist de segurança n8n VPS pública: guia essencial para proteger sua instalação A popularidade da automação de processos com o n8n está em alta, principalmente […]
