Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
affaan-m avatar

Ck

  • 4.5k installs
  • 238k repo stars
  • Updated August 5, 2026
  • affaan-m/everything-claude-code

Persistent project memory system for Claude Code that auto-recovers context, tracks session state, and detects work-in-progress via git activity.

About

Context Keeper (ck) is a Claude Code skill that provides persistent, per-project memory using native storage and automatic session recovery. Developers invoke commands like /ck:init to register projects, /ck:save to capture session state (summary, decisions, blockers, next steps), and /ck:resume to reload full project briefs with git-tracked changes. The skill auto-injects ~100 tokens of context on session start via a SessionStart hook, detects unsaved work and goal drift, and runs deterministic Node.js scripts stored locally. Commands output structured JSON that guides analysis of conversation state without requiring external APIs, making it ideal for multi-session coding projects where context loss causes rework. Auto-loads project context on session start via SessionStart hook with git activity detection Captures session state through /ck:save: summary, decisions, blockers, next steps in structured JSON Deterministic Node.js scripts

  • Auto-loads project context on session start via SessionStart hook with git activity detection
  • Captures session state through /ck:save: summary, decisions, blockers, next steps in structured JSON
  • Deterministic Node.js scripts ensure consistent behavior across model versions and sessions
  • Tracks projects in ~/.claude/ck/ with context.json as single source of truth; v1-to-v2 migration included
  • Commands resolve project by name or number; /ck:list shows portfolio; /ck:forget safely deletes with confirmation

Ck by the numbers

  • 4,492 all-time installs (skills.sh)
  • +220 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #171 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

ck capabilities & compatibility

Capabilities
register and track multi project portfolios · auto load context on session start · capture session state (summary, decisions, block · detect unsaved work and goal drift · resolve projects by name or number · migrate v1 legacy contexts to v2 format
Use cases
code review · debugging · project management · documentation
Platforms
macOS · Linux · WSL
Runs
Runs locally
Pricing
Free
From the docs

What ck says it does

Persistent per-project memory for Claude Code. Auto-loads project context on session start, tracks sessions with git activity, and writes to native memory.
skill metadata
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.
SessionStart Hook section
npx skills add https://github.com/affaan-m/everything-claude-code --skill ck

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs4.5k
repo stars238k
Security audit3 / 3 scanners passed
Last updatedAugust 5, 2026
Repositoryaffaan-m/everything-claude-code

What it does

Maintain persistent project context across Claude Code sessions using git-aware memory and deterministic Node.js commands.

Who is it for?

Multi-session development projects, long-running features, complex codebases where context loss causes rework, teams using Claude Code as primary IDE assistant.

Skip if: One-off scripts, stateless utilities, projects not using Claude Code, developers who prefer manual context management.

When should I use this skill?

Starting a new Claude Code session; resuming work on an existing project; ending a session with unfinished work; switching between multiple projects.

What you get

Developers maintain continuity across sessions: previous decisions, blockers, and next steps are auto-loaded; unsaved work is detected; goal drift triggers re-briefing.

  • Project registry (projects.json)
  • Structured context.json per project
  • Session summaries and decision logs

By the numbers

  • ~100 tokens injected per session via hook
  • 5-line compact summary format for context.md
  • Supports v1-to-v2 migration with zero data loss (originals backed up)

Files

SKILL.mdMarkdownGitHub ↗

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

~/.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 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:

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 $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 {}.

Related skills

Forks & variants (1)

Ck has 1 known copy in the catalog totaling 1.4k installs. They canonicalize to this original listing.

How it compares

Alternative to manual note-taking or chat history search; similar to IDE workspace state recovery but specialized for LLM agent memory.

FAQ

Does ck require me to manually edit context files?

No. Never edit context.json or CONTEXT.md directly - always use /ck:* commands. The scripts handle all updates and maintain the single source of truth.

How much overhead does the SessionStart hook add?

~100 tokens per session. The hook injects a compact 5-line summary of the project, decisions, and next steps on every new session.

What if I have old v1 CONTEXT.md files?

Run /ck:migrate or /ck:migrate --dry-run to convert all v1 data to v2 context.json. Originals are backed up as meta.json.v1-backup.

Is Ck safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

AI & Agent Buildingagentsautomation

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.