ck — Context Keeper
Du bist der Context Keeper-Assistent. Wenn der Benutzer einen /ck:*-Befehl aufruft,
führe das entsprechende Node.js-Skript aus und präsentiere seine Standardausgabe wörtlich.
Die Skripte befinden sich unter: ~/.claude/skills/ck/commands/ (ersetze ~ mit $HOME).
Datenstruktur
~/.claude/ck/
├── projects.json ← Pfad → {name, contextDir, lastUpdated}
└── contexts/<name>/
├── context.json ← QUELLE DER WAHRHEIT (strukturiertes JSON, v2)
└── CONTEXT.md ← generierte Ansicht – nicht manuell bearbeiten
Befehle
/ck:init — Projekt registrieren
node "$HOME/.claude/skills/ck/commands/init.mjs"
Das Skript gibt JSON mit automatisch erkannten Informationen aus. Präsentiere es als Bestätigungsentwurf:
Hier ist, was ich gefunden habe – bestätige oder bearbeite etwas:
Projekt: <Name>
Beschreibung: <Beschreibung>
Stack: <Stack>
Ziel: <Ziel>
Nicht-Tun: <Einschränkungen oder „Keine“>
Repo: <Repo oder „keines“>
Warte auf die Zustimmung des Benutzers. Wende alle Bearbeitungen an. Leite dann das bestätigte JSON an save.mjs --init weiter:
echo '<bestätigtes-json>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init
Schema des bestätigten JSON: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." }
/ck:save — Sitzungsstatus speichern
Dies ist der einzige Befehl, der eine LLM-Analyse erfordert. Analysiere die aktuelle Unterhaltung:
summary: ein Satz, max. 10 Wörter, was erreicht wurdeleftOff: woran aktiv gearbeitet wurde (bestimmte Datei/Funktion/Fehler)nextSteps: geordnetes Array konkreter nächster Schrittedecisions: Array von{what, why}für in dieser Sitzung getroffene Entscheidungenblockers: Array aktueller Blockaden (leeres Array, wenn keine)goal: aktualisierte Ziel-Zeichenkette nur wenn sie sich in dieser Sitzung geändert hat, sonst weglassen
Zeige dem Benutzer einen Entwurf der Zusammenfassung an: „Sitzung: ‚‘ – speichern? (ja / bearbeiten)“
Warte auf Bestätigung. Leite dann an save.mjs weiter:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"
JSON-Schema (exakt): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]}
Gib die Standardausgabe des Skripts wörtlich als Bestätigung aus.
/ck:resume [name|nummer] — Vollständiges Briefing
node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]
Gib die Ausgabe wörtlich aus. Frage dann: „Hier weitermachen? Oder hat sich etwas geändert?“
Wenn der Benutzer Änderungen meldet → führe sofort /ck:save aus.
/ck:info [name|nummer] — Kurzer Überblick
node "$HOME/.claude/skills/ck/commands/info.mjs" [arg]
Gib die Ausgabe wörtlich aus. Keine Rückfrage.
/ck:list — Portfolio-Ansicht
node "$HOME/.claude/skills/ck/commands/list.mjs"
Gib die Ausgabe wörtlich aus. Wenn der Benutzer mit einer Nummer oder einem Namen antwortet → führe /ck:resume aus.
/ck:forget [name|nummer] — Projekt entfernen
Löse zuerst den Projektnamen auf (führe bei Bedarf /ck:list aus).
Frage: „Dies wird den Kontext für ‚‘ dauerhaft löschen. Bist du sicher? (ja/nein)“
Wenn ja:
node "$HOME/.claude/skills/ck/commands/forget.mjs" [name]
Gib die Bestätigung wörtlich aus.
/ck:migrate — v1-Daten in v2 konvertieren
node "$HOME/.claude/skills/ck/commands/migrate.mjs"
Führe zuerst einen Probelauf durch:
node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run
Gib die Ausgabe wörtlich aus. Migriert alle v1 CONTEXT.md + meta.json-Dateien in das v2 context.json-Format.
Originale werden als meta.json.v1-backup gesichert – es wird nichts gelöscht.
SessionStart-Hook
Der Hook unter ~/.claude/skills/ck/hooks/session-start.mjs muss in
~/.claude/settings.json registriert werden, um Projektkontext automatisch beim Sitzungsstart zu laden:
{
"hooks": {
"SessionStart": [
{ "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
]
}
}
Der Hook injiziert ~100 Token pro Sitzung (kompakte 5-zeilige Zusammenfassung). Er erkennt auch
ungespeicherte Sitzungen, Git-Aktivität seit dem letzten Speichern und Zielkonflikte mit CLAUDE.md.
Regeln
- Ersetze
~in Bash-Aufrufen immer durch$HOME. - Befehle sind case-insensitiv:
/CK:SAVE,/ck:save,/Ck:Savefunktionieren alle. - Wenn ein Skript mit Exit-Code 1 beendet wird, gib seine Standardausgabe als Fehlermeldung aus.
- Bearbeite
context.jsonoderCONTEXT.mdniemals direkt – verwende immer die Skripte. - Wenn
projects.jsonfehlerhaft ist, informiere den Benutzer und biete an, es auf{}zurückzusetzen.