The enemy of an experience library isn't remembering too little — it's bloat: every resident memory taxes every single session's context. We fight it with four mechanisms:
① Tiered loading: hot rules (hard cap of 10 library-wide) live in the always-on @import; warm rules install as per-category Claude Code skills — only a one-line trigger description stays resident, the body loads only when you're doing related work (shell ops, API integration, CI debugging…). Near-zero context cost.
② Entry gate: a rule must be repeatable, expressible in one line, and backed by a real incident. One-off hiccups go to the incident log, never the rulebook.
③ Usage decay: every rule carries last_confirmed (when it last actually fired); rules that stay silent get demoted or archived at quarterly review instead of squatting forever.
④ Periodic compaction: related pitfalls merge upward into one more general rule (three proxy bugs become one "proxy config triple-check"). A healthy library compresses; it doesn't just append.