Diff Review for Claude Code
Revisa, hunk por hunk, todo lo que Claude Code escribe en tu código — sin salir
de VSCode y sin depender de Git.
Claude Code aplica sus ediciones directamente sobre los archivos del workspace:
no hay una etapa intermedia donde ver qué cambió y decidir qué se conserva.
Cuando el turno toca diez archivos, la única forma de auditarlo es leer el
git diff completo o confiar. Esta extensión agrega esa etapa intermedia: cada
cambio queda pendiente de revisión, pintado sobre el archivo real, y tú
decides qué se queda y qué se descarta.
Todo con primitivas nativas del editor —diff inline, CodeLens, decoraciones,
árbol lateral—: sin webviews, sin paneles HTML, sin temas propios.
Y cuando no la quieras encima, se apaga con un interruptor: DiffReview deja de
observar el workspace hasta que la vuelvas a encender, sin desinstalar nada.
Instalación
Busca Diff Review for Claude Code en la vista de Extensiones (Ctrl+Shift+X
/ Cmd+Shift+X) e instala. Desde la terminal:
code --install-extension malpi-dev.diffreview
Funciona con Claude Code en cualquiera de sus superficies: la extensión de
VSCode, la CLI o la app de escritorio.
Cómo se usa
- Trabaja con Claude Code como siempre.
- Al terminar el turno de edición, DiffReview abre el primer archivo tocado y
aparece la vista DiffReview en la barra lateral con la lista de archivos
pendientes. La barra de estado muestra cuántos quedan.
- Sobre el archivo verás el diff inline: las líneas eliminadas en su sitio, las
añadidas resaltadas, y un CodeLens ✓ Keep · ↩ Undo encima de cada hunk.
Los mismos dos botones están en la barra de título del editor mientras el
archivo tenga cambios pendientes, por si el CodeLens se te pierde entre el
código.
- Acepta o descarta a la granularidad que quieras:
| Acción |
Dónde |
| Un hunk |
CodeLens sobre el hunk, botones ✓ / ↩ de la barra de título del editor, o Alt+Enter / Alt+Backspace con el cursor dentro |
| Un archivo |
Botones ✓ y ↩ al pasar el ratón sobre el archivo en el panel |
| Toda la sesión |
Botones Conservar todo / Descartar todo en la cabecera del panel |
Alt+↓ y Alt+↑ saltan al hunk siguiente y al anterior.
Keep deja el cambio tal cual y lo quita de la revisión. Undo restaura el
contenido previo de esas líneas. Si editaste a mano un hunk antes de descartarlo,
DiffReview pide confirmación antes de pisar lo que escribiste.
Los archivos que Claude crea aparecen como añadidos completos; los que
borra se abren en un editor virtual de solo lectura con su contenido
original, para que puedas leer lo que se fue antes de aceptar el borrado.
La revisión pendiente sobrevive a recargar la ventana e incluso a cerrar VSCode:
al volver, la sesión se restaura con los hunks que ya habías resuelto marcados.
Todos los comandos están en la paleta bajo DiffReview:.
Activar y desactivar el monitoreo
El botón de ojo en la cabecera del panel apaga y enciende DiffReview sin
desinstalarlo. Apagado (el ojo aparece cerrado), la extensión deja de observar el
workspace: ningún watcher, ninguna decoración, ningún archivo en el panel —como
si no estuviera instalada—. El indicador de la barra de estado sigue ahí para
volver a encenderla, y también puedes usar el ajuste diffReview.enabled o los
comandos DiffReview: Activar / Desactivar monitoreo.
Apagar no toca tus archivos: lo que Claude ya escribió se queda escrito y la
revisión pendiente simplemente se descarta. Si el proyecto tiene hooks
instalados, DiffReview te ofrece quitarlos también.
Ajustes
| Ajuste |
Por defecto |
Qué hace |
diffReview.enabled |
true |
Monitorear los cambios de Claude Code. Desactívalo para dejar la extensión inerte sin desinstalarla. |
diffReview.detectionStrategy |
hooks |
Cómo se detectan los cambios: hooks, snapshot o git. |
diffReview.autoOpenPanel |
true |
Abre la vista lateral al aparecer cambios pendientes. |
diffReview.autoOpenFile |
true |
Abre el primer archivo modificado al terminar el turno. |
diffReview.showInlineDiff |
true |
Pinta el diff sobre el archivo. |
diffReview.showCodeLens |
true |
Muestra el CodeLens Keep · Undo por hunk. |
diffReview.editSettleMs |
500 |
Milisegundos de espera tras la última escritura antes de dar el turno por cerrado. |
diffReview.exclude |
[] |
Patrones glob que quedan fuera de la revisión (p. ej. **/*.lock). |
Estrategias de detección
Si la estrategia elegida no está disponible, DiffReview avisa una vez y cae a
snapshot; nunca se queda callado.
| Estrategia |
Cómo funciona |
Límite |
hooks (por defecto) |
Instala hooks de Claude Code que anotan cada edición, más un watcher para lo que Claude edite con Bash. Es la más precisa. |
Requiere que la superficie ejecute los hooks del proyecto y que aceptes instalarlos. |
snapshot |
Mantiene una copia sombra del workspace y compara en cada escritura. Funciona con cualquier superficie. |
No distingue por sí sola tus ediciones de las de Claude; se detiene en workspaces de más de 50 MB. |
git |
Usa la baseline de HEAD vía la API de Git de VSCode. Sin estado propio. |
Necesita un repositorio Git, y arrastra los cambios que ya tuvieras sin commitear. |
Con hooks, la primera vez que hace falta la extensión pregunta antes de
escribir nada: puedes instalar, ver el diff exacto de la configuración
propuesta, o decir que no. Si dices que no, la sesión sigue en modo snapshot.
Al aceptar, escribe .claude/diffreview/hook.mjs y añade las entradas
correspondientes a .claude/settings.local.json (el archivo local, no el
compartido), y te ofrece añadir .claude/diffreview/ a tu .gitignore.
Con la estrategia hooks el orden importa: instala los hooks cuando la
extensión lo proponga y arranca Claude Code después. Una sesión que ya
estuviera abierta corre sin ellos.
Qué escribe en tu proyecto
Solo dentro de .claude/diffreview/, y todo es estado local y desechable:
| Archivo |
Para qué |
hook.mjs |
El script que Claude Code ejecuta en sus hooks. |
events.jsonl |
Registro de las ediciones detectadas en el turno. |
baselines/ |
El contenido "antes" de cada archivo, para poder reconstruir el diff. |
session.json |
La sesión pendiente, para restaurarla al reabrir VSCode. |
Fuera de esa carpeta, y solo si aceptas la estrategia hooks, escribe sus
entradas en .claude/settings.local.json y —si dices que sí— una línea en tu
.gitignore. Desactivar el monitoreo te ofrece retirar esas entradas y borrar
el hook.mjs, que es la vuelta atrás completa.
Borrar esa carpeta no te hace perder nada que no esté ya en tus archivos o en
Git. Fuera de ahí, lo único que la extensión modifica son los archivos que tú le
pides conservar o descartar, y siempre a través de la API de edición de VSCode
(deshacer con Ctrl+Z funciona con normalidad).
Si algo no aparece
El canal DiffReview del panel Output registra la estrategia activa, cada
cambio detectado y cualquier error. Es el primer sitio donde mirar.
Desinstalar
code --uninstall-extension malpi-dev.diffreview
Para dejar un proyecto exactamente como estaba, borra ahí .claude/diffreview/
y las entradas de DiffReview en .claude/settings.local.json —o desactiva el
monitoreo desde el panel y acepta cuando te ofrezca quitar los hooks—.
Si solo quieres silenciarla un rato, no hace falta desinstalar nada: usa el
interruptor del panel.
Reportar un problema
Los bugs y las ideas van a
GitHub Issues. Ayuda mucho
adjuntar la estrategia de detección activa y las últimas líneas del canal
DiffReview del panel Output.
Licencia
Uso gratuito, personal y comercial. Sin derecho de redistribución ni de obra
derivada — ver LICENSE.