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:

- Comando
/open-code-review:review: el agente ejecutaocr 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-reviewo skillopen-code-review-delegate):ocrno 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 daocr.
Instalar el plugin en Claude Code
Dentro de Claude Code:
/plugin marketplace add alibaba/open-code-review
/plugin install open-code-review@open-code-reviewEsto 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:
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.mdAsí 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…):
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-reviewEn 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:

ocr delegate preview --from main --to feat/cupones
ocr delegate rule src/lib/cupones.js src/routes/pedidos.jsdelegate previewdevuelve el modo (workspace, range o commit), las refs y elmerge_base, y la lista de archivos con los excluidos tachados y su motivo. Es el mismo filtro deocr review --preview: el.env, el bundle dedist/y el PNG no llegan al agente.delegate ruleresuelve 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):
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;
}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:
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"
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):
| # | Hallazgo | Archivo | ¿Real? |
|---|---|---|---|
| 1 | Inyección SQL por concatenar `codigo` en la consulta | `cupones.js:6` | Sí |
| 2 | Porcentaje sin dividir entre 100: un 20 % resta 20 veces el total | `cupones.js:10` | Sí |
| 3 | Falta `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í |
| 5 | Cuotas: `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í |
| 7 | Sin 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:
$ node --test src/lib/cupones.test.js
not ok 1 - reparte en 3 cuotas
expected: 3
actual: 4
# pass 0
# fail 1Lo 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 Reviewincludeno 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 deocr. - 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:
/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 abc123Sin 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
// kit para agencias
// implementación
Más sobre Agentes de IA

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code

- Skills para tus agentes
- Claude Code