Changelog
The source of truth is
CHANGELOG.md
at the repo root. Each release publishes its section as the
GitHub Release notes, and
this page renders the unreleased section followed by those releases, both
pulled in at deploy time (see .github/workflows/deploy-docs.yml).
-
addit-harness--v0.4.1
2026-10-01
Fixed
- Typing
/addit-harnesslisted every skill twice. The plugin shipped a thincommands/<name>.mdnext to each skill (a workaround for anthropics/claude-code#18949), and current Claude Code shows a command and a skill with the same name as two entries (#88050). Thecommands/folder is removed; the skills are the slash commands, unchanged. A test now fails if a command shares a name with a skill.
- Typing
-
addit-harness--v0.4.0
2026-10-01
Added
/dev-flowtriage: one read-only@task-triageragent (new,haiku) reports facts about the request and a script scores it aslight,standardordeep. You confirm or change the tier at a tier gate, or pass--tier. The tier sets investigation, UX, design rounds, reviewers, effort and severity floors. Worst-case agent calls for a whole run are 18 / 46 / 50 (hard caps, mock-asserted)./dev-flowintake: atstandardanddeep,@product-ownerasks at most a few questions that change the approach, then writes a one-page brief (docs/work/<slug>/specs/brief.md). A solution proposed in the request is moved tospecs/owner-proposal.mdand scored later as candidate “Owner”.- Solution method for every architect: at least three structurally different
candidates (one unconventional), cited prior art, numbers, a pre-mortem, a weighted
comparison and kill criteria. Your proposed approach is only scored at the
comparison step.
@architect-reviewerreviews as a red team and can name a better alternative. Atdeep, three explorers design in parallel and a synthesizer picks. - ADRs are recorded after you approve the plan, from the plan’s
ADR: candidatelines. - Doc protocol (
references/doc-protocol.md): templates per document type, length ceilings per tier, Observed/Inferred/Unknown labels on claims, edit-in-place revisions with a short log, and one mermaid diagram per concept. - Frontend Implementation Contract FC-1..FC-10 (
rules/typescript-frontend.md), followed by@frontend-developerand measured by@code-reviewer. - Advisory frontend hook: after each edit of a frontend
.ts/.tsxfile it notes files over 150 or 250 non-blank lines. It never blocks.ADDIT_FE_GATE=eslintalso runs your project’s ESLint;ADDIT_FE_GATE=0turns it off. - Go and Java conventions as cited topic files with rule ids:
rules/go.md(G-1..G-10, 11 topics, Uber guide where it does not collide with the owner’s approach) andrules/java.md(J-1..J-14, 12 topics). Go projects can override a topic rule in.claude/go-conventions.md. /addit-harness:setup --pluginsinstalls the plugins and marketplaces declared insettings.json.- Optional local telemetry, off by default (
telemetry_localin/config): a metadata-only log on your machine, never sent anywhere by the plugin./addit-harness:telemetry-exportbuildsdata.jsonand an offlinereport.html, and publishes aggregated KPIs as a private claude.ai Artifact only if you answer yes. - Mock test harness for the dev-flow workflow scripts (
tests/workflows/) and unit tests for the telemetry writer and exporter (tests/telemetry/). CHANGELOG.md; the release workflow fails if## [Unreleased]is empty, cuts it to## [<version>] - <date>in the bump commit (with a fresh emptyUnreleasedabove) and uses that section as the release notes, with no generated-notes fallback. Fixture tests for both scripts live intests/release/./dev-flowprogress lines in the built-in/workflowsview: a start line with tier and track, one line per review round with its count at or above the tier’s floor, each gate verdict (gate qa firstmarks a QA failure that gets a fix cycle), and aHALTline with a fixed reason. They carry metadata only: no request text, agent output, error messages or file paths (a scope breach logs a count; the paths stay in the run’s result).tests/workflows/log-contract.mjschecks the format, including everyHALTline, on every mock scenario run./dev-flowlifecycle task list: six tasks (Triage,Design + plan,Approve plan,Implement + review,QA,Commit) kept current at each step, when the task tools are available. Not yet checked in a live terminal.- First run: a one-time welcome line on the first interactive terminal startup after
install (not the desktop app or IDE integrations), shown to you as a hook message and not added to the model’s context. An
empty local marker,
onboarding/welcome-v1in the plugin data folder, keeps it to once. New/addit-harness:tipscommand (user-invoked only) prints five short tips, and setup ends with a next-steps line.
Changed
- Breaking:
@addit-harness:feature-investigatoris renamed to@addit-harness:product-owner, and the old name no longer resolves. The new agent describes the problem only and never proposes a solution. /dev-flowreview: findings are taggedblocking,majororminorand the script applies the tier’s floor. After the last fix round a verdict-only@code-reviewerpass judges the final code./dev-flowQA runs once, after review. Only a QA failure triggers one fix cycle and a second, last QA run./dev-flowatlight: if the first review finds the change on a risk surface the plan did not list, or past a file-count band, the run stops and re-gates atstandard./dev-flowplan approval is enforced by a hook: implementation starts only ifplan.mdcarries the approval marker and still matches the hash taken at approval.- One failed agent call no longer kills a
/dev-flowrun; it is logged. A developer that returns nothing stops the run asimplement-failedinstead of reporting an empty diff as clean. - Every agent has an explicit
tools:list. For the four architect and design agents this cut first-turn context from about 33k to about 17k tokens in a controlled probe. /addit-harness:setupmergessettings.jsoninstead of replacing it: yourhooks,env,statusLineand plugin choices are kept,permissionslists are unioned, and a backup is taken first.- Setup’s
settings.jsontemplate now setsenv.CLAUDE_CODE_ENABLE_TODO_TOOLS=1, because Claude Code’s task tools are off by default on newer models.envis merged key by key with your values winning, so a value you already set is kept. The per-turn context cost of the task tools has not been measured. - Plugin document locations (
docs/work/<slug>/...,docs/adr/,docs/legal/) apply even when a project has its own folders. Ticket-id slugs are still allowed; an existing slug folder from another work item gets a-2suffix instead of being overwritten.
Removed
- Breaking:
install.sh,sync_tools.pyandtools.config.json. addit-harness supports Claude Code only, as a plugin:/plugin marketplace add addit-digital/addit-harness,/plugin install addit-harness@addit, then/addit-harness:setup. Config synced earlier byinstall.shkeeps working but no longer updates. Tagaddit-harness--v0.3.0is the last release withinstall.sh. references/java/java-best-practices.mdandreferences/go/app-erp-conventions.md, replaced by topic files. Setup removes them on re-sync only if unchanged; an edited copy is backed up and kept.- Copied template text in vendored agents that named agents which do not exist and quoted made-up metrics.
Fixed
- Setup no longer drops your own
permissionsrules on re-sync. - Setup warns when your
settings.jsonhasenv,enabledPluginsorextraKnownMarketplacesas something other than an object and the template’s value replaces it (your original stays in the backup); it did so silently before. /dev-flow: two tracks in the same repo fix sequentially; reviewertouchedFilesare keyed by repo, and missing ones count as unknown scope; the owner-proposal end marker is stripped fully; triage counts root-level files as one directory.- Telemetry export rejects impossible timestamps without aborting, and reports skipped invalid lines.
- The
telemetry_localoption description in/configand the README now link to the privacy policy at its published address,/harness/privacy/.
Security
- Every hook that runs a script is now listed in the privacy policy, with what it reads. None of them makes a network request.
- The requester’s proposed solution reaches the design workflow only as quoted, untrusted data.
-
addit-harness--v0.3.0
2026-08-23
What’s Changed
- Add addit-harness marketing + docs website by @nicat-as in https://github.com/addit-digital/addit-harness/pull/27
- Add dev-flow orchestration, qa-engineer agent, and work-item-first docs by @nicat-as in https://github.com/addit-digital/addit-harness/pull/28
Full Changelog: https://github.com/addit-digital/addit-harness/compare/addit-harness–v0.2.0…addit-harness–v0.3.0
-
addit-harness--v0.2.0 — addit-harness v0.2.0
2026-07-10
Minor release: /addit-harness:setup now reminds you when it needs a re-run.
/addit-harness:setup copies CLAUDE.md/AGENTS.md/rules/references/settings.json out of the plugin at run time — the plugin loader doesn’t auto-sync those, so they could go stale silently once the plugin updated, with nothing telling you to re-run the skill.
Adds a SessionStart hook that hashes just those copied files and compares against a marker setup.sh now writes on each run. It’s content-hash-based, not plugin-version-based: most releases only touch agents/skills/hooks, which the plugin loader already serves live and need no re-sync — a version check would nag on every release regardless of whether it touched anything this skill actually copies. Silent for any scope you’ve never run setup for.
Also included: /addit-harness:setup –scope global now retires leftover unprefixed agents/skills from a pre-plugin install (superseded by this plugin’s addit-harness:-prefixed versions), matched by content similarity and backed up before removal.
-
addit-harness--v0.1.3 — addit-harness v0.1.3
2026-07-10
Patch release: /addit-harness:setup now cleans up pre-plugin installs.
If you ran
install.sh --target claudebefore the plugin existed, agents and skills were copied unprefixed into~/.claude/agentsand~/.claude/skills. The plugin now exposes the same content asaddit-harness:<name>, so those legacy copies show up as stale duplicates alongside the prefixed versions./addit-harness:setup --scope globalnow detects and retires them. It matches by line-level similarity rather than exact byte content (a legacy install predates the plugin, so its content has usually drifted) or name alone (which risks deleting an unrelated file that happens to share a name). Anything retired is backed up first, same as everything else this skill touches. -
addit-harness--v0.1.2 — addit-harness v0.1.2
2026-07-10
Fixed
- Claude Code’s plugin loader only registers a plugin’s
commands/*.mdas slash commands, notskills/*/SKILL.md, for marketplace-installed plugins (anthropics/claude-code#18949, #57737). Users installing via/plugin installfound/addit-harness:setupand the other 4 skills didn’t resolve/autocomplete. - Added a thin
commands/<name>.mddelegate per user-invocable skill (adr,design-conventions,go-conventions,save-plan,setup), so/addit-harness:*now resolves regardless of the upstream bug. Single source of truth stays inskills/<name>/SKILL.md.
Upgrading
Claude Code auto-updates the marketplace on next start (background
git pull). No action needed beyond that — if/addit-harness:*commands still don’t appear, run/plugin marketplace updateand restart the CLI to force-pick up this version.Full diff: https://github.com/addit-digital/addit-harness/compare/addit-harness–v0.1.1…addit-harness–v0.1.2
- Claude Code’s plugin loader only registers a plugin’s
-
addit-harness--v0.1.1 — addit-harness v0.1.1
2026-07-10
Fixed
agents/SOURCES.md(a provenance table, not an agent) was auto-discovered by the plugin loader and showed up as a broken “SOURCES” entry in the agent roster. Moved toAGENTS_SOURCES.mdat repo root — 13 real agents now, no more clutter.- Clarified the release process in the README:
v0.1.0was tagged manually beforeclaude plugin tagwas adopted, so its tag name doesn’t match this and future releases.
Upgrading
Claude Code auto-updates the marketplace on next start (background
git pull). No action needed beyond that — re-run/addit-harness:setuponly if you want to re-syncrules//references//settings.json.Full diff: https://github.com/addit-digital/addit-harness/compare/0.1.0…addit-harness–v0.1.1