Skip to content

v6.0.0 — the kit becomes a plugin, and the hot cache is actually loaded

Choose a tag to compare

@awrshift awrshift released this 17 Aug 12:00
· 21 commits to main since this release
bf6e29e

The kit stops being a repository you clone and becomes a plugin you install into a repository you already have. Every memory path is unchanged — .claude/memory/MEMORY.md, context/handoffs/, knowledge/concepts/, .claude/rules/ — so nothing you have accumulated needs to move.

/plugin marketplace add awrshift/claude-memory-kit
/plugin install memory-kit@memory-kit
/memory-kit:setup

The bug that made this release urgent

Since v3 the kit told the agent that .claude/memory/MEMORY.md was "always loaded (hot path)". It never was. Claude Code auto-loads CLAUDE.md, .claude/rules/ and its own auto-memory directory — never the kit's file. CLAUDE.md carried no @ import of it, and session-start.py only ever read the file to measure it. The ritual wrote, session after session, into a file the agent saw only if it happened to open it.

The hook now injects the body of the cache and re-injects it after compaction. Verified end-to-end rather than by reading code: a canary token placed in a test repo's hot cache came back from the model through the real plugin loader.

The lesson generalizes, and is now written into the docs: a claim that something is "in context" is verified by looking at the context.

Also fixed

  • Permissions. The allowlist shipped Bash(git *), Bash(npm *), Bash(node *), Bash(python3 *) with an empty deny — auto-approving forced pushes, hard resets and arbitrary execution via node -e. /memory-kit:setup now proposes real rails.
  • The test guard. Creating a test with Write was allowed, then every later Edit of it was hard-blocked, so a red→green loop was impossible and there was no escape hatch. It now asks instead of refusing, always allows a file the session created, and honours CMK_ALLOW_TEST_EDITS=1.
  • Telemetry scripts derived the project root from __file__, so inside a plugin memory-usage measured the plugin's own transcripts.
  • SessionStart profiles by source: startup/clear/fork get the full payload, compact gets exactly what compaction dropped, resume gets only nudges and stats. The session counter no longer counts resumes.
  • .claude/state/ is pruned at 30 days instead of growing forever.

New

  • /memory-kit:setup — adopts the kit in an existing repo and settles the question Claude Code's own auto memory now forces: two memory systems means two writers and two truths, so setup asks who owns it.
  • /memory-kit:memory-audit — the cap-trip surgery, split out of the daily ritual. A ritual that also has to perform surgery is a ritual people skip.
  • /memory-kit:system-audit — a periodic seven-lens sweep of the whole system, every finding evidence-backed.

Removed

  • periodic-save.sh — a Stop hook fires at the end of every turn, and this one parsed the whole transcript each time, to restate what PreCompact already enforces at the moment it matters.
  • The daily chronicle (/close-day, daily/) — demoted to opt-in in v5 because it rotted when days were skipped; in practice nobody enabled it.
  • .kit/advanced/ as a distribution surface, and the three-plugin split the first cut of v6 introduced: skill bodies load only on invoke, so the split paid a real cost to save a memory-only user a handful of description lines.

Migration from v5

  1. Remove the copies the plugin replaces: .claude/hooks/, .claude/skills/close-session, .claude/skills/tour, .claude/memory/scripts/, and the kit's hook block in .claude/settings.json. Keep .claude/memory/MEMORY.md, context/handoffs/, knowledge/, .claude/rules/ and your own CLAUDE.md.
  2. /plugin marketplace add awrshift/claude-memory-kit/plugin install memory-kit@memory-kit.
  3. /memory-kit:setup — it detects what exists and only fills gaps.
  4. Run /context and confirm the hot cache is really there. That is the check v5 never made.

Full detail: docs/CHANGELOG.md · docs/ARCHITECTURE.md