{
  "markdown": "# harness-boot\n\n> [English](README.md) · [한국어](README.ko.md)\n\n> **Your AI has speed. We give it direction.**\n\nharness-boot is a multi-agent development harness for Claude Code. Where most AI tools add *capability*, we add *focus*.\n\n[![plugin](https://img.shields.io/badge/plugin-v0.15.11-blue)](.claude-plugin/plugin.json)\n[![tests](https://img.shields.io/badge/tests-866%20passing-brightgreen)](tests/parity)\n[![license](https://img.shields.io/badge/license-MIT-lightgrey)](LICENSE)\n\n---\n\n## 🐎 Why a *harness*?\n\nA loose horse runs fast in every direction. A harnessed horse runs fast toward something.\n\n```\nYou  ──▶  ① Convert  ──▶  ② Evolve  ──▶  ③ Focus  ──▶  ④ Collaborate  ──▶  ⑤ Unify  ──▶  Result\n          (the context)   (the docs)      (the rules)    (the experts)        (two commands)\n```\n\n---\n\n## Five strengths\n\n| # | Strength | How it works | What you get |\n|---|---|---|---|\n| 1 | **Convert** | Plain-language ideas convert into an intermediate language — structured specs that every AI agent can act on directly | Same context for every agent — less guessing, sharper output |\n| 2 | **Evolve** | Edit one place, the rest stays in sync; mismatches surface automatically; your manual tweaks survive | Design docs are always current — no manual upkeep |\n| 3 | **Focus** | Each agent works inside its lane; completion criteria are enforced by the system, not by trust | AIs stay on the work that's theirs |\n| 4 | **Collaborate** | Role-specialized agents follow set procedures; every decision and disagreement is recorded | Blind spots get covered, every step is traceable |\n| 5 | **Unify** | Two slash commands. Talk to it in plain English; see the plan before anything runs | Almost nothing to memorize |\n\n---\n\n## Architecture\n\n```\n        Plain language / plan.md / existing code\n                  │\n                  ▼\n   ┌──────────────────────────────────────────┐\n   │  spec.yaml  (single source of truth)     │\n   │   ├─ Ideas      — vision · users         │\n   │   └─ Rules      — features · decisions   │\n   └──────────┬─────────────────┬─────────────┘\n              │                 │\n       Auto-derived         Expert collaboration\n              │                 │\n              ▼                 ▼\n   ┌────────────────┐  ┌──────────────────────┐\n   │ domain.md      │  │ orchestrator         │\n   │ architecture   │  │  ├─ Planning         │\n   │ events.log     │  │  ├─ Design           │\n   │ chapters/      │  │  ├─ Implementation   │\n   │ drift detector │  │  ├─ QA · Integration │\n   └────────────────┘  │  └─ Audit (read-only)│\n                       │  + ceremonies        │\n                       └──────────────────────┘\n                                │\n                                ▼\n                         /harness-boot:work\n                  (no args = dashboard · words = intent)\n```\n\n---\n\n## Quick start\n\nIn Claude Code:\n\n```bash\n/plugin marketplace add qwerfunch/harness-boot\n/plugin install harness-boot@harness-boot\n\ncd my-new-project\n```\n\nPick the entry point that fits — both feed into the same harness:\n\n```bash\n# A. From a one-line idea\n/harness-boot:init \"a simple to-do app\"\n\n# B. From an existing planning doc (plan.md, design notes, a sketch)\n/harness-boot:init plan.md\n```\n\nThen drive every feature through the lifecycle:\n\n```bash\n/harness-boot:work\n```\n\nIf it takes more than 5 minutes, [open an issue](https://github.com/qwerfunch/harness-boot/issues). We'll fix it.\n\n---\n\n## Manual install\n\nUse this when you want to run from a local clone — for contributors, forks, or offline setups. The repo's `.claude-plugin/marketplace.json` makes any clone act as a self-hosted marketplace.\n\n> Note: harness-boot is not listed in the official Claude Code marketplace yet — the `qwerfunch/harness-boot` form above resolves to this GitHub repo directly.\n\n```bash\ngit clone https://github.com/qwerfunch/harness-boot.git\ncd harness-boot\n```\n\nThen in Claude Code (use the absolute path of the clone):\n\n```bash\n/plugin marketplace add /absolute/path/to/harness-boot\n/plugin install harness-boot@harness-boot\n```\n\nTo update later, `git pull` in the clone and run `/plugin marketplace update harness-boot`.\n\n---\n\n## How to use it\n\n### Talk to it in plain English\n\nAppend whatever you'd normally say after `/harness-boot:work`. Short keywords and full sentences both work.\n\n| Intent | What you can say |\n|---|---|\n| Dashboard / what's next | (no args) · \"what's on my plate?\" · \"where am I?\" · \"what should I do next?\" |\n| Run checks | \"test it\" · \"run the gates\" · \"check what's there\" · \"make sure nothing's missing\" |\n| Mark as done | \"it's done\" · \"ready to ship\" · \"I think we're good\" · \"let's wrap up the login feature\" |\n| Block / pause | \"I'm stuck\" · \"pausing this\" · \"the upstream API isn't ready\" · \"calling it for the day\" |\n| Start / switch | \"login feature\" · \"let's do signup next\" · \"F-3\" · \"tackle billing first\" |\n| Resume | \"keep going\" · \"back to yesterday's work\" · \"do the recommended one\" |\n| Add evidence | \"I checked\" · \"got reviewed\" · \"a friend tried it\" · \"QA passed\" |\n| Drop a feature | \"skip this one\" · \"cancel\" · \"F-9 — never mind\" |\n| Look back | \"what did I do last week?\" · \"history of F-3\" · \"why did we go with OAuth?\" |\n\nThese are just samples — Claude reads context and handles other phrasings too. When it isn't sure, it shows you the plan and asks Y/n before running anything.\n\n### A short conversation\n\nA typical happy path — start a feature, run the gates, mark it done.\n\n```\nYou> let's start the login feature\n\nClaude> Starting Login (F-3).\n        To finish: smoke run (gate_5) PASS + at least 1 evidence.\n        Next: run the gates.\n\nYou> run them\n\nClaude> tests             (gate_0)       PASS — 19 unit tests\n        smoke run         (gate_5)       PASS — evidence auto-saved\n        type/lint/coverage (gate_1/2/3)  SKIPPED — no tool detected\n        Iron Law satisfied (smoke run + evidence). Mark Login (F-3) done? [Y/n]\n\nYou> Y\n\nClaude> Done. Retro saved: .harness/_workspace/retro/F-3.md\n        Up next: Signup (F-4). Say \"switch\" or \"show what's left\".\n```\n\n### Dashboard output\n\n```\nharness-boot\n\nActive: \"Login feature\"\n  Progress: 3/6 gates passed · 2 evidence\n  Blockers: accessibility · Space-key behavior unclear\nPending: \"Signup\" · \"Forgot password\"\nNext: (1) run the next gate (recommended)\n```\n\n---\n\n## Built with harness-boot\n\n| Project | Preview | Demo | Source | Description |\n|---|---|---|---|---|\n| **cosmic-suika** | <a href=\"https://qwerfunch.github.io/cosmic-suika-pages/\"><img src=\"docs/assets/cosmic-suika.png\" alt=\"cosmic-suika preview\" width=\"240\"></a> | [Play](https://qwerfunch.github.io/cosmic-suika-pages/) | [GitHub](https://github.com/qwerfunch/cosmic-suika-pages) | Space-themed merge game |\n| *Yours next* | — | — | — | Add your harness-boot project here |\n\n**Built something?** Open a [PR](https://github.com/qwerfunch/harness-boot/pulls) adding your project to the table — copy an existing row as a template. Or open an [issue](https://github.com/qwerfunch/harness-boot/issues) with the image and a one-liner if a PR is overkill.\n\nSend any image, GIF, or screenshot that shows the project — plus a one-liner and a link. We'll optimize and place it on merge. Full guide: [`docs/assets/README.md`](docs/assets/README.md).\n\n---\n\n## Benchmarks\n\nDoes harness-boot actually produce better output than vanilla Claude Code — fewer tokens, more issues resolved? The framework for an apples-to-apples comparison is public, with the methodology, task list, and reproduction scripts open for inspection.\n\n- **Suite**: SWE-bench Verified (20-task subset across 9 popular Python repos: django, sympy, scikit-learn, matplotlib, sphinx, pytest, requests, flask, pylint, astropy, pandas, xarray)\n- **Measures**: resolve rate · token consumption · wall time · code quality signals (LOC, tests added, drift catches)\n- **Status**: framework public, measurement in progress\n- **Read**: [`docs/benchmark/swe-bench-verified/REPORT.md`](docs/benchmark/swe-bench-verified/REPORT.md) — results table fills in row-by-row as runs complete\n- **Methodology**: [`docs/benchmark/swe-bench-verified/README.md`](docs/benchmark/swe-bench-verified/README.md) — why SWE-bench Verified, why 20 tasks, what's measured\n- **Reproduce**: [`docs/benchmark/swe-bench-verified/scripts/setup.md`](docs/benchmark/swe-bench-verified/scripts/setup.md) — end-to-end external setup\n- **Validity caveats**: [`docs/benchmark/swe-bench-verified/analysis/threats-to-validity.md`](docs/benchmark/swe-bench-verified/analysis/threats-to-validity.md)\n- **Privacy**: the auto token capture (Stop hook · F-174) reads only the local transcript file Claude Code already wrote and appends token counts + the model id to your local `events.log`. No network access. Set `HARNESS_DISABLE_TOKEN_HOOK=1` to opt out entirely.\n\n---\n\n## Repository layout\n\n```\nharness-boot/\n├── .claude-plugin/        plugin.json · marketplace.json\n├── agents/                specialist agent definitions\n├── commands/              slash commands (init · work)\n├── hooks/                 session-bootstrap · prompt-log\n├── src/                   TypeScript implementation\n├── dist/cli/              esbuild single-file bundle (committed; no node_modules at install site)\n├── bin/harness            Node shim that loads the bundle — `harness <subcommand>`\n├── self_check.sh          5-step self-dogfood verification\n├── skills/spec-conversion/  plan.md → spec.yaml conversion\n├── docs/                  schema · templates · samples · portfolio assets\n└── tests/parity/          TS parity test suite\n```\n\n---\n\n## Status\n\n**v0.15.0** — Adaptive drive + structural archive separation + plugin-level writing rules (F-129 → F-140). Iron Law gains paired `perf_regression` / `perf_resolved` evidence kinds so silently-regressing perf cycles can no longer ship. `complete()` now relocates done feature bodies into a sibling `spec.archive.yaml` and `harness sync` migrates pre-existing bodies in one pass — `spec.yaml` stays slim by construction. `harness drive` becomes adaptive: deterministic replan after each completion, periodic real-test injection (`harness.yaml drive.real_test.command`), and transient-retry on flaky e2e. Plugin-level `docs/communication-rules.md` standardises answer-first format and native-tone replies for any user language.\n\nPreviously: **v0.14.3** — Stability + cleanup batch (F-122 → F-128). `tests/parity/driveLoopAndPlan.test.ts` time-bomb fixed (F-122) so CI on every downstream fork stays green; CLAUDE.md brought back in sync (F-123) and refactored into stable / semi-static sigil / volatile-pointer layers so future drift is structurally prevented (F-124); the pre-cutover Python footprint (`legacy/scripts/`, `tests/unit`, `tests/integration`, `tests/scale` — ~28 k lines combined) evicted from git tracking, working trees preserved locally (F-125 + F-126); `hooks/pre-commit-phase2.sh` now short-circuits during git's own merge / cherry-pick / revert / rebase finalizers so conflict-resolution commits no longer require `HARNESS_BYPASS_PRE_COMMIT=1` (F-127). Zero capability addition, zero behaviour change; v0.14.2 installs are functionally identical.\n\n**v0.14.0** — `drive` ships (F-118 + F-119). New autonomous-loop slash command `/harness-boot:drive \"<natural-language goal>\"` that scaffolds a *Goal* (a container that groups N features) via researcher → product-planner → feature-author and then runs every feature's gate cycle to completion. **Bounded by design**: BR-015 forbids self-issued `--hotfix-reason`, `git commit/push/tag`, and any shared-state mutation; the loop *halts* on 9 enumerated conditions (commit boundary, retry threshold, drift error, blocked feature, wall-clock, iteration cap, network failure, STOP file, plan-phase approval) and yields back to the user. Read-only `harness drive --status [G-N] [--all] [--json] [--watch]` is mtime-invariant (CQS, BR-012).\n\nPreviously: **v0.13.2** — Repo root cleanup (F-117): dead Python config (`pytest.ini`, `requirements-dev.txt`) removed after the v0.13 TS-only cutover. No behavior change.\n\n**v0.13.1** added the `feature-author` skill — auto-triggers on Korean (\"X 기능 구현해줘\", \"X 만들어줘\") or English (\"draft a feature\", \"spec out X\") prompts to scaffold a complete `features[]` entry with shape detection, project-mode-aware AC count, and lockstep paste instructions.\n\n- Changelog — [CHANGELOG.md](CHANGELOG.md)\n- Developer guide — [CLAUDE.md](CLAUDE.md)\n- Issues — [GitHub Issues](https://github.com/qwerfunch/harness-boot/issues)\n\n```bash\n# For contributors building from source (devDependencies only —\n# end users install via /plugin install and need no npm step):\nnpm install\nnpm test            # vitest suite (parity tests)\nbash self_check.sh  # 5-step structural verification\n```\n\n---\n\n## License\n\n[MIT](LICENSE) — Free to use, free to fork.\n",
  "bytes": 12793,
  "sha": "d24d0d57a2e1e6d19bc067dfbaf633d3e208b7b7e2e67443f1eafff54c384387",
  "repo_slug": "qwerfunch/harness-boot",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_qwerfunch_harness_boot_harness_boot_bbb1b8cb/readme"
}