Skip to main content
plugin

agent-memory — Claude Code plugin: what it does, how to install

A four-tier memory ladder for Claude Code that promotes facts through recurrence across days instead of model confidence.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-memory@claude-code-skills
Open on GitHub

What agent-memory does

The plugin manages memory across four tiers. Raw transcripts stay at L0, while a cross-project persona reaches L3. Candidate atoms are gathered without LLMs and recalled per prompt through lexical matching. Moving an atom to L2 project context requires three distinct sessions across two separate calendar days.

Three hooks run the cycle unattended. They fail open if an error occurs. Any redacted claim or open conflict freezes until someone inspects it. Without running /cs-memory adopt, nothing ever writes to CLAUDE.md. The command backs up both affected files first.

What it helps with

  • retain project context across sessions without polluting CLAUDE.md
  • freeze contradicting claims until manually reviewed
  • retrieve candidate memory items matching prompt keywords
  • inspect the exact source line and origin of any stored claim

Example prompts for the agent

  • /cs-memory status
  • /cs-memory why "database schema"
  • /cs-memory adopt

How to install agent-memory

Plugin marketplace

/plugin marketplace add alirezarezvani/claude-skills
/plugin install agent-memory@claude-code-skills

Step by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own

Questions about agent-memory

How to install agent-memory in Claude Code?

First add the marketplace repository with /plugin marketplace add alirezarezvani/claude-skills. Then run /plugin install agent-memory@claude-code-skills.

What does agent-memory do?

It filters session findings into a four-level hierarchy based on recurrence rather than model confidence. Knowledge reaches project configuration only when observed repeatedly or confirmed by you.

How does the plugin handle conflicting memory atoms?

When an incoming atom conflicts with an existing claim, both sides are marked and progression halts. The record remains frozen until you manually resolve the dispute.

Source text

agent-memory · MIT
# agent-memory

A four-tier memory ladder for Claude Code. **Promotion is earned by recurrence,
never asserted by confidence**, and nothing reaches a committed file without a
human adopting it.

Concept derived from [TencentCloud/TencentDB-Agent-Memory][tencent] (MIT). No
upstream code is included — see
[`.claude-plugin/authoring-notes.json`](.claude-plugin/authoring-notes.json) for
what was taken and what was deliberately rejected.

[tencent]: https://github.com/TencentCloud/TencentDB-Agent-Memory

---

## What it does

| Tier | Holds | Injected | Committed |
|---|---|---|---|
| **L0** | raw session transcripts | never | already on disk |
| **L1** | candidate atoms | on relevance, per prompt | no (gitignored) |
| **L2** | this project's context | every session start | yes, after adopt |
| **L3** | stable cross-project persona | always | yes, after adopt |

**L1 → L2** needs ≥ 3 distinct sessions spanning ≥ 2 distinct calendar days. A
claim stated outright needs 2 sessions — the day rule still applies. A
deterministically verified claim promotes on one observation and is the only
day-exempt path. **L2 → L3** needs ≥ 2 distinct projects and ≥ 30 days.

Two gates refuse rather than guess: a **redacted** claim never promotes on
evidence alone, and a claim with an **open contradiction** freezes until a human
resolves it.

## Install and use

The three hooks in [`hooks/hooks.json`](hooks/hooks.json) run the loop
unattended. Each is disabled independently:

```bash
AGENT_MEMORY_SESSIONSTART=0      # stop injecting L2 + L3
AGENT_MEMORY_USERPROMPTSUBMIT=0  # stop L1 recall
AGENT_MEMORY_SESSIONEND=0        # stop capture
```

```bash
cd skills/agent-memory/scripts
python3 memory_inspect.py --tier L1              # what's stuck, and why
python3 memory_inspect.py --why "<claim>"        # full provenance + source line
python3 memory_inspect.py --contested            # disputed claims, both directions
python3 memory_promote.py                        # dry-run the gates; writes nothing
python3 validate_examples.py                     # 69 checks over the spec + schema
```

Every script takes `--sample` and `--output json`. `/cs-memory` wraps all of it;
`/cs-memory adopt` is the only path that writes to a `CLAUDE.md`, and it backs
both files up first.

## Contents

