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

Sincroniza tu configuración entre máquinas al arrancar

Hook que al iniciar cada sesión sincroniza un repositorio git que usas desde varias máquinas: rescata el trabajo de una sesión que se cerró de golpe, sube tus commits pendientes, trae los cambios de tu otra computadora y te avisa cuántos llegaron. Trabajar en dos equipos sin pisarte a ti mismo.

HookPremiumTrucos técnicosgit e infra

🌱 Empieza aquí

Abre esta carpeta con tu asistente (Claude Code o Cowork) y dile:

"Siembra esta semilla 🌱"

Eso es todo de tu parte. Tu asistente hace lo técnico; tú solo conversas. Vas a ver algo de inglés y comandos en la pantalla; ni les hagas caso, él te guía.

¿Otras formas de decírselo? "instala este hook", "activa la sincronización de git al arrancar", "pon esto a funcionar". Te entiende igual.

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


¿Qué resuelve y por qué te sirve?

El por qué. Muchos trabajamos con el asistente desde más de una computadora: la del trabajo, la de la casa, a veces hasta un servidor. Cada máquina guarda su propia copia de tus notas y configuración, y las mantienes en sintonía con git (una herramienta que versiona archivos) subiéndolas a la nube. El problema: si te olvidas de bajar los últimos cambios al empezar en la otra máquina, terminas con dos versiones distintas que después chocan. O peor: una sesión se cierra de golpe, el trabajo se queda solo en un disco y nunca sube.

El qué. Este hook (gancho de automatización) hace esa sincronización sola, al arrancar cada sesión, en tres pasos:

  1. Rescate. Si la sesión anterior se cerró sin guardar, confirma ese trabajo para que no se pierda.
  2. Subida pendiente. Sube a la nube los cambios locales que aún no habían llegado.
  3. Bajada de la otra máquina. Trae lo que hiciste en tu otra computadora y te dice cuántos cambios llegaron.

Si al bajar hay un choque entre versiones (un "conflicto"), no rompe nada: se echa para atrás de forma segura, deja una nota y te avisa para que tu asistente te ayude a resolverlo. Y si detecta que hay una operación de git a medias (un "candado" que git deja cuando algo quedó a la mitad), prefiere no arriesgarse: omite la sincronización esta vez y te lo avisa.

El cómo. Empiezas cada sesión ya sincronizado, sin acordarte de nada. Es la red de seguridad para trabajar en dos equipos sin pisarte a ti mismo.


Para el asistente que siembra 🤖

Estás instalando un hook del evento SessionStart (se dispara al inicio de cada sesión) para Claude Code / Cowork. Sincroniza un repositorio git cross-máquina: recovery de trabajo sin confirmar → push de commits pendientes → pull con rebase de los cambios remotos, notificando cuántos llegaron vía systemMessage. Sigue estos pasos con precisión.

Paso 0 · Decide QUÉ repositorio se va a sincronizar

El hook lee la variable SYNC_REPO. Por defecto apunta a la carpeta de configuración del asistente (~/.claude) si es un repositorio git. Este es el caso más común: sincronizar tu propia config entre máquinas.

  • Si el usuario ya versiona su carpeta ~/.claude con git y la sube a un remoto → deja el valor por defecto, no toques nada.
  • Si quiere sincronizar otro repositorio (por ejemplo una carpeta de notas), edita la línea SYNC_REPO="${SYNC_REPO:-$HOME/.claude}" dentro del kernel y pon esa ruta, o define la variable de entorno SYNC_REPO antes de que arranque el asistente.
  • Variables extra: SYNC_REMOTE (default origin) y SYNC_BRANCH (default main). Ajústalas solo si el repo del usuario usa otro remoto o rama.

Requisito real: ese repositorio ya debe existir como repo git con un remoto configurado (que ya suba a GitHub u otro). Este hook no crea el repo ni configura el remoto; solo sincroniza uno que ya funciona. Si el usuario aún no lo tiene, ayúdale a crearlo primero (git init, remoto, primer push) y luego siembra esto.

