About honey-memory
honey-memory is an agent skill for creating and maintaining repository-level memory that reduces repeated discovery across sessions. It focuses on stable facts that are costly to rediscover and not evident from source, with rules for backup, validation, and updates.
Key features
- 01Creates or updates repository memory in Markdown
- 02Records architecture, conventions, commands, and decisions
- 03Excludes source-derived facts, secrets, and transient status
- 04Checks stale paths and memory-related issues
- 05Guides same-change updates and on-demand refresh
Use cases
- 01Documenting repository conventions and build commands
- 02Preserving decisions that are not apparent from code
- 03Refreshing memory after code changes invalidate facts
- 04Checking repository memory for stale references
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ green-pt/ honey-for-devs --skill honey-memoryAfter installing, type/honey-memoryin Claude Code to confirm it loaded.
Details
From the project READMEHoney Memory
Lever 2 applied to discovery cost. Every cold session re-greps the same things — where auth lives, the build command, why X is shaped Y. One committed file replaces N rediscovery round-trips with a single cached read, on every future session. The cheapest token is the one not re-derived.
The win is per-session and recurring. The risk is staleness — a wrong cached fact costs more than no file. So the file lives in git, next to the code that can invalidate it, and is fixed in the same change that breaks it.
Scaffold (create)
- One file per repo:
PROJECT.mdat the root, committed (not~/.claude). If the repo already hasCLAUDE.md/AGENTS.md, add/refresh a## Memorysection there instead — don't add a second file. - Back up before overwriting an existing file: copy →
FILE.original.md. If that backup already exists, stop and ask. Never clobber a restore point. - Write only three kinds of fact (derive by reading the repo):
- Architecture + conventions an agent can't cheaply grep — where things live, and why (the intent, not the file list).
- Build / test / run commands, env, and gotchas.
- Decisions and dead-ends — choices made, paths tried and rejected. This is intent; it is never in the code.
- Report what was written and the file path.
Never store
- Anything derivable from source — code structure, symbol locations, past fixes, git history. Re-deriving is cheaper than maintaining, and never stale.
- Secrets, tokens, credentials. The file is committed.
- Transient state — open TODOs, this-week status. That rots fastest.
If a fact is stable + expensive-to-rediscover + not-in-the-code, write it. Everything else, let agents derive on demand — caching it is where these systems quietly lose money.
Update
A markdown file does not update itself. Reliability = discipline, not infra:
- Same-change rule (primary). When code changes invalidate a fact, fix the fact in the same commit. Review catches drift because the file is in git.
- On-demand refresh. Re-read the repo and rewrite stale entries; show the diff. Don't blind-append — appending is how these files bloat and rot.
- Lint before and after a refresh.
node "${CLAUDE_PLUGIN_ROOT}/bin/check.js" memory(no model) finds paths the file names that no longer exist,@importsthat load nothing, the same rule loaded from two files, and a Claude CodeMEMORY.mdpast the 200 lines / 25KB that load at session start. Fix each finding with the user's yes; never delete memory content unasked. (IfCLAUDE_PLUGIN_ROOTis unexpanded,bin/check.jslives at the plugin root, two directories above this file.) - Treat a fact as superseded, not accumulated: replace the old line, don't stack a new one beside it.
One file vs many
Start with one file. Split only when it crosses ~150–200 lines or covers clearly separable domains — then go to a thin index + topic files loaded on demand. Below that, an index costs more (the always-loaded tax) than it saves.
Keep terse
Apply Honey Lever 2 to the content — fragments over paragraphs, no narration of what the code already says. A bloated memory file is a per-session input tax. Keep it human-readable markdown: you (and reviewers) hand-edit it, so don't use a wire format — staleness costs more than the tokens a dense format would save.
Boundaries
Reversible — FILE.original.md is the restore path when overwriting. Verify
every written fact against the current code before reporting done; an unverified
fact is worse than an absent one.