ck-learn

star 21

Record a new knowledge snippet — domain rules, architectural decisions, gotchas, or cross-module relationships discovered during a session.

Fredrik-C By Fredrik-C schedule Updated 6/5/2026

name: ck-learn description: Record a new knowledge snippet — domain rules, architectural decisions, gotchas, or cross-module relationships discovered during a session.

ck learn — Reference

Appends a new snippet to a session-specific JSONL file under .ck-knowledge/sessions/. Called by the session-end hook (automated) and directly when you encounter something worth preserving mid-session.

Syntax

.claude/skills/ck/ck learn \
  --content "<text>" \
  --folders "<folder1>,<folder2>" \
  --tags "<tag1>,<tag2>"

Options

Option Description
--content <text> The knowledge to record (required)
--folders <f1,f2,...> Comma-separated folder paths this snippet applies to
--tags <t1,t2,...> Comma-separated keywords for exact-match search
--source <name> Source label — defaults to "agent"
--repo <path> Repo root (default: auto-detect)

Output

The new snippet's UUID (stdout). Creates .ck-knowledge/ if absent. Silent (exit 0) when the repo has "brain": false in .ck.json.

ck learn writes through CK's schema-aware pipeline. Do not append/edit .ck-knowledge/**/*.jsonl files directly with shell tools.

What to record

Record: architectural patterns not obvious from folder structure, the WHY behind decisions, gotchas and constraints, cross-module relationships that span folders.

Do NOT record:

  • File paths — those go in --folders, not in --content
  • Function/method names found via ck signatures — an agent can find those in 1 call
  • Internal helper names, specific flag names, parameter types — implementation detail
  • Anything a future agent would see immediately by reading the relevant file

Length check

If --content is more than 4 sentences, you are including implementation detail. Cut until only the non-obvious insight remains.

Example

Good:

.claude/skills/ck/ck learn \
  --content "Interac refunds require card-present: Interac's network rules mandate terminal
authentication. Unlike Visa/MC, there is no offline refund path — this is why the terminal
flow is structurally different from the API-only path." \
  --folders "src/Modules/Payments/Adyen/Terminal/" \
  --tags "interac,adyen,refund,terminal,card-present"

Bad (same snippet, wrong):

--content "... renderComponent (path/to/renderComponent.tsx) calls getInitChainWithCheck(),
finds the DOM node via getMountElement, creates a React element, and pushes both into
backendComponentsStore (Zustand vanilla store in path/to/backendComponentsStore.ts) ..."

File paths in prose, internal helper names, Zustand store location — all findable via ck signatures. Strip them; keep only the non-obvious architectural insight.

Install via CLI
npx skills add https://github.com/Fredrik-C/ContextKing --skill ck-learn
Repository Details
star Stars 21
call_split Forks 3
navigation Branch main
article Path SKILL.md
More from Creator