Lección 07 · 8 en la ruta · 4 min de lectura · Nivel 2
Reviewer: un modelo más fuerte, un contexto nuevo
Un modelo que revisa su propia salida muestra sesgo de auto-preferencia medible; uno distinto y al menos igual de fuerte, no.
Revisor >= autor, nunca más débil
Un modelo que revisa su propia salida muestra sesgo de auto-preferencia medible; uno
distinto y al menos igual de fuerte, no. Por eso el agente reviewer está pineado a
opus/high sin importar qué modelo escribió el código, y por eso la revisión cruzada
entre proveedores tiene una dirección permitida: Claude puede revisar código de Gemini, y
Gemini 3.1 Pro (high) puede hacer una segunda pasada sobre código de Claude, pero los
modelos Claude dentro de Antigravity nunca deben revisar código de Claude — es el mismo
linaje de proveedor revisándose a sí mismo.
Fuente: home/.claude/agents/reviewer.md (comentario sobre el procedimiento); home/.claude/MANUAL.md
§5 (“Revisor ≥ autor… cadena de revisión cruzada permitida”).
Contexto nuevo, caché propia
reviewer solo tiene Read, Grep, Glob, Bash(git *) — de solo lectura, no puede editar
archivos. Corre en su propio contexto de subagente, con su propia caché de prompt, así que
lanzarlo no toca la caché de la sesión padre como sí lo haría cambiar el modelo de la
sesión con /model. Esa es la razón concreta por la que la regla 6 de ruteo
(docs/routing.es.md) dice que nunca se cambia el modelo de la sesión para conseguir un
review.
Fuente: frontmatter de home/.claude/agents/reviewer.md (tools:, descripción);
home/.claude/CLAUDE.md §Routing regla 6.
Por qué el auto-review del mismo modelo no es una compuerta válida
La evidencia que cita el kit: el auto-review del mismo modelo está sesgado hacia la
aprobación (Panickssery 2024). Usar un revisor distinto y al menos igual de fuerte, con una
rúbrica de elección forzada, es práctica propia del kit, todavía sin paper que la respalde —
ver docs/references.es.md para lo verificado y docs/references-candidates.es.md para el
rastro de búsqueda de la cita que llevaba antes. Por eso tanto reviewer como /xreview usan
una rúbrica donde ninguna dimensión se puede saltear, en vez de comentario libre.
Fuente: home/.claude/skills/xreview/SKILL.md (línea Evidence).
/xreview: review cruzado, paso a paso
xreview tiene dos modos, invocados como pack o ingest; no se dispara solo a partir de
una descripción (disable-model-invocation: true).
pack:
- Recolecta
git diff main...HEAD(o el diff staged),SPEC.md, el comando de test y su última salida. - Escribe
review/REQUEST-<fecha>.md: contexto en <=10 líneas, el diff (o una lista de archivos si supera las 800 líneas), y la rúbrica de abajo. Instruye al revisor externo a ser de solo lectura y a escribir su reporte enreview/REPORT-<tool>-<fecha>.md. - Corre el revisor externo y guarda su salida. Para el CLI
agyde Antigravity en modo headless: auditorías de todo el repo o arquitectónicas usangemini-3-1-proen high effort (1M de contexto, linaje independiente); un diff acotado usagemini-3-8-flash-high(rápido, pool de cuota separado de Claude). Los modelos Claude de Antigravity nunca deben revisar código escrito por Claude. Siagyno está instalado o falla, hay que decirlo y parar — nunca caer en silencio a revisarlo uno mismo. Alternativa con Codex:codex exec --sandbox read-only.
ingest <ruta-al-reporte>:
- Lee el reporte.
- Verifica cada hallazgo contra el código real (abriendo el
file:line) y lo clasifica: confirmado / no reproducible / en desacuerdo (con razón). - Los hallazgos confirmados van a “Next steps” del HANDOFF.md con un comando de verificación cada uno; los desacuerdos van con una línea cada uno para que el owner arbitre.
- Nunca se aplica en bloque la reescritura del revisor — se corrige el gap confirmado con el diff más chico posible.
Fuente: home/.claude/skills/xreview/SKILL.md.
La rúbrica (tanto reviewer como /xreview)
Elección forzada por dimensión — pass / concern / fail — con evidencia file:line, sin
prosa sin ubicación:
| Dimensión |
|---|
| Correctitud contra los invariantes del SPEC |
| Modos de falla no manejados (input vacío, concurrencia, auth, escrituras parciales) |
| Seguridad (inyección, secretos, path traversal, permisos) |
| Duplicación agregada / consolidación o deuda de refactor saltada |
| Qué NO cubren los tests |
reviewer además lee SPEC.md y corre el comando de test del proyecto, citando las
últimas 15 líneas, y cierra con “¿Lo mergearía? sí / no, porque <una línea>.” Si una
dimensión está bien, la frase exigida es “pass — checked <qué>” — nunca se inventan
hallazgos para parecer riguroso, y los pass nunca se rellenan con elogios.
Fuente: home/.claude/agents/reviewer.md; home/.claude/skills/xreview/SKILL.md (Rubric).
templates/REVIEW.md
La plantilla que se espera que llene un reporte de review: un checkbox de veredicto
(mergear tal cual / mergear con arreglos / devolver — no cumple SPEC.md), una lista de
Findings (file:line — qué está mal, por qué importa), una línea de chequeo de seguridad
(sin secretos, sin credenciales, sin path traversal, sin scope creep más allá de los
archivos permitidos por la tarea) y, si no se mergea, una lista de “Sent back for” con
exactamente qué corregir.
Fuente: templates/REVIEW.md.
Lo que el reviewer NO debe hacer
Reportar solamente — nunca editar archivos, nunca arreglar lo que encuentra, nunca inventar
hallazgos para parecer riguroso, nunca elogiar una dimensión que pasó. Tanto
home/.claude/agents/reviewer.md como el skill /xreview lo dicen de forma explícita, y el
paso 4 de /xreview ingest lo extiende: incluso después de que un humano decide que un
hallazgo está confirmado, el arreglo se aplica a mano como el diff más chico posible —
nunca pegando la reescritura del propio revisor.
Fuente: home/.claude/agents/reviewer.md (“Report only. Do not edit files.”); home/.claude/skills/xreview/SKILL.md.