Pular para o conteúdo
Inteligência Artificial

Prompt Engineering para Coding: 15 Templates

Prompts genericos geram codigo generico. Prompts bem estruturados geram codigo que voce realmente usa. Aqui estao 15 templates prontos para funcoes, APIs, testes, refactor e debug — copie,

Voce ja pediu para uma IA gerar uma funcao e recebeu algo que parecia certo mas nao servia pra nada no seu projeto? Nao e culpa do modelo. E do prompt. Prompts vagos geram codigo vago. Prompts especificos geram codigo que voce realmente usa.

Este artigo e uma colecao pratica: 15 templates prontos, organizados por tipo de tarefa. Da pra copiar, adaptar os placeholders e usar direto no Cursor, Claude Code, ChatGPT ou qualquer outra ferramenta. Se voce quer entender a logica por tras de organizar prompts em projetos maiores, da uma olhada no metodo BMAD para organizar prompts antes de continuar aqui.

Por que prompts genericos nao funcionam

O problema nao e a IA. O problema e que 'crie uma API REST' pode significar mil coisas diferentes. Express ou Fastify? Com ou sem autenticacao? Retorna JSON puro ou segue algum padrao como JSAPI? Valida o body? Como trata erros? O modelo vai escolher alguma coisa — e raramente vai ser o que voce tinha em mente.

O principio basico de prompt engineering para codigo e simples: trate a IA como um dev junior muito talentoso que nunca viu o seu projeto. Voce precisaria dar contexto, especificar restricoes e descrever o comportamento esperado. Faca o mesmo no prompt.

O que todo bom prompt de codigo precisa ter

Prompt Engineering para Coding: 15 Templates. Prompts genericos geram codigo generico. Prompts bem estruturados geram codigo que voce realmente usa. Aqui estao 15 templates prontos para funcoes, APIs, testes, refactor e debug — copie, adapte e saia na frente.

Com esses cinco elementos no prompt, o resultado melhora drasticamente. Nao e magia — e informacao suficiente para o modelo nao precisar inventar o que voce nao especificou.

Templates para geracao de codigo

Template 1: Funcao com tipos

Use quando precisar de uma funcao isolada, bem tipada e com tratamento de erro.

plaintext
Crie uma funcao em [LINGUAGEM] chamada [NOME_DA_FUNCAO].

Entrada: [descreva os parametros com tipos]
Saida: [descreva o retorno com tipo]
Comportamento: [o que a funcao deve fazer, passo a passo]
Erros: [o que deve acontecer se X falhar — lancar excecao, retornar null, etc.]
Restricoes: [sem dependencias externas / use apenas stdlib / async obrigatorio]

Nao adicione comentarios obvios. Use nomes de variaveis descritivos.

Template 2: Endpoint REST

Para gerar endpoints de API com validacao de body, autenticacao e resposta padronizada.

plaintext
Crie um endpoint [METODO HTTP] em [FRAMEWORK] (ex: Express, Fastify, Hono).

Rota: [/api/recurso]
Autenticacao: [JWT middleware / nenhuma / API key no header]
Body esperado: [esquema dos campos com tipos]
Resposta de sucesso: [estrutura do JSON de retorno, codigo HTTP]
Resposta de erro: [4xx para validacao, 5xx para falha de banco, etc.]
Validacao: [use Zod / use Joi / valide manualmente]

Padrao de erro: { error: string, code: string }

Template 3: Componente React

plaintext
Crie um componente React em TypeScript chamado [NOME_COMPONENTE].

Props: [lista as props com tipos]
Estado interno: [descreva o state necessario, se houver]
Comportamento: [o que o componente faz, incluindo interacoes do usuario]
Estilos: [Tailwind CSS / CSS Modules / styled-components]
Acessibilidade: [inclua aria-labels e role quando relevante]

Nao use defaultProps. Use tipos estritos, sem 'any'.

Template 4: Hook customizado

plaintext
Crie um custom hook React em TypeScript chamado use[NOME].

Proposito: [o que o hook encapsula]
Parametros: [tipos dos parametros de entrada]
Retorno: [o que o hook expoe — estado, funcoes, flags]
Efeitos colaterais: [chamadas de API, subscriptions, timers]
Limpeza: [o que deve acontecer no cleanup do useEffect]

Trate loading, error e data separadamente.

Templates para debug e refactor

Template 5: Debug de comportamento inesperado

Coloque o codigo que esta falhando junto com o template. O modelo precisa do contexto completo para dar um diagnostico util.

plaintext
O codigo abaixo esta com comportamento inesperado.

O que deveria acontecer: [descreva o comportamento esperado]
O que esta acontecendo: [descreva o comportamento atual, com mensagem de erro se houver]
Entrada que causa o problema: [exemplo concreto]

[COLE O CODIGO AQUI]

Encontre a causa raiz e proponha uma correcao minima. Nao reescreva o que nao e necessario.

