Skip to content

Releases: nguyenhx2/agent-harness-bootstrap

v1.19.1

Choose a tag to compare

@github-actions github-actions released this 26 Aug 08:50
3215db6

harness-bootstrap

No change to the skill. The version moves with harness-view, which fixes a serve that could not
start on Windows and reworks the viewer's file panel, filters and dialogs.


spec-builder

No functional change. The version moves with harness-bootstrap.


Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Fixed

  • serve starts on Windows. It bound one hardcoded port and gave up. Windows reserves bands of
    the ephemeral range for Hyper-V and WSL, and a bind inside one fails with os error 10013 - an
    ACCESS error, not an in-use error - so the default 7420 failed out of the box on a normal Windows
    11 machine, with a message that read like a permissions problem, and left nothing listening. It
    now falls back through a candidate list and prints the port it took. The browser is opened AFTER
    the bind, since the port asked for is not always the port bound.
  • Reading and editing a file are one box. They were two, each claiming flex: 1 1 auto with its
    own minimum height, so an editor nobody had opened still reserved 140px and pushed the file's own
    content below a band of empty space - and Edit then opened a second framed box under the first,
    showing the same file twice. Now one box: the file's name, a Preview/Code switch and Edit floating
    at its top right, and Edit swaps the body in place. The file loads on open.
  • A control that does not apply says so. A repository with no board simply had no task filter,
    and the Master plan button removed itself, so one repo showed a control and another showed a gap.
    Both now appear disabled, with "not available for this project" on hover.
  • A long list uses the dialog it is in. tools (44) scrolled inside a hardcoded 210px with
    roughly 200px of dialog empty beneath it.
  • The completion popup lists its own triggers - @ anything, ` a rule or agent, / a
    command, docs/ a file path - pinned, so the row explaining how to open the list is not itself
    below the list it explains.

Changed

  • The header carries a mark, the name Harness View, and one line saying what the tool is for.
    harness-view in bold monospace read as a command someone had pasted into the toolbar.

Install

  • unzip harness-bootstrap-v1.19.1.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.19.1.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.19.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 06:12
ce5067f

harness-bootstrap

Added

  • A bar for what earns a task, and a hook that holds it. Task creation was unbounded: nothing
    said what earns a task, and executing one agreed piece of work could leave a board with a dozen
    rows nobody approved. .claude/rules/task-tracking.md now states it plainly - a task is work the
    USER agreed to, tasks are few and large, executing a task never creates more, and no agent opens
    one on its own, subagents included. The new guard-task-scope hook refuses to create a task file
    whose requested_by: is missing, is a bare user, or is an agent name (an agent cannot approve
    its own task), and one with fewer than two real acceptance criteria. Both hook flavours, six new
    eval cases, and the eval is now 112/112 per flavour.
  • /new-task asks and waits. Unless your own message already asked for the task, the command
    puts it to you with AskUserQuestion before writing anything - the same discipline
    /harness-toggle uses for a protected control, where a confirmation counts only when you gave it
    yourself. The hook records the claim; the asking is the gate.

Fixed

  • The scanner a bootstrapped repo runs gained the per-folder CLAUDE.md support that shipped
    in harness-view a version ago but never reached this scanner. A project with src/api/CLAUDE.md
    now shows all its contracts in the graph, not just the root one.
  • The published "bytes the model must write" figure stopped tracking the size of rules this skill
    SHIPS. It was estimated as median(shipped rule size) x 3, so improving a shipped rule inflated
    the figure and dropped the reduction headline. It is now a declared per-rule size with the basis
    stated, plus a measured vars.json.

spec-builder

No functional change. The version moves with harness-bootstrap.


Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Added

  • assess reports a per-folder contract that governs a subtree and says almost nothing. A
    nested CLAUDE.md applies to every change under its directory, so an empty one is worse than
    none: the folder reads as governed and whoever opens the file to learn how stops looking. Whether
    the rules inside are right is not something a scanner can know, and it does not pretend to.

Install

  • unzip harness-bootstrap-v1.19.0.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.19.0.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.18.2

Choose a tag to compare

@github-actions github-actions released this 21 Aug 09:19
84bd63c

harness-bootstrap

No change to the skill itself. The version moves with harness-view, which gained per-folder
instruction-file support, and with the landing page.


spec-builder

No functional change. The version moves with harness-bootstrap.


Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Added

  • Every CLAUDE.md, not just the one at the root. A project can carry one per folder - Claude
    Code reads the copy governing the directory being worked in - and this viewer treated it as a
    single file at the top. A repo with src/CLAUDE.md, src/api/CLAUDE.md and docs/CLAUDE.md
    showed one contract in the graph and obeyed four, which is worse than showing none: a viewer
    whose whole job is "here is what governs this repository" is believed. Every copy is now its own
    node, and every copy is editable. AGENTS.md is treated the same way.

    The walk is capped at 8 levels and 200 files, skips dot-directories and vendored or build trees -
    a CLAUDE.md under node_modules belongs to someone else's project - and does not follow
    directory symlinks. The nested path is validated component by component before any path is built,
    and the last component must be the file itself.

  • Tool categories in the roster editor carry colour. The catalogue is 44 rows and every chip on it
    was the same grey, which leaves the category unable to answer the question it exists for.
    execute and agent - the two worth hesitating over while ticking boxes - now stand off the page.

Fixed

  • A button's kind is set where the button is made. ui-steps.js had been inferring colour from the
    sprite each button carried, so renaming an icon in ui.js would silently drain the colour out of
    a panel in another file with nothing failing.

Install

  • unzip harness-bootstrap-v1.18.2.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.18.2.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.18.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 22:37

harness-bootstrap

Fixed

  • Updating to a new skill version no longer invents conflicts. .gitattributes checks this
    repo's text out native, so a skill cloned on Windows holds CRLF while the same skill in WSL, in
    CI, or unzipped from a release holds LF. Bootstrap from one and update from the other and every
    text asset differed by one byte per line: a real 1.17.0 to 1.18.0 upgrade reported 14 conflicts,
    seven of them fake - five .gitkeep files, .claude/.gitignore and spawn-allowlist,
    identical in every character. A reconciliation queue nobody can read is a reconciliation queue
    nobody works, and taking a new version is the one moment when reading it matters most. The
    scaffolder now forgives line endings and nothing else: a file you edited still conflicts, and a
    binary asset is still compared byte for byte.
  • spec-builder ships 8 optional spec sections, not 9. The README was right and docs/FLOWS.md,
    the presentation outline and the deck in three languages were wrong. The number is now derived
    from the manifest and checked on every surface that states it, in all three languages.

spec-builder

Fixed

  • The published count of optional spec sections is 8, not 9, and it is now derived from
    assets/manifest.json rather than remembered. A section is optional exactly when its entry
    carries a when flag; the core six plus the folder README are unconditional.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Added

  • Instruction files are nodes. AGENTS.md, CLAUDE.md and the per-tool equivalents appear in
    the leftmost column - they are the contract every seat reads, so they sit before the rules - and
    they are editable in place. New edges show which seats a contract briefs, which rules it cites,
    and that CLAUDE.md imports AGENTS.md. Paths were researched rather than assumed, and the one
    that could not be confirmed against a first-party source is marked unverified instead of
    being claimed.
  • The routing tiers are visible. The Direct / Standard / Guarded table is parsed out of
    whichever file states it and rendered as its own panel, and any seat the table names carries a
    tier badge. Direct and Standard name nobody, so nobody is badged for them.
  • A step's table is edited in a grid, not by hand-aligning pipes. A real routing table is 17
    rows; it used to arrive as a wall of | in a box four lines tall. Rows and columns can be added
    and removed, and a one-cell edit produces a one-line diff, because each row is written back from
    its original bytes unless its cells actually changed.
  • @ opens a picker over everything taggable - seats, rules, skills, commands and repository
    paths - with no word typed, and inserts the citation this repo actually uses for whatever is
    chosen. The three older triggers each required knowing which kind of thing you were citing,
    which is fine once you know the harness and useless before you do.

Changed

  • Skills have their own Flow column. Sharing the hooks column reads fine with two skills and falls
    apart with twenty: a column of purple ran through the middle of six yellow hooks and the
    enforcement layer - the part of the picture that says what can say no - could not be picked out.
  • Dialogs are 760px, 1040px for the roster editor, and resizable. Footer buttons carry one of
    six colours so a destructive action is never one careless click from a confirm.
  • The edge animation runs at 0.22 px per frame instead of 0.7. At the old speed the eye tracked the
    motion instead of the direction it was pointing.

Fixed

  • A CRLF file made the instruction editor report itself unsaved forever: a textarea normalises to
    LF, so the buffer never equalled the stored original.
  • Two tests passed only on an older checkout. .gitattributes marks *.md as text, so a fresh
    Windows clone gets CRLF fixtures
    and both compared them against LF literals.

Install

  • unzip harness-bootstrap-v1.18.1.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.18.1.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.18.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 17:49

harness-bootstrap

Changed

  • Process is now proportional to the change. Until now every change ran the same route: through
    the orchestrator, decomposed into tasks, with a reviewer pass after each agent. For a one-line
    backend fix that meant a planning pass, a task file, a test agent and two reviewers before
    anything landed - slow enough that people stop reaching for the harness on small work, which is
    most work. AGENTS.md now carries a tier table, read before anything is dispatched:

    • Direct - one module, reversible, no contract, schema, auth, payment or infrastructure
      touched. The owning agent is called straight. No orchestrator, no task file.
    • Standard - one domain, several files, or an FR behind it. Still the owning agent; a task
      file only when the work has to survive a compacted session.
    • Guarded - two or more domains, or schema, auth, money, a public contract, a migration, a
      deploy, or personal data. The orchestrator, and the full flow.

    Choosing a heavier tier than the change needs is now stated to be a defect, not caution.

  • The orchestrator hands back work it should not have taken. Its description and its dispatch
    section both say so: a single-domain assignment off the Guarded list is named back to the seat
    that owns it. Decomposing anyway is pure overhead - every sub-task is a dispatch, a brief, a board
    row and a log entry.

  • Gates run once, on the branch, not after every agent. /review-changes is that boundary. A
    reviewer dispatched after each agent re-reads the same files once per agent and reports the same
    findings each time, which is most of what made a small change feel expensive. Security review
    belongs to that boundary and to any moment you ask for it; it is no longer a per-task step, and
    security-reviewer, code-reviewer and reviewer each say so in their own description.

  • The orchestrator waits instead of checking. It no longer polls a running agent for progress,
    and it no longer re-derives a finished agent's conclusion to satisfy itself that the work
    happened. When the agent reports, the check is on the result and it is one call: git status and
    git diff --stat answer "did this land, in the files it said". The full diff is read for a
    Guarded change, or when the stat disagrees with the report.

  • The other half of that trust: dev agents report evidence, not status. Nobody re-runs their
    work to find out whether it happened, so a bare "done" is no longer a result. The seat names the
    files it changed, the criterion each change satisfies, the command whose output proves it, and -
    explicitly - whatever it could not verify.


spec-builder

No functional change in this release. The version moves with harness-bootstrap: the two skills
always share one number.


Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Added

  • A roster editor. A seat's model, effort, tools and description can be edited from the
    graph, with pickers backed by a reference of four vendors (Claude Code, OpenAI Codex, Gemini CLI,
    Z.AI GLM). Every model and tool carries a verified flag, and unverified entries are marked
    wherever they appear. The reference is yours to change: additions, edits and deletions are stored
    per repository in .claude/state/references.json and merged over the shipped seed, so an upgrade
    never loses them and the shipped file is never written. A seed entry's verified always comes
    from the seed - an override can correct a label, not promote or demote a claim.
  • The Command Steps panel became an editor. Autocomplete for agent names, rule files, hook names
    and relative paths; steps can be inserted at any position; markdown inside a step renders, tables
    included, and shows its source again when you edit it.
  • Frontmatter writes touch only the keys that changed. The body below the frontmatter is copied
    through byte for byte; unknown keys, comments, blank lines and key order all survive, and CRLF
    stays CRLF.

Changed

  • Custom dialogs and toasts replace the browser's alert and confirm, with focus trapping,
    focus restored on close, and an accessible name on every icon-only button. Every button carries an
    icon.
  • Disabling a rule, hook or command no longer collapses the detail panel: the selection survives the
    reload.

Install

  • unzip harness-bootstrap-v1.18.0.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.18.0.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.17.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 13:02

harness-bootstrap

Added

  • The eight harness-management commands now ship with the plugin, not only into a bootstrapped
    repo. Until now harness-bootstrap/ held a skill and nothing else, so /harness-tune,
    /harness-toggle, /harness-update, /agent-permissions, /board-audit, /code-graph,
    /docs-graph and /skill-wire existed only after a bootstrap had written them into that
    repo's .claude/commands/. Installing the plugin and typing /harness-tune found nothing,
    which read as the commands being broken rather than absent. They are now also in
    harness-bootstrap/commands/, available anywhere as /harness-bootstrap:<name>.
  • The plugin copies are repo-agnostic where the scaffolded ones are substituted: they read the
    deploy command, the destructive commands, the sensitive paths and the reviewer layout out of
    settings.json and the roster and quote them back, rather than having intake's answers baked
    in, and each one states plainly when the current directory has no .claude/. The delivery
    commands stay scaffold-only on purpose - a /deploy that guesses is worse than no /deploy.

Changed

  • harness-toggle.py toggles agent seats. A parked seat moves to .claude/disabled/agents/
    and comes back byte-identically, exactly like a rule. Every seat is at least SOFT (--yes),
    because the orchestrator's routing table still lists it and a parked seat leaves a dispatch
    pointing at nothing; orchestrator, code-reviewer, security-reviewer, reviewer and
    spec-guardian are HARD (the typed phrase), because only the orchestrator spawns and the review
    seats are the code-review gate. Adding or retiring a seat is still /harness-update.
    Both scanners already read .claude/disabled/agents/, so graph parity is unaffected - verified
    byte-identical with a seat parked.

spec-builder

Fixed

  • No change in this skill. Released with the repo 1.17.0 plugin-commands and viewer-editing work.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Added

  • Command steps are editable. Selecting a command renders its numbered steps as a chain of
    cards that can be reordered by dragging a step's number, switched off, and retitled, with one
    Save writing everything at once and Revert discarding it. Nothing reaches disk until Save, so a
    mis-drop costs a Revert rather than a file.
  • POST /command, the write path behind it. It takes a bare command NAME and builds the path
    itself, so the only file it can write is .claude/commands/<name>.md: .., a separator or a
    drive letter fail the character check before a path exists. Same-origin gate as POST /toggle,
    512 KB cap, empty bodies refused.
  • Serialization is surgical: only the line spans the steps occupy are rewritten, and an unedited
    step is written back as the bytes it arrived as. Three tests pin the consequences - every fixture
    command re-serializes byte-identically when nothing was edited (line endings included),
    switching a step off and back on restores the original, and reordering leaves a section's closing
    prose at the end instead of dragging it up the page behind the step it was attached to.

Changed

  • HARD-protected controls can be disabled from the page. They used to refuse with 403 and
    offer no way forward, which meant the viewer could show a control it could never act on. The
    request now takes confirm_hard, and the page prompts for the phrase disable <name> and sends
    what was typed, byte for byte - nothing trimmed, nothing case-folded, so a near miss is refused
    again. This is the same gate /harness-toggle applies as --confirm; in the CLI the rule is
    that the model must never compose the phrase, and in the browser there is no model in the loop
    at all, so the human typing it is the gate.
  • Agent seats toggle. kind: "agent" is accepted, the detail panel offers the control, and a
    parked seat greys out in the graph. Every seat is at least SOFT and the sole spawner plus the
    review seats are HARD - matching harness-toggle.py, which gained the same tiers in this
    release.

Install

  • unzip harness-bootstrap-v1.17.0.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.17.0.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.16.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 09:03

harness-bootstrap

Fixed

  • No change in this skill's assets. Released with the repo 1.16.0 landing-page rebuild.

spec-builder

Fixed

  • No change in this skill. Released with the repo 1.16.0 landing-page rebuild.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Fixed

  • No functional change in this tool. Released with the skills' 1.16.0 to keep the versions in step.

Install

  • unzip harness-bootstrap-v1.16.0.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.16.0.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.15.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 06:51

harness-bootstrap

Fixed

  • The Codex packaging of this skill is now verified against the real client: codex plugin add harness-bootstrap@agent-harness-bootstrap installs it and the skill lands in the plugin cache. Three manifest defects found and fixed; see the root CHANGELOG.

spec-builder

Fixed

  • The Codex packaging of this skill is now verified against the real client: codex plugin add spec-builder@agent-harness-bootstrap installs it and the skill lands in the plugin cache. Three manifest defects found and fixed; see the root CHANGELOG.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Fixed

  • No functional change in this tool. Released with the skills' 1.15.1 to keep the versions in step.

Install

  • unzip harness-bootstrap-v1.15.1.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.15.1.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.15.0

Choose a tag to compare

@github-actions github-actions released this 20 Aug 05:12

harness-bootstrap

Added

  • Ships as an Agent Plugins 1.1.0 package under plugins/harness-bootstrap/, so it installs
    in Cursor, Codex, VS Code, Copilot and Kiro as well as Claude Code. The package is generated
    from this skill by scripts/build_plugins.py and CI fails when the two drift apart.

spec-builder

Added

  • Ships as an Agent Plugins 1.1.0 package under plugins/spec-builder/, so it installs in
    Cursor, Codex, VS Code, Copilot and Kiro as well as Claude Code. The package is generated
    from this skill by scripts/build_plugins.py and CI fails when the two drift apart.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Fixed

  • No functional change in this tool. Released with the skills' 1.15.0 to keep the versions in
    step.

Install

  • unzip harness-bootstrap-v1.15.0.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.15.0.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS

v1.14.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 04:02

harness-bootstrap

Fixed

  • No change in this skill's assets. Released with the repo 1.14.1 media fix so the versions
    stay in step.

spec-builder

Fixed

  • No functional change in this skill. Released with the repo 1.14.1 to keep the versions in
    step.

Tools

Downloadable builds for Windows, macOS and Linux are attached to this release.

harness-view

Fixed

  • No change to the binary's behaviour. The published SCREENSHOTS of its web UI carried a
    stale version in the footer (v1.12.0 on the landing page and README while the release
    was v1.14.0) - the same burned-into-pixels drift the clips had. Retaken from this
    release's binary, with a provenance gate so a release can no longer ship them stale.

Install

  • unzip harness-bootstrap-v1.14.1.zip -d ~/.claude/skills/
  • unzip spec-builder-v1.14.1.zip -d ~/.claude/skills/
  • Verify with sha256sum -c SHA256SUMS