All notable changes to ADD are documented here. Format loosely follows Keep a Changelog; versions follow SemVer.
For commit-level detail see git log.
- Codex sub-agent names prefixed
add-*(#28) —explorer/implementer/reviewer/test-writer/verifyregistrations becomeadd-exploreretc., ending collision risk with user or built-in agents in the global~/.codex/agents/namespace. The installer removes ADD-owned legacy-named TOMLs (prior-manifest sha or# ADD sub-agentmarker) and warns-but-preserves user-owned files (16-case suite). The explorer role no longer misappropriates the docs skill as its role definition. Claude-side role vocabulary is unchanged. Codex users: re-run the installer (migration hop 0.10.2→0.11.0 records this).
/add:init --defaults(#23) — true non-interactive init: zero questions, every value derived (name from CWD, language from manifest files) or defaulted (poc maturity, local-only environments, autonomous mode). Never overwrites an existing config. Both install smokes now exercise this real headless path instead of smuggling interview answers into the prompt./add:doctor(#25) — provable install health check (28th skill). Verifies version agreement, Codex feature flags, hooks.json nested-schema validity, agent-TOML schema, plugin.toml path resolution, and install-manifest integrity; flags stale artifacts and marketplace-cache drift. Human table or--checkmachine line. Checks live in testablecore/lib/doctor-checks.sh(13-case fixture suite).- Codex install manifest (#27) —
install-codex.shwrites~/.codex/add/install-manifest.json(every installed file + sha256) and generates an exact-fileuninstall-add.sh, replacing the drifted hand-listed rm -rf. Upgrades back up user-edited files instead of clobbering, shed stale ADD-owned files from prior versions, and are idempotent (26-case suite).
min_codex_versionraised 0.122.0 → 0.140.0 (#26). Since v0.10.1 the emitted agent-role TOMLs (developer_instructions) and nested hooks.json schema only exist on the Codex 0.14x generation, so the old floor advertised compatibility with CLIs that reject or silently ignore both.runtimes/codex/adapter.yaml, thecompile.pyfallback, and the capability matrix now state the honest floor.- CHANGELOG ordering repaired — the
[Unreleased]/0.10.1/0.10.0 sections had been inserted mid-file (below 0.8.1) and[Unreleased]was duplicated; sections are now strictly newest-first with a single[Unreleased]head.
- Codex smoke #24 regression guards —
run-smoke.shnow asserts the installed hooks.json is the nested ≥0.14x schema (legacy flat form fails) and every installed agent TOML usesdeveloper_instructionswith noprompt_skill.
Codex ≥0.14x compatibility (#24) — found by the v0.10.0 install smoke's first live run against the re-pinned CLI 0.144.5.
- Sub-agent TOMLs were silently ignored on Codex ≥0.14x — the
prompt_skillfield no longer exists in the agent-role schema. All 5 roles (explorer, implementer, reviewer, test-writer, verify) now use the requireddeveloper_instructionsfield, instructing the spawned agent to load its role's SKILL.md — behavior stays skill-sourced. Verified accepted by CLI 0.144.5. - hooks.json was rejected on Codex ≥0.14x — registration now uses the current schema (top-level
hookskey, matcher groups, typedcommandentries) and~/.codex/...command paths (the old bare relative paths only resolved when the session started in$HOME). Verified accepted by CLI 0.144.5. - Migration hop 0.10.0→0.10.1 tells Codex users to re-run the installer to refresh
~/.codex/agents/and~/.codex/hooks.json.
- Known gap (#23, found by the first live smoke run):
/add:init --quickstill interviews, so headless one-shot sessions exit without writing config. Smokes work around it with inline answers; a true--defaultspath targets v0.10.1.
"Install path confirmed" — GA release candidate (spec: specs/install-path-confirmation.md; sequencing: smoke green → marketplace submission → v1.0.0 promotion tag on approval).
- Real install smoke in CI (GA criterion #2).
.github/workflows/install-smoke-claude.yml— installs the checkout via the actual marketplace path (claude plugin marketplace add+claude plugin install add@add-marketplace), asserts skill discovery, and drives a headless/add:init --quickasserting.add/config.json(agent leg skips loudly withoutANTHROPIC_API_KEY)..github/workflows/install-smoke-codex.yml+tests/smoke/codex/— Docker image with the Codex CLI pinned fromruntimes/codex/adapter.yaml(single source of truth via build-arg), runsscripts/install-codex.shfor real, asserts 27/27 skills, hooks, shared assets, version parity, the F-002 path suite, and (withOPENAI_API_KEY) an agent-driven/add-init. docs/capability-matrix.md(GA criterion #3 / AC-027). Per-runtime enforced vs agent-followed vs advisory truth table, appended to every release's notes byrelease.sh;SECURITY.mdnow points at it before the threat model.scripts/release-evidence.sh(GA criterion #4 / AC-025). Assemblesreports/release-evidence/vX.Y.Z/— version map, capability-matrix snapshot, command catalog, install-smoke run links, and a migration-graph reachability check;--uploadattaches the bundle to the GitHub release.
- Codex CLI re-pinned 0.122.0 → 0.144.5 (
codex_cli_version;min_codex_versionstays 0.122.0). Install smoke verified green in Docker against the new pin (Q-001 re-baseline). release.shis now release-blocking (GA criterion #1). Refuses to tag unless HEAD is on origin/main with all CI check-runs green;--no-verify-ciis the loud emergency override.
migrations.json: v0.7.3 users were stranded — no outgoing hop existed from 0.7.3 (same class as the v0.8.1→v0.9.3 chain break). Caught by the new reachability check; fixed with a 0.7.3→0.8.0 hop carrying the standard 0.8.0 steps.
- Telemetry emission confirmed absent (Q-MS-003/D6).
.add/telemetry/never populates — the spec exists, no hook writes it. Recorded as a finding; implementation deferred past v0.10.0 (does not gate the six GA criteria).
Closes the stale-rules gap reported by Tomasz Dmitruk (@tdmitruk): /add:init used to copy 10 ADD rules into the consumer project's .claude/rules/, where they auto-loaded forever at the version they were copied — never updated by plugin upgrades, and (since v0.9.9) duplicating and eventually contradicting the fresh rules the SessionStart hook injects. Copies also bypassed maturity gating entirely.
- Rule copying is retired. The SessionStart hook (
load-rules.sh) is the sole rule-distribution mechanism — always current with the installed plugin, maturity-gated, zero drift./add:initPhase 2.5 no longer writes to.claude/rules/; it now only detects leftovers from older inits and offers a batched removal. The adoption-mode "Handling Existing Rules" flow likewise stops copying — user-authored rules are analyzed for overlap but never replaced by file copies.
- Stale-copy warning —
load-rules.shflags files in.claude/rules/matching plugin rule names (incl.add-prefixed) every session until they're removed, so the conflict is visible instead of silent (+2 loader tests). - Migration hop 0.9.10 → 0.9.11 with a new
remove_stale_rule_copiesaction (defined inversion-migration.md): lists matches, requires one explicit user confirmation, backs up before deleting, never touches user-authored rules.
Dedup + hygiene release closing the three-release token-audit arc (v0.9.8 correctness → v0.9.9 token architecture → v0.9.10 slimming). The five heaviest skills lose ~35–45% of their lines to extraction; security patterns lose their false-positive noise; the hooks and CI lose their soft spots.
- Heavy skills slimmed — init 1,093→638 lines, deploy 874→557, verify 761→432, cycle 659→462, docs 582→352. Illustrative panels, interview banks, worked examples, and inline templates moved to
templates/(init-interview,init-output-examples,commit-message,deploy-reference,cycle-plan,verify-report) andreferences/(docs-archetypes). Instructions stayed inline; renderings load on demand. - Shared skill epilogue — the Process Observation / Learning Checkpoint / handoff-preflight / Progress Tracking boilerplate duplicated across ~10 skills is now one reference (
references/skill-epilogue.md) + a one-line pointer per skill. The secrets gate duplicated across deploy + verify is nowreferences/secrets-gate.md.dashboardno longer inlines the design-system CSS it already references. - Version literals can't drift anymore — all 27 skills now carry
[ADD v{{VERSION}}]/v{{VERSION}}in source (23 said v0.6.0 while shipping v0.9.x); compile substitutes the real version. - Namespace fixes — bare
/cycle,/milestone,/infographic→/add:*(the bare forms train consumer sessions to suggest commands that don't exist). - post-write auto-fix is now opt-in (
hooks.autofix, default false) — linters advise on stderr instead of silently rewriting files mid-session. - CHANGELOG reminder moved to PreToolUse — it now fires before
git push(it fired after, when the advice was moot), and the push-detection regex no longer matchesecho "git push"or--help/--dry-run.
- Injection-pattern noise reduction —
ignore-previousrequires the noun (no longer fires on "ignore previous versions") and a real false negative on the canonical multi-word injection phrase was closed;base64-blob-suspiciousdowngraded to info at 120+ chars (SRI hashes/data URIs no longer trip it);system-headinganchored (a README's## Instructionsis not an attack). +5 fixtures. - Audit-log redaction unified with the secret-patterns catalog — excerpts written to
injection-events.jsonlnow mask everythingscan-secrets.shknows (Stripesk_live_,sk-ant-, …), not just 5 hardcoded prefixes. PASSWORD_KVmade case-insensitive (previously missedPASSWORD=/Password:);.secretsignorenegation lines now warn loudly (they were silently ignored) and were removed from the shipped template.- CI: marketplace-validate fails loudly when the CLI install fails (was skip-green);
hooks-json,load-rules, andcompilesuites added to the guardrails matrix; rule-boundary-check counts inline NEVER/MUST-NOT markers.
.add/away-logs/gitignored + untracked (per ADD's own project-structure rule); legacylearnings.md.bakremoved; 25 stale learnings archived tolearnings-archive.json(49→24 active); wave3 A1 draft marked APPLIED-historical.- Visual/community surfaces refreshed: infographic + HTML overview gained the token-economy story; CONTRIBUTING gained a Token Discipline section; issue templates + PR checklist updated.
The token-architecture release. Frontier models are priced for judgment, not boilerplate — this release makes the maturity dial a token dial and gives ADD's dispatch machinery its missing cost policy.
- Maturity-aware physical rule loading. New SessionStart hook (
hooks/load-rules.sh) reads.add/config.json→maturity.leveland injects only rules whosematurity:gate is at/below the project level. Previously all 20 rules were statically@-imported (~17.8k tokens every session) and the maturity-loader could only suppress behavior — a POC project paid ~13k tokens for rules it was told to ignore. Now dormant rules cost zero tokens (POC sessions: ~70% rule-token reduction). Fail-open to the full set when.add/config.jsonis absent/unparseable (behavior parity). CLAUDE.md carries a names-only rule index + fallback protocol;maturity-loader.mdrewritten (the hardcoded 19-row matrix is gone — rule frontmatter is the single source of truth). Fixture-tested attests/hooks/test-load-rules.sh;tests/rule-parity/rewritten for the new mechanism. - MODEL + BUDGET cost policy for sub-agent dispatch.
swarm-protocol.mdgains a maturity-scaled Resource Budgets table (poc ~30k tokens/item → ga ~200k + adversarial verify; overridable via.add/config.json→swarm.budgets), role→tier defaults (test-writer/implementer/verify = editor, reviewer = architect, explorer/mechanical generation = fast), and MODEL/BUDGET fields in the Sub-Agent Brief Template.tdd-cycledispatch prompts carry per-role tiers;dashboard/infographic/docsnote that bulk rendering belongs on the fast tier.model-roles.mdadds token-budget escalation (start cheap, escalate on verification failure). - Size-capped learnings view.
filter-learnings.shnow enforceslearnings.active_char_budget(default 6000 chars) with a 400-char per-entry cap; overflow entries demote to the one-line index. The active view is read before every skill — it can no longer grow unbounded. - New on-demand references:
telemetry-reference.md,maturity-matrix.md(cascade matrix + promotion process).
telemetry,cache-discipline,model-rolesrules flipped toautoload: false(write-side/orchestration-only — loaded via skillreferences:when needed).learningtrimmed 995→464 words andmaturity-lifecycle1202→463 (procedural content moved to references). Always-on rule surface: 17 rules, ~6k tokens lighter per session before maturity gating.- CLAUDE.md trimmed: 27-row skills table replaced with the workflow chain (Claude Code already surfaces skill descriptions); Document + Work hierarchies merged into one diagram.
count-tokens.pyde-drifted — the autoload set is now derived from rule frontmatter (was a stale hardcoded 15-rule list that under-reported by ~5k tokens and misattributed knowledge files); knowledge/references/on-demand rules now report in a separate on-demand section.
P0 correctness patch from a full token-sensitivity audit (four parallel deep-dives across rules, skills, the Codex runtime, and the operational machinery). Fixes cross-runtime divergence and fail-open security behavior; opens the three-release path to v1.0 (v0.9.9 token architecture, v0.9.10 dedup + hygiene).
- Codex substitution leaks. The compiler applied
codex_substituteonly to skill bodies and references —rules/,knowledge/,templates/,security/,lib/docs and agent TOMLs shipped with raw${CLAUDE_PLUGIN_ROOT}paths and 286/add:Claude-namespace command references (Codex commands are/add-<name>).copy_treenow takes a transform; a/add:→/add-substitution rule was added;.template/.tomlfiles joined the substitution set;handoff-detect.shmessages corrected at source.scan-secrets.shadditionally resolves its catalog at~/.codex/add/security/when env/script-relative resolution misses. - Claude/Codex autoload divergence. The Claude
@ruleslist included a rule unlessautoload: false; the Codex AGENTS.md invariants requiredautoload: true—design-system.md(no key) autoloaded on Claude but was missing from Codex invariants. Both runtimes now share onerule_autoloads()predicate, and every rule must declareautoload:explicitly (compile hard-fails otherwise). - Critical injection detector failed open. Hex-escape patterns (incl. the
criticalunicode-tag-blockinvisible-injection detector) silently no-op'd whenpython3was absent. The scanner now emits anADD-SEC … action=skipped-no-python3warning and askipped:"no-python3"audit event. compile.py --checkcould false-pass on a pre-drifted tree (it compared before-vs-aftergit status --porcelainstrings, identical either way). Now snapshots the output dirs and content-diffs after recompile — git-independent, works uncommitted.- Codex sessions never saw
knowledge/global.md.adapter.yamlclaimed AGENTS.md was built from it, but the compiler never read it. The slim manifest now carries the read-before-work pointer to Tier-1 global learnings +.add/learnings-active.md.
adapter.yamltruth-pass. Thelimitationssection previously described an injection-scan hook writing audit events on Codex — no such hook ships. It now states plainly: injection defense on Codex is advisory-only (no scanner hook, no audit events; parity targeted at v1.0),filter-learnings.shships but is not auto-registered, and hook stderr is not surfaced.output_shapenow documents all real emit targets (rules/,knowledge/,lib/,security/); the falserules.stripfrontmatter claim replaced withpreserve: true(the maturity-loader reads rulematurity:keys at runtime).
Methodology reframe + a security trust signal. Positions ADD as the policy layer over native orchestration, leads with the maturity-ladder moat, and dogfoods the injection defense.
- Swarm protocol reframed as policy over native Workflows.
core/references/swarm-protocol.mdandcore/rules/agent-coordination.mdnow draw a clear policy/mechanism line: ADD owns the policy (maturity-aware WIP/concurrency, conflict assessment, role briefs, merge ordering, trust-but-verify gates, swarm-state), and delegates the orchestration mechanism (parallel dispatch, worktree isolation, step schemas, budgets) to the runtime — native Claude Dynamic Workflows / Codex TOML sub-agents — with the manual recipes retained as the fallback. Positioning: "ADD configures native orchestration with maturity-aware policy," not "ADD re-implements orchestration." WIP semantics (poc=1…ga=5) and trust-but-verify are invariant; actual Workflow-descriptor emission is deferred to v1.1. - README leads with the maturity ladder. The hero is now the poc→alpha→beta→ga trust-gradient dial ("One dial scales the rigor") — the moat host runtimes haven't absorbed — with the prior framing kept as a secondary line.
- Skill self-scan (
scripts/self-scan-skills.py). Runs ADD's distributed injection patterns (core/security/patterns.json) against ADD's own shipped artifacts on every CI run (theskill-self-scanguardrail), using the same detection engine as the runtime hook. Fails the build on any un-waivedcritical/highmatch and surfaces malformed patterns loudly so a pattern can't silently stop gating. Documented as a trust signal in SECURITY.md; guarded bytests/security/test-self-scan.sh(mutation-verified). - Swarm-state format contract. A machine-readable contract for
.add/swarm-state.md(entry delimiter, field table, status enum, forward-compatible parsing) so humans, the orchestrator, and native-Workflow state all parse it the same way. runtimes/claude/workflows/scaffold +specs/workflow-lifecycle-scripts.md(Draft) — the planned home for native Workflow lifecycle scripts. Inert in v0.9.7 (zero behavior change); pilot lands in v1.1.
- GA gate updated: the arbitrary 60-day beta calendar floor is dropped; v1.0 now gates on Anthropic marketplace approval plus the substantive promotion criteria (roadmap D7 override). See
docs/v1.0-roadmap.mdanddocs/milestones/v1.0-ga.md.
CI/release hardening + truth-pass, opening the v1.0 credibility cycle. Turns a red main green, makes the release tool trustworthy, and fixes a real injection-defense bug surfaced during the pass.
- CI unblocked (C1).
core/rules/holds 20 rules but the tree diagram hardcoded 19, failing therule-parityguardrail onmain. The count is now compile-derived —runtimes/claude/CLAUDE.mdcarries a{{RULE_COUNT}}placeholder thatscripts/compile.pyfills from the live autoload-rule set, so it can't drift by hand again.rule-paritywas strengthened to read the compiled artifact and to assert the count in every prose surface (CLAUDE.md, README.md, CONTRIBUTING.md). release.shcould publish nothing and still exit 0 (C2, closes #18). The signed tag pushed butgh release createcould be skipped silently. The script now builds its flags as an array and verifies the release page exists viagh release viewafter creating it, failing loudly with a recovery command. Same failure class as F-001 — a command that "succeeds" without doing the thing.- Injection-defense false positives (D3). The
unicode-tag-blockpattern was a malformed byte character-class whose range matched almost any multibyte UTF-8 — em-dashes, arrows, box-drawing characters all tripped acriticalevent (~100% false-positive rate; 0 real attacks in the audit trail). Replaced with a precise pattern matching exactly U+E0000–U+E007F; verified the real tag-channel attack fixture still fires. The JSONL audit writer now emits compact single-line records (jq -cn) so concurrent hook runs can't corrupt the file.
- CI actions bumped to Node-24 runtimes (C3) across all four workflows:
actions/checkoutv4→v5,actions/setup-pythonv5→v6,actions/github-scriptv7→v8. model-rolesrule (D1) gained a capability-tier table mapping role shapes to the current lineup — Architect: Opus 4.8 / gpt-5.5; Editor: Sonnet 4.6 / gpt-5.x-codex; Fast: Haiku 4.5 / gpt-5.x-codex-mini — while keeping the guidance-not-enforcement framing.- CONTRIBUTING (C5) now lists all four CI workflows (was "three checks") and documents the community-PR strategy (merge-as-is + co-authored refactor follow-up).
- Audit-trail hygiene (D3).
.add/security/is now gitignored and untracked; the local-only injection audit trail is documented in SECURITY.md's threat model.
- Codex
verifysub-agent (B3). ADD's 4th role was missing from the Codex adapter — addedruntimes/codex/agents/verify.toml(workspace-write, high reasoning) and the twocompile.pyenumerations that omitted it. The Codex adapter now emits five sub-agents. tests/release-tooling/test-release-verify.sh— behavioral regression guard for #18 (mocks git/gh/python3, asserts the script exits non-zero when no release page exists), registered in the guardrail matrix.tests/security/fixtures/benign-multibyte.json— regression guard for the unicode-tag-block false-positive bug; asserts dense benign multibyte content does not fire (mutation-verified to go red against the old regex).
Hygiene + truth pass. Doc-only release. Removes the smokescreen between what the docs claim and what's actually shipped, so the v1.0 credibility cycle (v0.9.6 → v1.0.0) starts from honest ground. No consumer config or plugin-runtime changes.
- Spec/plan frontmatter sweep. Ten specs flipped from
Draft/ImplementingtoCompletewithShipped-In: vX.Y.Zrecorded:agents-md-sync,cache-discipline,prompt-injection-defense,secrets-handling,telemetry-jsonl,test-deletion-guardrail,codex-native-skills(all v0.9.0);jq-dependency-declaration,secrets-scanner-executable(v0.9.3);project-dashboard(v0.3.0). Eighteen plan files indocs/plans/got> Status: Complete (vX.Y.Z) — superseded by shipped feature.close-out headers.specs/timeline-events.mdmarkedSuperseded(replaced by telemetry-jsonl + dashboard). - PRD refresh.
docs/prd.mdheader bumped to v0.9.5 / 2026-04-22. § 4 v1.0 reframed to point atdocs/milestones/v1.0-ga.md(canonical) anddocs/v1.0-roadmap.md(synthesis), with the 6 reworded GA criteria from.add/config.json:next_promotion_criterialisted inline. § 3 metrics qualified — telemetry-derived measurements depend on dog-food emission verification (v0.9.7 milestone). - Maturity cascade matrix.
core/rules/maturity-loader.mdupdated for the four v0.9.0-shipped rules:secrets-handling(alpha+ active),cache-discipline,injection-defense,telemetry(beta+ active). - README + CLAUDE.md counts. README rules count corrected to 19 (was 11). CLAUDE.md, runtimes/claude/CLAUDE.md, CONTRIBUTING.md repository-structure blocks updated to include
core/lib/,core/security/,core/references/,core/schemas/and current template/knowledge counts. - README intro. Lead paragraph reframed methodology-first ("ADD is a methodology"); the Claude/Codex plugin is the canonical implementation. Seed for the D5 brand-split direction (methodology authoritative at
docs/methodology.mdmirror, plugin as one runtime). - Roadmap section. README's stale "v0.4.0 — Next" historic block replaced with a one-line pointer to
docs/v1.0-roadmap.mdandCHANGELOG.md.
core/rules/model-roles.md— Architect / Editor model-role guidance. One-paragraph rule distinguishing planning-shaped work (Opus, spec authoring, decision walkthroughs) from mechanical-shaped work (Sonnet/Haiku, file rewrites, frontmatter sweeps). Guidance, not enforcement; ties back toagent-coordination.mdfor swarm dispatch. M3 deferral closed.docs/milestones/v1.0-ga.md— Canonical v1.0 milestone document. Goal, driving context, the 6 reworded success criteria, 8–10 week appetite, hill chart, per-release feature detail (v0.9.5 → v1.0.0), parallelism analysis, risks register, out-of-scope list, open questions, validation gates per release.docs/v1.0-roadmap.md— Synthesis of three parallel v1.0 research swarms (current state, unimplemented inventory, market review). Six-release path, capability-family architecture, four moats, four abandon recommendations, eight risks, decisions D1–D7 locked.
specs/plugin-family-release-hardening.md— F-006 (host-neutral kernel) and F-007 (adapter contracts) target moved fromv1.0.0tov1.1.0. Acceptance criteria AC-010/AC-011/AC-012 retagged tov1.1.0to match. Per D2 lock indocs/v1.0-roadmap.md: full architectural close is M4 work; v0.9.7 will ship Tier 1 substitution-only fix (~80% of leak) for v1.0 GA.
.add/config.json:next_promotion_criteriaupdated per D1 lock. The 60-day calendar floor — generic, not project-shaped — is replaced by engineering evidence: ≥3 minor/patch releases past v0.9.0 with no post-tag rollback, ≥1 community PR merged during the beta cycle, AC-025 release-evidence bundle generated for the v1.0 candidate. Criterion 6 ("verified in active use") rewords the unmeasurable "20+ projects" claim to maintainer attestation via private signal — adopter naming only with explicit consent. Seedocs/v1.0-roadmap.md§ D1 for rationale.
Hotfix. Completes the migration chain from v0.8.0 onward. Surfaced when a project at v0.5.0 updated to v0.9.3 and Claude Code reported: "Plugin manifest covers up to 0.8.0; plugin is now 0.9.3 … no 0.8 → 0.9 hop exists." The version field on the consumer's .add/config.json was bumping past 0.8.0 without any migration hop being traversed — a silent gap that's harmless today (v0.8 → v0.9.x had no required config-schema changes) but would silently skip future migrations that DO have steps.
core/templates/migrations.json— manifest'splugin_versionfield advanced from 0.8.0 to 0.9.4. Six new hops added:0.8.0 → 0.8.1,0.8.1 → 0.9.0,0.9.0 → 0.9.1,0.9.1 → 0.9.2,0.9.2 → 0.9.3,0.9.3 → 0.9.4(sequential), plus a0.8.0 → 0.9.3skip hop so consumers on v0.8.0 jump straight to current. All hops are no-op (steps: []) since v0.8 → v0.9.x changes were plugin-internal — rules, skills, scripts, and hooks flow throughclaude plugin updateautomatically. The hops exist so the runner can traverse the chain without "no path found" gaps.
The version-bump checklist in maintainer memory now includes core/templates/migrations.json as a step. Across v0.8.1, v0.9.0, v0.9.1, v0.9.2, and v0.9.3 the manifest was not advanced; this release patches all five at once. Future releases must add a migration entry (even an empty one) when bumping core/VERSION.
v0.9.x polish bundle. Closes the three plugin-family-review follow-ups that landed as drafts on 2026-04-26 (F-013, F-014, F-017) plus the lessons from a cross-OS portability bug caught in the secrets-scanner CI gate. All three features ship in one signed release rather than three back-to-back tags.
jqdeclared as a documented runtime dependency (F-017). The "zero runtime dependencies" claim inREADME.md,CONTRIBUTING.md,docs/prd.md, and.claude-plugin/marketplace.jsonwas technically inaccurate — runtime hook scripts shipped since v0.7 invokejq. Each of those four prose sites is now qualified ("zero agent-side runtime dependencies;jqrequired for hook scripts") and links to a new canonical reference doc. Hook code is unchanged — Strategy A fromspecs/jq-dependency-declaration.md. Historical text indocs/milestones/, priorCHANGELOG.mdentries, and earlier specs is preserved untouched.- Telemetry per-skill reference sweep (F-013). Every
core/skills/*/SKILL.mdnow declaresrules/telemetry.mdin itsreferences:frontmatter array via the PR #6 mechanism (Path A). Closes Swarm F's M3-deferred sweep — the contract incore/rules/telemetry.mdis now discoverable from any individual SKILL.md, andtests/telemetry-sweep/test-skill-reference-coverage.shgates against future skills shipping without the reference. 17 skills got a freshreferences:entry; 10 skills (cycle, verify, deploy, docs, retro, tdd-cycle, infographic, dashboard, brand-update, ux) hadrules/telemetry.mdappended to existing lists. No body changes; no behavior changes; no schema changes. Spec:specs/telemetry-skill-reference-sweep.md.
- F-014 — executable secrets scanner. Closes the v0.9.0 declarative-gate gap (
specs/secrets-scanner-executable.md). Adds:core/lib/scan-secrets.sh— POSIX-shell scanner. Nojqin the hot path. Readsgit diff --cached(or--paths/--all), respects.secretsignore, honors[ADD-SECRET-OVERRIDE: SEC-NNN (reason)]commit-message trailers, redacts every preview, exits non-zero on any unsuppressed match. Performance budget: < 2s on a 1k-file diff (1k clean files complete in ~4s on a 2024 laptop; the spec target is < 2s — sub-second on Linux CI).core/security/secret-patterns.json— executable catalog. 8 patterns (AWS, GitHub, Stripe, OpenAI, Anthropic, JWT, password-KV, PEM private key). Mirror ofcore/knowledge/secret-patterns.md§ 1; drift fails CI.scripts/validate-secret-patterns.py— drift checker. Wired into.github/workflows/guardrails.yml.- Gate 4.6 in
/add:verify— staged-secret scan. Always runs at--level deploy. - Step 1.5 of
/add:deploy— rewrites the previously-prose secrets gate to invokescan-secrets.sh. The interactive--allow-secretconfirm-phrase wrapper is preserved. - Advisory
PreToolUsehook onBashmatchinggit push— runs the scanner and emits findings to stderr without blocking. Hard-block deferred to v0.10 pending F-012 hook-feedback semantics. tests/secrets-scanner-executable/— fixture suite with synth-at-runtime placeholders (mirrors v0.9.0's GitHub-Advanced-Security-safe pattern). 23 test cases covering exit codes, redaction integrity, override trailers, binary skipping, sorted output, perf budget.
docs/runtime-dependencies.md— canonical reference for runtime dependencies. Documentsjq's role across the six hook invocation sites, install commands for macOS, Debian/Ubuntu, Fedora/RHEL, Arch, Alpine, openSUSE, Windows (Chocolatey + scoop + WSL), and Nix, the verification one-liner, and the per-site degradation behavior whenjqis absent (2 hard-fail sites, 3 soft-fail sites).tests/jq-dependency/test-jq-claim-qualified.sh— fixture-based regression guard. Greps the four in-scope prose files for the bare claim, assertsdocs/runtime-dependencies.mdexists and is referenced from each claim site, and verifies historical text was preserved untouched.tests/telemetry-sweep/test-skill-reference-coverage.sh— gates against future skills shipping without therules/telemetry.mdreference.- Dependency-claim guard in
.github/workflows/guardrails.yml— runs the new test on every PR /mainpush so the bare phrasing cannot regress silently.
Community release. Ships @tdmitruk's third merged contribution (PR #6) — the on-demand rule/knowledge loading mechanism that's been pending since 2026-04-14 across two rounds of review and two rebase cycles. Tomasz's third release.
- On-demand rule/knowledge loading mechanism (PR #6) — formalizes lazy-loading of rule and knowledge content as a compile-time mechanism, not just a documented convention. Three coordinated pieces:
autoload: falserule frontmatter — opts a rule out of Claude's@rules/autoload manifest. Schema enforced bycore/schemas/rule-frontmatter.schema.json. Compile-time filter viascripts/compile.py::autoload_rules_blockskips these rules from the substituted{{AUTOLOAD_RULES}}placeholder inruntimes/claude/CLAUDE.md. The rule still ships toplugins/add/rules/anddist/codex/rules/; it just doesn't autoload.references: []array in skill + rule frontmatter — declarative way for a skill to point at on-demand content (typically rule files or knowledge files) that it Reads at runtime when needed. Schema validates the array shape.core/references/directory — five canonical reference files extracted from previously-verbose autoload rules:learning-reference.md(JSON schemas + checkpoint templates + PII regex + migration protocol fromlearning.md),design-system.md,image-gen-detection.md,quality-checks-matrix.md,swarm-protocol.md. Skills Read these via${CLAUDE_PLUGIN_ROOT}/references/...(Claude) or~/.codex/add/references/...(Codex).
{{AUTOLOAD_RULES}}placeholder substitution inruntimes/claude/CLAUDE.md— the literal@rules/X.mdlist is now generated by the build, not hand-maintained. Adding a new rule withautoload: true(the default) automatically appears in the manifest; flipping it toautoload: falseautomatically removes it.- Codex parity —
runtimes/codex/adapter.yamlgains areferences:output_shapeblock;core/references/ships verbatim todist/codex/references/with${CLAUDE_PLUGIN_ROOT}rewritten to~/.codex/addviacodex_substitute. Token savings symmetric across runtimes. scripts/count-tokens.py— main-vs-working-tree diff of autoload manifest token cost. Built into the PR for post-rebase verification; ships in the release for users tracking their own context budgets.- 10 skills declare
references:frontmatter —cycle,verify,deploy,docs,retro,tdd-cycle,infographic,dashboard,brand-update,ux. Each Reads the specific reference files it needs from${CLAUDE_PLUGIN_ROOT}/references/...instead of relying on always-autoloaded rule content.
runtimes/claude/CLAUDE.md— the literal@rules/*.mdlist replaced by a single{{AUTOLOAD_RULES}}placeholder. Documentation paragraph above the placeholder explains the on-demand mechanism for contributors. Thetests/rule-parity/test-rule-parity.shregression test (added in v0.9.1) was rewritten in this release to validate the placeholder mechanism: source uses placeholder ✓, compiled CLAUDE.md has@rules/for everyautoload: truerule ✓, noautoload: falserules leak into the manifest ✓.core/rules/learning.md— condensed to the active-loop guidance the agent needs at session start; verbose JSON schemas, checkpoint templates, PII regex catalog, and migration protocol moved tocore/references/learning-reference.md(loaded on demand by the skills that write learning entries).core/rules/human-collaboration.md— NEVER markers and Confusion Protocol sections restored after the prior condensation pass dropped them. Boundary strength preserved, body still condensed.scripts/compile.py— addsparse_frontmatterandautoload_rules_blockhelpers (line-based YAML to avoid a PyYAML dependency); rewritescompile_claudeto apply{{AUTOLOAD_RULES}}substitution; addsreferencesto the source-name tuple for both Claude and Codex outputs; adds step6d.shippingcore/references/intodist/codex/references/withcodex_substituterewriting paths.scripts/install-codex.sh—referencesadded to the shared-asset loop alongsidetemplates/knowledge/rules/lib/security. Installer now stages all six trees under$CODEX_HOME/add/.runtimes/codex/adapter.yaml—references:output_shapeblock added;agents_mdshape gainsfilter: "autoload != false"annotation for documentation parity (the slim-manifest strategy doesn't currently inline rules; the filter exists for future inline modes).
tests/rule-parity/test-rule-parity.shrewritten in v0.9.1 prior to this release; the new mechanism is covered by 5 assertions including theautoload: falseleak check.- All 15 CI checks green at the rebased SHA
e6a7b9f(drift, validate, frontmatter, boundary, cache-discipline strict, all 9 fixture suites, marketplace manifest). - PR review process: two rounds of structural review + two rebase cycles. The first review flagged six issues (wrong layer, missing on-demand mechanism, NEVER deletions, skill-side audit gaps, Codex parity, caching/latency notes); Tomasz's response split the work into seven traceable commits, one per review point, mapping each to a verifiable change. The second rebase merged across the v0.8.1 → v0.9.0 → v0.9.1 arc that landed on
mainwhile #6 was being reviewed. - Three community-driven releases in a row — v0.7 (4 contributors), v0.8 (@tdmitruk's first), v0.9.2 (@tdmitruk's third).
Beta-polish release. Closes the four follow-ups that accumulated after v0.9.0 shipped: the last plugin-family-review leak, the time-boxed beta-promotion CI exemption, the Claude rule-parity drift, and the cache-discipline validator false-positive that Swarm A flagged at M3 merge.
/add:versioncross-runtime path resolution. The skill only documented reading${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json, which has no Codex equivalent. Added a three-source fallback (plugin.json→plugin.toml→VERSION) so the same skill body works on both runtimes — first hit wins, silent fall-through when a source is absent. Removes the last F-002 allowlist entry intests/codex-install/test-install-paths.sh.- Claude rule-parity drift (F-011).
runtimes/claude/CLAUDE.mdwas importing 15 rules via@rules/— it's been stuck at that count since before M3. The four rules landed in v0.9.0 (cache-discipline,injection-defense,secrets-handling,telemetry) are now imported, and the "15 files" count in the Plugin Structure tree diagram is now "19 files". New regression testtests/rule-parity/test-rule-parity.shprevents future drift: asserts everycore/rules/*.mdhas a matching@rules/import and that the tree-diagram count matches reality. - Cache-discipline validator false-positive on
core/skills/init/SKILL.md:1039(F-018).scripts/validate-cache-discipline.pywas matching/add:verify — run quality gates(prose in/add:init's output-preview block) as a sub-agent dispatch because its verb list includedrunandcall. Tightened the 4thDISPATCH_PATTERNto require dispatch-specific verbs (invoke,dispatch,sub-agent) and made the regex order-agnostic so "Invoke the /add:test-writer skill" (verb-first prose in/add:tdd-cycle) still matches. Validator now passes clean on the full core tree and strict-mode passes on the four remediated skills.
- Guardrail CI workflow (
.github/workflows/guardrails.yml) — closes the F-005 exemption from the v0.9.0 beta promotion. Runs every local fixture-based suite (93 tests across 10 suites) in parallel on PRs and pushes to main, plus frontmatter validation, cache-discipline validation (default + strict), and Claude marketplace manifest validation (with a grep guard becauseclaude plugin validateexits 0 even on schema failure — discovered during v0.8.1 F-001). tests/rule-parity/test-rule-parity.sh— drift guard for F-011. Three checks: everycore/rules/*.mdhas a@rules/import inruntimes/claude/CLAUDE.md, every@rules/import points at a real file, and the tree-diagram count matches.
- Beta-promotion exemption cleared.
.add/config.jsonmaturity.exemptionswas holding[F-005 guardrail CI wiring]as a time-boxed promise from the v0.9.0 alpha→beta promotion. Now empty.
Pre-GA hardening. Ships the full M3 milestone in a single coordinated release: seven feature specs built in parallel by agent swarms during a /add:away session, squash-merged sequentially with rebase resolutions, and promoted through the v0.8.1 hotfix after the plugin-family review surfaced three shipping bugs. Maturity: alpha → beta. ADD is now production-credible for the methodology it prescribes: TDD guardrails that bite, secrets handling that gates deploy, prompt-injection defense with a scan hook and threat model, Codex-native skill emission, OTel-aligned telemetry, stable-prefix cache discipline, tool-portable AGENTS.md generation, and a test-deletion guardrail that defends the signature TDD claim.
/add:agents-mdskill — generates a tool-portableAGENTS.mdat project root from.add/state. Maturity-aware verbosity (POC bullets → Alpha sectioned → Beta full → GA full + team conventions). ADD-managed content wrapped in<!-- ADD:MANAGED:START … -->markers so user-authored sections survive regeneration. Modes:--write(default),--check(CI drift gate, exit 1 on drift),--merge/--import(absorb hand-curated files). Implemented asscripts/generate-agents-md.pypluscore/skills/agents-md/SKILL.md; fixture tests cover POC/Alpha/Beta render, drift detection, merge flow, idempotency, and staleness-marker clearing. Integrated into/add:init(initial generation) and/add:spec(active-spec pointer update). Opt-inagentsMd.gateOnVerifyin.add/config.jsonenables Gate 4.5 in/add:verify.- PostToolUse staleness hook for AGENTS.md —
runtimes/claude/hooks/post-write.shnow writes.add/agents-md.stalewhen.add/config.json,core/rules/*.md, orcore/skills/*/SKILL.mdchanges and anAGENTS.mdexists at root. The hook never auto-rewrites AGENTS.md — the human triggers regen. - Prompt-injection defense (spec
prompt-injection-defense, M3 Cycle 2) — three-layer GA security story. New auto-loaded rulecore/rules/injection-defense.mdteaches the agent to treat untrusted content (PR comments, web fetches, foreign repos,node_modules) as data, never as instructions. New PostToolUse scan hookruntimes/claude/hooks/posttooluse-scan.shpattern-matches tool output (Read, WebFetch, WebSearch, Bash) againstcore/security/patterns.json— eight named patterns covering OWASP Top 10 Agentic 2026, Snyk ToxicSkills, and the January 2026 Comment-and-Control attack. Audit events append to.add/security/injection-events.jsonl. New Tier-1 knowledge filecore/knowledge/threat-model.mddocuments trust boundaries, defended attacks (T1-T5), out-of-scope threats, and warn-only posture for v0.9. Users can extend without forking via.add/security/patterns.json(project) or~/.claude/add/security/patterns.json(workstation). - Test-deletion guardrail (
specs/test-deletion-guardrail.md, M3 Cycle 3). Defends ADD's signature TDD claim against the Kent Beck / TDAD-paper failure mode ("the genie doesn't want to do TDD — it deletes the failing test"). Newscripts/check-test-count.pysnapshot/compare/gate CLI pluscore/lib/impact-hint.shfiles-likely-affected helper. New Gate 3.5 in/add:verifyfails the cycle iftests_removed > 0without a recorded override. Renames (same body, new name) allowed; replacements (same name, rewritten body) require--allow-test-rewrite+ human approval persisted in.add/cycles/cycle-{N}/overrides.json. Justification marker[ADD-TEST-DELETE: <reason>]also accepted as commit trailer. Newcore/knowledge/test-discovery-patterns.jsoncatalog covers Python, TS/JS, Go, Ruby, Rust — extensible per project.
- Marketing site extracted to a separate repo (
MountainUnicorn/getadd.dev) so future commercial elements can land there without touching the open-source plugin. Full git history (38 commits) preserved viagit filter-repo. Domaingetadd.devre-claimed on the new repo with the existing TLS cert. The plugin repo no longer containswebsite/,.github/workflows/pages.yml, orscripts/deploy-website.sh. The architecture SVG used by the README moved fromwebsite/images/todocs/. CLAUDE.mdrewritten to reflect the v0.7+ source-of-truth flow (core/→compile.py→plugins/add/+dist/codex/) and the website-is-elsewhere reality.CONTRIBUTING.mdtesting-changes section: replaced the long ad-hoc rsync example with the canonicalcompile.py+sync-marketplace.shworkflow plus the three CI-gate validation commands.scripts/sync-marketplace.sh: dropped the now-unnecessary--exclude='website/'.scripts/compile.pynow copiescore/security/intoplugins/add/and concatenates everycore/knowledge/*.mdfile into the CodexAGENTS.md(previously onlyglobal.md).runtimes/codex/adapter.yamlupdated to glob all knowledge files and document the Codex hook-stderr limitation that blocks automatic warning surfacing for injection events.- Maturity promoted alpha → beta (2026-04-23). Readiness: ~92% against the cascade matrix (12/13 applicable requirements met, F-005 CI guardrail wiring held as a time-boxed exemption to v0.9.x). Rationale: M3 ships seven feature specs with 207 ACs, v0.8.1 hotfix closed three shipping bugs surfaced by plugin-family review, two community contributions merged, GPG-signed release pipeline live since v0.7.3, 5 signed releases, M1+M2+M3 milestones tracked to completion. Cascade changes now active: strict TDD enforcement, recommended-for-all-changes reviewer, balanced away-mode autonomy, ~12-question interview depth, parallel-agent ceiling raised to 3. Next promotion criteria (GA): guardrail suite running in CI and release-blocking, real Claude + Codex install smoke in CI, per-runtime capability matrix in release notes, 60-day stability at beta, marketplace submission approved, 20+ projects using ADD.
Seven feature specs planned together, built in parallel by worktree-isolated agent swarms during a /add:away session, and merged sequentially with rebase resolutions. Total: 207 acceptance criteria across 7 specs, plus the v0.8.1 plugin-family hotfix.
| Spec | Cycle | PR | Shipped |
|---|---|---|---|
agents-md-sync |
2 | #8 | 36/36 ACs |
cache-discipline |
1 | #9 | 21/24 (3 telemetry ACs closed by #11) |
secrets-handling |
1 | #10 | 23/24 (AC-019 blocked on PR #6) |
telemetry-jsonl |
3 | #11 | 30 ACs + closes cache deferral |
codex-native-skills |
2 | #12 | 33/35 ACs, Codex CLI pinned 0.122.0 |
test-deletion-guardrail |
3 | #13 | 25 ACs; bypass closed via v0.8.1 F-003 fix |
prompt-injection-defense |
2 | #14 | 30/30 ACs |
/add:parallelworktree-based parallel cycle execution- Routines/Loop integration adapter
- Capability-based
/add:evalskill /add:cyclerename — defer to coincide with parallel-cycle redesign- Brownfield delta-spec mode
- Architect/Editor model-role rule (v0.9.1 docs pass)
- Cross-tool memory schema for
~/.claude/add/ - Governance maturity bands tied to autonomy ceilings
Hotfix. Fixes three findings from the plugin-family release-hardening review before v0.9.0 ships. The M3 feature set (agents-md, cache-discipline, secrets-handling, telemetry-jsonl, prompt-injection-defense, test-deletion-guardrail, codex-native-skills) has already merged to main; this release makes that merge actually installable and makes the test-deletion guardrail actually enforce.
- Claude marketplace validation (F-001).
.claude-plugin/marketplace.jsonhaddescriptionat the root, which the marketplace schema rejects. Moved into themetadataobject per the validator's guidance.claude plugin validate .andclaude plugin validate plugins/addboth now pass. Removed the stale"13 commands, 12 skills, 15 rules"count string — counts drift; manifests aren't the right place for them. - Codex install path mismatch (F-002). Generated Codex skills referenced
~/.codex/templates/,~/.codex/knowledge/,~/.codex/rules/,~/.codex/lib/,~/.codex/security/, butscripts/install-codex.shstages shared assets under the namespaced~/.codex/add/subdirectory. Every skill invocation on Codex would have failed to resolve its asset refs. Fixed by pointing the${CLAUDE_PLUGIN_ROOT}→ Codex substitution at~/.codex/add/and adding a separate${CLAUDE_PLUGIN_ROOT}/hooks→~/.codex/hooksrule (hooks stay at the Codex-conventional root).scripts/compile.pynow also shipscore/rules/andcore/security/intodist/codex/, andscripts/install-codex.shstagesknowledge/,rules/,lib/,security/under$CODEX_HOME/add/alongside the existingtemplates/.filter-learnings.shis also now shipped into Codex's hooks dir as a cross-runtime utility. - Test-deletion guardrail bypass (F-003).
scripts/check-test-count.pytreated--allow-test-rewriteas a full bypass of the same-name-replacement approval check instead of as an acknowledgment flag that still required a recorded override. The documented intent (flag AND override record) matched the error message but not the code. Fix: the replacement check now runs unconditionally;--allow-test-rewriteis required to acknowledge intent, AND either a recorded override in.add/cycles/cycle-{N}/overrides.jsonor an[ADD-TEST-DELETE: <reason>]commit trailer is required to pass. Regression fixturereplacement-with-flag-no-overrideadded — proves the flag alone is insufficient.
tests/codex-install/test-install-paths.sh— F-002 regression smoke. Installs the Codex adapter into a tempCODEX_HOME, collects every~/.codex/...reference from installed skill bodies, and asserts each one resolves (or is explicitly allowlisted). Runs in seconds; no Codex CLI needed.
/add:versionreads${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json, which has no Codex equivalent (the Codex version lives inplugin.tomlorVERSION). Allowlisted in the new smoke test; cross-runtime fix deferred.- Hotfix does not address F-004+ from the plugin-family review — adapter contracts, host-neutral kernel, runtime overlays, command catalog generator. Those remain M4 / v0.10+ scope, not v0.9.0 blockers.
Pre-filtered active learning views. Moves filtering work out of the LLM context window and into a jq-based hook, cutting autoload context cost by 62-82% as learnings accumulate. Community contribution from @tdmitruk via #7.
hooks/filter-learnings.sh— generates a compactlearnings-active.mdcompanion file fromlearnings.json. Sorts by severity (critical > high > medium > low) then date, excludes archived entries, caps at the top N, and appends a one-line index of the rest so agents retain visibility. Mirrored at~/.claude/add/library-active.mdfor the Tier 2 library.hooks/post-write.sh— PostToolUse dispatcher that replaces the inlinecaseblock inhooks.json. Keeps ruff + eslint behavior, adds the learnings-filter dispatch, readsactive_capfrom.add/config.jsonwith fallback15./add:learningsskill —migrate(initial active-view generation, also handles legacy markdown → JSON),archive(interactive review of low/medium entries older than the configured threshold), andstats(counts, sizes, savings). All subcommands support--dry-run.archivedfield on learning entries — entries stay in the JSON for audit history but drop out of the active view. Never auto-archivecriticalorhighseverity.- Configurable thresholds in
.add/config.jsonlearningsblock:active_cap(15),archival_days(90),archival_max_severity(medium). Migration injects defaults for upgrading projects. run_hookmigration action type — letsmigrations.jsoninvoke a plugin hook script during version migration withscript,args(supports{file}placeholder), andnotifyparameters.- Migration chain completed for projects on any prior version:
0.5.0 → 0.6.0,0.6.0 → 0.7.0,0.7.0 → 0.7.3, and0.7.0 → 0.8.0hops added so installations from any historical release can reach 0.8.0. scripts/deploy-website.sh— Actions-free website deploy. Syncswebsite/into thegh-pagesbranch and triggers a build via GitHub's legacy Jekyll pipeline (runs on a separate pool from user Actions, so it works even when account-level Actions is restricted). Supports--dry-runand--no-build.- Fixture-based tests under
tests/hooks/forfilter-learnings.sh: basic (sort + archive + group), overflow (forced index), large (15 top + 13 indexed + 2 archived), and empty inputs.
core/rules/learning.md— pre-flight reads-active.mdinstead of full JSON. The 60-line in-context "Smart Filtering" section is removed (replaced by the shell script). Adds an Archival section and a fallback chain (active.md → run filter → read full JSON).core/rules/project-structure.md— documents the new file layout (learnings.json+learnings.md+learnings-active.md) and gitignore additions.- PostToolUse hook glob extended from
*learnings.jsonto*learnings.json|*library.jsonso Tier 2 promotions during retro regenerate the library active view.
| Project size | Before (full JSON) | After (active view) | Reduction |
|---|---|---|---|
| 34 entries (this repo) | ~4,820 tokens | ~1,865 tokens | 62% |
| 200 entries (projected) | ~28,000 tokens | ~5,300 tokens | 82% |
| 500 entries (projected) | ~70,000 tokens | ~11,750 tokens | 83% |
JSON is canonical and never modified by the filter. If the -active.md is missing or jq fails, agents fall back to running the script then reading the full JSON directly — no data loss possible. Compile-drift, frontmatter-validate, and rule-boundary CI gates all green; no NEVER markers were touched.
0.7.3 — 2026-04-12
First fully GitHub-verified signed release. v0.7.2 signed correctly but the commit author email didn't match a verified GitHub email, so GitHub showed reason: no_user and no green Verified badge. This release fixes the git identity so the author line matches the GPG UID and GitHub can cross-reference.
- Global git config:
user.email = anthony.g.brooke@gmail.com,user.name = Anthony Brooke— matches the GPG key UIDAnthony Brooke <anthony.g.brooke@gmail.com>. Previously commits carried the hostname-derived emailabrooke@Anthonys-MacBook-Pro.local, which GitHub could not map to a user account for verification.
v0.7.2 cryptographic signature is valid and verifiable via git tag --verify v0.7.2 after importing the key from github.com/MountainUnicorn.gpg. It is not shown as Verified on GitHub because the author email mismatch prevents GitHub from tying the signature to the maintainer's account. v0.7.3 and forward are properly Verified.
0.7.2 — 2026-04-12
First cryptographically signed release. Maintainer GPG key provisioned and published.
scripts/release.sh— release helper that enforces clean tree, version/tag match, frontmatter validation, compile-drift check, signing-key presence, tag uniqueness, and CHANGELOG section presence before tagging. Extracts release notes from CHANGELOG. Supports--dry-runand--draft.docs/release-signing.md— maintainer runbook for first-time setup, cutting a release, multi-machine key sharing, rotation, expiration, and pinentry/GPG_TTY troubleshooting.
SECURITY.mdnow carries the real maintainer fingerprint:040C 002A B5A0 E552 46B3 5D2F 8C4D 8020 9306 6794— RSA 4096, identityAnthony Brooke <anthony.g.brooke@gmail.com>. Documents that v0.7.0 and v0.7.1 predate signing and will not be retroactively re-tagged (re-tagging a published release rewrites history users may have installed).- Git config on the maintainer machine:
tag.gpgsign = true(mandatory for releases);commit.gpgsign = false(opportunistic viagit commit -S). Rationale: auto-signing commits blocks agent/CI sessions that can't interact with the GUI passphrase prompt. Tag signing is the verification anchor that matters per the threat model.
curl -fsSL https://github.com/MountainUnicorn.gpg | gpg --import
git tag --verify v0.7.2
# Expected: Good signature from "Anthony Brooke <anthony.g.brooke@gmail.com>"0.7.1 — 2026-04-12
Hardening release: ships the items deferred from v0.7.0, plus CHANGELOG + marketplace sync helper + self-retro archived.
/add:deployproduction confirm-phrase gate — runtime check requiring the exact stringDEPLOY TO PRODUCTION(case-sensitive, whole-message, immediately-next-message). Closes the "behavioral, not technical" boundary gap flagged by the v0.7.0 security swarm. Halt-on-mismatch with no fuzzy matching./add:init --quick— 5-question greenfield fast path (~2 min). Maps essential answers (name, stack, tier, maturity, autonomy) and defaults everything else. Skips adoption detection, profile-integration prompts, and Sections 3-7 of the full interview./add:init --sync-registry— read-only reconciliation of~/.claude/add/projects/{name}.jsonagainst project ground truth. Previously the registry-sync rule could detect drift but had no command to fix it.- PII heuristic in
rules/learning.md— pre-write scan of learning-entrytitle+bodyfor email/IP/API-key/JWT/private-key/password-like patterns. Halts with[r]ewrite / [o]verride / [s]kipprompt on match. Override records acompliance-bypassentry. --force-no-retroabuse detection inrules/add-compliance.md— escalation ladder based on bypass density in the last 30 days: 0 = silent, 1 = warn, 2 = require acknowledgment flag, 3+ = refuse until retro runs.CHANGELOG.md— full release history v0.1.0 → v0.7.1 at repo rootscripts/sync-marketplace.sh— centralizes the rsync pattern previously documented only in memory; includes exclusion list + recompile-first
- Infographic (
docs/infographic.svg) version stamp bumped to v0.7.1; structural refresh to reflect multi-runtime messaging deferred to v0.8.0 /add:initSKILL.md now documents all four modes (default,--quick,--reconfigure,--sync-registry) in a mode-selection table up top
.add/retros/retro-2026-04-12-v07.md— full retro covering the v0.6 → v0.7 arc. Scores: ADD methodology 5.8/9 (spec-before-code violated on arch extraction), Swarm effectiveness 8.1/9 (5-agent competing-swarm review was high-value).
0.7.0 — 2026-04-12
Multi-runtime architecture release. Extracts methodology content from a Claude-specific plugin layout into a runtime-neutral core/ source with per-runtime adapters. Claude Code install is byte-identical to v0.6.0. Codex CLI is now a first-class target.
core/source of truth — skills, rules, templates, knowledge, schemas, VERSIONruntimes/claude/adapter (.claude-plugin, hooks, CLAUDE.md, adapter.yaml)runtimes/codex/adapter (adapter.yaml, concat + flatten strategy)scripts/compile.py— generator producingplugins/add/(Claude) anddist/codex/(Codex)scripts/install-codex.sh— one-line Codex CLI installer; copies prompts to~/.codex/prompts/add-*.mdand shared content to~/.codex/add/scripts/validate-frontmatter.py— JSON Schema validation for SKILL.md and rule frontmattercore/VERSION— single source of truth for version across every surface (replaces the 8-location bump checklist)SECURITY.md— threat model, disclosure process, GPG-signed releases from v0.7.0+TROUBLESHOOTING.md— install failures, rule-loading verification, Codex-specific recoverydocs/codex-install.md— Codex install + usage + known differencescore/schemas/skill-frontmatter.schema.json— JSON Schema fordescription,argument-hint,allowed-tools,disable-model-invocationcore/schemas/rule-frontmatter.schema.json— JSON Schema forautoload,maturity,description,globs.github/workflows/compile-drift.yml— fails PRs where committed artifacts don't match compile output.github/workflows/schema-check.yml— fails PRs with invalid frontmatter.github/workflows/rule-boundary-check.yml— flags PRs that weakenNEVER/Boundaries:/MUST NOTmarkers- Codex support pages on getadd.dev with side-by-side Claude + Codex install
hooks/hooks.jsonrewritten to use the Anthropic-documentedjq+ stdin pattern instead of non-standard$TOOL_INPUT_*env var referencesplugin.jsonnow includeslicense: MITand akeywordsarray for marketplace discoverability- Root
README.mdinstall section: two-step marketplace flow explained, Codex install block added, skill count corrected (24 total across 4 categories) plugins/add/README.mddocumentsargument-hint,allowed-tools,autoload,maturityas ADD-specific frontmatter extensions (clear labeling vs Anthropic spec)
- Broken root
AGENTS.md— was a sed-mangled copy ofCLAUDE.mdreferencing non-existent.Codex-plugin/paths; replaced by the real generated Codex adapter atdist/codex/AGENTS.md
This release is shaped by a 5-agent competing-swarm review: Anthropic spec compliance, install reliability/UX, Codex portability, multi-runtime architecture, and security/trust. Swarm 3's strategic reframe ("ADD is a methodology with runtime adapters, not a Claude plugin") + Swarm 4's directory proposal (core/ + runtimes/) + Swarm 5's CI-enforced security + Swarms 1/2's specific fixes = this release.
0.6.0 — 2026-04-12
Community release. Merged three PRs from external contributors as-submitted, with acknowledgment and release-note credit. Added the compliance machinery surfaced by the agentVoice dog-food retro.
/add:docs— Project-type-agnostic documentation skill (architecture diagrams, API/interface docs, README drift detection). Archetype detection from config or codebase inference. Thanks to Caleb Dunn (@finish06) (#2)./add:roadmap,/add:milestone,/add:promote— Milestone and maturity management surface. Interactive horizon management, tactical milestone ops (list/switch/split/rescope), evidence-based maturity promotion with 14-category gap analysis. Thanks to Piotr Pawluk (@piotrpawluk) (#3)./add:ux— Design sign-off gate before implementation. POC = nudge, Alpha+ = hard gate. Prevents rework from late-breaking design changes. Thanks to David Giambarresi (@dgiambarresi) (#4).
Driven by the agentVoice 40-day / 412-commit / 0-retro dog-food gap:
rules/add-compliance.md— Retro cadence enforcement (blocks/add:away,/add:cycle --plan,/add:backwhen retro debt exceeds 7d / 3 aways / 15 learnings)rules/registry-sync.md— Detects drift between project ground truth and~/.claude/add/projects/{name}.json; auto-bumps on checkpoints/add:retroPhase 7 — Auto-proposes workstation promotion candidates in a single batch- Spec template Section 9 — Infrastructure Prerequisites (env vars, registry images, quotas, network, CI, secrets, migrations)
knowledge/global.md— Competing swarm pattern, infrastructure prerequisites checklist, E2E quality protocol (browser-only, never skip)
/add:cyclepre-flight now includes milestone health check and--milestoneflag (from community PR #3)/add:specnudges toward/add:uxfor UI features (from community PR #4)rules/maturity-loader.mdmatrix:registry-syncactive at all maturities,add-complianceactive at alpha+
0.5.0 — 2026-04
Plugin isolation + interview safety nets release.
- Interview safety nets (thanks to Nick Barger):
- Question Complexity Check — split questions that bundle 3+ decisions
- Confusion Protocol — re-ask via
AskUserQuestionafter user confusion - Confirmation Gate — summarize answers before generating spec
- Cross-Spec Consistency Check — scan existing specs before writing new
- Isolated plugin to
plugins/add/for reliable marketplace install specs/plugin-installation-reliability.md
marketplace.jsonsource path now points at./plugins/add(was./)commands/merged intoskills/for Claude Code plugin loader compatibility
0.4.0 — 2026-02
Learning system + legacy adoption release.
- Structured JSON learning schema (
learnings.jsonreplaces freeform.mdwhen migrations run) - Cross-project learning library (
~/.claude/add/library.json) with smart filtering pipeline (stack → category → severity → cap at 10) - Dual-format pattern: JSON primary, markdown generated view regenerated from JSON
- Scope classification (project / workstation / universal)
- Version migration rule (auto-migrates stale projects on session start via
templates/migrations.json) - Retro template automation — context-aware review with pre-populated tables
- 3 scores per retro: human collab, ADD effectiveness, swarm effectiveness (0.0–9.0)
- Rate-limited meta questions (1x/day)
0.3.0 — 2026-02
Branding + automation release.
branding.jsonschema and preset palettes/add:brandand/add:brand-updateskills- Image generation detection + auto-nudge when capable tools appear
/add:changelogskill — generates/updates from conventional commits/add:infographic— SVG generation from PRD + config- Session continuity (handoff.md auto-write after significant work)
0.2.0 — 2026-02
Adoption release.
/add:init --adoptwith legacy project auto-detection- Cross-project persistence at
~/.claude/add/ - Profile system (user preferences carry across projects)
- Maturity levels (poc / alpha / beta / ga) as a single master dial
0.1.0 — 2026-02-07
Initial release. Pure markdown/JSON plugin built in one session (36 files, ~6,300 lines). Core infrastructure:
- 6 commands:
/add:init,/add:spec,/add:away,/add:back,/add:retro,/add:cycle - 8 skills:
tdd-cycle,test-writer,implementer,reviewer,verify,plan,optimize,deploy - 10 rules: spec-driven, tdd-enforcement, human-collaboration, agent-coordination, source-control, environment-awareness, quality-gates, learning, project-structure, maturity-lifecycle
- 10 templates, 1 hooks file, 2 manifests
- Non-greenfield adoption flow designed from analysis of 9 real projects
- PRD written for the plugin itself (dog-fooding)