Working doc · Agent context · Open for edits

What's actually in our CLAUDE.md

Not a token ledger — a content audit. What are the actual policies? What's just notes? What's good to keep, and what should have been a skill or a doc all along?

4%
of the file is actual policy — 65 lines out of 1,563.
The other 96% is reference material, architecture prose, and war stories.

That single ratio reframes the whole problem. This was never a file that's "too long" — it's a rulebook with a library bound into it. The rules are excellent. The library shouldn't be there.

01The four kinds of content

Everything in the file is one of these. Only the first belongs in CLAUDE.md.

Policy ✓ keep ~65 lines

A rule Claude must follow, phrased so a violation is checkable. These are the crown jewels — the "each line was a bug" content. They're short, imperative, and mostly excellent.

Example — line 1657 "NEVER run npm run seed without explicit permission — it destroys conversations and work orders."
Stays in CLAUDE.md. Short, universal, always-on.
Notes & war stories ✗ move ~40 lines

Incident archaeology: dates, PR numbers, what someone believed before, how long a misdiagnosis took. Valuable history — but it's justification, not instruction. Claude cannot act on it; it just has to read past it.

Example — the ANTHROPIC_AUTH_TOKEN row "This row previously said flatly '429 IS the weekly cap'; that sentence cost an hour on 2026-07-16 diagnosing 5 'capped' accounts that were fine — agent-smith, which injects the identity, was working on the same tokens the whole time."
→ an incident doc or ADR, with a one-line rule and a link left behind. Keep the why in one clause; move the forensics.
Reference & catalogs ✗ move the bulk

Directory trees, route tables, env-var catalogs, page listings, agent IDs, tool inventories. Claude can re-derive nearly all of it by reading the repo — and a hand-maintained copy goes stale, which makes it worse than absent.

Example — the Project Structure section 101 lines drawing the src/ tree in ASCII. Every new directory silently makes it more wrong.
docs/, behind a one-line pointer. This is exactly the class /doctor flags for trimming.
Procedures & runbooks ✗ move ~12,000 tokens

Numbered, multi-step operations you follow when a specific thing happens: debugging a stuck renewal, offboarding a staff member, repairing a Google Workspace rename. You need them maybe monthly, and you know when.

Example — "Debugging a stuck or wrong renewal" A five-step ladder with raw aws dynamodb commands. 115 lines that are dead weight in every session that isn't debugging a renewal.
→ a skill. Loads on demand, costs one description line otherwise. This is the textbook skill shape.

02The policies we actually have

Extracted and grouped. This is the real rulebook — and it would comfortably fit in 150 lines.

Truth & evidence
Dangerous actions
Git & shipping
Testing
Architecture boundaries
UI

That's the whole rulebook — around forty distinct policies. Notice how many are one line and immediately checkable. This is what good looks like, and it's already here; it's just buried in two thousand lines of everything else.

03Good and bad, by the official standard

Anthropic publishes an explicit list of what belongs in a CLAUDE.md. Mapped against ours:

✓ Belongs — and we have it
  • Commands Claude can't guess — npm run build's mutex
  • Conventions that differ from defaults — worktree + PR
  • Testing instructions and runners
  • Repo etiquette — branch naming, one concern per PR
  • Architectural decisions — one source of truth, multi-tenancy
  • Environment quirks — the counterfeit-429 tell
  • Non-obvious gotchas — elevenlabsConversationId stamped at ring, not pickup
✗ Doesn't belong — and we have it
  • Anything derivable from code — the src/ tree, route tables
  • Detailed API documentation — 72 lines of endpoints
  • Info that changes frequently — agent IDs, env catalogs
  • Long explanations — the 68-line email-rename essay
  • File-by-file descriptions — 101 lines of structure
  • Multi-step procedures — four runbooks
  • Duplicated content — graphify and Trello are already skills

Three things we do genuinely well

Worth naming, because the fix is to do more of these rather than invent something new:

1 — the arsenal checklist phrasing "About to write <table>? → use HoverRow, SortableHeader…" — a trigger paired with an answer. Concrete, verifiable, impossible to misread. The best-written thing in the file.
2 — rules backed by drift guards Many policies name the test that enforces them (agent-name-handler-coverage.test.ts). That's a rule that survives whether or not Claude read the line — enforcement, not prose.
3 — six sections that are pure pointers "The architecture lives at docs/architecture/…, read it before X." Cheap, current, and the model for everything else.

04What's wrong right now

A real contradiction — two rules disagree on merge authority

Line 1656: "NEVER deploy or merge to main without explicit user permission… wait for explicit approval."

Line 1725: "Merge on green… There is no separate human sign-off gate; green is the gate."

Both canonical sections, 69 lines apart, irreconcilable for any agent-loop PR. This needs one answer no matter what we decide about structure — and it's the clearest evidence that volume has not been buying compliance. Found by Codex, verified against the file.

Smaller, all cheap to fix:

Defects found while auditing

05What I'd do

In order, cheapest and least controversial first.

Now — uncontested
Next — worth debating

06Open questions

Q1 · needs a decision

Merge authority — approval, or green?

The two rules contradict. Which one is real, and does it differ for agent-loop PRs versus everything else?

Q2 · needs a decision

Should the "never" rules become hooks?

Never push without asking, never run seed, never next build directly. Hooks are guaranteed; prose competes with two thousand lines. Claude's view: yes, and it's the single highest-leverage item here.

Q3 · open

Does our plan-first workflow break path-scoped rules?

Scoped rules load when Claude reads a file — which happens after planning. Codex's counter: put a mandatory routing table in the always-on kernel ("if touching X, read Y") so planning knows what to pull.

Q4 · open

Who owns this file?

It reached 2,088 lines with no pruning ritual. Options: review in PR like code, a Stop hook proposing updates from the session transcript, or a scheduled re-read.

PropFlow Docs