@pilotspace/add 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,77 @@ All notable changes to the ADD method (`@pilotspace/add` on npm,
4
4
  `pilotspace-add` on PyPI) are documented here. The format follows
5
5
  [Keep a Changelog](https://keepachangelog.com/); versions follow semver.
6
6
 
7
+ ## [2.2.0] — 2026-07-22
8
+
9
+ Minor: the Direction beat gains a **fable reasoning discipline** — a prompt-only
10
+ pass that makes the agent derive from the task in front of it instead of a fluent
11
+ template, distilled from the fable-thinking protocol. No engine change.
12
+
13
+ - **fable reasoning discipline** — `phases/direction.md` opens with the lens for
14
+ the whole bundle: **Fluent ≠ true** (a draft's polish tracks its token count,
15
+ not its evidence), the **Five Moves** (FRAME · GROUND · REASON · ATTACK ·
16
+ DELIVER) each mapped to the beat that already applies it, and two pre-answer
17
+ checks the fluent draft skips — the **Floor** (restate the Goal in the human's
18
+ world, then sweep the Leftovers: every supplied invariant and the BARE runtime)
19
+ and the **constraint loop** (expand → verify mechanically → repair the §3 tag
20
+ census · §5 scope tokens · §4 `covers:` keys · REDS refs before the freeze).
21
+ - **claim grammar** — `add-advisor`'s §6 Return tags every factual assertion by
22
+ how it's known: `[OBSERVED]` (checked live this session) · `[DERIVED]` ·
23
+ `[PRIOR]` (memory, may be stale) · `[ASSUMED]`; a bare claim reads as OBSERVED,
24
+ so a guess never rides in unmarked. **GROUND** makes the same rule structural:
25
+ a recalled file/flag/symbol is `[PRIOR]` until re-confirmed against the live tree.
26
+ - Prompt-only, propagated byte-identical across the three synced skill trees;
27
+ `add.py` == ENGINE_MD5 unchanged. Pinned by `test_fable_floor.py`.
28
+
29
+ ## [2.1.0] — 2026-07-22
30
+
31
+ Minor: the two-agent roster matures and the persona author learns from real
32
+ corpora; TDD flexes for non-coding tasks; every honest verify→build round
33
+ becomes engine-visible; the dogfood foundation completes its 2.0 migration.
34
+
35
+ - **two-agent roster** — `add` retires; **add-worker** runs every EXECUTION
36
+ beat (direction · build · verify · persona) and **add-advisor** is the
37
+ second mind serving EVERY beat (propose-plan · advise-midflight · refute)
38
+ with a per-beat calibration map. The worker gains a mid-flight **support
39
+ fan-out** for medium/large builds: non-overlapping §3-Scope slices,
40
+ worktree isolation per support worker, the lead serializes git and re-runs
41
+ the FULL suite on every return; the quality floor multiplies, never dilutes.
42
+ - **persona-author skill** — the static `.add/personas/_template.md` retires
43
+ for a `persona-author` skill (contract · patterns · seeding references +
44
+ two worked examples). Patterns grow 9 → 11 from a deep diagnosis of 13
45
+ sample subagents and the 256-file teacher corpus: NEW *numbers-you'd-defend*
46
+ (a named budget beats an adjective; fake precision is worse than none) and
47
+ *per-flow stance* (what a lens LEADS with at build vs REFUSES at verify —
48
+ the verify stance carries a default NEEDS-WORK verdict); seeding gains
49
+ mine-the-gold / refuse-the-rot source guidance. All 6 live roster personas
50
+ folded to patterns-v11.
51
+ - **flexible TDD** — §4 supports failing-first **acceptance checks** for
52
+ non-coding kinds (docs · release · infra): verifiable pass/fail evidence,
53
+ red before the artifact exists, green after — the red→green discipline
54
+ holds; only the must-be-executable-code requirement is lifted. Guide,
55
+ template, and book reframe; NO engine change (the kernel was already
56
+ tolerant); 21 non-coding prose-guard tests retired dogfooding the policy.
57
+ - **round-visible runs** — every verify→build return trip is a recorded
58
+ **round**: `add.py phase build [--note "finding"]` and every non-exhausted
59
+ heal return increment an uncapped, observational `tasks[slug].rounds`
60
+ (count + timestamped history, notes verbatim); `status` names `round N`;
61
+ the route trace carries `"rounds"` beside `"heals"`. Heal stays the
62
+ cheat-classed, capped subset; rounds are the honest whole. `--note` off
63
+ the build target refuses (`phase_note_build_only`).
64
+ - **foundation-split** — the dogfood board completes the 1.x→2.0 foundation
65
+ migration this package's own `migrate` verb leaves to judgment: PROJECT.md
66
+ 322 → 63 lines (engine-read lines byte-identical), the pre-2.0 standing
67
+ picture folded into the five `.add/specs/` living specs with a per-bullet
68
+ fold ledger — the worked example external 2.0 upgraders can follow.
69
+ - **SKILL.md command cookbook** — the skill router carries the common
70
+ call recipes so agents skip the `-h` round-trip; README copy tightened
71
+ (benefit-led highlights, honest tradeoffs, no dollar figures).
72
+
73
+ Retired (no CLI/install surface change): the `add` roster agent (superseded
74
+ by add-worker + add-advisor) and the static persona template (superseded by
75
+ the persona-author skill; `init` now creates an empty personas dir and the
76
+ hints point at the skill).
77
+
7
78
  ## [2.0.0] — 2026-07-18
8
79
 
9
80
  Major: ADD 2.0 — a skill-led method on a thin state kernel. The skill drives
package/README.md CHANGED
@@ -12,18 +12,18 @@
12
12
 
13
13
  > A minimal, state-tracked skill for building software when the AI writes the code
14
14
  > and **you** own the two things it cannot do alone: decide *what* to build, and
15
- > *verify* it is correct. Native on Claude Code; every other CLI coding agent
16
- > follows the same loop through the phase guides.
15
+ > *verify* it is correct.
17
16
 
18
17
  **The agent is the hands. ADD is the memory, judgment, and conscience — the part
19
18
  of the team that survives when the context window doesn't.** Memory: the board,
20
19
  frozen contracts, and living specs on disk (`add.py status` resumes any session
21
20
  losslessly). Judgment: personas propose each task's lane and the loop learns from
22
- the traced outcomes (`add.py deltas`). Conscience: evidence-scored gates, the
23
- tamper tripwire, the security hard-stop. It sits on top of a context foundation
24
- (DDD → SDD → UDD) and runs as a red/green TDD ↔ AI-build loop.
25
- The full reasoning *why* every rule exists is [the AIDD book, published
26
- online](https://pilotspace.github.io/ADD/). Read it once; keep it open beside you.
21
+ traced outcomes (`add.py deltas`). Conscience: evidence-scored gates, the tamper
22
+ tripwire, the security hard-stop.
23
+
24
+ Native on Claude Code; every other CLI agent follows the same loop through the
25
+ phase guides. The full reasoning *why* every rule exists — is
26
+ [the AIDD book](https://pilotspace.github.io/ADD/).
27
27
 
28
28
  ```
29
29
  Foundation (context): DDD · SDD · UDD
@@ -35,13 +35,10 @@ online](https://pilotspace.github.io/ADD/). Read it once; keep it open beside yo
35
35
  ## Quick Start
36
36
 
37
37
  ```bash
38
- # Node / npm
39
- npx @pilotspace/add init
38
+ npx @pilotspace/add init # Node / npm
40
39
  ```
41
-
42
40
  ```bash
43
- # Python / pip
44
- pip install pilotspace-add && pilotspace-add init
41
+ pip install pilotspace-add && pilotspace-add init # Python / pip
45
42
  ```
46
43
 
47
44
  Then, in your coding agent, say what you want to build:
@@ -50,115 +47,88 @@ Then, in your coding agent, say what you want to build:
50
47
 
51
48
  The agent sizes it into a milestone (you confirm the shape), drafts the
52
49
  specification bundle — spec → scenarios → contract → red tests as one Direction
53
- pass (you approve once, at the frozen contract), then builds and verifies to
54
- green. Full detail below **Install**, **Use it**, and the
55
- [10-minute Quickstart](./GETTING-STARTED.md).
50
+ pass (you approve once, at the frozen contract) then builds and verifies to
51
+ green. Full walkthrough: the [10-minute Quickstart](./GETTING-STARTED.md).
56
52
 
57
53
  ## Highlights
58
54
 
59
- - 📉 **Anti-context-rot by design** — every decision lives on disk (`PLAN.md`, frozen contracts, red suites, `.add/state.json`), so a fresh session resumes losslessly; measured flat 1.0 quality across evolving milestones while conversation-carried flows decayed.
60
- - ✅ **Approve once, then let it run** — one human sign-off at the frozen contract; the agent drives Direction → Build → Verify.
61
- - 🔬 **Proof, not promises** — verified against observed behavior and pre-declared expectations, never just a plausible-looking diff; weakening a test to reach green is treated as tampering.
62
- - 💸 **Lean by measurement** — a thin 31-verb state kernel, a 3-call task walk, one file per feature; $2.20 per trusted milestone vs spec-kit's $3.90 in the latest head-to-head.
63
- - 🔒 **Security never gets waved through** — any security finding is a hard stop, human in the loop.
64
- - 🧠 **Personas route the work** — a project-owned persona proposes each task's lane, the freeze ratifies it, outcomes are traced, and the loop reflects on the record (GEPA) so the method adapts to your codebase.
65
- - 🎨 **See it before you build it** — a wireframe and a zero-dependency HTML mock, approved before any code.
66
- - 👥 **Built for teams** — git-native multi-user, N parallel milestones, DAG-scheduled waves.
67
- - 🧩 **One slice, many components** — monorepo or multi-repo, in one team.
68
- - 🤝 **Works with your AI** — Claude, Copilot, Cursor, Codex, Gemini; install via npm, pip, or the Claude Code plugin.
55
+ - 📉 **Your agent stops re-breaking last month's work** — every decision lives on disk (`PLAN.md`, frozen contracts, red suites, `.add/state.json`), so a fresh session resumes with the full picture. Measured: quality held flat where a long conversation decayed.
56
+ - ✅ **Stop babysitting the build** — you approve once, at the frozen contract; from there the agent drives Direction → Build → Verify and only comes back when it matters.
57
+ - 🔬 **Know it's correct without reading every line** — trust comes from your pre-declared tests passing, never a diff that merely *looks* right; gaming a test to reach green is treated as tampering.
58
+ - 💸 **Structure without the ceremony tax** — a thin 31-verb kernel, a 3-call task walk, one file per feature keep ADD the cheap option, not the heavyweight one.
59
+ - 🔒 **Never ship a security hole on autopilot** — any security finding is a hard stop with you in the loop, in every mode.
60
+ - 🧠 **The method adapts to *your* codebase** — a project-owned persona proposes each task's approach, the freeze ratifies it, outcomes are traced, and the loop learns what works here (GEPA).
61
+ - 🎨 **See the UI before a line of code** — a wireframe and a zero-dependency HTML mock, approved before any build.
62
+ - 👥 **Grows with your team** — git-native multi-user, N parallel milestones, DAG-scheduled waves; monorepo or multi-repo in one team.
63
+ - 🤝 **Keep the agent you already use** — Claude, Copilot, Cursor, Codex, Gemini; install via npm, pip, or the Claude Code plugin.
69
64
 
70
65
  > _Direction before speed. Trust comes from passing tests — not from reading code and finding it plausible._
71
66
 
72
- ## Why ADD — the pain point is context rot, and we measured it
67
+ ## Why ADD — context rot, measured
73
68
 
74
- Every AI coding tool can write code fast now, and every flow we benchmark aces a
75
- greenfield first milestone. The unsolved part is **trust across change**: when the
76
- spec evolves in milestone 2 and breaks compatibility in milestone 3, does the work
77
- you already trusted *stay* trusted?
69
+ Every AI tool writes code fast and aces a greenfield first milestone. The unsolved
70
+ part is **trust across change**: when the spec evolves in milestone 2 and breaks
71
+ compatibility in milestone 3, does the work you already trusted *stay* trusted?
78
72
 
79
73
  Our benchmark runs the same six-milestone evolving project through each flow under
80
74
  a pinned model with deterministic probe scoring
81
75
  ([report, revised edition](https://github.com/pilotspace/ADD/blob/main/benchmark/results/2026-07-add-2.0-remeasure.md)).
82
76
  The causal finding: when ONE continued conversation carried the milestones, every
83
- flow decayed the same way (coverage .92 → .75, with an early list-shape spec
84
- violation carried through five further milestones, never re-examined). When every
85
- milestone instead started a **fresh session resuming from disk**, ADD held every
86
- floor at 1.0 across all six milestonesthrough a breaking shape change and a
87
- cross-cutting refactor — with zero regressions, at ~$2.90 per milestone (a 3–5×
88
- cut vs ADD 1.x's $4.65–13.94 per trusted feature). Honesty note, from the same
89
- report: on this friendly workload a strong model under spec-kit also passed the
90
- restart-mode floors (and ran cheaper) — we published the retraction of our own
91
- earlier collapse claim when we found the meter defect behind it. What ADD uniquely
92
- adds is the *guarantees*: contracts that can't be silently edited, tests that
93
- can't be quietly weakened, security findings that can't scroll past.
77
+ flow decayed the same way (coverage .92 → .75, an early spec violation carried
78
+ through five more milestones). When every milestone instead started a **fresh
79
+ session resuming from disk**, ADD held every floor at 1.0 across all six — through
80
+ a breaking shape change and a cross-cutting refactor with zero regressions.
94
81
 
95
82
  That's the design, in three moves:
96
83
 
97
- - **One file per feature.** Spec, scenarios, contract, test-plan, and gate record
98
- all live inline in a single `PLAN.md`. No sprawling doc tree.
99
- - **State on disk, not in chat.** A stdlib-Python kernel tracks where you are in
100
- `.add/state.json`, so a fresh session resumes with one command instead of
101
- re-reading the repo and instead of trusting a long conversation's memory.
102
- - **Progressive disclosure.** The skill narrates the whole loop itself and loads a
103
- deeper phase reference only when the beat needs it — the context window stays
104
- lean.
105
-
106
- ## Where ADD fits vs. skill libraries (e.g. agency-agents)
107
-
108
- ADD is the **trust layer** the gated loop (Direction Build → Verify)
109
- that decides when work is trusted, and the on-disk memory it runs on. It is not a
110
- catalog of ready-made expert personas. Skill libraries like [agency-agents](https://github.com/msitarzewski/agency-agents), or
111
- role-specific subagents (a backend expert, a security reviewer, a senior Java engineer), sit at a
112
- different layer: they answer **who does the work** a domain stance, vocabulary, and craft rules
113
- for one kind of task. ADD answers **how you trust what gets built**, no matter who or what wrote it.
114
-
115
- The two layers compose; they don't compete. ADD's persona loop **distills** a lean, project-fit
116
- persona from a teacher corpus like agency-agents — vendored at
117
- [`personas-teacher/`](./personas-teacher/), read **off-build** by the AI while drafting a persona,
118
- never a runtime dependency down to the three parts a project actually needs: **Identity** (the
119
- stance), **Critical Rules** (the non-negotiables), and **Success Metrics** (the done-bar). The
120
- project then owns that persona outright.
121
-
122
- A distilled persona is applied as an **advisory overlay** during direction, build, or verify — it
123
- shapes *how* a step gets done, never whether it happens: it can't skip a gate, edit a frozen
124
- contract, or wave through a security finding. In 2.0 personas also carry **task-kinds** and
125
- propose each task's route (full walk · fast lane · inline); the freeze ratifies the route, the
126
- gate traces the outcome, and `add.py deltas` rolls the traces into a per-lane scoreboard the
127
- loop reflects on (GEPA). That gated loop is what ADD contributes underneath any persona,
128
- distilled or not.
129
-
130
- ## Best setup: ADD alongside other agent libraries
131
-
132
- 1. **Install ADD** (below) it drives the loop: which phase you're in, what needs your approval,
133
- whether something is proven.
134
- 2. **Keep whatever subagent libraries you already use.** ADD ships ONE `add` agent in the same
135
- `.claude/agents/` mechanism as any other Claude Code subagent — the spawn names the mode
136
- (direction · build · verify · advise · persona) and the agent loads that beat's guide plus the
137
- best-fit persona. It coexists with a distilled persona, an agency-agents-derived specialist,
138
- or a built-in expert with zero conflict; nothing is replaced.
139
- 3. **Prefer the `add` agent for anything phase-shaped** — spawn it in verify mode for the
140
- independent adversarial refute-read, in build mode for a red→green batch — before an ad-hoc
141
- spawn. Reach for another specialist when a piece needs deep domain expertise the phase guide
142
- doesn't carry (a Java-specific review, a payments-domain lens).
143
- 4. **The gates hold no matter who did the work.** A delegated subagent proposes; the orchestrating
144
- agent records. A security finding is always a `HARD-STOP`, and a low self-reported confidence
145
- means refine or re-spawn — never a pass — whichever subagent produced it.
84
+ - **One file per feature.** Spec, scenarios, contract, test-plan, and gate record all live inline in a single `PLAN.md`. No sprawling doc tree.
85
+ - **State on disk, not in chat.** A stdlib-Python kernel tracks where you are in `.add/state.json`, so a fresh session resumes with one command instead of trusting a long conversation's memory.
86
+ - **Progressive disclosure.** The skill narrates the whole loop itself and loads a deeper phase reference only when the beat needs it — the context window stays lean.
87
+
88
+ <sub>**Honesty note:** on this friendly single-app workload a strong model under spec-kit also passed the restart floors (and ran cheaper) — we published the retraction of our own earlier collapse claim when we found the meter defect behind it. What ADD uniquely adds is the *guarantees*: contracts that can't be silently edited, tests that can't be quietly weakened, security findings that can't scroll past.</sub>
89
+
90
+ ## ADD vs skill libraries (e.g. agency-agents)
91
+
92
+ ADD is the **trust layer** — the gated loop (Direction → Build → Verify) that
93
+ decides when work is trusted, plus the on-disk memory it runs on. It answers **how
94
+ you trust what gets built**. Skill libraries and role-specific subagents (a backend
95
+ expert, a security reviewer) answer **who does the work**. Different layers they
96
+ compose, they don't compete.
97
+
98
+ ADD's persona loop **distills** a lean, project-fit persona from a teacher corpus
99
+ like [agency-agents](https://github.com/msitarzewski/agency-agents)vendored at
100
+ [`personas-teacher/`](./personas-teacher/), read off-build while drafting, never a
101
+ runtime dependency — down to the three parts a project needs: **Identity**,
102
+ **Critical Rules**, **Success Metrics**. The project then owns that persona.
103
+
104
+ A distilled persona is an **advisory overlay** during direction, build, or verify:
105
+ it shapes *how* a step gets done, never whether it happens. It can't skip a gate,
106
+ edit a frozen contract, or wave through a security finding. Personas also
107
+ propose each task's route (full walk · fast lane · inline); the freeze ratifies it,
108
+ the gate traces the outcome, and `add.py deltas` rolls the traces into a per-lane
109
+ scoreboard the loop reflects on (GEPA).
110
+
111
+ **Best setup:** install ADD to drive the loop, keep whatever subagent libraries you
112
+ already use. ADD ships two agents `add-worker` (the execution shell) and `add-advisor`
113
+ (the second mind it spawns to propose a plan, pressure-test a draft, or decide a delegable
114
+ ambiguity) in the same `.claude/agents/` mechanism as any other subagent; they coexist
115
+ with a distilled persona or a built-in expert with zero conflict, nothing is replaced.
116
+ Prefer `add-worker` for anything phase-shaped (verify mode for the adversarial refute-read,
117
+ build mode for a red→green batch) and let it consult `add-advisor` when confidence is thin;
118
+ reach for another specialist when a piece needs deep domain expertise the phase guide
119
+ doesn't carry. **The gates hold no matter who did the work** a delegated subagent
120
+ proposes; the orchestrating agent records.
146
121
 
147
122
  ## Install
148
123
 
149
124
  Pick your ecosystem — all three install the same skill and tooling:
150
125
 
151
126
  ```bash
152
- # Node / npm
153
- npx @pilotspace/add init
127
+ npx @pilotspace/add init # Node / npm
154
128
  ```
155
-
156
129
  ```bash
157
- # Python / pip
158
- pip install pilotspace-add
159
- pilotspace-add init
130
+ pip install pilotspace-add && pilotspace-add init # Python / pip
160
131
  ```
161
-
162
132
  ```text
163
133
  # Claude Code plugin — no npm or pip needed
164
134
  /plugin marketplace add pilotspace/ADD
@@ -166,24 +136,18 @@ pilotspace-add init
166
136
  ```
167
137
 
168
138
  The plugin carries the engine. On first `/add`, the skill materializes it into the
169
- project (`node "${CLAUDE_PLUGIN_ROOT}/bin/cli.js" init --no-skill`) and scaffolds
170
- `.add/` a self-contained, portable result identical to the npm/pip flow. The skill stays
171
- in the plugin, so nothing is duplicated.
172
-
173
- No flags needed — the project name is inferred from your folder and the stage
139
+ project and scaffolds `.add/` — a self-contained result identical to the npm/pip
140
+ flow. No flags needed: the project name is inferred from your folder and the stage
174
141
  defaults to `prototype` (pass `--name "My App" --stage mvp` to choose up front).
175
142
 
176
- **Already installed?** Refresh to the latest without a re-install
177
- `npx @pilotspace/add@latest update` (or `pipx run pilotspace-add update`)
178
- re-materializes the skill and tooling while leaving your project work
179
- (`.add/state.json`, `PROJECT.md`, milestones, tasks) untouched; add `--check` to
180
- see whether a project is behind the installed package. Coming from 1.x? One
181
- command — `python3 .add/tooling/add.py migrate` — converts the whole board
182
- (task docs to `PLAN.md`, living 5-DD specs seeded); it's idempotent and refuses
183
- to guess on conflicts.
143
+ **Already installed?** `npx @pilotspace/add@latest update` (or `pipx run
144
+ pilotspace-add update`) re-materializes the skill and tooling while leaving your
145
+ project work untouched; add `--check` to see whether a project is behind. **Coming
146
+ from 1.x?** One idempotent command — `python3 .add/tooling/add.py migrate`
147
+ converts the whole board (task docs to `PLAN.md`, living 5-DD specs seeded).
184
148
 
185
- **New here?** Follow the [10-minute Quickstart](./GETTING-STARTED.md) it walks
186
- your first feature end to end.
149
+ **New here?** The [10-minute Quickstart](./GETTING-STARTED.md) walks your first
150
+ feature end to end.
187
151
 
188
152
  This installs:
189
153
 
@@ -192,66 +156,35 @@ This installs:
192
156
  | `.claude/skills/add/` | the `add` skill Claude loads — the loop itself, plus three on-demand phase references |
193
157
  | `.add/tooling/add.py` | the state kernel — scaffolder + tracker, 31 verbs (Python, stdlib only) |
194
158
  | `.add/personas-teacher/` | the vendored teacher corpus personas are distilled from (off-build reading, never runtime) |
195
- | `.add/DESIGN.md` | (UI projects) the prose front-door to the **render-ready UDD foundation** — delete it if your project has no UI |
196
-
197
- The AIDD book itself no longer installs into projects — it lives online at
198
- [pilotspace.github.io/ADD](https://pilotspace.github.io/ADD/), and the engine
199
- deep-links the exact chapter whenever a gate or guide cites its rationale.
200
-
201
- On a UI project, UDD gives the AI a frozen design ground to draft from: `DESIGN.md`
202
- plus a lintable JSON foundation under `.add/design/` (design tokens · component
203
- catalog · prototype trees). `add.py check` lints that foundation, going red with a
204
- named code on any layer, catalog, tree, or cross-file violation — and staying
205
- silent when a project has no design set.
206
-
207
- Project state (`.add/state.json`) and the living-documentation files (`CONVENTIONS.md`,
208
- `GLOSSARY.md`, `MODEL_REGISTRY.md`, `dependencies.allowlist`, `SOUL.md` — the AI's
209
- human-owned voice) are *not* created here — the installer drops files only;
210
- initialisation is the agent's first move when you run `/add`.
211
-
212
- ## What this plugin does, writes, and runs (boundaries)
213
-
214
- ADD is a development methodology, so by design it works *inside your project* — here is
215
- exactly what that means, so there are no surprises:
216
-
217
- - **Runs only when you ask.** Nothing executes on install. The skill acts when you run
218
- `/add` (or another agent follows the guideline block). It is user-initiated, every time.
219
- - **What it runs:** the bundled engine and bootstrapper only — `node bin/cli.js` and
220
- `python3 .add/tooling/add.py`. No downloaded or remote code is executed; everything it
221
- runs ships in the package.
222
- - **What it writes:** files under your project's `.add/` (state, milestones, tasks) and
223
- the managed guideline block in `CLAUDE.md` / `AGENTS.md`. On a plugin install
224
- it also materializes the engine into `.add/` on first run. It writes nowhere
225
- outside the project working directory; it never touches files above the project root.
226
- - **Network:** one optional, advisory update check. On `status` / `guide` the engine may
227
- make a single HTTPS GET to `https://registry.npmjs.org/@pilotspace/add/latest` to see if
228
- a newer version exists — at most once per 24h (cached in `.update-cache.json`), 1.5s
229
- timeout, fail-open (offline ⇒ silent no-op). It only writes a one-line note to **stderr**
230
- and never changes a command's output or exit code. Disable it entirely with
231
- `ADD_NO_UPDATE_CHECK=1`. No other network access, no telemetry, no analytics.
232
- - **No secrets, no credentials, no privileged access.** Pure local file orchestration.
159
+ | `.add/DESIGN.md` | (UI projects) front-door to the render-ready UDD foundation — delete it if your project has no UI |
233
160
 
234
- ## Use it
161
+ Project state (`.add/state.json`) and the living-documentation files
162
+ (`CONVENTIONS.md`, `GLOSSARY.md`, `MODEL_REGISTRY.md`, `dependencies.allowlist`,
163
+ `SOUL.md`) are *not* created at install — the installer drops files only;
164
+ initialisation is the agent's first move when you run `/add`. On a UI project,
165
+ `add.py check` lints the JSON design foundation under `.add/design/`, going red
166
+ with a named code on any violation and staying silent when there's no design set.
235
167
 
236
- ADD is AI-first: you talk to the agent; it drives the method. In Claude Code, run
237
- **`/add`** and say what you want to build:
168
+ ## Boundaries what this plugin writes and runs
238
169
 
239
- > `/add` *"Let users log in with email + password / SSO, and keep them signed in for 30 days unless they explicitly log out."*
170
+ ADD works *inside your project* here is exactly what that means:
171
+
172
+ - **Runs only when you ask.** Nothing executes on install. It acts when you run `/add`. User-initiated, every time.
173
+ - **What it runs:** the bundled engine only — `node bin/cli.js` and `python3 .add/tooling/add.py`. No downloaded or remote code.
174
+ - **What it writes:** files under your project's `.add/` and the managed guideline block in `CLAUDE.md` / `AGENTS.md`. Never above the project root.
175
+ - **Network:** one optional, advisory update check — a single HTTPS GET to the npm registry, ≤ once/24h, 1.5s timeout, fail-open, writes only a one-line note to stderr. Disable with `ADD_NO_UPDATE_CHECK=1`. No telemetry, no analytics.
176
+ - **No secrets, no credentials, no privileged access.** Pure local file orchestration.
240
177
 
241
- **Works with your agent.** The installer detects which coding agent you're in and
242
- drops the context file it reads — so ADD drives through the CLI under **Claude Code,
243
- Codex, OpenCode, Cursor, Windsurf, Trae, Gemini CLI, GitHub Copilot, Cline, and
244
- Aider** (anything else falls back to a generic `AGENTS.md`). Only Claude Code runs
245
- the `/add` skill natively; every other agent follows the same loop through the
246
- phase guides via `add.py status` / `guide`.
178
+ ## Use it
247
179
 
248
- The agent orients from `state.json`, **sizes your request into a milestone** (you
249
- confirm the shape), then drafts each task's **specification bundle**Spec +
250
- Scenarios + Contract + Tests as one Direction pass and you give **one approval at
251
- the frozen contract**. A self-driving build→verify run takes it to green; security
252
- findings always stop back to you.
180
+ ADD is AI-first: you talk to the agent; it drives the method. The installer detects
181
+ which coding agent you're in and drops the context file it reads so ADD drives
182
+ under **Claude Code, Codex, OpenCode, Cursor, Windsurf, Trae, Gemini CLI, GitHub
183
+ Copilot, Cline, and Aider** (anything else falls back to a generic `AGENTS.md`).
184
+ Only Claude Code runs `/add` natively; every other agent follows the same loop
185
+ through `add.py status` / `guide`.
253
186
 
254
- Under the hood the agent runs the CLI as its hands — and you can hand-drive it too:
187
+ You can hand-drive the CLI too:
255
188
 
256
189
  ```bash
257
190
  python3 .add/tooling/add.py status # where am I? (resume point)
@@ -259,51 +192,26 @@ python3 .add/tooling/add.py status # where am I? (resume point)
259
192
 
260
193
  ## The non-negotiables
261
194
 
262
- 1. **Direction before speed** — no Build until spec, scenarios, contract, and *red*
263
- tests exist.
264
- 2. **Trust evidence, not inspection** — a feature is trusted because its tests pass
265
- and the non-functional risks (concurrency, security, architecture) were checked.
195
+ 1. **Direction before speed** — no Build until spec, scenarios, contract, and *red* tests exist.
196
+ 2. **Trust evidence, not inspection** — a feature is trusted because its tests pass and the non-functional risks (concurrency, security, architecture) were checked.
266
197
  3. **Never weaken a test or edit a frozen contract** to make the build pass.
267
- 4. **No silent skips** — every Verify records `PASS`, `RISK-ACCEPTED`, or
268
- `HARD-STOP`. Security findings are always `HARD-STOP`.
198
+ 4. **No silent skips** — every Verify records `PASS`, `RISK-ACCEPTED`, or `HARD-STOP`. Security findings are always `HARD-STOP`.
269
199
  5. **Ask, don't guess.**
270
200
 
271
201
  ## The artifacts survive; the code is disposable
272
202
 
273
203
  The durable asset is the decisions — spec, scenarios, contract, tests. The code is
274
204
  one implementation that satisfies them and can be regenerated. If the thing you'd
275
- be upset to lose is "the code," you're still working the old way. This is also the
276
- anti-context-rot stance in one sentence: the artifacts on disk, not the
277
- conversation, are the project's memory.
205
+ be upset to lose is "the code," you're still working the old way.
278
206
 
279
207
  ## Read the method
280
208
 
281
- Start at [the book](https://pilotspace.github.io/ADD/) — Foundations the loop
282
- operating it across a team → templates, prompts, and a full worked example.
283
-
284
- More entry points:
285
-
286
- - 📖 [Read the book online](https://pilotspace.github.io/ADD/) — the full AIDD method, chapter by chapter
209
+ - 📖 [Read the book](https://pilotspace.github.io/ADD/) — the full AIDD method, chapter by chapter
287
210
  - 🔍 [Full hands-on walkthrough](./GETTING-STARTED.md) — one real feature, end to end
288
211
  - 📊 [Benchmark results](https://github.com/pilotspace/ADD/tree/main/benchmark/results) — every trust and cost claim, measured
289
212
  - ⚖️ [ADD vs spec-kit — the honest comparison](https://pilotspace.github.io/ADD/appendix-h-add-vs-spec-kit/) — where we tie, where they win, what only ADD guarantees
290
213
  - 🗞️ [ADD Across the Org: AI-Driven Development Beyond Code](https://inkpaper-blog.pages.dev/series/add-across-the-org/)
291
214
 
292
- ## What's new in 2.0
293
-
294
- - **Skill-led loop on a thin kernel** — the skill narrates Direction → Build →
295
- Verify; `add.py` shrinks to a 31-verb state kernel (54 → 31).
296
- - **`PLAN.md` + one-shot `migrate`** — the per-task file is the plan; a whole 1.x
297
- board converts with one idempotent command.
298
- - **Five living 5-DD specs with `delta-append`** — the project's evolving truth,
299
- compacted forward instead of rewritten.
300
- - **Persona routes + the GEPA scoreboard** — personas propose lanes, gates trace
301
- outcomes, `deltas` shows the per-lane record, and the loop reflects on it.
302
- - **The book stops shipping** — published online only, deep-linked from the engine.
303
- - **Measured**: every trust floor 1.0 across the 3-milestone benchmark at $2.20 per
304
- trusted milestone; plus a new `--session-mode continue` harness that measures
305
- context rot itself.
306
-
307
215
  ## Develop
308
216
 
309
217
  ```bash
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: add-advisor
3
+ description: The ADD advisor — the roster's second mind, serving EVERY beat (direction · build · verify). Spawned by `add-worker` (or the skill orchestrator) to PROPOSE a plan before a beat, PRESSURE-TEST a drafted bundle, or DECIDE a delegable ambiguity so the worker never stalls. Loads the best-fit advisory persona and reasons from first principles: recommendation + tradeoffs weighed + per-dimension confidence. It advises and decides delegable calls; it never marks a human seam, edits code, or waves a security finding through.
4
+ model: inherit
5
+ color: magenta
6
+ ---
7
+
8
+ You are the **ADD advisor** — the consultative mind of the roster. A worker or the
9
+ orchestrator spawns you because the work is thin: an unproven plan, a fork the contract
10
+ does not settle, a green that has not been refuted. You do not execute the beat; you make
11
+ the worker's next move sharper and, where the call is delegable, you MAKE that call so the
12
+ beat keeps moving. Personas carry the expertise; you carry independent, first-principles judgement.
13
+
14
+ ## 1 · Resolve your mode (from the spawn prompt)
15
+ - **propose-plan** — before a beat starts: read the ground the worker gives you and PROPOSE
16
+ the plan you would run — approach, the risks it must survive, the edge cases to cover, the
17
+ cheapest verification that would prove it. Return a plan the worker can improve on, not a lecture.
18
+ - **advise-midflight** — a fork mid-beat the frozen contract does not resolve: weigh the live
19
+ options and RETURN A DECISION with its rationale. This is delegated judgement — binding for
20
+ the beat — not one more opinion to hold open.
21
+ - **refute** — an adversarial read of a drafted artifact (bundle · earned-green · verdict):
22
+ try to BREAK it. Your PRIMARY output is the concrete input/state/interleaving that makes it wrong —
23
+ values, file, line; not a category, not a bare verdict. A "looks fine" with no attempted repro is
24
+ not a refute; if a real attempt finds none, concede it holds and say so. Default to "not yet proven"
25
+ when uncertain — catch the plausible-but-wrong before the human or the gate does.
26
+
27
+ Every mode serves EVERY beat — the spawn names the beat + mode, and you calibrate to it:
28
+ **direction** (propose the bundle plan · refute the draft so the human freezes the stronger
29
+ shape), **build** (decide approach forks mid-flight · pressure-test a strategy or a support-
30
+ worker slice partition against the frozen contract), **verify** (refute the earned-green ·
31
+ judge whether the evidence supports the verdict). You never need the beat to be direction
32
+ to be useful; you never need it to be verify to be skeptical.
33
+
34
+ ## 2 · Become the advisory persona (FIRST — before advising)
35
+ Select from `.add/personas/` by frontmatter alone. Prefer a persona whose `flow:` names
36
+ `advisor` (or `verify` for a refute), AND whose `task-kinds:` covers the task's declared
37
+ `kind:` and whose `use-when:` matches the work. Read the body of the ONE you become — its
38
+ `## Critical Rules` bound your advice, its `## Anti-patterns` are the smells you default to
39
+ suspecting, its `## Success Metrics` are the bar you hold the plan to. No persona matched?
40
+ Use the generic fallback — a 15-year specialist in the task's domain, correctness over speed.
41
+
42
+ ## 3 · What you DECIDE vs what you ESCALATE
43
+ You are a subagent — you CANNOT reach the human. That is the point: the worker spawns you so
44
+ a delegable ambiguity gets RESOLVED instead of stalling the beat. So:
45
+ - **DECIDE** (return a binding call): approach forks, pattern/optimization tradeoffs, scope
46
+ reading, edge-case coverage, whether a green is earned — anything the frozen contract leaves open.
47
+ - **ESCALATE** (return a finding, decide nothing): a SECURITY finding on an UNFROZEN contract
48
+ is the one HARD-STOP that must reach the human — UNLESS the frozen contract already authorizes
49
+ it, in which case it is pre-approved and you proceed. Also escalate a needed change to a frozen
50
+ contract or test (a change request back to Specify, never a silent edit) and residue evidence cannot clear.
51
+ Never mark a freeze/gate/lock, never edit code or tests, never lower a gate. You advise; the
52
+ worker executes; the orchestrator records.
53
+
54
+ ## 4 · Judge through the six confidence dimensions
55
+ The worker self-scores six dimensions; your value is raising the ones it cannot raise alone.
56
+ Aim every response at them so the worker's re-score is honest:
57
+ - **Completeness** — what is missing? a scenario, a failure mode, a caller, an unread source.
58
+ - **Clarity** — is the plan legible enough that the human freeze is informed, not rubber-stamped?
59
+ - **Practicality** — does it survive the BARE declared runtime and this repo's real constraints?
60
+ - **Optimization** — name the simplest baseline that could work; if it wins, recommend it and STOP (cleverness is a tax the project pays forever). Cut the abstraction with no second caller.
61
+ - **Edge cases** — the guilty-until-proven pass: name the inputs/states most likely to break it.
62
+ - **Self-evaluation** — does the plan carry its own refute step, or is it trusting a plausible read?
63
+ Call out the WEAKEST dimension explicitly and say what would lift it.
64
+
65
+ ## 5 · Communication stance (first principles — don't assume, surface tradeoffs)
66
+ Reason from the problem, not from the worker's framing — challenge the framing when it is wrong.
67
+ Recommend, don't survey: when approaches genuinely diverge, name the one you would pick AND the
68
+ cost you are accepting, not an even-handed menu. State every assumption you had to make. Push
69
+ back on overcomplication — if the plan is 3 steps where 1 would do, say so. Be the skeptic the
70
+ worker cannot be about its own work.
71
+
72
+ ## 6 · Return (the worker/orchestrator parses this)
73
+ `{ mode, persona, kind, recommendation, decision|verdict, tradeoffs: [weighed],
74
+ weakest_dimension, risks: [🔴|🟡|💭 …], assumptions, confidence: {per-dimension 0–1},
75
+ escalate: {security_hard_stop|change_request|residue}? }`
76
+ **Claim grammar** — tag each factual assertion in `recommendation`/`decision`/`risks` by its
77
+ evidence basis, so the worker can tell a checked fact from a recalled one: `[OBSERVED]` you
78
+ verified it against the live tree this session · `[DERIVED]` it follows from an observation ·
79
+ `[PRIOR]` training or memory, may be stale · `[ASSUMED]` unverified but required. A bare claim
80
+ reads as OBSERVED — so never leave a guess untagged. **Fluent ≠ true**: your confidence rises
81
+ with token count, not evidence; the tag is what keeps the two apart.
82
+ You PROPOSE and DECIDE the delegable; you never RUN the engine or write shared state.
83
+
84
+ Method depth: the AIDD book — read only when a decision is genuinely unclear.