solo-memory-audit
/memory-audit
Audit Claude Code memory hierarchy for a project. Shows what files load at session start, total context budget, and optimization hints.
Context
Claude Code loads memory files at session start in this order:
- Managed policy (
/Library/Application Support/ClaudeCode/CLAUDE.md) - User memory (
~/.claude/CLAUDE.md) - User rules (
~/.claude/rules/*.md) - Auto-memory (
~/.claude/projects/{key}/memory/MEMORY.md, first 200 lines) - Project hierarchy (walk from
/to CWD:CLAUDE.md,.claude/CLAUDE.md,.claude/rules/*.md) - Local overrides (
CLAUDE.local.mdat each level)
Rules with paths: frontmatter are conditional — loaded only when working on matching files. Rules without paths: always load and consume context budget.
Target: keep startup context under 40k chars. Large CLAUDE.md files should extract domain-specific sections into conditional .claude/rules/*.md files.
Steps
-
Determine target. Parse
$ARGUMENTS:- Empty or
.-> use CWD - Path -> use that path
all-> scan CWD subdirectories that have CLAUDE.md
- Empty or
-
Run memory_map.py. Execute:
uv run python ${CLAUDE_PLUGIN_ROOT}/scripts/memory_map.py <path> --auditIf
allargument, add--all-projectsflag instead of path.If
uvis not available, fall back to:python ${CLAUDE_PLUGIN_ROOT}/scripts/memory_map.py <path> --audit --plain -
Analyze the output. Read the tree display and audit hints table. Key metrics:
- Total startup chars — should be under 40k
- Large files (>300 lines) — candidates for splitting into rules
- Unconditional rules (>30 lines, no
paths:frontmatter) — addpaths:to make conditional - Duplicate sections — same
## Headerin multiple files, extract to one place - Missing auto-memory — project doesn't learn across sessions
-
Generate recommendations. Based on audit hints, suggest concrete actions:
Issue Action File > 300 lines Extract domain sections to .claude/rules/{topic}.mdwithpaths:frontmatterTotal > 40k chars Identify largest files, move conditional content to rules Unconditional rule > 30 lines Add paths:frontmatter targeting relevant source filesDuplicate sections Keep in the highest-level file, remove from children No auto-memory Normal for new projects, just informational User-level rule is project-specific Move from ~/.claude/rules/to project's.claude/rules/Generic rule in project Move up to ~/.claude/rules/or parent CLAUDE.md -
Check hierarchy health. For the target project:
- Verify parent CLAUDE.md files exist (inheritance chain intact)
- Check that project CLAUDE.md has essential sections (structure, commands, stack)
- Verify
.claude/rules/files have validpaths:frontmatter syntax
-
Output report:
## Memory Audit Report **Project:** [path] **Startup context:** X files, ~Y chars (Z% of 40k budget) ### Tree [paste tree output from memory_map.py] ### Issues Found [from audit hints] ### Recommendations 1. [specific action with file path] 2. [specific action with file path] ### Hierarchy Health - Inheritance chain: [OK / broken at level X] - Auto-memory: [present / missing] - Rules: X total (Y conditional, Z always-on)
Rules Frontmatter Reference
Conditional rules load only when the agent works on files matching the glob pattern:
---
paths:
- "src/lib/analytics/**"
- "src/app/api/analytics/**"
---
# Analytics Module
...content only loaded when working on analytics files...
Without paths:, the rule always loads and consumes context budget.