PluginWorld
Me

memory-kit

Claude Code✓ SPEC VERIFIED

Memory for Claude Code that survives the session boundary — install the plugin into any repo: a hot cache injected every session under three hook-enforced caps, per-session handoffs, audit-driven promotion into knowledge and rules, plus agent orchestration and QA layers. Zero deps.

@awrshift · MIT · updated 7d ago

SECURITY

A

SCORE

79

STARS

30

PLUG IN

/plugin marketplace add awrshift/claude-memory-kit

Then run /plugin install <name> for any plugin it lists

README

Claude Memory Kit

Claude Memory Kit

The memory plugin for Claude Code. Your agent remembers every client, every brief, every decision — across sessions. Three lines to install, nothing to maintain.

Version License: MIT Claude Code

"I wake up already knowing where we left off." — the agent this kit builds.

Install it into a repository you already have:

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

Then work as usual, and type /memory-kit:close-session when you're done. That's the whole loop. Free — it runs on your existing Claude Pro or Max subscription and calls nothing else.

Upgrading later takes two steps, and the second one needs the FULL plugin@marketplace identifier — the bare name resolves to nothing and the CLI answers Plugin "memory-kit" not found:

claude plugin marketplace update memory-kit     # refresh the catalog
claude plugin update memory-kit@memory-kit      # then the plugin itself

Restart the session to apply. Your repository is untouched by an upgrade — memory, handoffs and knowledge live in your repo, never in the plugin — so /memory-kit:setup does not need re-running.

The problem

Every session starts from zero. Yesterday you locked the brand voice; today you explain it again. Last week you found the right angle; this week you can't reconstruct how. The first ten minutes of every session go to re-explaining what Claude already knew.

Built for people running many projects or clients — one install per repository, each with its own accumulated memory, all with the same working discipline. (The story: 1000+ sessions, 12 months in production, one operator.)

What the three lines do

/memory-kit:setup reads what your repository already has, then proposes — never writes first:

  • the memory layers it is missing (.claude/memory/MEMORY.md, context/handoffs/, knowledge/);
  • who owns memory: the kit, or Claude Code's built-in auto memory. Running both means two writers and two truths, so the kit makes you pick (why it matters);
  • permission rails (deny on forced pushes and secret reads, ask on the destructive classes);
  • the .gitignore lines — private memory by default, shared if your team wants it.

Nothing else changes in your repo. Your CLAUDE.md is yours; the kit never writes to it.

Starting from zero instead of an existing project? Make an empty folder, run claude in it, and use the same three lines.

[!TIP] Say /memory-kit:tour after setup — Claude walks you through the system using your own files.

On v5 (the clone-the-repo layout)? Your memory files stay where they are: migration in 4 steps.

Who it's for

You, if you work with Claude Code daily across sessions · you juggle several projects or clients · you keep re-explaining the same context · you build with subagents and want the discipline that keeps them honest
Not for you, if you use Claude Code occasionally for one-off edits · you want zero process (this kit asks you to close sessions) · you need memory shared live across a team (it is files in git, not a service)

Before / after

Without Memory Kit With Memory Kit
New session "What were we working on?" Opens with last session's handoff already loaded
After 10 sessions Nothing accumulates Searchable base of decisions, tones, patterns
Multiple clients Chaos Each client has its own folder, everything in place
Context compaction Silently loses data Hook blocks compaction until state is saved
Memory bloat Grows until useless Three size caps, watched automatically every session

How a session works

Three steps. That's the entire workflow:

1. Open a session — Claude wakes up already knowing where you left off

A hook injects, before you type anything: your hot cache, the handoff the previous session left, memory-health stats, and the knowledge index. You do nothing — you just see "here's where we left off" and continue. (After a /compact, it re-injects what compaction dropped.)

2. Work as usual — the habits run without you asking

Talk to Claude. Write copy. Do research. Lock the tone. When something worth keeping comes up, Claude saves it as a dated one-liner and tells you "saved". Hooks run silently: compaction is blocked until state is written, and an edit to an existing test file has to be confirmed.

3. Close the session — the note to tomorrow's you

Say /memory-kit:close-session. Claude doesn't just dump logs — it audits: "noticed you rejected em-dashes on three different dates — make it a tone-of-voice rule?" You say "yes", it writes. Then it leaves a note for tomorrow-you. Tomorrow's session opens with that note already loaded.


Where memory lives

flowchart LR
    T([you talk]) --> H[".claude/memory/MEMORY.md<br/>hot cache · dated one-liners<br/>180 lines / 32 KB / 3000 chars"]
    H -->|"/close-session"| N["context/handoffs/*.md<br/>one note per session"]
    H -->|"same pattern on 3+ dates<br/>and you say yes"| K["knowledge/concepts/*.md<br/>facts + rationale"]
    K -->|"stable, mechanical"| R[".claude/rules/*.md<br/>always / never"]
    N -->|"newest one injected"| S([next session])
    H -->|"injected in full"| S

