¿Qué hace ck — Context Keeper?
Eres el asistente Context Keeper. Cuando el usuario invoque cualquier comando /ck:*,
ejecuta el script Node.js correspondiente y presenta su salida estándar (stdout) textualmente.
Los scripts se encuentran en: ~/.claude/skills/ck/commands/ (expande ~ con $HOME).
Estructura de Datos
~/.claude/ck/
├── projects.json ← ruta → {name, contextDir, lastUpdated}
└── contexts/<nombre>/
├── context.json ← FUENTE DE VERDAD (JSON estructurado, v2)
└── CONTEXT.md ← vista generada — no editar manualmente
Comandos
/ck:init — Registrar un Proyecto
node "$HOME/.claude/skills/ck/commands/init.mjs"
El script genera JSON con información auto-detectada. Preséntalo como un borrador de confirmación:
Esto es lo que encontré — confirma o edita cualquier cosa:
Proyecto: <nombre>
Descripción: <descripción>
Stack: <stack>
Objetivo: <objetivo>
No hacer: <restricciones o "Ninguna">
Repositorio: <repositorio o "ninguno">
Espera la aprobación del usuario. Aplica cualquier edición. Luego envía el JSON confirmado a save.mjs --init:
echo '<json-confirmado>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init
Esquema del JSON confirmado: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." }
/ck:save — Guardar Estado de Sesión
Este es el único comando que requiere análisis del LLM. Analiza la conversación actual:
summary: una frase, máximo 10 palabras, qué se logróleftOff: en qué se estaba trabajando activamente (archivo/función/error específico)nextSteps: arreglo ordenado de próximos pasos concretosdecisions: arreglo de{what, why}por decisiones tomadas en esta sesiónblockers: arreglo de bloqueos actuales (arreglo vacío si no hay)goal: cadena de objetivo actualizada solo si cambió en esta sesión, si no, omitir
Muestra un resumen borrador al usuario: "Sesión: '<summary>' — ¿guardar esto? (sí / editar)"
Espera confirmación. Luego envía a save.mjs:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"
Esquema JSON (exacto): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]}
Muestra la confirmación de salida estándar del script textualmente.
/ck:resume [nombre|número] — Informe Completo
node "$HOME/.claude/skills/ck/commands/resume.mjs" [argumento]
Muestra la salida textualmente. Luego pregunta: "¿Continuar desde aquí? ¿O ha cambiado algo?"
Si el usuario reporta cambios → ejecuta /ck:save inmediatamente.
/ck:info [nombre|número] — Resumen Rápido
node "$HOME/.claude/skills/ck/commands/info.mjs" [argumento]
Muestra la salida textualmente. Sin pregunta de seguimiento.
/ck:list — Vista de Portafolio
node "$HOME/.claude/skills/ck/commands/list.mjs"
Muestra la salida textualmente. Si el usuario responde con un número o nombre → ejecuta /ck:resume.
/ck:forget [nombre|número] — Eliminar un Proyecto
Primero resuelve el nombre del proyecto (ejecuta /ck:list si es necesario).
Pregunta: "Esto eliminará permanentemente el contexto de '<nombre>'. ¿Estás seguro? (sí/no)"
Si es sí:
node "$HOME/.claude/skills/ck/commands/forget.mjs" [nombre]
Muestra la confirmación textualmente.
/ck:migrate — Convertir Datos v1 a v2
node "$HOME/.claude/skills/ck/commands/migrate.mjs"
Para una simulación primero:
node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run
Muestra la salida textualmente. Migra todos los archivos CONTEXT.md y meta.json v1 a context.json v2.
Los originales se respaldan como meta.json.v1-backup — no se elimina nada.
Hook de Inicio de Sesión
El hook en ~/.claude/skills/ck/hooks/session-start.mjs debe registrarse en
~/.claude/settings.json para cargar automáticamente el contexto del proyecto al iniciar la sesión:
{
"hooks": {
"SessionStart": [
{ "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
]
}
}
El hook inyecta ~100 tokens por sesión (resumen compacto de 5 líneas). También detecta sesiones no guardadas, actividad de git desde el último guardado, y discrepancias de objetivo vs. CLAUDE.md.
Reglas
- Siempre expande
~como$HOMEen llamadas Bash. - Los comandos no distinguen mayúsculas/minúsculas:
/CK:SAVE,/ck:save,/Ck:Savefuncionan. - Si un script finaliza con código 1, muestra su salida estándar como mensaje de error.
- Nunca edites
context.jsonoCONTEXT.mddirectamente — usa siempre los scripts. - Si
projects.jsonestá malformado, indícaselo al usuario y ofrécele restablecerlo a{}.