~/codigoagente
Agentes de IA

Open Code Review en Claude Code: revisiones de código sin API key con el modo delegación

Si ya pagas Claude Code, Codex o Cursor, no necesitas otra API key para usar Open Code Review. Su modo delegación reparte el trabajo: ocr hace la parte determinista (qué archivos revisar, con qué reglas) y tu agente hace la revisión con su propio modelo y tu suscripción. En esta cuarta parte de la guía lo instalamos en Claude Code 2.1.305, lo lanzamos sobre la API de ejemplo de las partes anteriores y te enseñamos el informe completo, con sus aciertos y sus fallos.

Si aún no tienes ocr instalado ni sabes qué es una regla de revisión, repasa la parte 2 y la parte 3.

Tres formas de usar Open Code Review desde un agente

El proyecto trae tres integraciones para agentes, y la diferencia clave es quién llama al modelo:

Tabla comparando el comando review, la skill open-code-review y el modo delegación según quién llama al LLM, si necesita API key y si corrige código
Solo el modo delegación funciona sin API key en ocr · codigoagente
  • Comando /open-code-review:review: el agente ejecuta ocr review --audience agent, que llama a tu proveedor configurado en ocr (con su API key). Después el agente clasifica los comentarios en High, Medium y Low, descarta los Low y corrige automáticamente los que merecen la pena.
  • Skill open-code-review: el mismo flujo, pero como skill portable para cualquier agente compatible. Si falta el CLI, lo instala; si no hay LLM configurado, se para y te pregunta. Solo corrige si se lo pides.
  • Modo delegación (/open-code-review:delegate-review o skill open-code-review-delegate): ocr no llama a ningún modelo. El agente hace la revisión entera con sus herramientas, guiado por la lista de archivos y las reglas que le da ocr.

Instalar el plugin en Claude Code

Dentro de Claude Code:

snippettext
/plugin marketplace add alibaba/open-code-review
/plugin install open-code-review@open-code-review

Esto registra dos comandos: /open-code-review:review y /open-code-review:delegate-review. Se actualizan desde /plugin.

Si prefieres no usar el marketplace, copia el comando al proyecto (se compartirá con el equipo al hacer commit) o a tu usuario:

terminalsh
mkdir -p .claude/commands
curl -o .claude/commands/delegate-review.md \
  https://raw.githubusercontent.com/alibaba/open-code-review/main/plugins/open-code-review/claude-code/commands/delegate-review.md

Así se invoca como /delegate-review, sin prefijo. Es lo que hicimos en la prueba.

Para otros agentes que soportan skills (Codex, Cursor, OpenCode, Kimi Code…):

terminalsh
npx skills add alibaba/open-code-review --skill open-code-review-delegate
# o la versión que usa el LLM de ocr
npx skills add alibaba/open-code-review --skill open-code-review

En todos los casos necesitas el CLI en el PATH: npm install -g @alibaba-group/open-code-review. Para el modo delegación no hace falta ocr config ni ninguna variable de entorno.

Qué hace ocr en el modo delegación

Son dos subcomandos. Puedes ejecutarlos tú a mano para entender qué recibe el agente:

Salida de ocr delegate preview con modo, refs, merge_base y archivos revisables y excluidos, y de ocr delegate rule agrupando archivos por regla
`delegate preview` da el alcance y `delegate rule` las checklists, sin una sola llamada a un LLM · codigoagente
terminalsh
ocr delegate preview --from main --to feat/cupones
ocr delegate rule src/lib/cupones.js src/routes/pedidos.js
  • delegate preview devuelve el modo (workspace, range o commit), las refs y el merge_base, y la lista de archivos con los excluidos tachados y su motivo. Es el mismo filtro de ocr review --preview: el .env, el bundle de dist/ y el PNG no llegan al agente.
  • delegate rule resuelve la regla de cada archivo con las cuatro capas (--rule, proyecto, global, sistema) y agrupa los archivos que comparten regla para no repetir texto.

Con eso, el comando le indica al agente cómo sacar cada diff (git --no-pager diff --no-ext-diff --no-textconv --no-color <merge_base>..<to> -- <ruta>), le pide revisar solo líneas cambiadas y le exige un informe de cobertura: cada archivo como reviewed o skipped con su motivo, y los totales total_files, reviewed_files, skipped_files y coverage_rate. Esa contabilidad obligatoria es lo que evita que el agente "se olvide" de archivos.

Ambos subcomandos aceptan --from/--to, -c, --exclude, --rule y -b/-B para el contexto de negocio.

La prueba: revisar la rama de cupones

El repositorio de ejemplo es tienda-api, una API Express con PostgreSQL. La rama feat/cupones añade esto (con fallos plantados a propósito):

src/lib/cupones.jsjavascript
import { pool } from "../db.js";

