/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
- Run memory_map.py. Execute:
uv run python ${CLAUDE_PLUGIN_ROOT}/scripts/memory_map.py <path> --auditIfallargument, add--all-projectsflag instead of path. Ifuvis 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) — add paths: to make conditional - Duplicate sections — same ## Header in 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:frontmatter Total > 40k chars Identify largest files, move conditional content to rules Unconditional rule > 30 lines Addpaths:frontmatter targeting relevant source files Duplicate 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 valid paths: 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.