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.
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.
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
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
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.
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
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
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
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
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
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
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
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 performanceTemplate 13: Documentacao de funcao
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
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
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:
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.
- Nao dar contexto da stack: o modelo vai inventar. Sempre especifique linguagem e framework
- Pedir codigo demais em um prompt so: quebre em subtarefas, o resultado e muito melhor
- Aceitar o primeiro resultado sem revisar: use os templates de code review logo depois
- Ignorar casos de erro no prompt: se voce nao pediu tratamento de erro, nao vai ter
- 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.