Founding Member: $499/mes de por vida
Micare
Trucos técnicos

Foto de seguridad de git antes de compactar el contexto

Hook que, justo antes de que el asistente compacte la ventana de contexto, toma una foto de seguridad de tu repositorio git (un commit local, sin push). Así una compactación inesperada nunca se lleva tu trabajo a medio guardar.

HookPremiumTrucos técnicosgit e infra

🌱 Empieza aquí

Abre esta carpeta con Claude Code o Cowork y dile a tu asistente: "siembra esta semilla 🌱"

Eso es todo de tu parte. Tu asistente hace lo técnico; tú solo conversas.

¿Otras formas de decírselo? "instala este hook", "activa la foto de seguridad antes de compactar", "pon esto a funcionar". Te entiende igual.

Cuando termine, salta a la sección "¿Cómo sé que funcionó?" al final.


Para el asistente que siembra 🤖

Estás instalando un hook (gancho de automatización) del evento PreCompact (el momento justo antes de que el asistente compacte la ventana de contexto). Cuando ese evento ocurra, este hook toma una foto de seguridad del repositorio git: un commit local y sin push con el estado actual de los archivos, para que una compactación inesperada no deje tu trabajo a medio guardar sin un punto de rescate. Sigue estos pasos con precisión.

Paso 1 · Copiar el archivo del kernel

Copia kernel/sync-git-precompact.sh a la carpeta de hooks. Elige una ubicación:

  • Recomendado — por proyecto (afecta solo a este repositorio): cópialo a <TU-PROYECTO>/.claude/hooks/sync-git-precompact.sh. Crea la carpeta .claude/hooks/ si no existe.
  • Alternativa — global (afecta a todos tus proyectos): cópialo a <TU-CARPETA-DE-CLAUDE>/hooks/sync-git-precompact.sh, donde <TU-CARPETA-DE-CLAUDE> es la carpeta de configuración del asistente (en Claude Code y Cowork suele ser ~/.claude).

Paso 2 · Dar permiso de ejecución

chmod +x "<RUTA-DONDE-LO-COPIASTE>/sync-git-precompact.sh"

Paso 3 · Registrarlo en settings.json

Abre el settings.json que corresponde a la ubicación que elegiste en el Paso 1:

  • Por proyecto → <TU-PROYECTO>/.claude/settings.json
  • Global → <TU-CARPETA-DE-CLAUDE>/settings.json

Agrega el hook bajo la clave hooks.PreCompact. Si ya existe un bloque hooks, fusiona: agrega este elemento al arreglo PreCompact, no lo sobrescribas.

Si lo instalaste por proyecto (usa $CLAUDE_PROJECT_DIR, así no dependes de rutas absolutas):

{
  "hooks": {
    "PreCompact": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sync-git-precompact.sh"
          }
        ]
      }
    ]
  }
}

Si lo instalaste global, usa la ruta absoluta real del archivo en command (settings.json no expande ~), por ejemplo "/ruta/absoluta/a/.claude/hooks/sync-git-precompact.sh".

Nota sobre el matcher: al no poner matcher, el hook se dispara con AMBOS tipos de compactación: la manual (cuando escribes /compact) y la automática (cuando el contexto se llena solo). La automática es justo la que suele agarrarte desprevenido, así que conviene cubrir las dos. Si prefieres solo la automática, agrega "matcher": "auto".

Paso 4 (opcional) · Elegir qué repositorio fotografía y sumar un escáner de secretos

El hook trae dos perillas opcionales que se controlan con variables de entorno. No las necesitas para que funcione, pero mejoran el comportamiento:

| Variable | Para qué sirve | Si no la defines | |---|---|---| | SNAPSHOT_REPO | Ruta del repositorio a fotografiar. | Usa el proyecto actual ($CLAUDE_PROJECT_DIR) o, si no existe, la carpeta actual. | | SNAPSHOT_SECRET_SCAN | Ruta a un script escáner de secretos ejecutable. Se corre antes de guardar; si detecta algo, se cancela el commit para no capturar contraseñas o llaves por error. | Se salta el escaneo. |

Si tienes en el catálogo la semilla hermana de escaneo de secretos, puedes apuntar SNAPSHOT_SECRET_SCAN a ese script y ganas una capa extra de protección.

Paso 5 · Verificación post-siembra (obligatoria)

Confirma que el archivo existe, es ejecutable y se comporta bien:

# a) Existe y es ejecutable
ls -l "<RUTA-DONDE-LO-COPIASTE>/sync-git-precompact.sh"
# Esperado: los permisos empiezan con -rwx (la 'x' confirma que es ejecutable)

# b) Comportamiento real: en un repositorio git con algo sin guardar
cd "<UN-REPOSITORIO-GIT-CUALQUIERA>"
echo "prueba" > prueba-semilla.txt          # deja un cambio sin guardar
SNAPSHOT_REPO="$PWD" bash "<RUTA-DONDE-LO-COPIASTE>/sync-git-precompact.sh"; echo "código de salida: $?"
git log -1 --oneline                        # debe aparecer un commit "pre-compact snapshot @ ..."

Esperado: el hook termina con código de salida: 0 y el git log muestra un commit nuevo llamado pre-compact snapshot @ <máquina> · <hora>. Esa es tu foto de seguridad. Fíjate en que no hubo push: el commit se quedó local, que es justo la intención.

Si quieres dejar el repositorio como estaba para la prueba, puedes deshacer ese commit de prueba sin perder los archivos con git reset --soft HEAD~1 y borrar prueba-semilla.txt.

Placeholders que debes reemplazar por valores reales:

| Placeholder | Qué es | |---|---| | <TU-PROYECTO> | La carpeta raíz del proyecto/repositorio del usuario. | | <TU-CARPETA-DE-CLAUDE> | La carpeta de configuración del asistente (normalmente ~/.claude). | | <RUTA-DONDE-LO-COPIASTE> | La ubicación final del script tras el Paso 1. | | <UN-REPOSITORIO-GIT-CUALQUIERA> | Cualquier carpeta que sea un repositorio git, para la prueba. |

Cuando ambas partes pasen, avísale a la persona en una línea qué gana con esto.


✅ ¿Cómo sé que funcionó?

De ahora en adelante, cada vez que tu asistente vaya a compactar la conversación —eso pasa solo cuando la ventana se llena, o cuando tú pides /compact— primero se detiene un segundo y le toma una foto a tu trabajo, guardándola en tu historial de git. Tú no vas a ver nada raro: la conversación sigue igual.

La ganancia aparece el día que la necesitas. Si después de compactar tu asistente pierde el hilo y algo que estabas armando se enreda, no importa: la foto quedó guardada y puedes volver a ese punto exacto. Es un seguro silencioso. Ojalá nunca lo uses, pero vas a dormir mejor sabiendo que está ahí. 🫡

¿Quieres implementarla con acompañamiento?

Agenda una asesoría directa con JP y aterrízala en tu caso · desde $600 MXN.

Agendar una asesoría