Como transformar uma issue vaga em um prompt para o Claude Code executar

prompt para Claude Code transformando uma issue vaga em pedido executável
Resposta rápida

Issue vaga não vira código bom, vira retrabalho. Um bom prompt para Claude Code começa fora do terminal: você responde o que deveria acontecer, como reproduzir, onde o comportamento mora e o que não pode quebrar, e só então escreve o pedido com critério de pronto. Depois roda em modo de plano (Shift+Tab até ‘plan mode on’ ou claude --permission-mode plan), que deixa o Claude explorar o código e propor um plano sem editar nada em disco. Você corrige a premissa errada antes de aprovar. E o que funcionou vira um comando reutilizável em .claude/commands/

Fala aí, beleza? "Tá bugado" é a issue mais comum do mundo, e também a que mais faz agente de IA sair refatorando arquivo que ninguém pediu

Quando o Claude Code devolve qualquer coisa, a primeira reação é culpar o modelo

Só que quase sempre o problema não é ele: é o pedido

O board te entrega uma frase de quatro palavras, sem reprodução, sem comportamento esperado, sem alvo, e você repassa isso pro agente esperando mágica

Esse post é sobre a tradução: pegar a demanda vaga que chega e virar um pedido que dá pra executar e conferir

E a parte incômoda: boa parte das perguntas só VOCÊ pode responder, não o agente

O que você precisa antes de acionar o agente

Nada exótico aqui, é o básico do repositório funcionando

  • Claude Code instalado e rodando dentro do repositório do projeto, não numa pasta solta
  • Um CLAUDE.md no projeto, que é o arquivo que o Claude lê no início de toda conversa pra pegar contexto que ele não consegue inferir só olhando o código: comando de build, estilo de código, regra de fluxo
  • A CLI gh do GitHub instalada, porque a própria Anthropic recomenda: o Claude sabe usar ela pra criar issue, abrir pull request e ler comentário
  • Acesso de escrita no repo, senão a etapa de PR morre no fim

Não tem CLAUDE.md ainda? Roda /init dentro do Claude Code

Ele analisa o projeto (detecta sistema de build, framework de testes e padrões de código) e gera um CLAUDE.md inicial pra você refinar depois

Que refinar é esse? Tirar o que é óbvio pelo código e deixar o que é decisão de time: "toda migration passa por X", "nunca commitar direto na main", esse tipo de coisa

Domine o Claude Code do básico ao avançado
Pré-inscrição Formação Claude Code

Domine o Claude Code do básico ao avançado

Você vai aprender a criar sistemas completos com Claude Code, sem precisar ser programador. Inscreva-se para ter acesso a um desconto de lançamento e bônus especiais!

A recomendação é manter curto e legível, não escrever um manual

Se a base é grande e o arquivo tá virando um monstro, dá pra dividir as instruções em vários arquivos dentro do diretório .claude/rules/

Se você ainda tá montando o cenário do zero, vale ver antes o fluxo completo do Claude Code do primeiro projeto até o deploy

Como transformar uma issue vaga em um prompt executável, passo a passo

A sequência abaixo é chata de propósito

A ideia é que você faça o trabalho de decidir ANTES de gastar contexto do agente

  1. Leia a issue crua, sem interpretar
gh issue view 123

Lê inteiro, incluindo comentários

Muita informação boa tá enterrada no terceiro comentário, não no corpo

O erro comum deste passo: jogar o link da issue pro agente e mandar "resolve isso", sem nem você ter lido o que tá escrito

  1. Responda as 4 perguntas que só você responde
  • O que deveria acontecer? (o comportamento correto, descrito em uma frase)
  • Como reproduzir? (o caminho exato: quem, onde, com qual dado)
  • Onde isso mora? (rota, tela, componente, serviço)
  • O que NÃO pode quebrar? (o efeito colateral que você não aceita)

Se você não sabe responder alguma, o agente também não vai saber

Ele vai CHUTAR, e chute vira código

O erro comum deste passo: responder a pergunta 3 por dedução ("acho que é no componente de login") e passar esse achismo como fato pro Claude

  1. Defina o critério de pronto verificável

A Anthropic afirma que o Claude tem melhor desempenho quando existe um alvo claro pra iterar contra: um caso de teste, um mock visual ou outro tipo de saída esperada

O motivo é simples: com alvo, ele muda, avalia o resultado e melhora até acertar

Sem alvo, ele muda e para, e quem avalia é você no olhômetro

