Un repo es la fuente de verdad de la configuración de Claude Code (reglas, agentes, skills, hooks, barra de estado). Scripts de espejo la copian a cada máquina sin borrar nada, y los hooks y la barra de estado corren dentro de cada sesión. Cuatro vistas: contenedores, flujos, despliegue y decisiones. Haz clic en una caja; reproduce un flujo para ver el recorrido.
Cada caja es una pieza que corre por separado: un script, un hook, la barra de estado o la sesión de Claude Code. Las líneas son llamadas reales: protocolo y qué viaja.
La configuración vive en un directorio de usuario que no se versiona. El repo guarda la copia buena y los scripts la llevan a cada máquina; si una máquina cambia algo a mano, el verificador lo informa como deriva en vez de pisarlo.
Los números a los que reacciona el kit viven en un solo JSON. La barra, el hook de arranque y el comando de estado lo leen; ninguno lleva un número escrito. Si el archivo falta, la barra lo dice en vez de inventar un valor.
La barra se prueba contra salidas guardadas con fecha y ancho fijos, y los hooks contra cargas sintéticas con un HOME falso. Así una prueba no lee la configuración real de la máquina que la corre.
No hay servidor: el kit es un repo de archivos y un puñado de scripts. Cada máquina se actualiza sola con una orden y la verificación dice si algo no aterrizó.
Requisitos: bash, jq y git; la barra pide bash 4.2 o superior y en macOS se relanza sola con el de Homebrew.
Qué gana: cada máquina se pone al día con una orden. Qué no gana: una vista conjunta de qué máquina va atrasada.
| Decisión | Por qué | Descartado |
|---|---|---|
| Los scripts de espejo nunca borran | Lo que reemplazan queda en un respaldo fechado y lo sobrante solo se informa | Sincronizar con borrado: una máquina con un cambio local lo perdería sin aviso |
| Fusionar settings.json, no copiarlo | Solo viajan cinco claves portables; plugins, tema y modelo son de cada máquina | Copiar el archivo entero: pisaba el modelo elegido en esa máquina |
| Una sola lista de lo que se espeja | Un script de biblioteca decide qué archivos entran; ampliar el ignore de git no copia más cosas | Que cada script tenga su propia lista: acaban distintas |
| Umbrales en un JSON, ninguno en el código | Un número en dos sitios se desincroniza; sin el archivo la barra avisa en vez de inventar | Valores por defecto escritos en la barra y en el hook |
| Los hooks siempre terminan con éxito | Un hook que falla no debe impedir cerrar una sesión ni compactar | Salir con error ante un fallo interno |
| El registro de fallos redacta secretos antes de escribir | Un token escrito en claro en disco sigue siendo un token expuesto; solo se guarda la primera línea del error | Truncar el comando: no cubre un secreto al principio |
| El borrador previo a compactar solo trae hechos | El criterio (dónde estamos y por qué) lo escribe una persona o una skill; un párrafo plausible generado sería peor que uno en blanco | Que el hook redacte el resumen |
| Pruebas con archivos de referencia y HOME falso | Resultados deterministas que no leen la configuración real de la máquina | Probar contra la instalación en uso |