Paso 1 · Copiar el archivo del kernel

Como este hook sincroniza normalmente la configuración global del asistente, lo natural es instalarlo global. Elige una ubicación:

  • Recomendado — global (se ejecuta en toda sesión): copia kernel/sync-git-start.sh a <TU-CARPETA-DE-CLAUDE>/hooks/sync-git-start.sh, donde <TU-CARPETA-DE-CLAUDE> es la carpeta de configuración del asistente (en Claude Code y Cowork suele ser ~/.claude). Crea la carpeta hooks/ si no existe.
  • Alternativa — por proyecto (solo dentro de ese repositorio): cópialo a <TU-PROYECTO>/.claude/hooks/sync-git-start.sh. Útil si lo que sincronizas es un proyecto concreto y no tu config global.

Paso 2 · Dar permiso de ejecución

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

Paso 3 · Registrarlo en settings.json

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

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

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

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

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "/ruta/absoluta/a/tu/.claude/hooks/sync-git-start.sh"
          }
        ]
      }
    ]
  }
}

Si lo instalaste por proyecto, puedes usar $CLAUDE_PROJECT_DIR para no depender de rutas absolutas:

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/sync-git-start.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>/sync-git-start.sh"
# Esperado: los permisos empiezan con -rwx (la 'x' confirma que es ejecutable)

# b) Comportamiento real: apúntalo al repo que se va a sincronizar y córrelo a mano.
#    Usa el mismo valor de SYNC_REPO que quedará en producción.
SYNC_REPO="<REPO-QUE-SE-SINCRONIZA>" bash "<RUTA-DONDE-LO-COPIASTE>/sync-git-start.sh"; echo "código de salida: $?"
# Esperado (repo git con remoto, sin novedades):  no imprime nada  ->  código de salida: 0
# Esperado (llegaron cambios de otra máquina):     una línea {"systemMessage": "📥 GIT SYNC: N cambio(s)..."}  ->  código de salida: 0
# Esperado (SYNC_REPO no es un repo git):          no imprime nada  ->  código de salida: 0

Si el paso (b) termina en código de salida: 0 (con o sin la línea de aviso), el hook quedó vivo. La línea {"systemMessage": ...} es exactamente lo que tu asistente te mostrará al arrancar cuando sí haya cambios nuevos.

Nota sobre el log: el hook deja un registro discreto en la carpeta temporal del sistema (git-sync-AAAAMMDD.log), fuera del repositorio, para no ensuciar lo que sincronizas. Si algún día algo falla en silencio, ese archivo cuenta qué pasó.

Placeholders que debes reemplazar por valores reales:

| Placeholder | Qué es | |---|---| | <TU-CARPETA-DE-CLAUDE> | La carpeta de configuración del asistente (normalmente ~/.claude). | | <TU-PROYECTO> | La carpeta raíz del proyecto/repositorio del usuario. | | <RUTA-DONDE-LO-COPIASTE> | La ubicación final del script tras el Paso 1. | | <REPO-QUE-SE-SINCRONIZA> | La ruta del repo que quedará en SYNC_REPO (default ~/.claude). |


✅ ¿Cómo sé que funcionó?

De ahora en adelante, cada vez que abras una sesión desde cualquiera de tus máquinas, tu asistente ya va a estar al día: bajó lo que hiciste en la otra computadora antes de que empieces a escribir. Cuando lleguen cambios de tu otro equipo, verás un aviso corto al arrancar ("📥 GIT SYNC: 3 cambio(s) recibidos desde otra máquina"). Si no ves nada, es porque ya estaba todo sincronizado. 🫡

Y si un día dos máquinas tocaron lo mismo y chocan, no te vas a enterar por un desastre: el asistente te lo dice de frente y te ayuda a resolverlo con calma.

Su pareja natural: este hook trae los cambios al arrancar. Existe uno complementario que sube tu trabajo al cerrar cada sesión. Juntos cierran el círculo (bajas al empezar, subes al terminar). Si te gustó este, pregunta por su compañero de cierre.

¿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