
Engenharia de Prompts para Programação: 7 Padrões Que Usamos Diariamente no Claude Code e Cursor (2026)
A engenharia de prompts para programação é a diferença entre um agente que entrega um pull request funcional e outro que quebra silenciosamente algo em produção. Aprendemos isso da maneira mais difícil: uma instrução vaga no nosso próprio pipeline chegou a criar 54 páginas duplicadas ao vivo antes que alguém notasse. Hoje em dia, uma configuração de 16 agentes no Claude Code escreve, traduz e publica o nosso conteúdo, e os prompts que o impulsionam não se parecem em nada com as listas de 50 modelos que aparecem na primeira página do Google. Aqui estão os 7 padrões que escrevemos todos os dias, cada um com um exemplo real de antes e depois.
Resposta rápida: Bons prompts de programação partilham uma estrutura comum. Define-se o objetivo e o significado de "concluído", nomeiam-se os ficheiros exatos no âmbito, exige-se um plano antes de qualquer edição, fornecem-se os testes e pede-se evidência em vez de um "parece bem". Ao fazer isto, um agente moderno (Claude Code, Cursor, GitHub Copilot) escreve código que passa pela revisão à primeira tentativa com muito mais frequência. Se ignorar este passo, obterá lixo plausível e confiante.
Os 7 padrões, pela ordem em que os utilizamos:
- Enquadramento da tarefa: objetivo, restrições e definição de "concluído" logo no início
- Seleção de contexto: nomear os ficheiros, isolar o resto
- Plano primeiro: fazer propor antes de editar
- Testes primeiro: incluir os testes de aceitação no prompt
- Depuração: erro mais reprodução mais resultado esperado, causa raiz antes da correção
- Refatorização: alterar a estrutura, manter o comportamento, mostrar o diff
- Revisão: uma checklist para verificar, mais evidências
Engenharia de Prompts para Programação vs. Ficheiros de Configuração: O Que Fica Onde
Os ficheiros de configuração e os prompts por tarefa desempenham funções diferentes, e confundi-los é o erro mais comum nesta área. Um ficheiro CLAUDE.md ou .cursor/rules é uma política permanente que o agente lê em cada sessão: a sua stack tecnológica, as suas convenções de nomenclatura, o seu comando de teste. Um prompt é o trabalho específico que lhe atribui neste momento. As regras duradouras ficam na configuração; a tarefa fica no prompt.
A maioria das compilações de "prompts de programação" confunde isto e diz-lhe para colar um prompt gigante de persona no .cursorrules. Isso inflaciona a configuração que o agente carrega em cada única tarefa e ainda assim falha em enquadrar o trabalho específico em mãos. Mantenha os dois separados:
| Ficheiro de configuração (CLAUDE.md, .cursor/rules) | Prompt por tarefa | |
|---|---|---|
| Contém | Regras permanentes: stack, estilo, comando de teste, salvaguardas | A tarefa específica: o que construir ou corrigir, agora |
| Carregamento | Automaticamente, em cada sessão | Uma vez, quando o escreve |
| Alterações | Raramente, revisto como código | Em cada tarefa |
| Exemplo | "Executar pnpm test antes de afirmar que está concluído" | "Corrigir o arredondamento de impostos em cart.ts para encomendas superiores a $1.000" |
Se quiser fazer bem a parte da configuração, abordamos o tema em profundidade nas nossas melhores práticas para CLAUDE.md e no guia de regras do Cursor. Este artigo é a outra metade: os prompts que escreve de novo cada vez. Ambos se inserem no nosso guia de engenharia de prompts mais amplo, caso pretenda primeiro dominar os fundamentos.
Engenharia de Prompts para Programação: Os 7 Padrões Que Usamos Diariamente
Cada padrão abaixo apresenta a versão fraca que as pessoas realmente escrevem e a versão forte que obtém código funcional. A diferença entre fraco e forte é quase sempre a mesma jogada: substituir um desejo por uma especificação.
1. Enquadramento da Tarefa: Definir o Objetivo, Restrições e "Concluído"
O enquadramento da tarefa significa escrever o objetivo, as restrições e o aspeto de "concluído" antes que o agente toque numa linha de código. Um agente otimiza para aquilo que literalmente pediu, por isso um pedido vago gera uma correção vaga. Nomeie o ficheiro, o comportamento que deseja, a verificação de aceitação e as coisas que não devem ser alteradas.
Este foi o padrão que nos custou 54 páginas. A nossa antiga instrução de tradução era basicamente um desejo:
Weak: Re-translate this post into German and keep the brand names.Nada ali indica o que um slug pode ou não fazer. Assim, numa reexecução, o agente "melhorou" o slug da URL e, como um novo slug significa um novo documento, acabámos com duas páginas alemãs ativas para o mesmo artigo. Multiplique isto por idiomas e artigos antigos e terá 54 duplicados e uma pilha de exclusões por conteúdo duplicado. A solução foi uma especificação, não um desejo mais bonito:
Strong: Re-translate this post into German.
- If a German file already exists, copy its existing slug verbatim. Never
re-derive or "improve" it.
- Before creating any document, look up the existing one by its canonical
reference and reuse that record.
- If the slug you would generate differs from the live one, STOP and tell me.
A changed slug creates a second live URL for the same page.O prompt forte nomeia explicitamente o modo de falha. Esse único hábito, dizer o que não deve acontecer e porquê, é a mudança mais valiosa que a maioria das equipas pode fazer. Também terminamos cada prompt de tarefa com um contrato de saída explícito ("a sua mensagem final deve reportar a contagem de palavras, a pontuação de validação e quaisquer ficheiros tocados") para que o agente saiba o que "concluído" produz, não apenas o que fazer.
2. Seleção de Contexto: Nomear os Ficheiros, Isolar o Resto
A seleção de contexto significa dizer ao agente exatamente quais os ficheiros a ler e quais deixar intocados, em vez de o deixar procurar aleatoriamente e encher a sua janela de contexto com ruído. A própria orientação da Anthropic é direta quanto ao motivo: a janela de contexto enche-se rapidamente e a qualidade diminui à medida que enche, por isso a maioria das melhores práticas existe para a proteger (melhores práticas do Claude Code).
Weak: Fix the bug in the checkout flow.
Strong: Read only src/checkout/cart.ts and src/checkout/tax.ts. The tax
rounding is wrong for orders over $1,000 (it rounds each line item instead
of the order total). Fix the rounding. Do not touch anything outside
src/checkout/.Somos rigorosos no isolamento. Uma linha real dos nossos prompts de agente diz: "não escreva em url-mapping.json, pipeline.md ou config.json, e nunca toque em nenhum ficheiro fora do seu diretório de trabalho temporário (scratchpad)." Essa única frase preveniu mais danos acidentais do que qualquer quantidade de limpeza posterior. Quando a tarefa genuinamente necessita de documentação ativa ou ferramentas extra, adicionamos-nas deliberadamente através de servidores MCP em vez de esperar que o agente tropece no ficheiro certo. E se algum desse contexto vier de fora do seu repositório, trate-o como não confiável: consulte a nossa nota sobre prevenção de injeção de prompts antes de colar uma página raspada num agente de programação.
3. Plano Primeiro: Fazer Propor Antes de Editar
O prompting "plano primeiro" faz com que o agente lhe apresente uma abordagem antes de editar qualquer coisa. No Claude Code, o Modo Plan (Plano) é um estado de leitura apenas estrito e imposto, não uma sugestão educada de "pensar primeiro" que o modelo possa ignorar, por isso ele literalmente não pode escrever até que aprova o plano. Separar a pesquisa e o planeamento da execução é a prática única em que a Anthropic mais se apoia para evitar resolver o problema errado.
Weak: Add rate limiting to the API.
Strong: Before writing any code, give me a numbered plan: which middleware,
where the counters live, how you handle the 429 response and headers, and
which tests you'll add. Wait for my approval before editing.Porque funciona: o plano é barato de ler e barato de corrigir. Corrigir um plano errado custa uma frase; corrigir código errado custa um ciclo de revisão. Isto combina naturalmente com pedir ao modelo para raciocinar passo a passo primeiro (ver prompting cadeia de pensamento), e é a espinha dorsal dos fluxos de trabalho do Claude Code de múltiplos passos que executamos para qualquer coisa não trivial.
4. Testes Primeiro: Incluir os Testes de Aceitação no Prompt
O prompting "testes primeiro" coloca os critérios de aceitação no prompt como entradas e saídas concretas, para que o agente escreva código contra um alvo que definiu, em vez de um que adivinhou. Cole o teste que falha, ou uma pequena tabela de resultados esperados, e diga "faça isto passar sem editar o teste".
Weak: Write a function to parse ISO 8601 dates.
Strong: Make this failing test pass without changing the test:
parseIso("2026-07-20T15:00:00Z") -> Date at that exact UTC instant
parseIso("2026-07-20") -> Date at 2026-07-20T00:00:00Z
parseIso("not-a-date") -> throws RangeError
parseIso("") -> throws RangeError
Return only the function and its imports.Exemplos concretos vencem adjetivos todas as vezes. "Lidar com casos extremos" é uma esperança; quatro linhas de entrada-para-saída são uma especificação que o modelo pode realmente satisfazer, e pode executá-los no segundo em que o código é integrado.
5. Depuração: Erro, Reprodução, Esperado, Causa Raiz Antes da Correção
Um prompt de depuração fornece ao agente o texto do erro, a entrada que o desencadeia e o que esperava, pedindo depois a causa antes de qualquer correção. Se ignorar isto, o agente remenda o sintoma, pelo que o erro simplesmente se muda para um local mais silencioso.
Weak: This is throwing an error, fix it.
Strong: This throws on checkout. Here's the stack trace: [paste]. It happens
only when the cart has a discount code AND a gift card (repro: add both, then
check out). Expected: both apply, gift card last. Find the root cause and
explain it in one sentence before you change anything. Do not wrap it in a
try/catch that hides the error.A linha "explique a causa numa frase primeiro" está a fazer trabalho real. Força o modelo a comprometer-se com um diagnóstico que pode verificar superficialmente, em vez de entregar uma correção cuja lógica nunca vê. A linha "não o esconda num try/catch" fecha a saída de emergência mais comum.
6. Refatorização: Alterar a Estrutura, Manter o Comportamento, Mostrar o Diff
Um prompt de refatorização restringe fortemente o âmbito: alterar a estrutura, manter o comportamento idêntico e mostrar o diff. Sem um limite, os agentes "arrumam" coisas sobre as quais nunca perguntou, e perde a capacidade de revisar a alteração que importava.
Weak: Clean up this file.
Strong: Extract the validation logic from submitOrder() into a pure function
validateOrder(). Keep every public signature and all behavior identical.
Change nothing else in this file. Show me a before/after diff and one line
on why each change is behavior-preserving.Este é o outro lado da divisão configuração-versus-prompt mencionada anteriormente: as suas regras de estilo permanentes vivem nas regras do Cursor, mas o âmbito desta refatorização pertence ao prompt. "Não alterar mais nada" é a frase que mantém as refatorizações passíveis de revisão.
7. Revisão: Uma Checklist para Verificar, Mais Evidências
Um prompt de revisão entrega ao agente uma checklist para verificar e exige evidências, não um veredicto. "Parece bem" não tem valor; o comando que executou e o output que obteve têm. A Anthropic afirma isto claramente: faça o agente mostrar evidências (o output do teste, o comando e o seu resultado) em vez de afirmar o sucesso, porque ler evidências é mais rápido do que reverificar pessoalmente.
Weak: Review my PR.
Strong: Check this diff against exactly these five items:
1. No secrets or API keys added
2. Every new function has a test
3. No behavior change outside src/checkout/
4. Error paths return typed errors, not strings
5. No console.log left behind
For each item, quote the line that satisfies or violates it. Then run the
test suite and paste the output. Do not say "done"; show me.A nossa própria porta de revisão é construída exatamente desta forma. Antes de um agente poder reportar um artigo como publicado, ele verifica o rascunho contra uma lista de palavras proibidas (um bloqueio rígido, tolerância zero) e executa uma consulta para confirmar que o corpo do documento não está vazio. O agente não pode afirmar sucesso; tem de produzir o output da verificação. Para funções de revisor que reutiliza frequentemente, promova a checklist para uma persona guardada, que é onde entram os exemplos de prompts de sistema.
Claude Code vs. Cursor vs. Copilot: Onde Cada Padrão Se Encaixa
Os três principais agentes de 2026 suportam todos os padrões acima, mas a superfície de interação difere. O Claude Code baseia-se no Modo Plan e subagentes, o Cursor no Modo Agente e na sua janela Agents, e o GitHub Copilot no modo agente mais ficheiros de instruções. Escolha a ferramenta que a sua equipa utiliza; os padrões transportam-se limparmente.
| Padrão | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| Regras permanentes | CLAUDE.md | .cursor/rules | .github/copilot-instructions.md, AGENTS.md |
| Plano primeiro | Modo Plan (leitura apenas imposta) | Passo de plano no Modo Agente | Pré-visualizar plano antes de aplicar |
| Trabalho em escopo/paralelo | Subagentes, contexto próprio cada um | Janela Agents, worktree por agente | Tarefas de agente na cloud |
| Regras com escopo de caminho | CLAUDE.md aninhado por diretório | Globs de regras | .instructions.md com applyTo |
Alguns detalhes atuais vale a pena conhecer. O Modo Plan do Claude Code é um bloqueio de leitura apenas genuíno, e os seus subagentes executam-se cada um num contexto isolado com as suas próprias ferramentas (documentação de subagentes). A linha de 2026 do Cursor adicionou uma janela Agents que inicia agentes paralelos, cada um na sua própria worktree git (Cursor 2.0). O modo agente do GitHub Copilot lê instruções personalizadas de .github/copilot-instructions.md, além de ficheiros .instructions.md com escopo de caminho com um campo applyTo (instruções personalizadas do Copilot). Se o Cursor for a sua ferramenta diária, veja o nosso post sobre como usar o Cursor com mais eficiência.
Como Fazemos Prompts aos Nossos Agentes de Programação na Techsy
Executamos um pipeline de conteúdo como uma equipa de 16 agentes do Claude Code: um investigador, um redator de briefings, um redator de conteúdo, nove tradutores, um validador e um editor, coordenados através de mensagens de tarefa. Duas convenções desse sistema transitam para qualquer equipa de programação.
Primeiro, cada prompt de tarefa termina com um contrato de saída. A última linha é sempre uma versão de "a sua mensagem final deve reportar X, Y e Z." Um agente que sabe a forma exata de "concluído" divaga muito menos do que aquele a quem só se diz por onde começar.
Segundo, nunca deixamos um agente avaliar o seu próprio trabalho em prosa. Geração e verificação são passos separados, e a verificação é um comando com output, não uma opinião. Essa separação entre construção e verificação é central na forma como a Anthropic enquadra a construção de agentes fiáveis, e é por isso que a nossa porta de revisão verifica e consulta em vez de confiar num "parece bem".
Este é também o nosso trabalho diário. Na Techsy, construímos agentes de IA e automação para equipas B2B, e disciplina de prompts como esta é a maior parte do que separa uma demonstração de algo que pode apresentar a um cliente. Se quiser configurar corretamente um fluxo de trabalho de programação ou de agentes, o nosso serviço de integração de IA é onde fazemos exatamente isso, e pode marcar uma consulta gratuita para discutir a sua stack.
Um Modelo de Prompt para Copiar e Colar Que Pode Adaptar
Aqui está o esqueleto do qual partimos para qualquer tarefa de programação não trivial. Elimine as secções de que não precisa, mas mantenha a ordem, porque espelha os sete padrões.
GOAL
One sentence: what should be true when you're done.
CONTEXT
Read only: <exact files>. Ignore everything else.
Relevant facts: <constraints, versions, the bug's trigger>.
PLAN FIRST
Before editing, give me a numbered plan and wait for approval.
TESTS / DONE
Done means: <paste failing test or input->output rows>.
Don't change the tests.
CONSTRAINTS
Keep all public signatures and behavior identical unless stated.
Do not touch <files/areas>. Name any assumption you make.
OUTPUT
Show a before/after diff, run the tests, and paste the output.
Don't say "done"; show the evidence.Guarde-o como um snippet, ou melhor, divida-o: as restrições permanentes vão para o seu ficheiro de configuração, e o objetivo, contexto e testes vão para o prompt. Essa divisão é o cerne da questão.
Sobre o Autor
Mert Batur Gurbuz é Co-Fundador da Techsy.io, onde a equipa desenvolve agentes de IA, sistemas de automação e pipelines de voz/SDR para clientes B2B. Estuda na Universidade de Birmingham e escreve sobre a stack de ferramentas LLM que a equipa da Techsy realmente usa em produção.
Credenciais: Co-Fundador, Techsy.io, Universidade de Birmingham. Ligue-se no LinkedIn.
Perguntas Frequentes
O que é a engenharia de prompts para programação?
A engenharia de prompts para programação é a prática de escrever instruções que levam um agente de IA a produzir código correto e passível de revisão. Na prática, significa definir o objetivo e a definição de "concluído", nomear os ficheiros no âmbito, impor um plano antes das edições, fornecer testes e exigir evidências. Está mais próximo de escrever uma especificação do que de escrever uma frase inteligente.
Como difere de escrever um ficheiro CLAUDE.md ou .cursor/rules?
Os ficheiros de configuração contêm políticas permanentes que o agente lê em cada sessão: a sua stack, convenções e comando de teste. Um prompt por tarefa é o trabalho específico que lhe atribui neste momento. Coloque regras duradouras na configuração e a tarefa no prompt. Colar prompts de tarefa inteiros num ficheiro de configuração inflaciona cada sessão e ainda assim falha em enquadrar a tarefa individual.
Qual é a melhor estrutura de prompt para agentes de IA de programação?
Utilize secções rotuladas em vez de um único parágrafo: OBJETIVO, CONTEXTO, PLANO, TESTES, RESTRIÇÕES e SAÍDA. Os agentes analisam prompts estruturados com mais fiabilidade do que paredes de texto. Defina os critérios de sucesso logo no início, dê um a três exemplos concretos em vez de adjetivos e especifique o formato de saída exato que deseja receber.
Como escrevo um bom prompt de depuração?
Forneça ao agente quatro coisas: o erro exato ou stack trace, a entrada que o reproduz, o que esperava e um pedido da causa raiz antes de qualquer correção. Adicione "explique a causa numa frase antes de alterar qualquer coisa" para que possa verificar o diagnóstico, e "não o esconda num try/catch" para que corrija em vez de mascarar o erro.
Devo incluir testes nos meus prompts de programação?
Sim, sempre que possível. Colar o teste que falha ou uma pequena tabela de linhas de entrada-para-saída transforma um pedido vago num alvo que o modelo pode realmente atingir, e pode executar o resultado imediatamente. Diga ao agente para fazer os testes passar sem os editar, para que não possa mudar as regras para fazer o seu próprio código parecer correto.
Estes prompts funcionam também no Cursor e no GitHub Copilot?
Sim. Os padrões são independentes da ferramenta. O Claude Code expõe-nos através do Modo Plan e subagentes, o Cursor através do Modo Agente e da sua janela Agents com uma worktree por agente, e o GitHub Copilot através do modo agente mais .github/copilot-instructions.md. A superfície muda; o enquadramento da tarefa, seleção de contexto, plano primeiro e revisão baseada em evidências não mudam.
Quão longo deve ser um prompt de programação?
Suficientemente longo para ser uma especificação, suficientemente curto para se manter focado. A qualidade do raciocínio degrada-se à medida que o contexto enche, por isso favoreça a estrutura em vez do volume: um prompt rotulado, de 150 a 300 palavras, com os ficheiros e testes certos, vence um prolixo. Mova tudo o que se aplica a cada tarefa para o seu ficheiro de configuração em vez de o repetir.
Como impeço um agente de IA de alterar código sobre o qual não perguntei?
Delimite o âmbito no prompt. Diga exatamente quais os ficheiros que pode editar, adicione "não alterar mais nada" e exija "manter todas as assinaturas públicas e comportamento idênticos, salvo indicação em contrário." Para refatorizações, peça um diff antes/depois com uma linha sobre por que razão cada alteração preserva o comportamento, para que qualquer edição não solicitada seja óbvia na revisão.
As bibliotecas de prompts para copiar e colar valem a pena?
Como ponto de partida, às vezes. Como ferramenta acabada, raramente. Uma biblioteca de 50 prompts dá-lhe formulação, mas não pode conhecer os seus ficheiros, os seus testes ou as suas restrições, que é onde a correção realmente reside. Aprenda os padrões, mantenha um modelo adaptável e preencha os específicos da tarefa em mãos.