O erro comum deste passo: escrever "funcionar corretamente" como critério de pronto. Isso não é critério, é torcida

  1. Delimite o alvo sem chutar

Se você sabe o arquivo, escreve o arquivo

Se não sabe, escreve o que sabe ("a rota de checkout") e deixa EXPLÍCITO que localizar faz parte da tarefa

É muito melhor dizer "não sei onde mora, procura" do que apontar pro lugar errado com confiança

O erro comum deste passo: mandar o agente pra um caminho errado e depois passar três rodadas desfazendo edição em arquivo inocente

  1. Escreva o pedido reescrito, em um bloco só

Junta tudo: comportamento esperado, reprodução, alvo, critério de pronto e a lista do que não pode quebrar

A issue original vira anexo, não vira o pedido

O erro comum deste passo: mandar o pedido fatiado em cinco mensagens no chat. Cada ida e volta come contexto que faria falta na hora de codar

  1. Rode em modo de plano antes de qualquer edição

Aperta Shift+Tab até a barra de status mostrar o modo de plano, ou já abre a sessão assim:

claude --permission-mode plan

No modo de plano o Claude explora o código e produz um plano sem editar arquivo

As ferramentas de leitura rodam normal e as edições de arquivo NUNCA são aprovadas automaticamente, mesmo que exista uma regra de permissão que daria match

Ou seja: leitura e proposta, zero edição em disco até você aprovar

O erro comum deste passo: pular direto pro modo que aceita edição porque "é uma correção pequena". Pequena até o momento em que não era 🙂

  1. Leia o plano procurando a premissa errada

Essa é a etapa de maior retorno do post inteiro

Você não tá lendo pra aprovar, tá lendo pra caçar a frase onde ele entendeu outra coisa

Corrige ali, ainda no plano, que sai muito mais barato do que corrigir depois de 12 arquivos alterados

O erro comum deste passo: bater o olho, ver que "parece certo" e aprovar. Plano bonito com premissa errada gera código bonito e errado

  1. Aprove e deixa codar

Sai do modo de plano aprovando o plano ou apertando Shift+Tab de novo, e aí ele passa a codar com base no que foi combinado

O erro comum deste passo: aprovar e sumir. Alvo verificável do passo 3 existe justamente pra você ter como conferir o resultado sem ler linha por linha

Três issues vagas reescritas (antes e depois)

Padrão de tradução, não fórmula mágica

O que se repete nos três é a troca do adjetivo ("bugado", "feia", "lenta") por comportamento observável mais um critério de pronto

O resto entra conforme o caso: reprodução quando é bug, escopo e fora do escopo quando é ajuste de tela, alvo apontado quando você sabe onde mora

"Tá bugado"

Antes: "o cadastro tá bugado, não vai"

Depois: "Ao enviar o formulário de cadastro com e-mail já existente, a tela fica em estado de carregamento e nada acontece

Esperado: exibir a mensagem de erro de e-mail duplicado e liberar o botão

Reprodução: abrir o formulário, usar um e-mail já cadastrado, enviar

Pronto quando: existe teste cobrindo o caso de e-mail duplicado e ele passa

Não pode quebrar: o cadastro com e-mail novo continua funcionando"

"Melhorar a tela"

Antes: "melhorar a tela de listagem, tá feia"

Depois: "Ajustar a tela de listagem para bater com o mock anexado

Escopo: espaçamento, hierarquia dos títulos e estado de lista vazia

Fora do escopo: qualquer mudança de dados, filtro ou paginação

Pronto quando: o resultado bate com o mock e nenhum comportamento de filtro mudou"

Aqui não tem passo a passo de reprodução, porque não é bug: o mock faz o papel do teste, é o alvo pra iterar contra

"Otimizar isso"

Antes: "otimizar essa consulta, tá lenta"

Depois: "A listagem de pedidos demora demais para responder no ambiente local com a base de exemplo

Esperado: reduzir o tempo dessa resposta e registrar o número antes e depois na descrição do PR

Alvo: a consulta que alimenta a listagem de pedidos

Não pode quebrar: o resultado retornado precisa ser idêntico ao atual, mesma ordem e mesma quantidade"

Repara que eu não escrevi um número mágico de milissegundos

Se você não mediu, não inventa a meta: pede a medição antes e depois, que é verificável de verdade

Como transformar a tradução em um comando reutilizável (.claude/commands/)

