SpyBara
Go Premium

code-review-pull-requests.md 2026-11-06 23:01 UTC to 2026-11-07 23:58 UTC

No changes for this document in this history range.

2026

Ler e solicitar revisões em um pull request

Leia as descobertas do Code Review no seu pull request do GitHub, responda a elas ou descarte-as e solicite uma revisão com @claude review.

O Code Review é um serviço gerenciado que um Owner da sua organização Claude ativa para um conjunto de repositórios do GitHub. Depois de ativado, o Claude revisa os pull requests nesses repositórios e publica suas descobertas como comentários inline, um resumo no corpo da revisão e um check run chamado Claude Code Review. Uma revisão nunca aprova nem bloqueia o seu pull request, e o check run nunca é concluído como falha.

Um Owner controla quando as revisões são executadas e quão minuciosas elas são para cada repositório.

[!NOTE]

Se o seu plano não inclui o Code Review, você ainda pode pedir ao Claude que revise o seu branch a partir de uma sessão do Claude Code: consulte Revisar localmente com /code-review.

Níveis de severidade

O Claude publica cada descoberta como um comentário inline nas linhas em questão e a marca com um de três níveis de severidade:

Marcador Severidade Significado
🔴 Important Um bug que deve ser corrigido antes do merge
🟡 Nit Um problema menor, que vale a pena corrigir, mas não é bloqueante
🟣 Pre-existing Um bug que existe na base de código, mas não foi introduzido por este PR

Quando a revisão registrou seu raciocínio, a descoberta tem uma seção recolhida Why this was flagged. Expanda-a para ler por que o Claude sinalizou o problema e como ele verificou o problema.

Para alterar o que o Claude sinaliza no seu repositório ou como ele classifica a severidade, consulte Personalizar o Code Review.

Responder às descobertas

Você pode mesclar sem responder a uma descoberta, a menos que as regras do seu próprio repositório exijam isso. Se a proteção de branch dele exigir a resolução de conversas, resolva a thread de cada descoberta antes de mesclar.

Para eliminar uma descoberta, resolva a thread dela ou envie uma correção.

  • Descartá-la sem alterar o código: resolva a thread você mesmo no GitHub. Apenas responder não descarta uma descoberta.
  • Corrigir o problema: altere o código e faça push. A próxima revisão do pull request resolve a thread anterior quando considera o problema corrigido, seja essa revisão executada automaticamente no seu push ou solicitada por você.
  • Explicar ou discordar: responda ao comentário. O Claude não responde imediatamente, e uma resposta não inicia uma revisão. A próxima revisão do pull request lê as respostas às descobertas anteriores e pode resolver a thread ou publicar uma resposta de acompanhamento. Se o mesmo tipo de descoberta continuar voltando, peça a um mantenedor que adicione uma regra ao REVIEW.md.

Para obter essa próxima revisão sem fazer push, comente @claude review como um comentário de nível superior no pull request.

Saída do check run

O link Details no check run Claude Code Review abre as descobertas em uma tabela ordenada por severidade, incluindo qualquer descoberta cujo comentário inline o GitHub não aceitou:

Severidade Arquivo:Linha Problema
🔴 Important src/auth/session.ts:142 A renovação do token entra em condição de corrida com o logout, deixando sessões obsoletas ativas
🟡 Nit src/auth/session.ts:88 parseExpiry retorna 0 silenciosamente em entradas malformadas

Uma descoberta que tem uma linha, mas não foi publicada como comentário inline, aparece como uma anotação na aba Files changed, nas linhas em questão. Descobertas Important aparecem em vermelho, nits em amarelo e bugs pré-existentes em cinza.

O check run é concluído como neutro, ou como ignorado após alguns pushes que não alteram nenhum arquivo e mantêm o resultado anterior. Ele nunca é concluído como falha, portanto uma revisão finalizada não faz uma verificação obrigatória falhar. Se você não vir descobertas ou se uma revisão não foi executada, consulte Solucionar problemas do Code Review.

Quando um push mantém o resultado anterior

Se o check run tiver um destes títulos depois que você fizer push, o Code Review manteve o resultado de uma revisão anterior em vez de iniciar uma nova:

  • Code review skipped — no new changes: nenhuma descoberta Important da revisão anterior ainda está aberta, então você não precisa de uma nova revisão
  • Code review not repeated — earlier findings still open: para iniciar uma nova revisão, faça push de uma correção para uma descoberta Important aberta, ou resolva a thread dela e faça push novamente

