SpyBara
Go Premium

code-review-pull-requests.md 2026-10-21 23:02 UTC to 2026-10-22 22:58 UTC

This page contains 36 additions and 16 deletions.

2026
Thu 15 23:58 Tue 20 23:00 Wed 21 23:02 Thu 22 22:58 Fri 23 22:59 Sun 25 23:58

Leer y solicitar revisiones en un pull request

Lee los hallazgos de Code Review en tu pull request de GitHub, respóndelos o descártalos, y solicita una revisión con @claude review.

Code Review es un servicio gestionado que un Owner de tu organización de Claude activa para un conjunto de repositorios de GitHub. Una vez activado, Claude revisa los pull requests de esos repositorios y publica sus hallazgos como comentarios en línea, un resumen en el cuerpo de la revisión y un check run llamado Claude Code Review. Una revisión nunca aprueba ni bloquea tu pull request, y el check run nunca concluye como fallido.

Un Owner controla cuándo se ejecutan las revisiones y qué tan exhaustivas son para cada repositorio.

[!NOTE]

Si tu plan no incluye Code Review, aún puedes hacer que Claude revise tu rama desde una sesión de Claude Code: consulta Revisar localmente con /code-review.

Niveles de gravedad

Claude publica cada hallazgo como un comentario en línea sobre las líneas afectadas y lo marca con uno de tres niveles de gravedad:

Marcador Gravedad Significado
🔴 Important Un bug que debería corregirse antes de fusionar
🟡 Nit Un problema menor, que vale la pena corregir pero no es bloqueante
🟣 Pre-existing Un bug que existe en la base de código pero que no fue introducido por este PR

Cuando la revisión registró su razonamiento, el hallazgo tiene una sección contraída Why this was flagged. Expándela para leer por qué Claude señaló el problema y cómo lo verificó.

Para cambiar lo que Claude señala en tu repositorio o cómo clasifica la gravedad, consulta Personalizar Code Review.

Responder a los hallazgos

Puedes fusionar sin responder a un hallazgo, a menos que las propias reglas de tu repositorio lo exijan. Si su protección de rama exige la resolución de conversaciones, resuelve el hilo de cada hallazgo antes de fusionar.

Para eliminar un hallazgo, resuelve su hilo o sube una corrección.

  • Descartarlo sin cambiar el código: resuelve el hilo tú mismo en GitHub. Responder por sí solo no descarta un hallazgo.
  • Corregir el problema: cambia el código y haz push. La siguiente revisión del pull request resuelve su hilo anterior cuando considera que el problema está corregido, ya sea que esa revisión se ejecute automáticamente con tu push o que la solicites tú.
  • Explicar o estar en desacuerdo: responde al comentario. Claude no responde de inmediato, y una respuesta no inicia una revisión. La siguiente revisión del pull request lee las respuestas a sus hallazgos anteriores, y puede resolver el hilo o publicar una respuesta de seguimiento. Si el mismo tipo de hallazgo sigue apareciendo, pídele a un maintainer que agregue una regla a REVIEW.md.

Para obtener esa siguiente revisión sin hacer push, comenta @claude review como un comentario de nivel superior en el pull request.

Salida del check run

El enlace Details del check run Claude Code Review abre los hallazgos en una tabla ordenada por gravedad, incluido cualquier hallazgo cuyo comentario en línea GitHub no aceptó:

Gravedad Archivo:Línea Problema
🔴 Important src/auth/session.ts:142 La actualización del token compite con el cierre de sesión, dejando activas sesiones obsoletas
🟡 Nit src/auth/session.ts:88 parseExpiry devuelve 0 silenciosamente ante una entrada mal formada

Un hallazgo que tiene una línea pero que no se publicó como comentario en línea aparece como una anotación en la pestaña Files changed, sobre las líneas afectadas. Los hallazgos Important se muestran en rojo, los nits en amarillo y los bugs preexistentes en gris.

El check run concluye como neutral, o como omitido después de algunos pushes que no cambian ningún archivo y conservan el resultado anterior. Nunca concluye como fallido, así que una revisión terminada no hace fallar un check obligatorio. Si no ves hallazgos, o una revisión no se ejecutó, consulta Solucionar problemas de Code Review.

Cuando un push conserva el resultado anterior

Si el check run tiene uno de estos títulos después de hacer push, Code Review conservó el resultado de una revisión anterior en lugar de iniciar una nueva:

  • Code review skipped — no new changes: ningún hallazgo Important de la revisión anterior sigue abierto, así que no necesitas una nueva revisión
  • Code review not repeated — earlier findings still open: para iniciar una nueva revisión, haz push de una corrección para un hallazgo Important abierto, o resuelve su hilo y vuelve a hacer push