Template 6: Refactor sem mudar comportamento

plaintext
Refatore o codigo abaixo sem alterar o comportamento externo.

Objectivo do refactor: [remover duplicacao / melhorar legibilidade / extrair funcoes]
Restricoes: [nao mude a assinatura das funcoes publicas / mantenha compatibilidade]
Prioridade: [clareza > performance / performance > clareza]

[COLE O CODIGO AQUI]

Apresente a versao refatorada e uma lista das mudancas feitas.

Template 7: Adicionar tipagem a codigo JavaScript existente

plaintext
Adicione tipos TypeScript ao codigo JavaScript abaixo.

Nao altere a logica. Apenas adicione tipos.
Se um tipo nao puder ser inferido com certeza, use 'unknown' em vez de 'any' e adicione um comentario explicando.
Crie interfaces ou types para objetos complexos.

[COLE O CODIGO JS AQUI]

Template 8: Code review automatizado

plaintext
Faca um code review do codigo abaixo.

Analise:
1. Bugs potenciais ou comportamento inesperado
2. Problemas de performance
3. Problemas de seguranca (injecao, exposicao de dados sensiveis)
4. Violacoes de principios SOLID ou boas praticas
5. Oportunidades de simplificacao

Para cada problema encontrado, indique: nivel de severidade (critico / importante / sugestao) e como corrigir.

[COLE O CODIGO AQUI]

Templates para testes

Gerar testes com IA e uma das tarefas onde os templates fazem mais diferenca. Sem contexto, o modelo tende a gerar testes que testam o codigo ao inves de testar o comportamento — e isso e inutil.

Template 9: Testes unitarios

plaintext
Crie testes unitarios para a funcao abaixo usando [Jest / Vitest / pytest].

Teste o comportamento, nao a implementacao.
Cubra: casos normais, casos extremos (null, vazio, limite), casos de erro.
Nao mocke o que nao precisa ser mockado.
Nome dos testes no formato: 'deve [comportamento] quando [condicao]'.

[COLE A FUNCAO AQUI]

Template 10: Testes de integracao de API

plaintext
Crie testes de integracao para o endpoint abaixo usando [Supertest / httpx / requests].

Simule um banco de dados real em memoria (ou use um banco de teste isolado).
Teste: resposta de sucesso com body correto, validacao de campos obrigatorios, autenticacao invalida, erro de banco simulado.
Verifique status HTTP e estrutura do response body em cada cenario.

[COLE O ENDPOINT AQUI]

Template 11: Testes de componente React

plaintext
Crie testes para o componente React abaixo usando Testing Library e [Jest / Vitest].

Teste comportamento do usuario, nao detalhes de implementacao.
Simule interacoes reais: cliques, digitacao, submissao de formulario.
Mocke apenas chamadas de API externas.
Verifique o que o usuario ve, nao o estado interno do componente.

[COLE O COMPONENTE AQUI]

Templates para arquitetura

Template 12: Design de schema de banco de dados

plaintext
Projete um schema de banco de dados para o seguinte dominio de negocio:

[DESCRICAO DO DOMINIO]

Requisistos:
- [lista de funcionalidades que o schema precisa suportar]

Entregue:
1. Diagrama das entidades e relacionamentos (formato textual)
2. DDL SQL para as tabelas principais
3. Indices recomendados com justificativa
4. Apontamentos de normalizacao ou trade-offs de performance

Template 13: Documentacao de funcao

plaintext
Gere documentacao JSDoc / docstring para a funcao abaixo.

Incluir: descricao de uma linha do proposito, parametros com tipo e descricao, retorno com tipo e descricao, excecoes lancadas se houver, um exemplo de uso.
Nao repita informacao que ja esta clara pelo nome da funcao ou pelos tipos.

[COLE A FUNCAO AQUI]

Template 14: Migracao de banco de dados

plaintext
Gere uma migracao de banco de dados para [Prisma / Drizzle / Knex / SQL puro].

Estado atual da tabela: [descreva as colunas existentes]
Mudanca necessaria: [adicionar coluna / renomear / alterar tipo / adicionar indice]
Requisistos: a migracao deve ser reversivel (inclua down migration).

Gere tambem uma query para verificar se a migracao foi aplicada com sucesso.

Template 15: Revisao de seguranca

plaintext
Analise o codigo abaixo focando exclusivamente em seguranca.

Verifique: SQL injection / NoSQL injection, XSS, CSRF, exposicao de dados sensiveis em logs ou respostas, autenticacao e autorizacao, dependencias com vulnerabilidades conhecidas.

Para cada problema: classifique como [critico / alto / medio / baixo] e descreva o vetor de ataque e a correcao recomendada.

[COLE O CODIGO AQUI]

Como adaptar os templates ao seu contexto

