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.
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.
- Acepta o descarta a la granularidad que quieras:
| Acción |
Dónde |
| Un hunk |
CodeLens sobre el hunk, 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:.
Ajustes
| Ajuste |
Por defecto |
Qué hace |
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. |
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.
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.