En github.com, Code Review puede conservar un resultado cuando se cumplen estas dos condiciones:

  • El pull request sigue agregando y eliminando las mismas líneas, como después de un commit vacío, una fusión limpia de la rama base o un rebase limpio
  • Nadie ha resuelto el hilo de un hallazgo Important desde esa revisión

Para obtener una revisión sin un cambio de código, comenta @claude review o haz clic en Re-run en el check run.

Leer el resultado desde un script

Para condicionar una fusión o publicar un resumen desde tu propio CI, analiza la última línea del texto de Details con gh y jq. Esa línea es un comentario HTML que contiene los conteos de gravedad en formato JSON:

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

Las líneas anteriores pueden incluir nombres de archivos del pull request. Si analizas el texto a tu manera, toma los conteos solo de la última línea, como hace el comando de estos pasos.

1. Encuentra el ID del check run

Desde tu shell, lista los check runs del commit y toma el id del run Claude Code Review. Reemplaza OWNER y REPO con el propietario y el nombre de tu repositorio, y <commit-sha> con el commit head del pull request:

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

Si el commit ha tenido más de un run Claude Code Review, por ejemplo después de un Re-run, GitHub lista solo el más reciente.

2. Lee los conteos de gravedad

Lee los conteos del campo output.text del check run, que contiene el texto de Details. Reemplaza CHECK_RUN_ID con el 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")'

Esto imprime un objeto JSON con un conteo por gravedad y sus claves en orden alfabético, por ejemplo {"nit": 1, "normal": 2, "pre_existing": 0}. Excepto en un check run que conservó un resultado anterior, los conteos incluyen hallazgos de revisiones anteriores del pull request cuyos hilos siguen abiertos.

Con el título Code review skipped — no new changes, los conteos omiten los nits y los hallazgos preexistentes de revisiones anteriores que siguen abiertos. En ese caso, ningún hallazgo Important de la revisión anterior sigue abierto.

3. Actúa según el resultado

Haz que tu script maneje estos casos en orden:

  • El título empieza con Code review not repeated: Code Review conservó un resultado anterior cuyos hallazgos Important siguen abiertos, y el check run no tiene línea de gravedad. Lee el título antes que los conteos, con gh api repos/OWNER/REPO/check-runs/CHECK_RUN_ID --jq .output.title. Haz fallar el job si quieres condicionar la fusión.
  • El título termina con no new changes: deja que el job pase sin leer los conteos
  • normal es mayor que cero: haz fallar el job si quieres condicionar la fusión. La clave normal contiene el conteo de hallazgos Important, así que Claude encontró al menos un bug que vale la pena corregir antes de fusionar. Para imprimir solo ese conteo, agrega | .normal antes de la comilla simple de cierre.
  • Falta la línea: el comando imprime un error que contiene no severity line en lugar de los conteos y termina con un código de salida distinto de cero. Trátalo como ausencia de veredicto y no como cero hallazgos. Un check run de una revisión que falló, agotó el tiempo de espera, fue cancelada o fue reemplazada por una más reciente no tiene esa línea, y algunas revisiones completadas tampoco la tienen.

Solicitar una revisión

Si tu pull request es un borrador o proviene de un fork, las revisiones automáticas lo omiten, así que solicita la revisión con un comando de comentario. Para obtener una revisión en tu pull request, haz una de estas cosas:

  • Ábrelo o márcalo como listo: en un repositorio configurado como Once after PR creation o After every push, una revisión se inicia cuando abres o reabres el pull request, o marcas un borrador como listo para revisión.
  • Comenta un comando: publica @claude review en el pull request.
  • Haz push de un commit: un push inicia una revisión en un repositorio configurado como After every push, o en un pull request que suscribiste con @claude review always. Si tu pull request sigue agregando y eliminando las mismas líneas después del push, Code Review puede conservar el resultado anterior en su lugar.
  • Haz clic en Re-run: después de que una revisión falle o agote el tiempo de espera en un pull request que no proviene de un fork, vuelve a ejecutarla desde el check run. En un pull request que no proviene de un fork, también puedes hacer clic en Re-run después de un push que conservó el resultado anterior.
  • Espera el reintento automático: una revisión cuya sesión se interrumpió se reintenta una vez automáticamente. El resumen del check run indica cuándo está ocurriendo esto.

