Micare
Trucos técnicos

Recordatorio de guardar y subir tu trabajo a git

Hook que, al cerrar cada respuesta del asistente, revisa el repositorio git y le recuerda confirmar (commit) y subir (push) tu trabajo si quedó algo sin guardar. Tu red de seguridad contra el trabajo perdido.

HookPremiumTrucos técnicosgit e infra

🌱 Empieza aquí

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 el recordatorio de git", "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 Stop (fin de respuesta). Cada vez que termines de responder dentro de un repositorio git, este hook revisa si quedó trabajo sin guardar y te recuerda confirmarlo (commit) y subirlo (push). Sigue estos pasos con precisión.

Paso 1 · Copiar el archivo del kernel

Copia kernel/stop-hook-git-check.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/stop-hook-git-check.sh. Crea la carpeta .claude/hooks/ si no existe.
  • Alternativa — global (afecta a todos tus proyectos): cópialo a <TU-CARPETA-DE-CLAUDE>/hooks/stop-hook-git-check.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>/stop-hook-git-check.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.Stop. Si ya existe un bloque hooks, fusiona: agrega este elemento al arreglo Stop, no lo sobrescribas.

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

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/stop-hook-git-check.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/stop-hook-git-check.sh".

Paso 4 · Verificación post-siembra

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

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

# b) Comportamiento real: dentro de un repositorio git con algo sin guardar
rm -f "${TMPDIR:-/tmp}/.claude-git-check-ts"      # fuerza una revisión fresca (salta el anti-bucle)
cd "<UN-REPOSITORIO-GIT-CUALQUIERA>"
touch prueba-semilla.txt                          # crea un archivo sin seguimiento
bash "<RUTA-DONDE-LO-COPIASTE>/stop-hook-git-check.sh"; echo "código de salida: $?"
# Esperado: imprime un aviso de "archivos sin seguimiento" y luego "código de salida: 2"
rm -f prueba-semilla.txt                          # limpieza

Si en el paso (b) ves el aviso y el código de salida: 2, el hook quedó vivo. En un repositorio totalmente limpio, el mismo comando termina en silencio con código de salida: 0 (nada que recordar).

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. |


¿Cómo sé que funcionó?

De ahora en adelante, cada vez que tu asistente termine de trabajar en un proyecto que sea un repositorio git y haya dejado cambios sin guardar, él mismo te lo va a decir: algo como "dejé cambios sin subir, ¿los subo?". No tienes que acordarte tú.

Es tu red de seguridad: ya no vas a cerrar la laptop con trabajo a medio guardar que nunca llegó a la nube. Si un día no ves ningún aviso, es porque todo tu trabajo ya quedó guardado y subido. 🫡