Fez a tradução três vezes na mão? Vira comando 😀

Comandos customizados do Claude Code moram em arquivos markdown dentro da pasta .claude/commands/ e aceitam argumento dinâmico pelo placeholder $ARGUMENTS (além dos posicionais $0, $1 e por aí vai)

A própria documentação usa .claude/commands/fix-issue.md como exemplo

  1. Crie o arquivo do comando
mkdir -p .claude/commands
touch .claude/commands/fix-issue.md
  1. Escreva o frontmatter e o roteiro dentro dele

O arquivo de comando suporta os campos allowed-tools, argument-hint e description

---
allowed-tools: Bash, Read, Edit
argument-hint: numero da issue
description: Corrige uma issue do GitHub seguindo o roteiro do time
---

Corrija a issue $ARGUMENTS seguindo estes passos:

1. Use `gh issue view` para ler a issue
2. Entenda o problema descrito
3. Procure os arquivos relevantes no repositório
4. Implemente as mudanças necessárias
5. Escreva e rode os testes
6. Garanta que o lint e o type check passam
7. Escreva uma mensagem de commit descritiva
8. Faça push e abra o pull request

Esse roteiro de 8 passos não saiu da minha cabeça: é o fluxo que a Anthropic recomenda pra corrigir issue do GitHub

A sacada é que ele é sempre o mesmo, então não faz sentido redigitar toda vez

O erro comum deste passo: transformar o comando num textão

O arquivo é lido junto com o resto, então quanto mais gordo, mais contexto ele come antes mesmo do trabalho começar

  1. Chame passando o número da issue
/fix-issue 123

E se você esquecer de colocar o $ARGUMENTS dentro do arquivo? Não quebra

O Claude Code anexa ARGUMENTS: <sua entrada> ao final do conteúdo, então ele ainda enxerga o que foi digitado

É um fallback, não uma desculpa pra não usar o placeholder: com $ARGUMENTS você escolhe ONDE o argumento entra no texto

  1. Empilhe comandos quando fizer sentido

Dá pra colocar mais de um comando no início da mesma mensagem, e o texto final é passado como $ARGUMENTS pra cada um deles

O exemplo da doc é exatamente esse:

/write-tests /fix-issue 123

Os dois comandos são carregados e o 123 chega nos dois

Quando a issue vira trabalho do Claude direto no GitHub

Até aqui a tradução acontece no seu terminal

Dá pra mover ela pro repositório, e aí a coisa muda de figura: a issue bem escrita passa a ser o prompt LITERAL, porque é o texto dela que o agente vai receber

Motivo a mais pra escrever direito, né? 😛

O caminho rápido de configuração é rodar /install-github-app dentro do Claude Code no terminal

Ele conduz a configuração do GitHub App e das secrets necessárias pra usar o Claude Code no GitHub

A alternativa é instalar o Claude GitHub App manualmente no repositório

As permissões do GitHub App são três, todas em leitura e escrita:

PermissãoNível
Contentsleitura e escrita
Issuesleitura e escrita
Pull requestsleitura e escrita

Pra autenticação existem duas opções: ANTHROPIC_API_KEY (chave da Claude Console) ou CLAUDE_CODE_OAUTH_TOKEN, que é um token OAuth pros planos Pro, Max, Team e Enterprise

Esse token você gera localmente:

claude setup-token

Com tudo no lugar, o gatilho: no modo interativo da Claude Code Action, quando o workflow não passa um prompt, o Claude espera a frase de gatilho padrão @claude

Ela vale em comentário de issue, em comentário de pull request, em review de PR e também no corpo e no título de uma issue recém-aberta

O gatilho é configurável, mas o padrão é esse

Ou seja: alguém abre uma issue já traduzida no formato do post e marca o @claude no corpo

Se a issue for a frase de quatro palavras de sempre, adivinha o que chega no PR

Por que o pedido vago custa caro (e como prevenir)

Sintoma: o agente sai refatorando o que ninguém pediu, a conversa vira ida e volta longa e, lá pro fim da sessão, as respostas pioram visivelmente

Aquela sensação de "ele tava indo bem e do nada ficou burro"

Causa: a Anthropic afirma que a maioria das boas práticas do Claude Code decorre de uma restrição só, a janela de contexto

Ela enche rápido, e o desempenho degrada conforme ela enche

Pedido vago é justamente a máquina de encher contexto: cada rodada de "não era isso" empilha texto, e o texto empilhado é o mesmo que vai faltar depois