// Devuelve el precio final aplicando el cupón (porcentaje 0-100).
export async function aplicarCupon(total, codigo) {
  const { rows } = await pool.query(
    "SELECT porcentaje, caduca FROM cupones WHERE codigo = '" + codigo + "'"
  );
  const cupon = rows[0];
  if (cupon.caduca < new Date()) return total;
  return total - total * cupon.porcentaje;
}

export function repartirEnCuotas(total, cuotas) {
  const cuota = Math.round(total / cuotas);
  const resultado = [];
  for (let i = 0; i <= cuotas; i++) resultado.push(cuota);
  return resultado;
}
src/routes/pedidos.jsjavascript
pedidos.post("/:id/cupon", async (req, res) => {
  const { rows } = await pool.query("SELECT total FROM pedidos WHERE id = $1", [req.params.id]);
  const total = aplicarCupon(rows[0].total, req.body.codigo);
  await pool.query("UPDATE pedidos SET total = $1 WHERE id = $2", [total, req.params.id]);
  res.json({ total, cuotas: repartirEnCuotas(total, req.body.cuotas) });
});

Además, el proyecto tiene el rule.json de la parte 3 (norma de dinero en céntimos, validación de rutas, tests con casos límite).

Lanzamos el comando con Claude Code en modo no interactivo, con permisos de solo lectura (podía ejecutar ocr y git y leer archivos, pero no editar), y le pedimos que solo informara:

terminalsh
claude -p "/delegate-review --from main --to feat/cupones
Importante: esta es una demo, NO modifiques archivos; solo informa los hallazgos (en español)." \
  --allowedTools "Bash(ocr:*)" "Bash(git:*)" "Read" "Grep" "Glob" \
  --disallowedTools "Edit" "Write"
Sesión de Claude Code ejecutando ocr delegate preview, ocr delegate rule y git diff, y el informe con cobertura y los tres primeros hallazgos de severidad alta
El agente siguió los pasos del comando y devolvió el informe con cobertura y severidades · codigoagente

El resultado

La ejecución duró 24 segundos, en 5 turnos, con un coste reportado por Claude Code de 0,21 USD. El agente ejecutó ocr delegate preview, ocr delegate rule y un único git diff de los cuatro archivos revisables.

Cobertura: 7 archivos en total, 4 revisados (rule.json, cupones.js, cupones.test.js y pedidos.js) y 3 omitidos con su motivo (.env por secreto, dist/server.min.js por ruta por defecto y logo.png por binario). Incluso añadió un aviso: el .env no se revisó, pero se está subiendo al repo y conviene comprobar que no tiene secretos.

Severidad alta (7 hallazgos):

#HallazgoArchivo¿Real?
1Inyección SQL por concatenar `codigo` en la consulta`cupones.js:6`Sí
2Porcentaje sin dividir entre 100: un 20 % resta 20 veces el total`cupones.js:10`Sí
3Falta `await`: `total` es una `Promise` que acaba en el `UPDATE``pedidos.js:15`Sí
4`rows[0]` y `cupon` sin comprobar: `TypeError` en vez de 404`pedidos.js:14`, `cupones.js:8`Sí
5Cuotas: `i <= cuotas` genera una de más y el redondeo no suma el total`cupones.js:15-17`Sí
6`cuotas` y `codigo` sin validar (0 o negativo da `Infinity` o `NaN`)`pedidos.js:13-17`Sí
7Sin control de errores asíncronos en Express 4`pedidos.js`Sí

Severidad media (4 hallazgos): cálculo y UPDATE sin transacción (dos peticiones pueden aplicar el cupón dos veces), caducidad NULL ambigua, tests insuficientes y un comentario que promete "0-100" sin validarlo.

Encontró todos los fallos que plantamos y añadió dos reales que no habíamos previsto: la condición de carrera del cupón y el manejo de errores asíncronos. Los hallazgos 2 y 5 vienen directamente de nuestra regla de dinero en céntimos, y el 4 cita literalmente la regla de rutas ("como exige la regla del proyecto").

Comprobamos uno a mano. El test que acompaña a la rama falla, tal como dice el informe:

terminalsh
$ node --test src/lib/cupones.test.js
not ok 1 - reparte en 3 cuotas
  expected: 3
  actual: 4
# pass 0
# fail 1

Lo que no hizo bien

Dos cosas que conviene saber antes de fiarse a ciegas:

  • Un falso positivo sobre rule.json. Avisó de que "include" con solo los tests "puede dejar fuera los demás archivos". No es así: en Open Code Review include no es una lista blanca, solo anula exclusiones (lo explicamos en la parte 3). El agente revisó el JSON con criterio general, sin conocer la semántica de ocr.
  • Una frase contradictoria. En el apartado de tests escribió que el test "pasa con el bug" y, en la misma frase, que "en realidad fallaría". Lo segundo es lo correcto.