Four places, each answering a different question. Claude writes all of them — you only talk.

Layer Site calls it Answers Written
.claude/memory/MEMORY.md hot memory "what patterns repeat" + "where things stand" while you talk
context/handoffs/*.md the note to tomorrow's me "what happened, session by session" at /close-session
knowledge/concepts/*.md cold memory "facts and rationale by topic" after your "yes"
.claude/rules/*.md habits "what must always / never happen" after months of stable pattern

A pattern's journey: noticed in conversation → saved as a dated line in MEMORY → repeats on 3+ dates → Claude proposes promotion → your "yes" → becomes a knowledge article or a rule, and the raw lines are pruned. Observation → candidate → law. You approve every step.


Why it doesn't rot

Memory systems don't usually die loudly — they rot quietly: a "current state" file that froze three weeks ago but still looks authoritative; a memory file that grew so dense it's unreadable. It is built around the failure modes we hit in real long-running use:

  • Three size caps on MEMORY.md (180 lines / 32 KB / 3000 chars per line), checked by a hook at every session start. Three, because line count alone lies — content can densify into ever-longer lines while the line count stays flat. When a cap trips, the session opens with an audit prompt instead of silently growing.
  • Handoffs instead of a rolling status file. One immutable note per closed session; the newest one is injected automatically. A note that says its date can't pretend to be current.
  • Stale-reference detector. Every session start, file paths mentioned in memory are checked against disk; anything that moved or vanished is flagged. A memory that references dead files is the #1 way agents confidently act on outdated beliefs.
  • The header rule. The top of MEMORY.md is "current state in 2-3 sentences", replaced at every close — never a stack of "previous session" paragraphs.
  • The memory is actually in context. v6 injects the hot cache itself at session start, and re-injects it after compaction. (v5 only measured it while claiming it was always loaded — a year-long silent failure, found by asking "prove it's in context", not by reading the code.)

Multiple clients

Two shapes, both supported. One repo per client — install the plugin in each, and every client gets its own memory with the same discipline. Or one workspace, many client folders: /memory-kit:setup offers projects/<name>/ and experiments/<name>-YYYYMMDD/, shared layers (memory, wiki, rules) load for all of them, and per-client materials load when you name one.

Say "we're working on Nestlé" — Claude unloads the other clients and loads that scope only.


Hooks and skills

Four hooks run silently, all inside the plugin — nothing to maintain in your repo. One injects your memory and the working agreement at every session start (and after each compaction), one blocks compaction until state is saved, one asks before an existing test gets edited, one logs the close.

Everything else is a skill, and skills cost nothing until you invoke them:

Skill For
/memory-kit:close-session the end-of-session ritual — capture, promote, hand off
/memory-kit:memory-audit the cap-trip surgery: what leaves the hot cache, by approved plan
/memory-kit:system-audit the periodic seven-lens sweep of the whole system, evidence-backed
/memory-kit:setup · :tour adopt the kit here · walk through it on your own files
/memory-kit:session-review · :second-opinion adversarial review of a session · of one decision
/memory-kit:qa-sweep multi-lens agent QA of a running product

Everything in plain text files. No databases. No external services. git checkout restores anything.


Agent-orchestrated work (opt-in)

When you use the kit to BUILD things — software, agent systems, research pipelines — there's a next level: your agent stops doing everything in one thread and starts orchestrating agents. The main session designs and decides; executor subagents build to a decided spec in isolated git worktrees; recon gathers facts read-only; idea-validator attacks the design from a fresh context. The integrator merges, re-runs the gates on the merged tree, and treats every subagent report as INPUT — never as a fact.

Two skills close the loop: /session-review (an adversarial review of the session's work by independent reviewers before it sets) and /second-opinion (cross-check a high-stakes answer before committing to it).

v5.2 makes the loop self-improving. Every nontrivial diff passes an automated code review before merge; every confirmed finding is logged by class, and a class that recurs three times is promoted into the cheapest layer that prevents it forever — a lint rule, a line in an agent definition, a review-brief line. Rules that stop firing get dropped. Your review process compounds instead of repeating itself.

And when what you're building is a user-facing product, the QA layer puts agents on the other side of the screen: /qa-sweep fans out qa subagents over the running app — five adversarial lenses (user-flow · edge-state · honesty · contract · ux-critique), parallel isolated browsers, findings that must carry machine-checkable evidence — and nothing becomes a ticket until the integrator reproduces it. A calibration ladder (seeded-defect recall runs, brief edits kept only on a measured delta) keeps the lenses sharp.

All of it ships in the same plugin — the agents and skills are simply there when you invoke them. The one always-on piece is optional and deliberately tiny: /memory-kit:setup offers to drop a ~20-line orchestration.md into .claude/rules/, which is what makes the invariants binding rather than advisory. Depth stays in the plugin's reference/, read on demand. Distilled from hundreds of real multi-agent sessions in the maintainers' production repos.


FAQ

How is this different from Claude Code's built-in memory?

Claude Code ships auto memory: Claude writes notes to itself as it works, and the index is loaded every session. It is effortless and it is good — but nobody decides what enters it, the notes are Claude's own summary rather than your words, and the record lives outside your repo (machine-local, not in git, not reviewed in a PR).

The kit is the opposite trade: nothing is remembered without a decision. Every entry is dated, so repetition across days is visible; anything promoted to a knowledge article or a rule needs your yes; everything is a plain file in your repository, so git log shows how the project's memory evolved and a teammate can read it.

They overlap enough that running both means two writers and two truths, so /memory-kit:setup asks you to pick. Either answer is legitimate — and if you pick the kit, it switches the built-in one off explicitly rather than leaving you with a silent second memory.

I'm not a programmer. Will this work?

Yes. You talk to Claude in plain language. "Read the client brief and propose three newsletter topics" — works. Install is one command. You never edit the memory files yourself — that's the kit's first rule: you only talk, Claude writes.

How much does it cost?

The kit itself is free, open source. You need a Claude Pro or Max subscription (which you probably already have). No additional cost.

Is my data private?

Yes. Everything is stored on your computer in plain text files. Nothing leaves. Your personal layers — MEMORY.md and the session handoffs — are gitignored by default, so they stay private even if you push the repo (the kit creates your MEMORY.md from a template on first run). knowledge/ articles and .claude/rules/ ARE tracked — they're your curated wiki, meant to live in the repo; keep the repo private (or prune them) before publishing it anywhere.

Can I use it with an in-progress project?

Yes. On install, tell Claude you already have a project — it analyses it and integrates.

What if I forget to run /close-session?

Nothing breaks. Safety hooks save progress automatically every ~50 messages and before any context compaction. /close-session is the cherry on top — the deliberate audit where patterns get promoted to permanent knowledge and the handoff note gets written.

What if I accidentally break a memory file?

The kit's tracked files revert with one git checkout. Your private layers (MEMORY.md, handoffs) are gitignored, so git can't restore those — but the hooks checkpoint them continuously, and if MEMORY.md ever disappears the session-start hook recreates it from the template. If you want your private memory versioned too, remove those two lines from .gitignore in your own (private) clone.

I liked the daily journal (/close-day). Where did it go?

Retired in v6. It was demoted to opt-in in v5 for a reason — in long-running use the chronicle was the layer that silently rotted whenever a day got skipped — and in practice nobody enabled it: /close-session covers the same ground per session and cannot go stale unnoticed. The code is still in git history if you want it back.

What if I'm on v5 (the cloned-repo layout)?

Keep your repo, install the plugin into it, and delete the copies it replaces. Your memory entries, handoffs, knowledge articles and rules stay exactly where they are — v6 reads the same paths. Mechanical steps: docs/CHANGELOG.md.


What's inside

This repository is the marketplace; the plugin is what you install.

.claude-plugin/marketplace.json   ← the catalog (one plugin)
plugins/memory-kit/
  .claude-plugin/plugin.json      ← the manifest
  context/identity.md             ← the working agreement, injected every session
  hooks/                          ← session-start · pre-compact · protect-tests · session-end
  skills/                         ← close-session, memory-audit, system-audit, setup, tour,
                                    session-review, second-opinion, qa-sweep
  agents/                         ← executor · recon · idea-validator · qa
  templates/                      ← what /memory-kit:setup scaffolds into YOUR repo
  reference/                      ← depth, read on demand (fact-check, parallel dev,
                                    doc governance, decisions log, review loop, QA protocol)
docs/                             ← architecture · changelog · contributing

In your repository the kit owns only state: .claude/memory/MEMORY.md, context/handoffs/, knowledge/, and — if you want them — projects/<name>/ for real client work and experiments/<name>-YYYYMMDD/ for hypotheses (rough OK, distil on close, then delete).

Full architecture: docs/ARCHITECTURE.md Version history: docs/CHANGELOG.md Contributing: docs/CONTRIBUTING.md Open decisions: docs/DECISIONS.md · Diagram state: docs/ASSETS.md


Origin

This is not a template written in an afternoon — it's an architecture distilled from 1000+ real sessions over 12 months of continuous daily Claude Code work, by one operator, across very different verticals: marketing, sales, lead generation, business analysis, research & development, and shipping production code side-by-side with backend and frontend engineers.

One person. One agent architecture. Installed per project — each repository accumulating its own memory, rules, and knowledge base while the working discipline stays identical. That's exactly who it fits best: automators and consultants running many clients — three lines per client, and memory keeps every engagement scoped, accumulated, and instantly resumable.

Everything here survived that year of production use — including the scars: the parts that quietly rotted (the daily chronicle, the rolling status file) were retired, and what remains is what kept earning its place. The operator's own write-up lives at awrshift.com.

Help

Issues and PRs welcome. See docs/CONTRIBUTING.md.

License

MIT — see LICENSE.

SIMILAR PLUGINS