```
DESIGN.md                       the spec: schema, gates, hook contracts, open decisions
hooks/hooks.json                three hook contracts
hooks/session_start.py          inject L3 + L2, mark cross-tier conflicts
hooks/user_prompt_submit.py     recall L1 on a 100 ms internal budget
hooks/session_end.py            capture, redact, detect, merge, stage
skills/agent-memory/SKILL.md    6/6 PASS on the write-a-skill checklist
  scripts/memory_core.py        shared: ids, redaction, locking, contradictions
  scripts/memory_extract.py     L0 → L1, rule-based, no LLM
  scripts/memory_promote.py     L1 → L2 → L3, stages proposals
  scripts/memory_inspect.py     read-only: --tier / --contested / --why
  scripts/validate_examples.py  69 checks in seven families
  assets/memory_schema.json     13 required fields, five conditionals
  references/                   three references, 6–7 sources each
agents/cs-memory-curator.md     refuses to adopt what it cannot cite
commands/cs-memory.md           status | why | contested | adopt | forget
```

## Deviations from `DESIGN.md`

`DESIGN.md` was written before the implementation and reviewed at length. Where
the built thing differs from the planned thing, **this list is authoritative**.

1. **`memory_core.py` exists.** §10's planned tree lists four scripts and no
   shared module. Building it that way would have duplicated the redaction
   patterns, the id algorithm and the lock protocol across seven files — which
   is precisely the drift class the spec exists to prevent. The module has no
   CLI and is not a plugin-facing tool.
2. **The tool count in §10.1 is wrong.** It says `+6` (3 scripts + 3 hooks).
   The delivered surface is 5 scripts + 3 hooks = **8**. Corrected in the
   counters; §10.1's text is left as the historical record of the estimate.
3. **`mark_contradictions()` was added to the core.** §4.2.1 specifies detection
   running at merge time in `SessionEnd` but assigns it to no file. It lives in
   the core so the promoter and the inspector share one definition of "open
   contradiction" rather than three.
4. **Cross-tier conflict marking marks both sides.** §5.1 requires that an L2
   and an L3 claim colliding must not both appear as plain assertions, and says
   all three candidate policies satisfy it. The implementation marks both and
   picks no winner — the least committal option, and the one that does not have
   to be undone if the open decision lands on specificity-wins.
5. **The 100 ms recall budget is met, on this machine.** §9.5 asserted the
   budget without measurement and offered dropping the hook as option (c).
   Measured: spawn-plus-recall p50 ≈ 29 ms, p95 ≈ 31 ms, max ≈ 35 ms against a
   populated store; the scoring pass itself 2–3 ms over 500 atoms. Interpreter
   start-up is the whole cost. **This does not close §9.5** — one machine is not
   a portability claim, and a slower host may still force option (c).
6. **`--why` quotes the source line.** Not specified anywhere; added because
   "cite, don't invent" is unfalsifiable if a human cannot see the cited line.
   It prints nothing when the back-pointer resolves `ambiguous`.

## What would make this worth deleting

Stated plainly because §9.3 permits it and the trial is the point:

- **Recall is too low to matter.** Rule-based extraction is deliberately
  high-precision. If a two-week trial produces a handful of atoms and none
  reach L2, the honest response is to remove the folder — not to loosen gates
  until something passes.
- **Nobody reviews the staged promotions.** The entire security argument rests
  on a human at the `adopt` gate. If staged items are accepted unread, the gate
  is theatre.
- **`--why` is never run.** Provenance nobody checks is provenance nobody needs.

## License

MIT. Concept attribution: TencentDB-Agent-Memory (MIT, © Tencent). See
[`../../LICENSE`](../../LICENSE).

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

Similar plugins

All plugins for Agent setup: memory, context, orchestration →

From the same set463

The whole set →
coding-agent-rollout This plugin audits Claude Code settings, MCP and plugin inventories, and CLAUDE.md layers. It also tracks a team’s rollout stage from local session counts. ★ 28,733repo stars agent-regression-evals Compares agent runs before and after a change and decides whether the merge is safe. Useful when one trial can't separate a regression from noise. ★ 28,733repo stars loop-library Guides you through designing, auditing, and finding repeatable AI agent loops with explicit guardrails and stop conditions. Helpful for managing Claude Code autonomy. ★ 28,733repo stars spinning-up-deep-rl A knowledge base built from Spinning Up in Deep RL: a resident core with the algorithm taxonomy plus 20 chapters loaded on demand. ★ 28,733repo stars agent-launcher-skills Turn a goal into a Claude Managed Agent workflow, a bounded grading loop, or a recurring deployment. Use it to build and run agents in your Anthropic account. ★ 28,733repo stars collab-proof Runs post-session retrospectives to compare Claude contributions against developer decisions using a four-frame rubric without external dependencies. ★ 28,733repo stars compliance-team-iso42001 This plugin checks ISO/IEC 42001 coverage, builds an AI risk register, and plans internal audits. It’s for teams working on an AI management system. ★ 28,733repo stars compliance-team-eu-ai-act Three stdlib scripts classify an AI system under the EU AI Act, plan the conformity route and build an obligation matrix for your organizational role. ★ 28,733repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor