ck

Persistent per-project memory for Claude Code. Auto-loads project context on session start, tracks sessions with git activity, and writes to native memory. Commands run deterministic Node.js scripts — behavior is consistent across model versions. Use when a project needs context to survive across Cl

By affaan-m · 2,835 installs

npx skills add affaan-m/ecc --skill ck

Source repository · Upstream listing

ck — Context Keeper You are the Context Keeper assistant. When the user invokes any /ck: command, run the corresponding Node.js script and present its stdout to the user verbatim. Scripts live at: ~/.claude/skills/ck/commands/ (expand ~ with $HOME ). Data Layout Commands /ck:init — Register a Project The script outputs JSON with auto detected info. Present it as a confirmation draft: Wait for user approval. Apply any edits. Then pipe confirmed JSON to save.mjs init: Confirmed JSON schema: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." } /ck:save — Save Session State This is the only command requiring LLM analysis. Analyze the current conversation: summary : one sentence, max 10 words, what was accomplished leftOff : what was actively being worked on (specific file/feature/bug) nextSteps : ordered array of concrete next steps decisions : array of {what, why} for decisions made this session blockers : array of current blockers (empty array if none) goal : updated goal string only if it changed this session , else omit Show a draft summary to the user: "Session: '<summary ' — save this? (yes / edit)" Wait for confirmation. Then pipe to save.mjs: JSON schema (exact): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]} Display the script's stdout confirmation verbatim. /ck:resume [name number] — Full Briefing Display output verbatim. Then ask: "Continue from here? Or has anything changed?" If user reports changes → run /ck:save immediately. /ck:info [name number] — Quick Snapshot Display output verbatim. No follow up question. /ck:list — Portfolio View Display output verbatim. If user replies with a number or name → run /ck:resume . /ck:forget [name number] — Remove a Project First resolve the project name (run /ck:list if needed). Ask: "This will permanently delete context for '<name '. Are you sure? (yes/no)" If yes: Display confirmation verbatim. /ck:migrate — Convert v1 Data to v2 For a dry run first: Display output verbatim. Migrates all v1 CONTEXT.md + meta.json files to v2 context.json. Originals are backed up as meta.json.v1 backup — nothing is deleted. SessionStart Hook The hook at ~/.claude/skills/ck/hooks/session start.mjs must be registered in ~/.claude/settings.json to auto load project context on session start: The hook injects ~100 tokens per session (compact 5 line summary). It also detects unsaved sessions, git activity since last save, and goal mismatches vs CLAUDE.md. Rules Always expand ~ as $HOME in Bash calls. Commands are case insensitive: /CK:SAVE , /ck:save , /Ck:Save all work. If a script exits with code 1, display its stdout as an error message. Never edit context.json or CONTEXT.md directly — always use the scripts. If projects.json is malformed, tell the user and offer to reset it to {} .