Esses templates funcionam como estao, mas ficam muito melhores quando voce os personaliza para o seu projeto. O pulo do gato e criar um 'prefixo de contexto' que voce cole no inicio de qualquer prompt:

plaintext
Contexto do projeto:
- Stack: Next.js 16, TypeScript, Drizzle ORM, Postgres
- Padrao de erros: Result<T, E> (nunca lancar excecao)
- Estilo: funcional, sem classes, arrow functions
- Autenticacao: Better Auth com middleware no layout

[TEMPLATE AQUI]

Com esse prefixo, o modelo ja sabe o contexto completo e nao precisa adivinhar a stack. Voce pode salvar esse prefixo como snippet no seu editor e adicionar em qualquer prompt com um atalho.

Dicas para resultados ainda melhores

Mostre um exemplo de codigo existente no projeto como referencia de estilo

Se o resultado nao ficou bom, nao edite manualmente — corrija o prompt e regere

Para tarefas complexas, quebre em multiplos prompts menores em vez de um prompt gigante

Peca ao modelo para listar as suposicoes que fez antes de gerar o codigo

Se voce quer ir alem dos templates isolados e organizar prompts em workflows completos de desenvolvimento, veja como usar esses templates dentro do Claude Code com o metodo BMAD.

Erros comuns ao usar prompts para codigo

Galera, tem alguns erros que aparecem o tempo todo e que destroem a qualidade do codigo gerado. Vale a pena ser direto aqui.

  1. Nao dar contexto da stack: o modelo vai inventar. Sempre especifique linguagem e framework
  2. Pedir codigo demais em um prompt so: quebre em subtarefas, o resultado e muito melhor
  3. Aceitar o primeiro resultado sem revisar: use os templates de code review logo depois
  4. Ignorar casos de erro no prompt: se voce nao pediu tratamento de erro, nao vai ter
  5. Reusar codigo gerado sem entender: voce vai manter esse codigo, entenda o que esta copiando

Conclusao

Prompt engineering para codigo nao e uma disciplina separada de programacao — e uma extensao da mesma habilidade de pensar com clareza sobre o que voce quer construir. Quanto mais especifico voce consegue ser sobre o comportamento esperado, mais util vai ser o codigo que a IA gera.

Use esses 15 templates como ponto de partida. Adapte para o seu projeto, salve os que funcionam melhor e descarte o que nao serve. Com o tempo, voce vai ter um conjunto de prompts calibrado para a sua stack e o seu estilo de codigo — e isso vai economizar muito tempo.

Perguntas frequentes

Qual a diferenca entre um prompt ruim e um bom para codigo?

Um prompt ruim e vago: 'crie uma funcao de login'. Um bom prompt especifica linguagem, tipos, comportamento esperado, casos de erro e o contexto do projeto. Quanto mais restricoes relevantes voce der, menos o modelo vai inventar coisa que voce nao pediu.

Esses templates funcionam no ChatGPT, Claude e Cursor ao mesmo tempo?

Sim. Os templates sao escritos em linguagem natural e funcionam em qualquer LLM que entenda instrucoes de codigo. A unica diferenca e que ferramentas como Cursor e Claude Code tem acesso ao contexto do projeto, entao os resultados tendem a ser mais precisos do que no chat generico.

Preciso usar todos os campos dos templates ou posso simplificar?

Pode simplificar. Os templates sao ponto de partida, nao formula rigida. O que nao pode remover: linguagem/framework, comportamento esperado e tratamento de erros. O resto voce adapta conforme o contexto do seu projeto.

Por que prompts genericos nao funcionam

O problema nao e a IA. O problema e que 'crie uma API REST' pode significar mil coisas diferentes. Express ou Fastify? Com ou sem autenticacao? Retorna JSON puro ou segue algum padrao como JSAPI? Valida o body? Como trata erros? O modelo vai escolher alguma coisa — e raramente vai ser o que voce tinha em mente. O principio basico de prompt engineering para codigo e simples: trate a IA como um dev junior muito talentoso que nunca viu o seu projeto. Voce precisaria dar contexto, especificar restricoes e descrever o comportamento esperado. Faca o mesmo no prompt. Com esses cinco elementos no prompt, o resultado melhora drasticamente. Nao e magia — e informacao suficiente para o modelo nao precisar inventar o que voce nao especificou.

Como adaptar os templates ao seu contexto

Esses templates funcionam como estao, mas ficam muito melhores quando voce os personaliza para o seu projeto. O pulo do gato e criar um 'prefixo de contexto' que voce cole no inicio de qualquer prompt: Com esse prefixo, o modelo ja sabe o contexto completo e nao precisa adivinhar a stack. Voce pode salvar esse prefixo como snippet no seu editor e adicionar em qualquer prompt com um atalho. Se voce quer ir alem dos templates isolados e organizar prompts em workflows completos de desenvolvimento, veja como usar esses templates dentro do Claude Code com o metodo BMAD.