Prevenção, em três frentes:

  • Contexto persistente no CLAUDE.md, não repetido no chat toda sessão. Se você digita a mesma explicação três vezes por semana, ela é arquivo, não mensagem. E se o seu contexto de projeto vive espalhado em notas, dá pra ligar um segundo cérebro no Obsidian no fluxo
  • Escopo estreito, com o "fora do escopo" escrito explicitamente. É a linha que impede o refactor não solicitado
  • Plan mode antes de escrever, sempre que o pedido tocar mais de um arquivo

E os outros modos de permissão?

O modo de plano não é o único, e cada um tem seu lugar

ModoO que fazOnde cabe
planLê e propõe plano, sem edição em disco até aprovarTradução de issue, tarefa que toca vários arquivos
acceptEditsAprova operações em arquivosTarefa já entendida, escopo fechado
bypassPermissionsAprova tudo que chega nesse passoSó com consciência plena do que isso significa
dontAskNega o que não estiver nas regras allow ou no conjunto de comandos somente leituraExecução travada, tipo CI

O dontAsk é o mais interessante pra quem roda em pipeline: em vez de aprovar tudo pra não travar, ele nega o que não foi explicitamente liberado

Dá pra deixar rodando sem ninguém no volante e sem entregar a chave da casa

Conclusão

Escrever a issue direito é trabalho de quem PEDE, não do agente

O Claude Code lê o que você escreveu, não o que você quis dizer, e nenhum modelo adivinha o que não pode quebrar no seu sistema

O caminho é sempre o mesmo: ler a issue crua, responder as quatro perguntas (o que deveria acontecer, como reproduzir, onde mora, o que não pode quebrar), fixar um critério de pronto verificável, rodar em modo de plano e caçar a premissa errada antes de aprovar qualquer edição

Quando a tradução estabilizar, ela vira arquivo em .claude/commands/ e para de custar seu tempo

Próximo passo prático pra hoje: abre o board, pega a issue MAIS vaga que tiver lá, responde as quatro perguntas num bloco de texto e roda em plan mode antes de deixar ele encostar em qualquer arquivo

Se o plano voltar com uma premissa errada, você acabou de economizar uma tarde inteira

até o próximo post!

Perguntas frequentes

Qual a diferença entre o modo de plano e o modo normal do Claude Code?

No modo de plano o Claude só explora o código e monta um plano, sem editar nada em disco, mesmo que exista uma regra de permissão que liberaria a edição. Depois que você aprova o plano ou aperta Shift+Tab de novo, ele passa para o modo que já edita arquivo de verdade.

Como o /init ajuda a criar o CLAUDE.md de um projeto?

O comando /init roda dentro do Claude Code e analisa o projeto, detectando sistema de build, framework de testes e padrões de código, gerando um CLAUDE.md inicial. Depois é só refinar, tirando o que é óbvio pelo código e deixando as decisões de time, tipo regra de fluxo.

O que fazer quando o CLAUDE.md fica grande demais para o projeto?

Em base de código grande, dá pra dividir as instruções em vários arquivos dentro do diretório .claude/rules/ em vez de empilhar tudo num CLAUDE.md só. Isso mantém cada arquivo curto e legível, que é justamente a recomendação pra esse tipo de contexto persistente.

Por que instalar a CLI gh antes de pedir pro Claude Code corrigir uma issue?

A própria Anthropic recomenda instalar a CLI gh porque o Claude sabe usar ela pra ler issue com gh issue view, criar issue, abrir pull request e ler comentário. Sem ela, boa parte do roteiro de corrigir uma issue do GitHub fica manual.

Depois de montar o prompt para o Claude Code executar, como sair do modo de plano?

Basta aprovar o plano ou apertar Shift+Tab de novo. A partir daí o Claude passa a codar com base no que foi combinado no plano, então vale ler o plano com calma antes desse passo.

Dá pra empilhar mais de um comando customizado na mesma mensagem do Claude Code?

Dá sim. É possível empilhar comandos no início da mensagem, como no exemplo /write-tests /fix-issue 123 citado na própria documentação, e o texto final é passado como $ARGUMENTS pra cada um deles.



Subscribe
Notify of
guest

0 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Formações

Formação Vibe Coding

Formação Vibe Coding

Do Prompt ao Produto: Crie Software Real com IA

  • 474 aulas
  • 20 projetos
  • 39h 27min

Blog | Mais populares