Flujo de trabajo de revisión de PR con Claude Code para preevaluar legibilidad, corrección y casos límite, y luego generar una lista de verificación para el revisor y preguntas para hacer.

Las revisiones de PR casi nunca se eternizan porque el código sea "difícil". Se alargan porque el revisor tiene que reconstruir la intención, el riesgo y el impacto a partir de un diff que muestra cambios, no la historia completa.
Una edición pequeña puede tocar dependencias ocultas: renombrar un campo y se rompe un informe, cambiar un valor por defecto y la conducta cambia, ajustar una condición y cambia el manejo de errores. El tiempo de revisión crece cuando el revisor tiene que buscar contexto, ejecutar la app localmente y hacer preguntas de seguimiento solo para entender qué pretende hacer el PR.
También hay un problema humano de patrón. La gente hojea diffs de formas previsibles: nos centramos en el cambio "principal" y pasamos por alto las líneas aburridas donde se esconden errores (comprobaciones de límites, manejo de null, logging, limpieza). Tendemos además a leer lo que esperamos ver, así que los errores por copiar y pegar y las condiciones invertidas pueden pasar desapercibidos.
Una buena pre-revisión no es un veredicto. Es un segundo par de ojos rápido y estructurado que apunta dónde debería frenar un humano. El mejor resultado es:
Lo que no debe hacer: "aprobar" el PR, inventar requisitos o adivinar el comportamiento en tiempo de ejecución sin evidencia. Si el diff no incluye suficiente contexto (entradas esperadas, restricciones, contratos de quien llama), la pre-revisión debe indicarlo y listar exactamente qué falta.
La ayuda de IA es más fuerte en PRs de tamaño medio que tocan lógica de negocio o refactors donde el significado puede perderse. Es más débil cuando la respuesta correcta depende de un conocimiento organizativo profundo (comportamientos heredados, peculiaridades de rendimiento en producción, reglas internas de seguridad).
Ejemplo: un PR que "solo actualiza la paginación" suele ocultar páginas off-by-one, resultados vacíos y desajustes en el orden entre API y UI. Una pre-revisión debería sacar esas preguntas antes de que un humano pierda 30 minutos redescubriéndolas.
Trata a Claude como un revisor de primera pasada, rápido y exigente, no como quien decide si el PR se publica. El objetivo es sacar problemas temprano: código confuso, cambios de comportamiento ocultos, tests faltantes y casos límite que olvidas cuando estás inmerso en el cambio.
Dale lo que un revisor humano justo necesitaría:
Si el PR toca un área conocida de alto riesgo, dilo desde el principio (auth, facturación, migraciones, concurrencia).
Luego pide salidas en las que puedas actuar. Una petición sólida se ve así:
Mantén al humano a cargo forzando claridad sobre la incertidumbre. Pide a Claude que etiquete los hallazgos como "cierto a partir del diff" vs "necesita confirmación", y que cite las líneas exactas que dispararon cada preocupación.
Claude es tan bueno como lo que le muestras. Si pegas un diff gigantesco sin objetivo ni restricciones, obtendrás consejos genéricos y te perderás los riesgos reales.
Empieza con un objetivo concreto y criterios de éxito. Por ejemplo: "Este PR añade limitación de tasa al endpoint de login para reducir el abuso. No debe cambiar la forma de la respuesta. Debe mantener la latencia media por debajo de 50 ms."
A continuación, incluye solo lo que importa. Si cambiaron 20 archivos pero solo 3 contienen la lógica, céntrate en esos. Incluye contexto alrededor cuando un fragmento sería engañoso, como firmas de funciones, tipos clave o configuración que cambia el comportamiento.
Finalmente, sé explícito sobre las expectativas de testing. Si quieres tests unitarios para casos límite, un test de integración para un camino crítico o una comprobación manual en la UI, dilo. Si faltan tests a propósito, explica por qué.
Un "pack de contexto" sencillo que funciona bien:
Una buena revisión de PR con Claude funciona como un bucle cerrado: proporciona justo el contexto necesario, recibe notas estructuradas y luego conviértelas en acciones. No reemplaza a los humanos. Captura fallos fáciles antes de que un compañero dedique mucho tiempo a leer.
Usa los mismos pasos cada vez para que los resultados sean previsibles:
Después de recibir notas, conviértelas en una puerta corta para merge:
Lista de verificación para merge (mantenla corta):
Termina pidiendo de 3 a 5 preguntas que obliguen a clarificar, como “¿Qué ocurre si la API devuelve una lista vacía?” o “¿Es esto seguro en condiciones de concurrencia?”
Claude es más útil cuando le das una lente fija. Sin una rúbrica, tiende a comentar lo que aparece primero (a menudo detalles de estilo) y puede pasar por alto el caso límite de riesgo.
Una rúbrica práctica:
Cuando pidas, solicita un párrafo corto por categoría y pide “primero el problema de mayor riesgo”. Ese orden mantiene a los humanos enfocados.
Usa un prompt base reutilizable para que los resultados se parezcan entre PRs. Pega la descripción del PR y luego el diff. Si el comportamiento es visible para el usuario, añade el comportamiento esperado en 1 o 2 frases.
You are doing a pre-review of a pull request.
Context
- Repo/service: <name>
- Goal of change: <1-2 sentences>
- Constraints: <perf, security, backward compatibility, etc>
Input
- PR description:
<...>
- Diff (unified diff):
<...>
Output format
1) Summary (max 4 bullets)
2) Readability notes (nits + suggested rewrites)
3) Correctness risks (what could break, and why)
4) Edge cases to test (specific scenarios)
5) Reviewer checklist (5-10 checkboxes)
6) Questions to ask the author before merge (3-7)
Rules
- Cite evidence by quoting the relevant diff lines and naming file + function/class.
- If unsure, say what info you need.
Para cambios de alto riesgo (auth, pagos, permisos, migraciones), añade pensamiento explícito sobre fallos y rollback:
Extra focus for this review:
- Security/privacy risks, permission bypass, data leaks
- Money/credits/accounting correctness (double-charge, idempotency)
- Migration safety (locks, backfill, down path, runtime compatibility)
- Monitoring/alerts and rollback plan
Return a “stop-ship” section listing issues that should block merge.
Para refactors, convierte en regla que “no debe cambiar el comportamiento”:
This PR is a refactor. Assume behavior must be identical.
- Flag any behavior change, even if minor.
- List invariants that must remain true.
- Point to the exact diff hunks that could change behavior.
- Suggest a minimal test plan to confirm equivalence.
Si quieres un vistazo rápido, añade un límite como “Responde en menos de 200 palabras.” Si quieres profundidad, pide “hasta 10 hallazgos con razonamiento.”
Las notas de Claude son útiles cuando las conviertes en una lista corta que un humano pueda cerrar. No repitas el diff. Captura riesgos y decisiones.
Separa los elementos en dos cubos para que el hilo no se convierta en debates de preferencias:
Debes arreglar (bloquea el merge)
Deseable (seguimiento)
También captura la preparación para despliegue: orden más seguro de despliegue, qué vigilar después del release y cómo deshacer el cambio.
Una pre-revisión solo ayuda si termina con un pequeño conjunto de preguntas que obliguen a clarificar.
Si no puedes responder estas en palabras sencillas, pausa el merge y ajusta el alcance o añade pruebas.
La mayoría de fallos son problemas de proceso, no del modelo.
Si un PR añade un nuevo endpoint de checkout, no pegues todo el servicio. Pega el handler, validación, escritura en DB y cualquier cambio de esquema. Luego di: “Objetivo: evitar cargos duplicados. No objetivos: refactor de nombres.” Recibirás menos comentarios y los que lleguen serán más fáciles de verificar.
Un PR pequeño y realista: añadir un campo “display name” a una pantalla de ajustes. Toca validación (server) y texto UI (cliente). Es lo suficientemente pequeño para razonar, pero lleno de sitios donde se esconden bugs.
Aquí están los fragmentos de diff que pegarías (más 2–3 frases de contexto como comportamiento esperado y tickets relacionados):
- if len(name) == 0 { return error("name required") }
+ if len(displayName) < 3 { return error("display name too short") }
+ if len(displayName) > 30 { return error("display name too long") }
- <TextInput label="Name" value={name} />
+ <TextInput label="Display name" value={displayName} helperText="Shown on your profile" />
Ejemplos de hallazgos que querrías recibir:
len(displayName) pero siguen pareciendo vacías. Recorta espacios antes de validar.Convierte eso en una lista de verificación:
Una revisión de PR con Claude funciona mejor si termina con unas pocas comprobaciones rápidas:
Para ver si compensa, mide dos métricas sencillas durante 2–4 semanas: tiempo de revisión (abierto a primer review significativo, y abierto a merge) y retrabajo (commits posteriores tras la revisión, o cuántos comentarios requirieron cambios de código).
La estandarización vence a los prompts perfectos. Elige una plantilla, exige un bloque de contexto corto (qué cambió, por qué, cómo probar) y acordad qué significa “hecho”.
Si tu equipo construye características mediante desarrollo por chat, puedes aplicar el mismo flujo dentro de Koder.ai: genera cambios, exporta el código fuente y luego adjunta la lista de pre-revisión al PR para que la revisión humana se centre en las partes de mayor riesgo.