Your CLAUDE.md rules have an expiry date A developer tested three long-standing rules in framesmith's CLAUDE.md by deleting each one in a throwaway git worktree and running a headless task with `claude -p "" --permission-mode acceptEdits`, finding one rule dead, one worth keeping as insurance, and one reducible to a single clause in about an hour across three runs. The ESM `.js` extension rule proved unnecessary because the agent copied neighboring files' style, the test-storage redirect rule stayed because a miss would overwrite the real `~/.framesmith` design store, and the MCP tool registration rule shrank to just the VISION.md tick. The developer packaged the procedure as verderer, a CLI that keeps a ledger of harness rules recording when each appeared, what was decided about it, and which model it was judged against. Your CLAUDE.md rules have an expiry date TL;DR: Every rule in your CLAUDE.md or AGENTS.md is a patch over something a model once got wrong. The model improves, your codebase grows into the convention, and the rule stays. I took three long-standing rules from framesmith’s CLAUDE.md, deleted one at a time, and gave the agent a task that forced exactly that decision. One rule was dead, one was worth keeping as insurance, and one shrank to a single clause. It took an hour. I turned the procedure into verderer https://github.com/vicmaster/verderer , a small CLI that keeps a ledger of your harness rules: when each one appeared, what was decided about it, and which model it was judged against. Rules are written against a model Think about when you wrote your oldest CLAUDE.md rule. You probably wrote it right after the agent did something wrong. Wrong import style, tests writing to your real home directory, a new feature that forgot the docs. You patched it with a sentence, and the sentence worked. That sentence was written against the model you had that week and the repo you had that week. Both have changed since. The rule hasn’t. Dead rules aren’t free. They cost tokens in every session, and they can do worse than that. When I A/B tested a generated CLAUDE.md summary https://victorvelazquez.dev/blog/agents-didnt-need-context7-for-my-rails-app/ , the clearest effect was harm: agents obeyed over-broad rules over the code right in front of them. An instruction file is the loudest voice in the room. Every line in it should still deserve that. The usual answer is a ritual: every few months, delete the whole thing and see what breaks. It works, roughly. But you lose the rules that were quietly preventing an expensive mistake, and you learn nothing about which ones those were. The trial: one rule out at a time From framesmith’s CLAUDE.md, I picked three rules I suspected had outlived their purpose and ran the same small experiment on each: 1. Make a throwaway git worktree. 2. Copy in the CLAUDE.md and delete one rule. 3. Run a headless task that forces the decision that rule exists for: claude -p "