migration-claude-mdlisted
Install: claude install-skill erclx/aitk
# Claude md migrate
Rebalance a large `CLAUDE.md` so only always-load behavior stays in it, path-scoped behavior becomes a rule, and domain narrative becomes a context entry. Every move is a proposal the user applies by hand.
Run `migration-context` first when both apply. Its moves populate `.claude/context/`, and Step 3 has to read the folder those moves left so an existing entry resolves to an append rather than blocking the move that should have created it.
## Guards
- If no `CLAUDE.md` exists at `pwd`, stop: `❌ No CLAUDE.md found at the project root.`
- If `CLAUDE.md` has fewer than three `##` sections, stop: `✅ CLAUDE.md is already lean. Nothing to rebalance.`
## Step 1: discover
Run these in parallel from `pwd`:
- Read `CLAUDE.md`
- `ls .claude/rules/ 2>/dev/null`: existing rule subdirs and numbers for placement
- `ls .claude/context/ 2>/dev/null`: existing context entries for conflict checks
- `aitk claude seeds list --json 2>/dev/null`: the base seed set. Read the `CLAUDE.md` entry's `content` as the always-load baseline. Skip this input when `aitk` is not installed.
## Step 2: classify each section
Split `CLAUDE.md` by `##` heading. Score each section against this order:
1. **Always-load.** Stays in `CLAUDE.md`. Signals: cross-cutting behavior that applies every session, output and formatting rules, project-wide invariants, conventions with no file scope. A section that matches the seed baseline is always-load by definition. Keep it and propose no move.
2.