Memory architecture
Skill sefaertunc/Worclaude/.claude/skills/memory-architecture
CLI scaffolding tool that generates tailored .claude/ workflow infrastructure for Claude Code projects
npx -y skills add sefaertunc/Worclaude --skill memory-architectureAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Five-layer memory architecture: where each fact lives, how layers interact, when to promote learnings
SKILL.md
6.2 KB, as published. Nobody here has run it
Memory Architecture
Worclaude projects use five distinct memory layers. Each has a different scope, owner, and lifecycle. Routing a fact to the correct layer is a load-bearing decision — the wrong layer means the fact is invisible when needed, or noisy when not.
The Five Layers
| Layer | Scope | Owner | Lifecycle |
|---|---|---|---|
CLAUDE.md | Team | Manual (humans + Claude via /update-claude-md) | Stable, lean (target ~200 lines) |
.claude/rules/ | Team | Manual, topic-organized | Stable; optionally path-scoped (deferred — see BACKLOG) |
.claude/learnings/ | Team | Hook-captured (learn-capture.cjs) | Append-only; transient inputs to promotion |
CLAUDE.local.md | Personal | Manual; gitignored | Per-machine sandbox; never shared |
| Claude Code auto memory | Personal | Autonomous (Claude) | Active, self-pruning |
The line between team and personal is the most important boundary. Team layers are committed and shared with collaborators; personal layers stay on the local machine.
Routing Contract
When a fact, rule, or pattern surfaces during a session, route it like this:
| Source | Destination |
|---|---|
A team-relevant rule the user wants enforced — typed [LEARN] block or /learn invocation | .claude/learnings/<category>.md (via hook) |
| A personal preference (workflow, tone, naming whim) | Claude Code auto memory (Claude does this autonomously when noticed) |
| A machine-local sandbox value (paths, secrets, dev URLs) | CLAUDE.local.md (manual; gitignored) |
| A topic that has accreted multiple learnings AND is stable | Promote to CLAUDE.md via /update-claude-md |
Default rule: if you cannot point to a specific reason a fact belongs in
a different layer, it does not belong in CLAUDE.md. CLAUDE.md is the
last layer to grow, not the first.
Layer Interactions
CLAUDE.mdis the read-on-every-session layer. It is loaded into context at session start and after every/compact. Long files waste context on every interaction. Stay under ~200 lines of actual content..claude/learnings/is the staging area. Hooks write here on every[LEARN]block. Same category = same file = appended block, so a file that grows multiple**Rule:**entries signals recurrence. Theindex.jsoncreatedfield is updated to the latest capture date — use it as a "last touched" timestamp, not a fixed creation date.- Auto memory runs in parallel. Claude Code maintains
~/.claude/projects/<project-slug>/memory/autonomously. It is per-machine and personal. Worclaude does not write to it and does not read from it during/update-claude-mdpromotion (deliberate scope boundary — see BACKLOG for the discussion). CLAUDE.local.mdoverridesCLAUDE.mdfor the local machine. Use it for facts that are genuinely user-specific within an otherwise shared project. Do not commit it..claude/rules/is reserved. Claude Code's official docs recommend it for topic-organized, optionally path-scoped team rules. Worclaude defers scaffolding it until a usage signal exists; users can still create the folder manually. Do not duplicateCLAUDE.mdcontent into.claude/rules/ad-hoc.
Promotion Path: Learnings → CLAUDE.md
Promotion is the bridge from .claude/learnings/ to CLAUDE.md. It is
deliberately gated by /update-claude-md rather than automatic — promotion
is a content decision, not a mechanical one.
A learning is a promotion candidate when at least one of these holds:
- Recurrence: the learning's file in
.claude/learnings/has 3 or more**Rule:**blocks (i.e., the same category was captured at least three times). Counted by scanning the file, not the index. - Recency cluster: the index entry's
createddate is within the last 14 days AND the same theme has shown up in another recent learning. Recent + repeated > recent alone. - Drift: the learning's content is structurally relevant to an
existing
CLAUDE.mdsection (e.g., a new "always do X" pattern that would naturally live in## Critical Rulesor## Gotchas) but the pattern is missing from the file.
Even when a candidate qualifies, /update-claude-md confirms each
proposed addition with the user via AskUserQuestion. No silent writes.
Don't / Do
- Don't edit
.claude/learnings/files by hand to "fix" them. They are the raw capture surface. If a learning is wrong, fix the rule inCLAUDE.mdor remove the learning file. - Don't scaffold
.claude/rules/content from oldCLAUDE.mdsections "to makeCLAUDE.mdsmaller." Splitting into sub-files just fragments the single source of truth without saving context. - Don't mix personal preferences into team layers. If something
applies only to your local workflow, it belongs in
CLAUDE.local.mdor Claude Code's auto memory — not inCLAUDE.md. - Do delete stale learnings. If a category was captured once eight months ago and never recurred, it is noise.
- Do prune
CLAUDE.mdwhen it crosses 200 lines.worclaude doctorwarns at 150 and errors at 200. Pruning is part of maintenance. - Do read the file before recommending an update. Memory across sessions is not authoritative — current file content is.
Cross-References
/learn— captures a[LEARN]block to.claude/learnings/./update-claude-md— proposes promotions from learnings toCLAUDE.md, with size + dedup gates.claude-md-maintenanceskill — what belongs inCLAUDE.md, format discipline, the 200-line target.worclaude doctor— surfaces drift betweenCLAUDE.mdclaims andpackage.jsonreality (see Phase 3 T3.8).