Comandos de comentario

Publica uno de estos comandos como comentario en el pull request:

Comando Qué hace Cuándo usarlo
@claude review Inicia una sola revisión sin suscribir el PR a futuros pushes Quieres una revisión ahora, por ejemplo en un pull request de un repositorio configurado como Manual, u otra revisión de inmediato en los otros modos
@claude review always Inicia una revisión y suscribe el PR a revisiones activadas por push de ahí en adelante Quieres que los pushes posteriores inicien revisiones, por ejemplo en un PR de alta prioridad en un repositorio configurado como Manual
@claude review once Igual que @claude review: inicia una sola revisión sin suscribir Los mismos casos que @claude review
@claude review stop Finaliza la suscripción del PR a las revisiones activadas por push, sin iniciar una revisión ni cancelar una que ya esté en ejecución. Claude responde con un comentario en lugar de un check run. Suscribiste un PR con @claude review always en un repositorio configurado como Manual u Once after PR creation, y ya no quieres que cada push inicie una revisión
@claude review off o @claude review pause Igual que @claude review stop Los mismos casos que @claude review stop

En un repositorio configurado como After every push, no puedes detener las revisiones con un comentario, porque allí los pushes inician revisiones con o sin suscripción. Para evitar que los pushes inicien revisiones en un pull request allí, conviértelo en borrador. Cuando vuelvas a marcarlo como listo para revisión, se iniciará una revisión.

Para que cualquier comando de comentario surta efecto, deben cumplirse todas estas condiciones:

  • Publícalo como un nuevo comentario de nivel superior en el pull request, no como un comentario en línea sobre una línea del diff ni como el cuerpo de una revisión. Editar un comentario anterior no cuenta.
  • Pon el comando completo en una sola línea al inicio del comentario. Puede ir seguido de otro texto. Si always o stop están mal escritos o en una línea posterior, Claude interpreta el comentario como un simple @claude review e inicia una sola revisión. Las mayúsculas y minúsculas no importan.
  • Necesitas permiso de write, maintain o admin en el repositorio. Claude lo verifica con GitHub para cada persona que comenta, y los comentarios de bots no inician revisiones.
  • El pull request debe estar abierto.

Cuando se acepta un comando que inicia una revisión, aparece un check run Claude Code Review en el pull request con el título Code review queued.... El título cambia a Code review in progress... cuando la revisión comienza. Claude también puede reaccionar a tu comentario con 👀, pero esa reacción puede aparecer aunque no se inicie ninguna revisión, así que busca el check run en su lugar.

Si ya hay una revisión en ejecución sobre el último commit del pull request, una nueva solicitud no inicia una segunda.

[!NOTE]

Antes de una actualización de julio de 2026, @claude review suscribía el PR a revisiones activadas por push. Si dependías de ese comportamiento, comenta @claude review always en su lugar.

Qué cubre una revisión posterior

Una revisión posterior que se inicia por sí sola, por ejemplo después de un push, se centra en lo que cambió desde la última revisión y publica menos nits y hallazgos preexistentes. Su resumen cuenta lo que omitió, en una línea que termina en "found and not posted" u "outside the scope of this re-review and not posted."

Para obtener una revisión que no omita nada de esto, comenta @claude review. Cubre de nuevo todo el pull request.

Revisar borradores y pull requests de forks

Las revisiones automáticas omiten ambos casos, así que solicita la revisión con un comando de comentario:

  • Pull requests en borrador: un comando de comentario se ejecuta en un borrador, así que puedes solicitar una revisión antes de marcar el pull request como listo. Los pushes a un borrador no inician revisiones, incluso después de @claude review always. La suscripción entra en vigor una vez que marcas el pull request como listo.
  • Pull requests de forks: Claude no revisa automáticamente un pull request de un fork, independientemente del ajuste Review runs del repositorio. Para iniciar una, comenta @claude review en el pull request. Las condiciones para los comandos de comentario siguen aplicando, y el acceso de escritura que necesitas es al repositorio base, no al fork.

En un pull request de un fork, @claude review always también funciona, pero no suscribe el pull request a revisiones en pushes posteriores. Hacer clic en Re-run en el check run no inicia una revisión allí.

Usar Code Review junto con la GitHub Action de Claude Code

Si el repositorio también ejecuta la GitHub Action de Claude Code en modo interactivo con su frase de activación predeterminada @claude, un comentario @claude review también inicia la Action. Para mantener ambas separadas, establece el input trigger_phrase de la Action en una frase diferente.

Recursos relacionados