Routing learnings
Skill GhostlyGawd/recursive-harness/skills/routing-learnings
Portable, evidence-driven agent development harness for Codex, Claude Code, and generic Agent Skills. Active beta v0.1.2.
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.
What its author says it does
Copied from the file, not written here
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.
SKILL.md
4.6 KB, 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.)