| 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
# 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 ~/forge-harness
cd ~/forge-harness
# 3. Start a session
claude
✅ Claude reads
CLAUDE.mdand asks what project to connect or what task to start. Say "Connect a project" → hub scans../, finds.gitdirectories, createstracks/{project}/.
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) |
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 is the goal it is built toward. In practice it works in four ways:
① Assemble — FH runs a cluster of harnesses at optimized token cost and hands you the right one for the project. You don't wire up skills one by one; you get a harness — its plugins, skills, and agents included — assembled to fit.
② Forge (the quality gate) — every change earns its way through adversarial · phantom · regression gates. This is not "check more." It is a responsibility router: as automation rises, human sign-offs get fewer but heavier, so the gate spends your attention only where a change is irreversible. Quality is the lever; the speed is the result.
③ Sidecar — capability itself stays on the frontier. FH dispatches across multiple LLMs (Claude, Codex, Gemini, local) so raw power is never tied to one model or one generation. The point is not patching each model's weak spots — that scaffolding dies as models improve. It is riding the frontier's evolution: shed what the substrate now does natively, absorb what it ships next. Decorrelation is today's trust lever (a cross-family panel beats a single model's ceiling); co-evolution is the structure.
④ Self-evolving loop — the harness gets better without being rebuilt, in two directions: outward, where each session's lessons compound into the hub so the next project starts faster, and inward, where it catches and repairs its own defects (the 4-axis gate, bidirectional verify, per-user adaptation).
The whole thing is a division of labor: raw capability is the model's; assembly, trust, and evolution are the harness's.
Self-healing here isn't a claim — it's in the commit log. This very README's voice rules were fixed mid-session by FH catching its own drift: a tone miss → diagnosis → a cross-family challenger that attacked its own first fix → re-fix → floor-tier re-verification → memory update. A harness repairing its own defect, on the record — not a slogan.
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
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.
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.
38 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" |
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" |
quench-challenger (fh-commons) |
Adversarial pressure-test agent | "Challenge this with a devil" |
| (+ additional assets) | marketplace-gate · contention-layer · edit-manifest · fact-checker · goal-quench · hub-persona-auditor · install-doctor · memory-hygiene · persona-innovator · prompt-regression · public-surface-audit · salience-splitter |
| Active count | Diagnosis |
|---|---|
| 28+ | Advanced — chain agent-composer + sim-conductor + steel-quench + pipeline-conductor |
| 10–27 | Activation stage — gradually enable unchecked assets |
| 0–9 | Early stage — start with install-wizard |
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 §Model setup evidence note 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 the best available tier with an explicit below-floor flag in its output — degraded
delivery is visible, never silent (tier-floor resolution: knowledge/shared/harness-core/multi_model_sidecar_strategy.md §Tier-floor).
opusplan caveat (measured): its Opus engagement is not guaranteed — in a measured 10-turn run
it used Opus on 0 turns (CC classifies few turns as "plan-mode"). If you want Opus on every turn,
pin /model opus (22/22 turns Opus in the follow-up run). Sub-agent dispatch model is set by the
dispatch's own model parameter; the session model/plan-mode does not propagate to sub-agents.
By role: running FH (field projects, gates, routine dev) →
/model sonnet+ let the floors escalate. Editing the harness itself (Mode D) → pin the strongest model you have — harness self-development is where tier depth measurably pays (design-increment finding), while operation does not. Sub-agent token costs are CC-visible in the session jsonl undermessage.model.
Measured, not asserted (worked examples): on a blind rule-application battery, operating FH is near model-flat — every Claude tier measured scores 94–100% (Fable, Opus 4.8, Sonnet 4.6 and 5, Haiku 4.5); the few lost points are format discipline, never a trap or gate-class miss. The tiers separate only on above-rubric design increments (developing the harness, not running it) — which is why the default is Sonnet with tier-floored dispatch covering the depth-sensitive turns, and a pinned stronger model is recommended only for harness-editing sessions.
This is stated as an invariant, not a per-model leaderboard. Two structural laws, neither of which a new release overturns:
- Operation flattens across tiers — the rules-in-context do the work, so every tier ceilings on rule-application (Sonnet 5 tied Opus 4.8 at the battery ceiling in a 2026-07-03 replication).
- Depth (design increments) is tier-ordered, and the order is fixed within a generation — a lower tier never overtakes the higher of the same generation (tiers are priced to be worth it, so the vendor keeps them ordered). Across generations a newer lower-tier model can surpass an older higher-tier one (Sonnet 5 ≥ Opus 4.8 on operation is exactly this cross-generation case) — but the current top tier of any generation still wins its own depth turns.
So the doctrine is permanent, not perishable: default to the mid tier for operation; escalate to the
current top tier for depth. Re-measurement is warranted only when a new model becomes a field-main
candidate (a one-time cross-generation threshold check), never to re-confirm same-generation tier order
— that is guaranteed by design. Details + dated runs: docs/OUTPUT_EVIDENCE.md §Validation signals.
If you use external CLIs (Gemini, Codex, gh copilot) as sidecars, their costs are billed to their own quota and not visible in CC's token display.
Hardware tiers (local sidecars are optional accelerators)
FH needs no local LLM — the baseline is whatever runs Claude Code. Local models are optional, for the canary / cheap-breadth rungs only:
| Tier | Spec | Runs locally | What it buys |
|---|---|---|---|
| Minimum | anything that runs Claude Code | nothing | full methodology + gates; operating FH is ~model-flat across every tier tested (94–100%) |
| Recommended | laptop-class, ~16GB RAM | one 8B-class quantized model (e.g. an 8B / small Gemma) | a token-free floor canary (pre-screen before a metered sim) · offline triage · a cheap-breadth panel arm |
| Optional (heavy) | ~24GB VRAM GPU | a 27–32B model | a stronger decorrelation canary |
Local tiers are canaries, never the terminal verdict — measured: the floor model missed a subtle adversarial case the frontier caught (and even a 27–32B local scored 1/4 on it). They lower the cost of breadth; the verdict stays frontier.
Multi-Model Sidecar
Run Gemini, Codex, or gh copilot as independent reviewers alongside Claude. The point is context
isolation: a reviewer that did not co-create the work is cold to its froth — whoever sits outside the
collaboration tends to catch what the co-author, now an advocate for the shared result, glides past. It's
symmetric, not a model-ranking: when you co-build with Gemini, a fresh Claude catches its froth; when you
co-build with Claude, a fresh sidecar catches Claude's.
In one internal case study, layering reviewers surfaced progressively more issues — a single in-session pass missed items that cross-session personas caught, and an external-CLI reviewer surfaced a few the Claude personas shared a blind spot on. Treat it as a worked example, not a benchmark: the gain scales with task complexity and how much you co-created the artifact, and an isolated reviewer also adds false positives you have to triage. Whether the net is worth it on a given task is an empirical, per-use question.
Claude-side token cost does not increase when the extra reviewer is an external CLI — it bills to its own quota.
Research
FH papers — the methodology below is documented, not just asserted:
- v1.0 — methodology · Zenodo (DOI 10.5281/zenodo.20397566). 2-layer design, 6-axis framework, 4-agent orchestration, and the compounding loop, with empirical evidence.
- cs.SE companion — governance-gate methodology · published Zenodo (DOI 10.5281/zenodo.20680081 · latest v1.1 10.5281/zenodo.20740038 · CC-BY-4.0) · arXiv submitted (cs.SE, in moderation).
- cs.AI companion — "Governance Dividend" · in preparation.
External convergence:
- "Dive into Claude Code: The Design Space of Today's and Future AI Agent Systems" — arXiv April 2026
- "Code as Agent Harness" — arXiv May 2026
- Stanford IRIS Lab: "Meta-Harness" — +7.7pts at 4× fewer tokens
Learn more
| Resource | Purpose |
|---|---|
CLAUDE.md |
AI operating rules + sync/push protocol |
CHEATSHEET.md |
Full command reference |
AGENTS.md |
Runtime agent specs |
CATALOG.md |
Past work search index |
CONTRIBUTING.md |
How to contribute skills and patterns |
tracks/_contrib/ |
Consent lane — share a de-identified work session; the repo compounds across operators, not just locally |
fh_integration_contract.md |
Governance gate spec |
No comments yet
Be the first to share your take.