ck — Context Keeper
SkillDocs & knowledgeck gives your Claude Code sessions a memory that persists per project, so your AI picks up where it left off instead of starting fresh. Project context loads automatically when a session starts, and past sessions are tracked alongside git activity. Commands run as fixed scripts, so the memory behaves the same way regardless of model version.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ck to your project and start a new session, where the project context will load on its own. Ask your AI to remember or recall project details as you work.
Then ask your AI: use the ck — Context Keeper skill
What your AI can do with it
- Keep project memory between work sessions on the same project
- Load project context automatically at the start of each session
- Track past sessions using git activity
- Save project details into the AI's native memory
- Get consistent behavior because commands run as fixed scripts
What this skill tells your AI
The instructions your AI receives, as published by dekaprayoga/aurixagent in skills/ck/SKILL.md and read by ahel’s review.
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
~/.claude/ck/
├── projects.json ← path → {name, contextDir, lastUpdated}
└── contexts/<name>/
├── context.json ← SOURCE OF TRUTH (structured JSON, v2)
└── CONTEXT.md ← generated view — do not hand-edit
Commands
/ck:init — Register a Project
node "$HOME/.claude/skills/ck/commands/init.mjs"
The script outputs JSON with auto-detected info. Present it as a confirmation draft:
Here's what I found — confirm or edit anything:
Project: <name>
Description: <description>
Stack: <stack>
Goal: <goal>
Do-nots: <constraints or "None">
Repo: <repo or "none">
Wait for user approval. Apply any edits. Then pipe confirmed JSON to save.mjs --init:
echo '<confirmed-json>' | node "$HOME/.claude/skills/ck/commands/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 accomplishedleftOff: what was actively being worked on (specific file/feature/bug)nextSteps: ordered array of concrete next stepsdecisions: array of{what, why}for decisions made this sessionblockers: 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:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/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
node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]
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
node "$HOME/.claude/skills/ck/commands/info.mjs" [arg]
Display output verbatim. No follow-up question.
/ck:list — Portfolio View
node "$HOME/.claude/skills/ck/commands/list.mjs"
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:
node "$HOME/.claude/skills/ck/commands/forget.mjs" [name]
Display confirmation verbatim.
/ck:migrate — Convert v1 Data to v2
node "$HOME/.claude/skills/ck/commands/migrate.mjs"
For a dry run first:
node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run
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:
{
"hooks": {
"SessionStart": [
{ "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
]
}
}
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$HOMEin Bash calls. - Commands are case-insensitive:
/CK:SAVE,/ck:save,/Ck:Saveall work. - If a script exits with code 1, display its stdout as an error message.
- Never edit
context.jsonorCONTEXT.mddirectly — always use the scripts. - If
projects.jsonis malformed, tell the user and offer to reset it to{}.
Signals
- GitHub stars
- 63
- Forks
- 11
- Last commit
- Aug 2026
ahel recommends instead
Advanced
- Catalog kind
- skill
- Gateway key
ck-dekaprayoga- Source
- github.com/dekaprayoga/aurixagent