| If you're here because… | forge-harness solves it |
|---|---|
| Context disappears when a session ends | Persistent tracks/ — resumable from anywhere |
| You repeat the same setup across projects | Connect once to the hub, share across all projects |
| Team AI know-how lives only in people's heads | Codify it so everyone shares it |
| You want AI to get better as work accumulates | Skills and patterns compound session over session |
| You need a governance layer for AI-generated code | fh-gate wraps any coding agent as a post-generation gate |
This document is for humans. AI operating rules →
CLAUDE.md· Command reference →CHEATSHEET.md
Get started in 2 minutes
Prerequisite: Claude Code CLI — verify with claude --version
The consent-registry gate parses YAML, and it fails closed when it cannot — correctly, since an
unvalidated consent record must not read as a clean one. But that fail-closed turns the whole of
npm test (and prepublishOnly) red on a machine without PyYAML, and until 2026-08-12 the
requirement was written down nowhere. It is written here now — and, as of this edit, only
here: it is still absent from package.json, the cheatsheet and every other doc, so this block is
the single place a new machine can learn it. That is an improvement over nowhere, not a fix:
python3 -m pip install --user pyyaml # verify: python3 -c 'import yaml; print(yaml.__version__)'
Why this is called out rather than left implicit: a release once shipped green from a session whose
python3 happened to resolve to an unrelated project's virtualenv that had PyYAML, while the
machine's own python3 did not. The gate was never bypassed — it passed, and the pass simply was not
portable. Every verdict from that gate now prints the interpreter and PyYAML version it used, so a
green states what produced it instead of leaving the reader to assume.
# 1. Install the plugin
claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git
claude plugin install -s user fh-meta@forge-harness
# 2. Clone the hub
git clone https://github.com/chrono-meta/forge-harness.git ~/projects/forge-harness
cd ~/projects/forge-harness
# 3. Start a session
claude
✅ Then type a greeting ("hi") — the 🐿️ door menu appears on a typed greeting, not on launch alone. Say "Connect a project" → hub scans
../, finds.gitdirectories, createstracks/{project}/. For full initial setup (hooks · gates · baseline — each item individually approved, declining is respected and recorded), ask for/install-wizard. Already cloned somewhere else? That path is your hub — read every~/projects/forge-harnessin the docs as your actual clone path.
Your first 15 minutes — what success looks like, and what to do with it:
- You'll know setup worked when a greeting ("hi") shows the 🐿️ door menu, and "Connect a project"
creates
tracks/{your-project}/. - Then grab an immediate win in the same session: say "accelerate this project" (ranked plan of skills/plugins worth wiring, install-gated) or "run /context-doctor" (token-waste scan).
- One honest note: FH's core payoff is compounding — session records, harvested learnings, cross-session memory. It shows from session 2 onward. Day one gives you the menu, the acceleration plan, and governance gates; don't judge the compounding on day one.
Unfamiliar words on the way? → knowledge/shared/GLOSSARY.md.
Plugin only (no clone):
claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git # once
claude plugin install -s user fh-meta@forge-harness
cd ~/projects/{your-project} && claude
⚠️ Plugin-only is partial synergy. You get the skills and agents, but not the hub-side orchestration — the
CLAUDE.mdgovernance (active onboarding, the 4-axis gate, mode branching; automation layer) and the compounding context (tracks/memory accumulation,harvest-looplearning; methodology layer). Each skill runs the same in isolation; what's missing is the orchestration that makes them compound across sessions. Clone the hub (above) when you want the full set, not just the tools.
Which entry path is for you?
| You are… | Start with |
|---|---|
| Solo dev, one project, just trying it | templates/starter_profile.md — one command, curated first-five skills |
| Multiple projects, want the compounding hub | Clone the hub (quickstart above) |
| CI / non-Claude runtime, gates only | npx @chrono-meta/fh-gate (zero-install governance gate) |
Prefer brew over npx/npm |
brew tap chrono-meta/forge-harness && brew install forge-harness — same 100%-parity content, different install UX (community tap; not yet in Homebrew Core, so brew search won't find it without the tap first) |
What it is
forge-harness is structured as two distinct layers:
| Layer | Contents | AI compatibility |
|---|---|---|
| Methodology layer | tracks/, knowledge/, SKILL.md docs, session protocols |
Any AI model |
| Automation layer | plugins/*/agents/ (FH agents), .claude/agents/ (field-project overrides), hooks, slash commands, CLAUDE.md rules |
Claude Code only |
The methodology layer is the portable core — persistent hub, accumulating learnings, curating cross-project knowledge. The automation layer makes it frictionless when running Claude Code.
Where this sits (2026): "harness engineering" is now a public paradigm — and basic agent orchestration is rapidly commoditizing into standard infrastructure. FH deliberately stakes nothing on that plumbing. Its durable layer is what does not commoditize: the governance gates (adversarial · phantom · regression), drift control, and the cross-project compounding loop. Routing and dispatch are means; the gate and the loop are the asset.
forge-harness/ ← the hub (persistent brain)
├── knowledge/ → shared across all projects
└── tracks/ → work records per project
Project A ──→ connect hub in CLAUDE.md
Project B ──→ connect hub in CLAUDE.md
What makes it a harness, not a toolbox
Start with what a harness is for: it reads your intent and forges it into a machined form — rules an AI reliably follows, or deterministic code that needs no model at all. You give intent and insight; the harness shapes them into something executable; you approve; it becomes machinery. The payoff is less trial-and-error on the human side: the request → feedback → regenerate loop doesn't disappear, it relocates — into the harness, run in parallel by agents and sidecars — so your time drops and your attention is spent only where a change is irreversible.
Scale is the second point. A skill, agent, or plugin is a tool. A harness is a level up — a star: one project's tools, rules, gates, and memory bound into a single working body. forge-harness is the galaxy those stars live in: it binds many harnesses onto a shared floor to prevent drift, and lets them evolve together instead of scattering.
This galaxy is more than a container. FH can run a field harness in simulation inside its own sandbox — expensive per run, cheaper in total, because the trial-and-error pools in one place and compounds — and when the simulation holds, it emits the project as an independent, specialized harness. That last step is the goal it is built toward, not a shipped feature — the incubation chamber has emitted once, and the run that produced it did not go through the full flow. Read the simulate-and-emit sentence as direction of travel; everything before it is in use today.
The five identities — what FH is for
These are not five modules, and they are not five shipped features either. They are the shapes the skills clump into — the name of something that was already there, spread across the skills and agents rather than layered on top of them. They sit at a different level from the problem table at the top of this page: that table is symptoms you might arrive with, this is what the hub is organized around.
| Identity | What a person gets | |
|---|---|---|
| ① | Harness cluster | One task rides several harnesses, and governance is computed between them. Its load-bearing sub-mechanism, cross-harness: call a capability you do not have (rather than build it), and absorb the one you should have built |
| ② | Project incubator | A new harness comes out walking where it was born, not as an empty scaffold |
| ③ | Governance gate | What must not ship is blocked mechanically, not by remembering to check |
| ④ | Frontier → org propagation | What arrives from outside lands all the way inside the organization |
| ⑤ | Amplifier | A short intent gets forged all the way to the finished artifact |
A sixth row is deliberately absent from that table. Ⓑ Project Booster — FH's machinery
accelerating another harness's own development — is real and graded, and it is not on the same
layer as the five. It carries a letter instead of a number for exactly that reason. Each of the
five keeps scope that sits outside boosting: ⑤ covers human intent generally (including work where
no harness is involved at all), ① runs in the opposite direction (FH is the beneficiary), and ②
births units — boosting comes after birth. So the relation is not containment.
🟥 The canon stops there on purpose and does not draw an arrow. Pinning a hierarchy makes the
table drift from how the work actually runs, where one job rides ① and ⑤ together and the result
flows into ②. Read "different scopes", not "one sits under another". Grades — Ⓑ's included — live
in one file: ship_readiness_gate.md
§Ⓑ-layering.
They are not equally finished, and you should not read the table as five working features. Maturity is
tracked per identity on a four-step scale — aspirational → partial → RC (stood up in the lab) → REALIZED (walked outside) — with a dated line of evidence for each. Those grades are deliberately not copied
here: a grade kept in two files goes stale in one, and this page exists in four languages, so a copy here
would be four copies. Before you rely on any row above, read the current grades — that is one file:
ship_readiness_gate.md. The short version if you
only want one sentence, as of 2026-08-17: ①, ③, ⑤ and Ⓑ are graded green — demonstrated outside
the lab; ② and ④ are release candidates — built and calibrated, not yet shown to walk in someone
else's hands.
If that sentence and the gate file disagree, the gate file is right and this line is stale.
Two properties cut across all five, and neither is a feature you switch on:
- It rides the frontier instead of patching it. FH dispatches across families (Claude, Codex, Gemini, local) — but the point is not papering over each model's weak spots, because that scaffolding dies as models improve. It is co-evolution: shed what the substrate now does natively, absorb what it ships next. Decorrelation is today's trust lever, and it is the load-bearing word on this page: deliberately making two checks fail differently — a reviewer from another model family, a run against a real target, an outside audit of your own record — so that what one is blind to, another is not. A cross-family panel beats a single model's ceiling for exactly that reason, not because it is bigger.
- It evolves in two directions. Outward, each session's lessons compound into the hub so the next project starts further along. Inward, it catches and repairs its own defects — the same gates, turned on the harness itself.
The whole thing is a division of labor: raw capability is the model's; assembly, trust, and evolution are the harness's.
How it is built — process → engines → identity
The five identities above are the surface. Two layers sit under them, and naming all three is what keeps "what FH does" from collapsing into one undifferentiated pile:
five identities what a person can actually use (surface — what you get)
↑ backed by
four engines the capability that makes it possible (capability — what it can do)
↑ produced by
three-stage the ORDER those engines are forged in (process — how it gets made)
process
└ stage ③ = the six-axis gate (§The six verification axes, below)
As a mnemonic: three-stage process · four engines · five identities · six-axis gate. ⚠️ But the six axes are not a fourth layer — they are what stage ③ of the three-stage process consists of. Read the four as parallel layers and you get back the very "the layers do not land" problem this section was written to fix.
The four engines. Each one is what some identity above is standing on. They were not invented for this
page: the readiness gate had already been scoring every identity against these same four capabilities in a
column of its own (ship_readiness_gate.md), so
naming them was recognition rather than taxonomy-building.
| Engine | What it is | Identities it backs |
|---|---|---|
judgment-circuit |
what counts as success, which way to lean under uncertainty, what is out of scope, what never happens | ⑤ Amplifier · ② Incubator |
ship-gate |
mechanical blocking before an irreversible surface — commit, publish, delete, rewrite | ③ Governance gate |
context-continuity |
not losing the thread across compaction, sub-agents, machines, sessions | ① Cluster · ② Incubator |
external-grounding |
reaching outside the repo before asserting novelty or settling a design | ④ Frontier → org |
They are written by name, never by number — the table order here and the prose order elsewhere differ, so "engine ④" decodes to two different engines depending on which you read.
judgment-circuit is the one that gets misread most, so state it flatly: it is a coordinate system for
deciding, not a statement of who the harness is. The four items in its row are the whole of it. Do not
shorten it to "the harness's soul" in English either — that word reads as persona, and the largest
finding of the measurement behind this engine (105 runs, comparing prompts with and without an identity
declaration) was precisely that the two are different things: adding "you are a ~" came out a net loss
on the weakest model tested, and taking it out recovered ground. A one-word rename re-fuses exactly what
that measurement separated. The figure itself is deliberately not quoted here — the source records it
without a scale, and an unscaled number on a front page is decoration; it is in
ship_readiness_gate.md with its context. Nor is
a judgment circuit built in one sitting: FH hands a new harness a seed draft, and it fills in as that
harness is actually used.
The three-stage process — this is an order of investment, not a menu:
① Circuit before design the judgment circuit goes in FIRST — success · leaning · out-of-scope ·
never-do — not written up afterwards as a record of what you did
② Decorrelate in the split the work into checks that fail DIFFERENTLY and run them at once.
middle, to accelerate Choose which differences matter — a second reviewer of the same kind is
not decorrelation, it is the same blind spot twice. Parallelism has no
direction of its own; the judgment circuit from ① is what picks.
This is a way of WORKING, not the end-of-line check in ③.
③ Burn it down at the the six axes below. Adversarial review is ONE of them, not all of them —
end, on six axes adversariality is a **posture**, not an axis. It can ride on any axis, and
riding it does not make that axis see what it cannot see
The six verification axes — where "we reviewed it" usually turns out to mean only the first of them.
🟥 Axes are not divided by how adversarial they are. They are divided by what they were given. Hand two reviewers the same input and the same blind spot survives, however many of them you add. That is why the column that matters most below is what it gets:
| Axis | What it gets | What it catches | Typical instrument |
|---|---|---|---|
| ⓐ Different family | the diff + the author's framing | the implementation is wrong | a reviewer from another model family (auto-decorrelation) |
| ⓑ Standpoint | the diff + the target harness's own canon | whether the rule you cited actually says that | run the diff from that harness's own repo and rules (§7) |
| ⓒ Isolated grounding | the sentences the author wrote + the tree as it stands now | the claim is wrong | someone who did not write it re-measures what it says |
| ⓓ Third-party encounter | the problem + someone else's codebase | is this already solved · where your change touches someone else's repo | look at the same problem in an unrelated third repo |
| ⓔ First real use | one real target | the way you are measuring is wrong — the instrument's instrument | run it once against one real target and check the result by hand |
| ⓕ Revert and observe | the tree with the wiring deleted | the anchor is wrong — the check is decorative | delete the thing it guards and confirm that specific check goes red |
You do not run all six every time, and that is the design — do not multiply them, choose:
one-line fix (typo · gitignore) nothing burns. Not even ①'s circuit — when there is one answer,
planting one is overhead
ordinary code change (reversible) ⓔ first real use + ⓕ revert
verdict · gate code + ⓐ different family — verdict logic is what a reviewer who
shares the author's optimism misses **structurally**
change that touches another + ⓑ standpoint — bolt on three families and if all three eat
harness your framing, nobody asks "does that canon actually say so"
very large · irreversible + ⓒ isolation + ⓓ third-party encounter. Burn all of it
⚠️ ⓓ third-party encounter is the most expensive and has the smallest unique yield. And yet that handful were all of the boundary-crossing kind (a rule someone else had already retired · someone else's repo importing your file). On small, reversible changes such items simply do not arise; on large irreversible ones those two are exactly what becomes an incident. That is where the cost earns itself.
Why this is not superseded by base-model advances — an axis is defined by its input, not by the reviewer's ability. A stronger model still cannot see information it was not given. Scaffolding sheds as models improve, but input-boundary decorrelation does not, and a single author cannot, by definition, step outside their own input. 🟥 Honest edge: if the agent fetches more input by itself with tools, the boundary blurs — an outside judgment held that "the store is never used in full" and "the swallowed exception" are catchable by ⓐ and ⓒ as well, since those reviewers grep for themselves. Conversely, "a rule another repo retired long ago" cannot be fetched by any tool — there is no reason to have access to that project's review history in the first place. That is where ⓓ remains.
🟥 Limits to read before citing this: the six-axis table is n=1 (one artifact · one session · one author). Whether the axes' non-overlap is structural or an accident of that day is unmeasured. And when the author's self-scoring was stripped out — 16 findings handed, with their provenance removed, to two classifiers from other families for blind judgment — 3 of the 5 the author had attributed to ⓓ were judged to belong to a different axis; those three were not "what the axis was needed for" but "what another axis missed". Discount the table's attributions accordingly.
Honest note — this is not a clean stack, and that is the point. Stage ① and stage ③ are made of the same material as the engines, so the lower layer uses the upper one. The contradiction resolves on subject: the engines are what FH applies to your work, while the process is the order FH uses when forging its own engines. If the method had been borrowed from outside it would be unrelated to the engines; the overlap is the fingerprint of dogfooding. Full canon, including the sample limits behind each claim:
fh_three_layer_canon.md.
Self-healing here isn't a claim — check it.
git login this repo is the record, and the shape repeats: a miss is caught, the fix is attacked, and the attack often lands on the fix rather than on the original. One you can open by hash —cb74ea4, where a register-consistency rule was added toCLAUDE.md §Voice/Toneafter the harness drifted register mid-session. A second, in the same change that added this section: a checker whose whole job is finding tests nothing runs was caught reporting a green count off a script's own comment, and then the guard written to fix that turned out to have no test that would fail if it were deleted — found by a different model family, not by the author, and closed with a fixture that does fail. Commit hashes on feature branches do not survive squash-merge, so that one is cited by its shape rather than by an ID that would rot.
Why it works
After a long co-authoring session with your AI, you and it share the same context — and the same blind spots. The reviewer worth having is the one who never saw your reasoning. You can get that by hand: paste the work into a fresh, empty chat. FH just turns that chore into one routine command.
- sidecar / agent dispatch → a reviewer with none of your session's context
- steel-quench · phantom-quench → that cold pass, on demand
It's model-agnostic: co-build with one AI, run the cold pass with any other. Whoever was absent from the original session is your cold reviewer — this is not a ranking of models.
What FH does not claim: the cold pass is your base model's own ability, not a detection engine FH adds — a plain prompt to a fresh instance does much of the same. FH's value is narrower and honest: it takes a method drawn from real practice and makes running that independent pass routine, instead of a chore you skip. The methodology is copyable; what FH packages is the workflow, not a secret sauce.
Governance layer for AI-generated code
FH wraps any coding agent (OpenCode, Codex, etc.) as a post-generation governance gate.
npx --package @chrono-meta/fh-gate fh-gate # default: Claude backend
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-gate # Codex backend
FH_BACKEND=auto npx --package @chrono-meta/fh-gate fh-gate "src/foo.ts" full
# → FH_GATE_VERDICT: PASS | PENDING | BLOCKED | ESCALATE
# or, via Homebrew (same content, no npx prefix needed after install):
brew tap chrono-meta/forge-harness && brew install forge-harness
fh-gate
fh-gate uses the same FH governance prompt for both runtimes. FH_BACKEND=claude runs claude --print; FH_BACKEND=codex runs codex exec; FH_BACKEND=auto prefers Codex when both CLIs are present — note that auto is fallback selection: it runs ONE leg. FH_BACKEND=cross runs BOTH families and unions their findings (a finding only one family saw is still a finding, so it unions rather than votes); the verdict is the most severe across legs. It costs ~2x, so it is for load-bearing verdict/gate/irreversible-surface changes, not a default. The output always declares which legs actually ran (FH_GATE_LEGS:, FH_GATE_DECORRELATED:) — on a machine with only one family, cross degrades to that single leg and says so, because a single-family result that reads as cross-checked is worse than an honest one.
For direct skill or agent execution outside Claude Code, use fh-run:
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill phantom-quench --file docs/foo.md
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --agent fh-commons:quench-challenger --file plugins/fh-meta/skills/foo/SKILL.md
To check whether a changed FH skill/agent surface still has a clean Codex adapter path, run:
npx --package @chrono-meta/fh-gate fh-codex-doctor --strict
fh-codex-doctor scans the canonical skill/agent registry and reports which units are Codex-native,
adapter-required, Claude-native, or unclassified. It is a drift detector for the thin adapter boundary;
it does not try to clone the Claude Code automation layer. When run from an FH checkout it scans the
current working tree; outside a checkout it scans the installed package.
For Codex-primary work, keep using Codex's native goal/session features when available. fh-goal is only a portable wrapper for one-off non-interactive runs that should be followed by FH governance:
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-goal --prompt "Implement X and update tests" --gate quick
The broader FH automation layer still depends on Claude Code for sub-agents, hooks, and slash commands. The portable path is shared documents plus runtime adapters, not separate Codex and Claude forks.
Recommended posture — Claude Code as orchestrator, others as sidecars. FH's automation layer (auto-firing hooks, sub-agent dispatch, onboarding, memory) is Claude-Code-native, so the fullest experience runs Claude Code as the main orchestrator with Gemini, Codex, or Antigravity (agy) as actively-used sidecars. You can also run a non-CC runtime as your main agent — you keep the full methodology layer and M1 skills (M1 = runs on any runtime as written; M2 = needs agent dispatch; M3 = Claude-Code-native — the portability tiers detailed in docs/codex-compat.md) through fh-gate/fh-run, but you do not get the autopilot layer: hooks don't auto-fire, M2 agent-dispatch steps need the adapter (or interactive approval), and M3 skills are reference-only. This is a deliberate two-layer boundary, not a gap to be closed. Per-runtime detail: docs/codex-compat.md (tier-by-tier) and multi_model_sidecar_strategy.md (sidecar engines, including the Gemini→agy succession at the 2026-06-18 EOL).
Empirical result (2026-05-31): Applied to OpenCode's AI-generated permission/arity.ts (163 lines, CI green). Current gate semantics classify this as BLOCKED: 2 A-grade findings CI didn't catch (short-token overflow in allowlist, executor tools absent from arity table).
Does the method actually add anything? A measured check (2026-07-14). We held the model fixed at a
mid-tier floor and varied only the review method, on unseen gate snippets with planted default-toward-PASS
(fail-open) holes. On eight subtle holes — authored by two other models so the test set wasn't tuned to our
method — a plain review caught 5/8 (and two of those "catches" were the wrong bug, i.e. false confidence);
the same model with FH's degrade-direction lens caught 6/8 with zero false alarms. The honest part: both
single-model lanes missed the same two holes (a falsy error-sentinel, and a separator-negation parse). A
different model family, same lens, caught both — so the FH stack (lens + cross-family + a mechanical
pre-screen) reaches 8/8. The takeaway isn't a headline score; it's that the value comes from the
decorrelated stack, because even a well-prompted single model has a correlated blind spot that only a
different family closes. The two missed classes are now caught mechanically (a lint pre-screen), one layer
earlier. Small sample (single draw); reps and harder holes are the stated next step. Method + full result:
ship_readiness_gate.md.
Full spec: fh_integration_contract.md
The forge
forge-harness treats a project like steel — and the metaphor is literal, not decoration. Work is shaped, hardened by attack, and only then does it ship faster, for having survived.
| Movement | What happens | The commands |
|---|---|---|
| Forge | shape the raw project into a harness — raise its floor | install-wizard, "harness-ify this project" |
| Quench | harden it by attack — the cold pass leaves standing only what is sound | steel-quench · phantom-quench |
| Temper | take the brittleness back out of the hardened asset | steel-quench Wave-T · templates/temper_check.sh |
| → Accelerate | a blade that survived the forge cuts faster | goal-quench — Pass → Accelerate |
All four movements ship. Temper was named before it was built — deliberately (see
ETHOS.md) — and shipped once measurement runs validated it. Around the forge,
two more signatures keep it running: harvest-loop (each session's lessons become permanent skills) and
agent-composer (orchestrate the dispatch). The other skills wait until you need them — full list below.
40 skills · 8 agents
Count = non-deprecated skills (deprecated redirect stubs — kept only for old-name routing — excluded).
| Asset | Role | Triggers |
|---|---|---|
steel-quench |
Full-spectrum adversarial verification | "Run the quench", "Attack from the root" |
phantom-quench |
Phantom claim detection + source back-tracing | "Verify the source", "Grounding audit" |
harvest-loop |
End-of-session learning → evolution pipeline | "Harvest the session" |
agent-composer |
Plans optimal agent dispatch | "Run in parallel", "Which agents?" |
sim-conductor |
Meta-simulation orchestrator | "External user perspective" |
context-doctor |
Token efficiency + .claudeignore |
"Session is slow", "Clean up context" |
harness-doctor |
Harness structure diagnosis | "Check my Claude setup" |
pipeline-conductor |
4-axis quality gate (backward/adversarial/forward/record) | "Run the quality gate" |
field-harvest |
Back-propagate field patterns to hub | "I could reuse this" |
dialogue-harvest |
Mine AI-dialogue logs: strip sycophancy, label induced vs independent | "What did I actually contribute in this thread?" |
frontier-digest |
HN + arXiv → actionable insights | "AI trend digest" |
hub-cc-pr-reviewer |
Automated PR review | "Review this PR" |
verify-bidirectional |
Reverse-verify decisions | "Is that right?", "Double-check" |
deep-clarify |
Socratic requirements clarification | "I'm not sure what to build" |
install-wizard |
Initial onboarding | "First-time setup" |
plugin-recommender |
Plugin recommendations | "Is there a good tool for this?" |
apex-review |
Executive-perspective quality review | "Will this hold up?" |
meta-prompt-builder |
Meta prompt design | "Write a prompt for the agent" |
asset-placement-gate |
Hub vs project asset routing | "Should this be shared?" |
cross-ecosystem-synergy-detection |
Cross-tool synergy finder | "Are my tools working together?" |
corpus-grounding-expander |
Multi-version public-domain corpus → verified-axiom grounding store | "Broaden the grounded corpus" |
persona-roster-expander |
Persona seed → tiered, judgment-mapped cast | "Broaden these personas" |
convergence-loop (fh-commons) |
N-round convergence loops | "Single-pass seems suspicious" |
token-budget-gate (fh-commons) |
Pre-task token cost estimate | "How expensive is this?" |
mcp-circuit-breaker (fh-commons) |
MCP tool failure pattern detection | "MCP keeps failing" |
ko-tech-writer (fh-commons) |
Korean technical-writing pipeline (register calibration, translationese removal, honesty layering, perceptual QA) | "기술문서 써줘", "번역투 고쳐줘" |
quench-challenger (fh-commons) |
Adversarial pressure-test agent | "Challenge this with a devil" |
auto-decorrelation |
Recruits a different-model-family reviewer for load-bearing changes | "Decorrelate this verification" |
video-ingest |
Video → agent context, routed by capability and length | "What does this video show?" |
fh |
Renders the hub map on demand, without a greeting | "fh" |
| (+ remaining skills) | marketplace-gate · contention-layer · deliberation · edit-manifest · goal-quench · install-doctor · memory-hygiene · prompt-regression · public-surface-audit · return-path-gate · salience-splitter | |
| 8 agents | challenger · quench-challenger (adversarial) · beginner · main-player · expert (the user-mastery spectrum — cold read, daily use, domain authority) · fact-checker · hub-persona-auditor · persona-innovator |
dispatched by the skills above, or by name |
| Active count | Diagnosis |
|---|---|
| ~half the surface or more | Advanced — chain agent-composer + sim-conductor + steel-quench + pipeline-conductor |
| a handful up to that | Activation stage — gradually enable unchecked assets |
| almost none | Early stage — start with install-wizard |
These bands are a rough self-check, not a measurement — no artifact defines the thresholds, and the earlier fixed numbers were calibrated against a smaller roster, so they quietly drifted as the roster grew. Using more skills is also not the goal; using the ones your work actually needs is.
Find a skill by what you're trying to do:
| Cluster | Skills |
|---|---|
| Verification | steel-quench · phantom-quench · convergence-loop · prompt-regression · return-path-gate |
| Orchestration | agent-composer · pipeline-conductor · goal-quench · deliberation |
| Diagnosis | harness-doctor · context-doctor · install-doctor · mcp-circuit-breaker |
| Harvesting / Learning | harvest-loop · field-harvest · edit-manifest · memory-hygiene |
| Gate / Guard | token-budget-gate · asset-placement-gate · marketplace-gate |
| Discovery | plugin-recommender · cross-ecosystem-synergy-detection · frontier-digest · verify-bidirectional |
| Content / Simulation | sim-conductor · apex-review · meta-prompt-builder · deep-clarify |
| Setup | install-wizard · hub-cc-pr-reviewer · salience-splitter |
Full phrasebook — every skill + agent with its one-line definition and the plain-language phrase that triggers it:
CHEATSHEET.md§12.
Model setup
Claude Code does not auto-select models by task complexity — you configure this once.
/model sonnet # recommended default — FH dispatches stronger models itself where they matter
| Command | Who runs what | Best for |
|---|---|---|
/model sonnet |
Sonnet session; FH dispatches higher-tier sub-agents on declared floors | FH default — operation + routine dev |
/model opus |
Opus handles everything | Harness-editing sessions (Mode D) · maximum depth on every turn |
/model opusplan |
Opus plans · Sonnet executes (when Opus engages) | Cost-conscious routine coding — see caveat |
Why default Sonnet now works: measured (see Measured, not asserted below), operating FH is
nearly model-flat — the rules in context do most of the work. What still needs a stronger model is a
small set of depth-sensitive turns, and FH handles those itself: some skills and agents declare a
model-tier floor (e.g. quench-challenger floors at opus) and are dispatched as sub-agents at the
floor tier when your environment can reach it — your session model stays untouched. FH never switches
your session model: a default you set by hand is followed; floors apply only to FH's own sub-agent
dispatches. If your environment tops out below a floor (e.g. Sonnet-only API routing), the floored
asset still runs at
No comments yet
Be the first to share your take.