Claude-Mem — Memory Keeper
"Persistent memory"
Chat context evaporates; files don't. Give every project a paper trail the next session can boot from.
When to use
- "Pick up where we left off" — session start on any long-running project
- "Remember this" / "log that decision" the moment a choice lands
- "What did we decide about , and why?"
- "What does <codename/acronym> mean again?" — glossary lookups
- "Wrap up" / "save state before we stop" — session end
Workflow
- Locate or initialize
memory/ at the project root: decisions.md, context.md, glossary.md, sessions/. Create missing files with headers; never overwrite existing ones.
- Session start: read
context.md, decisions.md, and the last two session files; deliver a ≤10-bullet summary — active decisions, open threads, next actions — and confirm it matches the user's picture.
- During work, log decisions the moment they land: append to
decisions.md with date, decision, rationale, and alternatives rejected. Same-session or it didn't happen.
- New shorthand — nickname, acronym, codename — gets a one-line
glossary.md entry on first use.
- Session end: write
sessions/YYYY-MM-DD.md — what got done, decisions made (pointer, not copy), open threads, next actions.
- Monthly compaction: fold session files older than 30 days into
context.md (keep decisions, threads, and state; drop the play-by-play), delete the folded files, and dedupe decisions.md keeping the latest ruling per topic.
- Refuse to store: secrets, tokens, passwords, keys; personal data beyond names and roles; transient noise (build logs, one-off stack traces, dead ends already resolved). Say what was excluded and why.
Output format
memory/
├── decisions.md # append-only choices + rationale
├── context.md # compacted long-term project state
├── glossary.md # shorthand → meaning
└── sessions/
└── 2026-07-11.md # one file per working session
decisions.md entry:
## 2026-07-11 — Postgres over SQLite for prod
Why: concurrent writers. Rejected: SQLite (single-writer lock), DynamoDB (no team experience).
glossary.md entry:
ATLAS — internal codename for the billing rewrite (started 2026-05)
sessions/YYYY-MM-DD.md:
# Session 2026-07-11
Done: <shipped work, one line each>
Decisions: → decisions.md (2026-07-11)
Open threads: <unresolved, with current state>
Next: <first action for the next session>
Quality bar
Example
Ask: "We're going with JWT over server sessions — remember that, then wrap up."
Produced: appended ## 2026-07-11 — JWT over server sessions (why: stateless scaling; rejected: session store adds a Redis dependency) to decisions.md, wrote sessions/2026-07-11.md with two open threads (refresh-token rotation, logout semantics), and echoed the entry back for confirmation.
Credits
Inspired by the claude-mem project.
1---2name: claude-mem3description: Persistent filesystem memory across sessions — maintains memory/ with decisions.md, context.md, glossary.md and sessions/YYYY-MM-DD.md, loads and summarizes state at session start, appends decisions and open threads at session end, compacts monthly, and refuses secrets and transient noise. Use when the user says "remember this", "what did we decide about X", "pick up where we left off", or when starting or closing a session on a long-running project.4---56# Claude-Mem — Memory Keeper78> "Persistent memory"910Chat context evaporates; files don't. Give every project a paper trail the next session can boot from.1112## When to use1314- "Pick up where we left off" — session start on any long-running project15- "Remember this" / "log that decision" the moment a choice lands16- "What did we decide about <topic>, and why?"17- "What does <codename/acronym> mean again?" — glossary lookups18- "Wrap up" / "save state before we stop" — session end1920## Workflow21221. Locate or initialize `memory/` at the project root: `decisions.md`, `context.md`, `glossary.md`, `sessions/`. Create missing files with headers; never overwrite existing ones.232. Session start: read `context.md`, `decisions.md`, and the last two session files; deliver a ≤10-bullet summary — active decisions, open threads, next actions — and confirm it matches the user's picture.243. During work, log decisions the moment they land: append to `decisions.md` with date, decision, rationale, and alternatives rejected. Same-session or it didn't happen.254. New shorthand — nickname, acronym, codename — gets a one-line `glossary.md` entry on first use.265. Session end: write `sessions/YYYY-MM-DD.md` — what got done, decisions made (pointer, not copy), open threads, next actions.276. Monthly compaction: fold session files older than 30 days into `context.md` (keep decisions, threads, and state; drop the play-by-play), delete the folded files, and dedupe `decisions.md` keeping the latest ruling per topic.287. Refuse to store: secrets, tokens, passwords, keys; personal data beyond names and roles; transient noise (build logs, one-off stack traces, dead ends already resolved). Say what was excluded and why.2930## Output format3132```33memory/34├── decisions.md # append-only choices + rationale35├── context.md # compacted long-term project state36├── glossary.md # shorthand → meaning37└── sessions/38 └── 2026-07-11.md # one file per working session3940decisions.md entry:41## 2026-07-11 — Postgres over SQLite for prod42Why: concurrent writers. Rejected: SQLite (single-writer lock), DynamoDB (no team experience).4344glossary.md entry:45ATLAS — internal codename for the billing rewrite (started 2026-05)4647sessions/YYYY-MM-DD.md:48# Session 2026-07-1149Done: <shipped work, one line each>50Decisions: → decisions.md (2026-07-11)51Open threads: <unresolved, with current state>52Next: <first action for the next session>53```5455## Quality bar5657- [ ] Session opened with a memory summary, never a cold start58- [ ] Every decision logged same-session with rationale and rejected alternatives59- [ ] Session file written before the session closes60- [ ] Zero secrets, credentials, or transient noise in any memory file61- [ ] Compaction shrinks bytes without losing a single decision or open thread62- [ ] Summaries stay ≤10 bullets — memory serves recall, not re-reading6364## Example6566Ask: "We're going with JWT over server sessions — remember that, then wrap up."6768Produced: appended `## 2026-07-11 — JWT over server sessions` (why: stateless scaling; rejected: session store adds a Redis dependency) to `decisions.md`, wrote `sessions/2026-07-11.md` with two open threads (refresh-token rotation, logout semantics), and echoed the entry back for confirmation.6970## Credits7172Inspired by the claude-mem project.