affaan-m/ECC/skills/ck/SKILL.md
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.
- Source repository stars
- 234,327
- Declared platforms
- 1
- Static risk flags
- 1
- Last source update
- 2026-07-27
- Source checked
- 2026-07-28
Decision brief
What it does—and where it fits
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).
Not for
- Tasks that require unconfirmed production actions or broad system permissions.
- Environments where the pinned source and install steps cannot be inspected.
Compatibility matrix
Platform support, with evidence labels
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
Inspect first. Install second.
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/affaan-m/ECC --skill "skills/ck"Inspect the Agent Skill "ck" from https://github.com/affaan-m/ECC/blob/4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38/skills/ck/SKILL.md at commit 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
What the source asks the agent to do
- 01
Data Layout
Review the “Data Layout” section in the pinned source before continuing.
Review and apply the “Data Layout” source section. - 02
Commands
The script outputs JSON with auto-detected info. Present it as a confirmation draft:
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 steps - 03
/ck:init — Register a Project
The script outputs JSON with auto-detected info. Present it as a confirmation draft:
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":"..." } - 04
/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:…
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 steps - 05
/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.
Display output verbatim. Then ask: "Continue from here? Or has anything changed?" If user reports changes → run /ck:save immediately.
Permission review
Static risk signals and limitations
Runs scripts
The documentation asks the agent to run terminal commands or scripts.
run the corresponding Node.js script and present its stdout to the user verbatim.Runs scripts
The documentation asks the agent to run terminal commands or scripts.
node "$HOME/.claude/skills/ck/commands/init.mjs"Evidence record
Why each signal appears
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 69/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 234,327 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Provenance and original SKILL.md
- Repository
- affaan-m/ECC
- Skill path
- skills/ck/SKILL.md
- Commit
- 4e973d3eaf92d97f8d2e2d8abb39d8bdc8711b38
- License
- MIT
- Collected
- 2026-07-28
- Default branch
- main
View the original SKILL.md
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 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{}.
Alternatives
Compare before choosing
affaan-m/ECC
ck
Use it for engineering tasks; the detail page covers purpose, installation, and practical steps.
affaan-m/ECC
ck
Use it for engineering tasks; the detail page covers purpose, installation, and practical steps.
jackchuka/skills
claude-skill-spec-audit
Audit skill SKILL.md files for compliance with the agentskills.io specification and house conventions. Checks frontmatter fields (name, description, compatibility, metadata, argument-hint), metadata sub-fields (author, scope, layer, confirms), and layer/suffix consistency. Use when adding new skills, reviewing skill quality, or ensuring all skills follow the spec. Triggers: "audit skills", "check skill spec", "skill compliance", "are my skills up to spec", "/claude-skill-spec-audit".
affaan-m/ECC
autonomous-loops
Patterns and architectures for autonomous Claude Code loops — from simple sequential pipelines to RFC-driven multi-agent DAG systems.