No github.com, o Code Review pode manter um resultado quando ambas as condições a seguir são verdadeiras:

  • O pull request ainda adiciona e remove as mesmas linhas, como após um commit vazio, um merge limpo do branch base ou um rebase limpo
  • Ninguém resolveu a thread de uma descoberta Important desde aquela revisão

Para obter uma revisão sem alteração de código, comente @claude review ou clique em Re-run no check run.

Ler o resultado a partir de um script

Para condicionar um merge ou publicar um resumo a partir do seu próprio CI, analise a última linha do texto de Details com gh e jq. Essa linha é um comentário HTML que contém as contagens de severidade em JSON:

<!-- bughunter-severity: {"nit":1,"normal":2,"pre_existing":0} -->

As linhas acima dela podem incluir nomes de arquivos do pull request. Se você analisar o texto à sua maneira, obtenha as contagens apenas da última linha, como faz o comando nestas etapas.

1. Encontrar o ID do check run

No seu shell, liste os check runs do commit e pegue o id da execução Claude Code Review. Substitua OWNER e REPO pelo proprietário e nome do seu repositório, e <commit-sha> pelo commit head do pull request:

gh api repos/OWNER/REPO/commits/<commit-sha>/check-runs --jq '.check_runs[] | {id, name}'

Se o commit tiver tido mais de uma execução Claude Code Review, como após um Re-run, o GitHub lista apenas a mais recente.

2. Ler as contagens de severidade

Leia as contagens do campo output.text do check run, que contém o texto de Details. Substitua CHECK_RUN_ID pelo ID:

gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq '
  (.output.text | split("\n") | last
    | scan("^<!-- bughunter-severity: (.*) -->$")[0] | fromjson)?
  // error("no severity line")'

Isso imprime um objeto JSON com uma contagem por severidade e suas chaves em ordem alfabética, por exemplo {"nit": 1, "normal": 2, "pre_existing": 0}. Exceto em um check run que manteve um resultado anterior, as contagens incluem descobertas de revisões anteriores do pull request cujas threads ainda estão abertas.

Sob o título Code review skipped — no new changes, as contagens deixam de fora nits e descobertas pré-existentes de revisões anteriores que ainda estão abertas. Nesse caso, nenhuma descoberta Important da revisão anterior ainda está aberta.

3. Agir com base no resultado

Faça o seu script tratar estes casos, nesta ordem:

  • O título começa com Code review not repeated: o Code Review manteve um resultado anterior cujas descobertas Important ainda estão abertas, e o check run não tem linha de severidade. Leia o título antes das contagens, com gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq .output.title. Faça o job falhar se quiser condicionar o merge.
  • O título termina com no new changes: deixe o job passar sem ler as contagens
  • normal é maior que zero: faça o job falhar se quiser condicionar o merge. A chave normal contém a contagem de descobertas Important, então o Claude encontrou pelo menos um bug que vale a pena corrigir antes do merge. Para imprimir apenas essa contagem, adicione | .normal antes da aspa simples de fechamento.
  • A linha está ausente: o comando imprime um erro que contém no severity line em vez das contagens e termina com um status diferente de zero. Trate isso como ausência de veredito, e não como zero descobertas. Um check run de uma revisão que falhou, excedeu o tempo limite, foi cancelada ou foi substituída por uma mais recente não tem essa linha, e algumas revisões concluídas também não a têm.

Solicitar uma revisão

Se o seu pull request for um rascunho ou vier de um fork, as revisões automáticas o ignoram, então solicite a revisão com um comando de comentário. Para obter uma revisão no seu pull request, faça uma destas ações:

  • Abri-lo ou marcá-lo como pronto: em um repositório configurado como Once after PR creation ou After every push, uma revisão é iniciada quando você abre ou reabre o pull request, ou marca um rascunho como pronto para revisão.
  • Comentar um comando: publique @claude review no pull request.
  • Fazer push de um commit: um push inicia uma revisão em um repositório configurado como After every push, ou em um pull request que você assinou com @claude review always. Se o seu pull request ainda adicionar e remover as mesmas linhas após o push, o Code Review pode manter o resultado anterior em vez disso.
  • Clicar em Re-run: depois que uma revisão falha ou excede o tempo limite em um pull request que não vem de um fork, execute-a novamente a partir do check run. Em um pull request que não vem de um fork, você também pode clicar em Re-run após um push que manteve o resultado anterior.
  • Aguardar a nova tentativa automática: uma revisão cuja sessão foi interrompida é tentada novamente uma vez de forma automática. O resumo do check run informa quando isso está acontecendo.

Comandos de comentário

Publique um destes comandos como comentário no pull request:

Comando O que faz Quando usar
@claude review Inicia uma única revisão sem assinar o PR para pushes futuros Você quer uma revisão agora, como em um pull request em um repositório configurado como Manual, ou outra revisão imediatamente nos outros modos
@claude review always Inicia uma revisão e assina o PR para revisões acionadas por push daqui em diante Você quer que os pushes subsequentes iniciem revisões, como em um PR de alta prioridade em um repositório configurado como Manual
@claude review once Igual a @claude review: inicia uma única revisão sem assinar Os mesmos casos de @claude review
@claude review stop Encerra a assinatura do PR para revisões acionadas por push, sem iniciar uma revisão nem cancelar uma que já esteja em execução. O Claude responde com um comentário em vez de um check run. Você assinou um PR com @claude review always em um repositório configurado como Manual ou Once after PR creation e não quer mais que cada push inicie uma revisão
@claude review off ou @claude review pause Igual a @claude review stop Os mesmos casos de @claude review stop

Em um repositório configurado como After every push, não é possível interromper as revisões com um comentário, porque nesse caso os pushes iniciam revisões com ou sem assinatura. Para impedir que os pushes iniciem revisões em um pull request nesse repositório, converta-o em rascunho. Quando você marcá-lo novamente como pronto para revisão, uma revisão será iniciada.

Para que qualquer comando de comentário tenha efeito, todas estas condições precisam ser atendidas:

  • Publique-o como um novo comentário de nível superior no pull request, e não como um comentário inline em uma linha do diff nem como o corpo de uma revisão. Editar um comentário anterior não conta.
  • Coloque o comando inteiro em uma única linha no início do comentário. Outro texto pode vir depois dele. Se always ou stop estiver escrito incorretamente ou em uma linha posterior, o Claude interpreta o comentário como um @claude review simples e inicia uma única revisão. Maiúsculas e minúsculas não importam.
  • Você precisa de permissão de escrita, manutenção ou administrador no repositório. O Claude verifica isso com o GitHub para cada pessoa que comenta, e comentários de bots não iniciam revisões.
  • O pull request precisa estar aberto.

Quando um comando que inicia uma revisão é aceito, um check run Claude Code Review aparece no pull request com o título Code review queued.... O título muda para Code review in progress... quando a revisão começa. O Claude também pode reagir ao seu comentário com 👀, mas essa reação pode aparecer quando nenhuma revisão é iniciada, então procure o check run em vez disso.

Se uma revisão já estiver em execução no commit mais recente do pull request, uma nova solicitação não inicia uma segunda.

[!NOTE]

Antes de uma atualização de julho de 2026, @claude review assinava o PR para revisões acionadas por push. Se você dependia desse comportamento, comente @claude review always em vez disso.

O que uma revisão posterior abrange

Uma revisão posterior que começa por conta própria, como após um push, concentra-se no que mudou desde a última revisão e publica menos nits e descobertas pré-existentes. Para ver se ela deixou descobertas de fora por esse motivo, procure no corpo da revisão uma frase que as contabiliza:

  • Descobertas em código que não mudou desde a última revisão: a frase termina com "outside the scope of this re-review and not posted"
  • Nits e descobertas pré-existentes: a frase termina com "found and not posted"

Para obter uma revisão que não deixe nenhuma dessas de fora, comente @claude review. Ela abrange todo o pull request novamente.

Revisar rascunhos e pull requests de forks

As revisões automáticas ignoram ambos, então solicite a revisão com um comando de comentário:

  • Pull requests em rascunho: um comando de comentário é executado em um rascunho, então você pode solicitar uma revisão antes de marcar o pull request como pronto. Pushes em um rascunho não iniciam revisões, mesmo após @claude review always. A assinatura entra em vigor quando você marca o pull request como pronto.
  • Pull requests de forks: o Claude não revisa automaticamente um pull request de um fork, independentemente da configuração Review runs do repositório. Para iniciar uma revisão, comente @claude review no pull request. As condições para comandos de comentário continuam se aplicando, e o acesso de escrita necessário é ao repositório base, não ao fork.

Em um pull request de um fork, @claude review always também funciona, mas não assina o pull request para revisões em pushes posteriores. Clicar em Re-run no check run não inicia uma revisão nesse caso.

Usar o Code Review junto com o Claude Code GitHub Action

Se o repositório também executa o Claude Code GitHub Action no modo interativo com sua frase de acionamento padrão @claude, um comentário @claude review também inicia o Action. Para manter os dois separados, defina a entrada trigger_phrase do Action com uma frase diferente.

Recursos relacionados