v0.3.0
Fixed
-
portability(139): cloned projects recall their memory on Windows. Default git settings (
autocrlf) rewrite the committed memory files' line endings on clone, which made every fact invisible to search until now — reads are line-ending tolerant and self-heal on the next write. -
import(138):
cmk import-anthropic-memoryno longer breaks search. Imported bullets carried a non-standard provenance comment that failed the next index rebuild (search fell back to the stale index with a warning). Imports now write the canonical provenance shape. -
memory(136): a long extraction can no longer write a corrupted fact. When a knowledge-dense turn produced more rich facts than the output budget, the last fact was silently truncated mid-word and stored as a stub. Clipped facts are now dropped (and counted in the diagnostic log) instead of written, and the budget is 4x larger so clipping is rare.
-
install(133): the
memory-searchskill is permission-allow-listed, so recall fires prompt-free (the skill shipped in this release without its allow entry — first invocation would have asked "Use skill?"). -
memory(132): organic auto-capture works again — the extractor no longer suppresses itself. Since v0.2.0, the fact extractor was shown the just-captured turn as "already saved" context (a write-then-read ordering bug), so it answered "nothing durable" for most organic conversation — explicit
cmk remembercaptures and persona promotion were unaffected. The dedup snapshot is now taken before the turn is buffered. Found by the v0.3.0 release gate; if yourcontext/MEMORY.mdstayed suspiciously empty, this was why.
Removed
cmk view(a never-implemented stub). The command answered "not yet implemented" since v0.1.0 — removed rather than left promising vapor; a real memory viewer (for non-developer users) is parked as a designed v0.4 candidate. Read memory directly (context/MEMORY.md,context/memory/) or throughcmk search.
Fixed
- memory(124):
cmk forgetand fact merges keepINDEX.mdcurrent. Tombstoning or merging a granular fact now refreshes the markdown index in-band — previously the removed fact stayed listed (a dangling link) andcmk doctor's INDEX-accuracy check failed until a manualcmk reindex. Found by dogfooding the kit on its own repo.
Added
- search(104.2 + 126): the session record is searchable — the last-resort recall tier.
cmk search "<query>" --scope transcripts(andmk_searchwithscope) searches the session record — verbatim transcripts AND the compressed daily/weekly summaries — by keyword or meaning — the exact error message from three weeks ago, the command that fixed something, how a discussion actually went. Kept deliberately separate: normal searches never surface raw history; thememory-searchskill reaches for it only when curated memory has no answer. Transcripts keep full history (unlike Claude Code's ~30-day session files), with growth bounded per turn at capture time. - transcripts(104.1): the kit's transcript now records what Claude DID, not just what it said. Each assistant turn's entry gains a compact Tools block — the commands run, files edited, searches made, with truncated results — extracted at capture time from Claude Code's live session record (which itself expires after ~30 days and never leaves your machine). Your committed
context/transcripts/becomes a durable, portable record of the actual work, ready to serve as the last-resort recall tier. Capped per turn so transcripts stay lean; privacy tags are honored everywhere. - hooks(75.2): a per-prompt "memory available" nudge keeps recall alive mid-session. Substantive prompts in a project with a memory archive now carry a one-line model-facing hint (via the existing UserPromptSubmit hook — no new hook, no extra process) reminding Claude that recorded memory exists beyond the session snapshot and naming the
memory-searchskill. Short prompts ("ok", "go") never pay it. With this, the recall trigger is complete: authority instruction at session start, an auto-invoked recall skill, and mid-session awareness. - skills(75.1): the
memory-searchrecall skill — Claude now knows WHEN to search its memory.cmk install(and the plugin) ships a second skill alongsidememory-write: an auto-invoked, read-only recall skill that fires on "what did we decide about X" / "have we seen this error before" / before re-deriving recorded project knowledge from code. It runs forked (raw archive expansions never bloat your conversation — only a curated, citation-backed summary returns) and teaches the filter-before-fetch ladder over the kit's existingsearch → timeline → gettools. The session-start snapshot is the hot index; this skill reaches everything behind it. - mcp(125): degraded recall is never silent. When a project's configured hybrid default can't run (embedder unavailable),
mk_searchnow tells Claude the results are keyword-only and to suggestcmk install --with-semantic— so the degradation reaches the user instead of hiding. (The CLI already printed a stderr note; this brings the MCP surface to parity.) - install(46): one-flag semantic enablement —
cmk install --with-semantic. Installs the local embedder, pre-warms the model (the one-time download happens during install, not on your first search), and flips the project's default search to hybrid — from then on, plaincmk searchand Claude'smk_searchrecall by meaning with no flags.--no-semanticpins keyword-only; if the embedder is ever unavailable, a configured hybrid default degrades gracefully to keyword instead of failing. - search(65): semantic + hybrid recall are REAL — ask in your own words, get the right memory.
cmk search --mode=semantic|hybrid(and themk_searchMCP tool Claude drives) now run an embedded vector backend: sqlite-vec inside the kit's existing index + a local ONNX embedder (Xenova/bge-base-en-v1.5), chosen by a measured bake-off — R@5 0.941, paraphrase recall 1.000 on the kit's recall benchmark (vs 0.176 for keyword-only). Paraphrase queries that keyword search structurally misses ("where do credentials go" → the 1Password fact) now hit. The embedder is optional (~260 MB once, model downloads on first use): without it, semantic/hybrid degrade to a clear install hint and keyword search is unchanged;CMK_DISABLE_SEMANTIC=1opts out entirely. Zero API calls — everything runs locally. - inject(75.0): the session-start memory snapshot now opens with an authoritative-memory instruction. Every non-empty injected snapshot leads with a fixed preamble telling the agent the injected memory +
cmk searchare the ground truth for documented knowledge and prior decisions — "when injected memory contradicts your assumptions, injected memory wins; never treat a question as novel when the answer is already in your prompt" (adapted from memory-os Layer 07). Fixes the cold-open failure where the agent re-derives from code what its memory already answers. The scaffoldedCLAUDE.mdgains a matching one-line Authority rule. Existing installs pick the preamble up automatically on upgrade — it is generated by the hook, not scaffolded.