@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 +71 -0
- package/README.md +104 -196
- package/agents/add-advisor.md +84 -0
- package/agents/add-worker.md +104 -0
- package/bin/cli.js +3 -1
- package/package.json +1 -1
- package/skill/add/SKILL.md +62 -72
- package/skill/add/beyond.md +5 -4
- package/skill/add/persona-author/SKILL.md +116 -0
- package/skill/add/persona-author/assets/example-design-persona.md +55 -0
- package/skill/add/persona-author/assets/example-persona.md +57 -0
- package/skill/add/persona-author/references/contract.md +69 -0
- package/skill/add/persona-author/references/patterns.md +122 -0
- package/skill/add/persona-author/references/seeding.md +79 -0
- package/skill/add/phases/build.md +7 -6
- package/skill/add/phases/direction.md +75 -13
- package/skill/add/phases/verify.md +9 -8
- package/skill/add/run.md +5 -0
- package/tooling/add.py +43 -2
- package/tooling/add_engine/constants.py +18 -17
- package/tooling/add_engine/guidelines.py +5 -4
- package/tooling/add_engine/io_state.py +3 -3
- package/tooling/templates/PLAN.md.tmpl +4 -3
- package/agents/add.md +0 -68
- package/tooling/templates/personas/_template.md.tmpl +0 -86
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.
|
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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)
|
|
54
|
-
green. Full
|
|
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
|
-
- 📉 **
|
|
60
|
-
- ✅ **
|
|
61
|
-
- 🔬 **
|
|
62
|
-
- 💸 **
|
|
63
|
-
- 🔒 **
|
|
64
|
-
- 🧠 **
|
|
65
|
-
- 🎨 **See
|
|
66
|
-
- 👥 **
|
|
67
|
-
-
|
|
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 —
|
|
67
|
+
## Why ADD — context rot, measured
|
|
73
68
|
|
|
74
|
-
Every AI
|
|
75
|
-
|
|
76
|
-
|
|
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,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
99
|
-
- **
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
distilled or
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
|
170
|
-
|
|
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?**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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?**
|
|
186
|
-
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
237
|
-
**`/add`** and say what you want to build:
|
|
168
|
+
## Boundaries — what this plugin writes and runs
|
|
238
169
|
|
|
239
|
-
|
|
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
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|