Optimizes Claude Code memory files in 4 interactive steps: removes duplicates, migrates rules to CLAUDE.md/rules files, compresses remaining entries, validates with cleanup. Typical reduction: 30-50% on token count.
---
name: memory-optimize
description: "Optimizes Claude Code memory files in 4 interactive steps: removes duplicates, migrates rules to CLAUDE.md/rules files, compresses remaining entries, validates with cleanup. Typical reduction: 30-50% on token count."
tags: [auto-memory, claude-code-memory, claude-code-auto-memory]
license: MIT
metadata:
author: "kochetkov-ma"
version: "3.1.0"
source: "claude-brewcode"
user-invocable: true
allowed-tools: Read Write Edit Glob Grep Bash Task AskUserQuestion
model: opus
---
> Plugin: [kochetkov-ma/claude-brewcode](https://github.com/kochetkov-ma/claude-brewcode)
## Memory Optimizer
Optimizes Claude Code **auto-memory** files in **4 interactive steps**: removes duplicates, migrates rules to proper config files, compresses remaining entries, validates the result.
Typical reduction: **30–50%** token count in memory files.
Auto-memory stores context across sessions in `~/.claude/projects/**/memory/MEMORY.md`.
Enable: `CLAUDE_CODE_DISABLE_AUTO_MEMORY=0` · Disable: `CLAUDE_CODE_DISABLE_AUTO_MEMORY=1`
**Benefits:** faster context loading · no duplicate rules · cleaner instructions · lower API cost
**Usage:**
```bash
/memory-optimize # no args — starts 4-step interactive workflow
```
> _Skill text is written for LLM consumption and optimized for token efficiency._
---
# Memory Optimizer
Optimizes Claude Code memory files through 4 interactive steps.
> **No `context: fork`** — must run in main conversation to spawn agents.
## Phase 0: Load Context
1. Glob all memory files: `~/.claude/projects/**/memory/*.md`
2. Read `~/.claude/CLAUDE.md` and project `CLAUDE.md` (if exists)
3. Glob `.claude/rules/*.md` — read all project rules
4. Read `~/.claude/rules/*.md` — read all global rules
Build context map:
```
memory_files: [paths]
claude_md_sections: [sections]
rules_files: [paths with content]
```
## Step 1: Analysis — Remove Duplicates (Interactive)
**Goal:** Find memory entries that duplicate content already in CLAUDE.md or rules.
1. Spawn `Explore` agent to cross-reference all loaded files
2. Identify entries where:
- Same rule already in CLAUDE.md
- Same pattern already in a rules file
- Contradicts CLAUDE.md (CLAUDE.md wins)
3. Show analysis:
```
Found X duplicate/redundant entries (Y% of memory):
| Entry | Memory File | Already In | Action |
|-------|-------------|------------|--------|
| "Use grepai first" | MEMORY.md:5 | rules/grepai-first.md | DELETE |
...
```
4. `AskUserQuestion`: "Delete X duplicate entries (Y% of memory)? This is safe — content exists elsewhere."
- Options: "Yes, delete all" / "Review each" / "Skip this step"
5. Apply deletion using `Edit` tool if approved
## Step 2: Migration — Move to Rules/CLAUDE.md (Interactive)
**Goal:** Identify remaining memory entries better suited to persistent config files.
Decision tree (per entry):
- Applies to ALL projects + IS a rule/constraint → `~/.claude/rules/`
- Applies to THIS project only + IS a rule → `.claude/rules/`
- IS an architectural decision → project `CLAUDE.md`
- IS a fact/pattern reusable across sessions → KEEP in memory
1. Show categorization:
```
X entries suitable for migration:
| Entry | Current Location | Target | Reduction |
|-------|-----------------|--------|-----------|
| "Always use BD_PLUGIN_ROOT" | MEMORY.md:12 | .claude/rules/brewdoc.md | 15 tokens |
...
Total: X entries → ~Y tokens saved
```
2. `AskUserQuestion`: "Migrate X entries to rules/CLAUDE.md?"
- Options: "Yes, migrate all" / "Review each" / "Skip this step"
3. If approved:
- Create/append to target rule files via `Edit`
- Remove migrated entries from memory via `Edit`
- If target file doesn't exist, create it
## Step 3: Compression (Interactive)
**Goal:** Compress remaining entries using LLM-efficient formatting.
Compression techniques:
- Prose → table row
- Multiple related entries → single table
- Verbose description → imperative one-liner
- List of examples → pattern + one example
1. Show compression preview:
```
Compression opportunities found:
| Before | After | Savings |
|--------|-------|---------|
| "When you need to... always use..." | "Use X for Y" | 8 tokens |
...
Total: ~Y% token reduction (~Z tokens)
```
Show 2-3 specific before/after samples.
2. `AskUserQuestion`: "Compress remaining memory? (~Y% reduction)"
- Options: "Yes, compress all" / "Skip compression"
3. Apply compression via `Edit` (bottom-up order to preserve line numbers)
## Step 4: Validation (Automatic)
**Goal:** Verify final state and clean orphaned references.
1. Spawn `reviewer` agent to verify:
- No broken file path references in memory files
- No contradictions between memory and CLAUDE.md
- Memory files are well-formed markdown
2. Clean broken references (Edit tool)
3. Check for orphaned memory files (files in `~/.claude/projects/**/memory/` with no MEMORY.md reference)
4. Report orphaned files and ask to delete
**Final Report:**
```markdown
## Memory Optimization Complete
### Summary
| Metric | Before | After | Saved |
|--------|--------|-------|-------|
| Total entries | X | Y | Z |
| Duplicate entries | X | 0 | — |
| Migrated entries | — | — | X |
| Token estimate | ~X | ~Y | ~Z (~P%) |
### Changes Made
- Step 1: Deleted X duplicate entries
- Step 2: Migrated X entries to rules/CLAUDE.md
- Step 3: Compressed X entries (Y% reduction)
- Step 4: Fixed X broken references, removed X orphaned files
### Final Memory Structure
{directory listing of ~/.claude/projects/.../memory/}
---
**Part of brewdoc:** [brewcode](https://github.com/kochetkov-ma/claude-brewcode) — docs tools: memory optimization, auto-sync, Claude installation docs, Markdown to PDF.
Install: `claude plugin marketplace add https://github.com/kochetkov-ma/claude-brewcode && claude plugin install brewdoc@claude-brewcode`
```
Creator's repository · kochetkov-ma/claude-brewcode
License: MIT