Es la otra cara del modo delegación: el filtro de reflexión (REVIEW_FILTER_TASK) y el posicionado exacto de líneas de ocr review no se ejecutan, porque todo el razonamiento lo hace tu agente. Ganas no necesitar API key y la potencia de un agente con herramientas; pierdes parte de la "ingeniería determinista" que da a Open Code Review su precisión en el benchmark. Si buscas la máxima precisión, usa /open-code-review:review con un proveedor configurado.

Corregir automáticamente

En uso normal no pondrías nuestro "NO modifiques archivos". Tanto delegate-review como review terminan con "corrige automáticamente los High y Medium que sean seguros y estén bien definidos". Si prefieres que pregunte antes, edita tu copia del comando (.claude/commands/delegate-review.md): Claude Code lo vuelve a leer en cada invocación.

Otras formas de invocarlo:

snippettext
/open-code-review:delegate-review
/open-code-review:delegate-review --commit abc123
/open-code-review:review revisa esta rama contra main
/open-code-review:review céntrate en condiciones de carrera del commit abc123

Sin argumentos revisa el workspace (staged, unstaged y archivos nuevos). El comando review interpreta el lenguaje natural para elegir --commit o --from/--to.

Errores frecuentes

ocr: command not found dentro del agente. El comando intenta instalarlo con npm. Si tu agente no tiene permiso para instalar paquetes globales, instálalo tú antes y comprueba con which ocr.

El agente se para pidiendo una API key. Estás usando /open-code-review:review o la skill open-code-review, que necesitan un LLM configurado en ocr. Para no usar API key, usa delegate-review o la skill open-code-review-delegate.

"This command requires approval". Claude Code pide permiso para cada ocr y git. Para no aprobarlos uno a uno, añade Bash(ocr:*) y Bash(git --no-pager:*) a los permisos permitidos del proyecto.

Diffs enormes que saturan el contexto. El comando ya prevé escribir el diff a un archivo con --output y leerlo por partes. Para PRs muy grandes, el modo con LLM propio de ocr (subagentes de 10 archivos con contexto aislado) escala mejor.

Preguntas frecuentes

¿El modo delegación gasta mi cuota de Claude? Sí: toda la revisión la hace Claude Code con tu plan. En nuestra prueba, una rama pequeña costó 0,21 USD equivalentes. ocr no consume nada.

¿Funciona con Codex o Cursor? Sí. Codex tiene su plugin (codex plugin marketplace add alibaba/open-code-review), Cursor un manifiesto de plugin local, y cualquier agente con skills puede usar open-code-review-delegate.

¿Puedo combinarlo con Superpowers u otros plugins de revisión? Sí, son comandos independientes. Si usas Superpowers, su skill de *requesting-code-review* y delegate-review se complementan: una organiza el proceso y la otra garantiza la cobertura y las reglas del proyecto. Si no tienes claro cómo funcionan las skills, tienes la guía de skills de Claude Code.

¿Se aplican mis reglas de proyecto? Sí, ocr delegate rule usa las mismas capas que ocr review. En la prueba se vio: el agente citó las reglas de rule.json.

Conclusión

El modo delegación es la forma más barata de probar Open Code Review: si tienes Claude Code, en dos comandos lo tienes funcionando y aprovechas tus reglas de proyecto y su cobertura obligatoria. En nuestra prueba encontró todos los fallos plantados y dos más, con un falso positivo menor. Para la máxima precisión, o para revisar sin un humano delante, el camino es el CLI con su propio modelo.

Eso es justo lo que hacemos en la última parte: revisar cada pull request automáticamente con GitHub Actions y GitLab CI.

// código fuente

Repositorio del artículo
El código del que habla este artículo es público: revísalo, dale una estrella o clónalo desde aquí.

// kit para agencias

¿Haces webs para clientes con Claude Code?
5 skills que preparan la propuesta, crean la web, la revisan antes de entregarla y auditan la de tus prospectos, con una guía de 24 páginas probada en un caso real. Lo vende Safe Build Labs, la agencia que patrocina codigoagente.

// implementación

¿Necesitas implementar esta automatización en tu negocio?
No pierdas semanas configurando servidores, APIs y agentes. Safe Build Labs, la agencia que patrocina codigoagente, lo construye por ti, listo para producción.
Probamos mcp-builder, la skill de Anthropic para crear servidores MCP: hicimos uno para una tienda en 99 segundos por 0,25 USD y hallamos dos fallos de versión.
  • Skills para tus agentes
  • Claude Code
leer artículo
Probamos webapp-testing, la skill oficial de Anthropic que prueba tu web local con Playwright: instalación, with_server.py, dos trampas reales y cuánto cuesta.
  • Skills para tus agentes
  • Claude Code
leer artículo
video-shotcraft es una skill Apache-2.0 con 150 planos para que Claude Code haga el vídeo promo de tu web en Remotion. Cómo funciona y cuánto cuesta.
  • Skills para tus agentes
  • Claude Code
leer artículo