Agent skill · software engineering · affaan-m

ck

Persistent per-project memory for Claude Code (Context Keeper) driven by deterministic Node.js /ck commands: init, save, resume, info, list, forget, and v1-to-v2 migrate, plus a SessionStart hook that injects a compact project brief. Use when context must survive across sessions, saving session state with next steps and decisions, resuming where a previous session left off, or picking up a project without re-explaining it.

Why this skill is useful

Adds multiple executable Node.js scripts for project context management that enhance the AI's capabilities in session tracking and memory management.

What it needs

Requires node installed locally. About 3k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.

What this skill does

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 in the commands/ directory next to this SKILL.md (for example ~/.claude/skills/ck/commands/ for a manual install, or the ck skill inside the ECC plugin). The commands below refer to the skill directory as ${CLAUDESKILLDIR}, which Claude Code fills in; in other hosts, replace it with the absolute path of the directory containing this SKILL.md. Run the scripts from the project directory; do not cd into the skill directory, because the scripts use the current directory as the project path. --- 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 pass the confirmed JSON to save.mjs --init through a quoted heredoc (never echo '...': an apostrophe in any field would end the quoted string and hand the rest to the shell): 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. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills affaan-m/ck--72fa72

View the source on GitHub

Browse the @skills marketplace