Routing learnings
Skill GhostlyGawd/recursive-harness/skills/routing-learnings
The anti-auto-memory router. Use this EVERY time you notice something worth remembering — a repeated mistake, a user correction, a procedure that worked, a preference, a project quirk — and especially whenever you feel the urge to "just note this down" in CLAUDE.md or memory. Also use during /retro to classify each mined learning. Routing prose into the wrong artifact is the primary failure mode of this harness; when in doubt, trigger this skill.From its SKILL.md
npx -y skills add GhostlyGawd/recursive-harness --skill routing-learningsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.6 KB, ~1.1k tokens by cl100k_base, as published. Nobody here has run it
Routing Learnings
A learning only counts if it lands in an artifact that changes future behavior. Walk the tree top-down; first match wins.
The decision tree
-
Can it be enforced mechanically? ("never X", "always Y before Z") → hook — but only after the weight gate below. Code that blocks beats prose that suggests, and costs zero context. Hooks are enforcement-layer: draft the script + settings entry, open a PR via /harness-pr, human merges. Never edit hooks/ directly. Weight gate — net hook count must not grow by reflex. Before adding a NEW hook, in order: (a) can you fix the ROOT CAUSE so the problem can't arise? (b) does an EXISTING guard already cover this trigger — strengthen/repurpose it? (c) do overlapping guards exist to CONSOLIDATE instead? (d) can you make the correct action the easy default? A new hook is justified only when all four fail. Reflexively answering every papercut with "always/never → new hook" is hook-bloat, not improvement — more enforcement surface makes the harness HARDER to follow, which causes more mistakes. That case routes to /meta-retro (audit / consolidate / prune), NOT /harness-pr (add). The user named hook proliferation as the anti-pattern itself (session b7488db6, 2026-06-19: "we already have so many fucking hooks... we gotta stop bandaid fixing this").
-
Is it a multi-step procedure you (Claude) will repeat across tasks? → skill. Loaded only on trigger, so cost is ~its description. Follow skills/harness-authoring before writing it.
-
Is it a workflow the USER initiates by name? ("do a release", "run retro") → command in commands/. Keep under 80 lines.
-
Is it a role that needs an isolated, fresh context? (grading, auditing) → agent in agents/. If the role must not see your working context to do its job honestly (any evaluation of your own work), it MUST be an agent.
-
Is it this user's taste, style, or recurring preference? → one bullet in memory/user-model.md, formatted exactly:
- <claim> (evidence: N, last: YYYY-MM-DD, source: corrections|stated|inferred)Lint rejects bullets without evidence counts. New entries start at evidence: 1; bump the count and date on each confirmation. Never write a horoscope. -
Is it a fact true of exactly one project? (build quirks, domain glossary) → that project's CLAUDE.md, one line. If you later see it in a second project, promote it upstream (it was a #2 or #5 all along).
-
None of the above → discard. Most candidate learnings should die here. Hoarding is the failure mode this tree exists to prevent.
Hard rules
- Every routed artifact gets a
provenance:line: date, session, triggering event. Lint enforces this for post-v1 artifacts. Unsourced rules are rumors. - One learning, one artifact. If it seems to need two, it is two learnings.
- A decision with alternatives that were rejected → also write a short ADR in memory/decisions/NNNN-slug.md so future-you doesn't relitigate it.
- Precedent check before changing a subsystem's mechanism. Before drafting a
hook/skill/ADR that alters how an existing subsystem works, grep
memory/decisions/AND the target's SKILL + provenance comments for that mechanism. If a prior audit/ADR rejected it, rebut THAT named decision on its own terms — not a generic restatement of it. Re-running a decision already made (the rejected line is often already in your own earlier grep output) costs a full auditor pass to re-derive. (session 0d0fe086, 2026-06-22: re-proposed an auto-fire recall hook that stuck-detection had already rejected by name.)
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.