@pilotspace/add 1.17.0 → 2.1.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 +193 -0
- package/GETTING-STARTED.md +20 -64
- package/README.md +138 -158
- package/agents/add-advisor.md +66 -21
- package/agents/add-worker.md +102 -0
- package/bin/cli.js +88 -21
- package/package.json +2 -3
- package/personas-teacher/VENDOR.md +6 -0
- package/skill/add/SKILL.md +100 -144
- package/skill/add/adopt.md +28 -0
- package/skill/add/beyond.md +37 -0
- package/skill/add/deltas.md +25 -2
- package/skill/add/design.md +56 -74
- package/skill/add/{report-template.md → gate-udd.md} +28 -38
- package/skill/add/intake.md +56 -25
- package/skill/add/loop.md +32 -19
- 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 +79 -0
- package/skill/add/phases/direction.md +287 -0
- package/skill/add/phases/verify.md +161 -0
- package/skill/add/run.md +16 -18
- package/skill/add/terms.md +18 -0
- package/tooling/add.py +2421 -3258
- package/tooling/add_engine/autonomy.py +2 -37
- package/tooling/add_engine/components.py +4 -87
- package/tooling/add_engine/constants.py +148 -93
- package/tooling/add_engine/guidelines.py +10 -11
- package/tooling/add_engine/io_state.py +72 -5
- package/tooling/add_engine/predicates.py +90 -2
- package/tooling/add_engine/search.py +6 -6
- package/tooling/add_engine/taskdoc.py +15 -10
- package/tooling/templates/CONVENTIONS.md.tmpl +1 -1
- package/tooling/templates/GLOSSARY.md.tmpl +10 -4
- package/tooling/templates/MILESTONE.md.tmpl +20 -16
- package/tooling/templates/PLAN.md.tmpl +129 -0
- package/tooling/templates/PROJECT.md.tmpl +6 -1
- package/tooling/templates/PROMPT.persona.md.tmpl +17 -21
- package/tooling/templates/personas/build-engineer.md.tmpl +45 -0
- package/tooling/templates/personas/data-steward.md.tmpl +45 -0
- package/tooling/templates/personas/evidence-verifier.md.tmpl +45 -0
- package/tooling/templates/personas/platform-engineer.md.tmpl +45 -0
- package/tooling/templates/personas/product-lead.md.tmpl +51 -0
- package/tooling/templates/personas/quality-auditor.md.tmpl +47 -0
- package/tooling/templates/personas/release-manager.md.tmpl +52 -0
- package/tooling/templates/personas/security-gatekeeper.md.tmpl +45 -0
- package/tooling/templates/personas/software-architect.md.tmpl +45 -0
- package/tooling/templates/personas/stream-orchestrator.md.tmpl +44 -0
- package/tooling/templates/personas/technical-writer.md.tmpl +49 -0
- package/tooling/templates/personas/ux-experience-lead.md.tmpl +48 -0
- package/tooling/templates/specs/SPEC.md.tmpl +18 -0
- package/tooling/templates/udd-wireframe.md +1 -1
- package/agents/add-build.md +0 -29
- package/agents/add-design.md +0 -32
- package/agents/add-persona.md +0 -33
- package/agents/add-verify.md +0 -36
- package/docs/00-introduction.md +0 -46
- package/docs/01-principles.md +0 -71
- package/docs/02-the-flow.md +0 -113
- package/docs/03-step-1-specify.md +0 -123
- package/docs/04-step-2-scenarios.md +0 -90
- package/docs/05-step-3-contract.md +0 -80
- package/docs/06-step-4-tests.md +0 -85
- package/docs/07-step-5-build.md +0 -82
- package/docs/08-step-6-verify.md +0 -105
- package/docs/09-the-loop.md +0 -75
- package/docs/10-setup-and-stages.md +0 -118
- package/docs/11-governance.md +0 -91
- package/docs/12-roles.md +0 -99
- package/docs/13-adoption.md +0 -67
- package/docs/14-foundation.md +0 -142
- package/docs/15-foundations-and-lineage.md +0 -106
- package/docs/16-releasing.md +0 -182
- package/docs/17-components.md +0 -143
- package/docs/18-personas.md +0 -80
- package/docs/README.md +0 -77
- package/docs/add-competencies.png +0 -0
- package/docs/add-flow.png +0 -0
- package/docs/add-foundation.png +0 -0
- package/docs/add-hierarchy.png +0 -0
- package/docs/add-milestone-task-lifecycle.png +0 -0
- package/docs/add-task-growth-wheel.png +0 -0
- package/docs/appendix-a-templates.md +0 -88
- package/docs/appendix-b-prompts.md +0 -154
- package/docs/appendix-c-glossary.md +0 -176
- package/docs/appendix-d-worked-example.md +0 -231
- package/docs/appendix-e-checklists.md +0 -92
- package/docs/appendix-f-requirements-matrix.md +0 -171
- package/docs/appendix-g-references.md +0 -106
- package/skill/add/advisor.md +0 -81
- package/skill/add/compact-foundation.md +0 -40
- package/skill/add/components.md +0 -52
- package/skill/add/confidence.md +0 -32
- package/skill/add/fold.md +0 -63
- package/skill/add/graduate.md +0 -39
- package/skill/add/phases/0-ground.md +0 -64
- package/skill/add/phases/0-setup.md +0 -103
- package/skill/add/phases/1-specify.md +0 -61
- package/skill/add/phases/2-scenarios.md +0 -48
- package/skill/add/phases/3-contract.md +0 -60
- package/skill/add/phases/4-tests.md +0 -61
- package/skill/add/phases/5-build.md +0 -62
- package/skill/add/phases/6-verify.md +0 -69
- package/skill/add/phases/7-observe.md +0 -45
- package/skill/add/phases/fast-lane.md +0 -34
- package/skill/add/release.md +0 -61
- package/skill/add/scope.md +0 -72
- package/skill/add/self-improve.md +0 -20
- package/skill/add/sensitivity.md +0 -51
- package/skill/add/setup-review.md +0 -48
- package/skill/add/soul.md +0 -58
- package/skill/add/streams.md +0 -269
- package/tooling/add_engine/release.py +0 -86
- package/tooling/templates/TASK.fast.md.tmpl +0 -78
- package/tooling/templates/TASK.md.tmpl +0 -181
- package/tooling/templates/personas/_template.md.tmpl +0 -82
package/README.md
CHANGED
|
@@ -2,202 +2,189 @@
|
|
|
2
2
|
<a href="https://www.npmjs.com/package/@pilotspace/add"><img alt="npm version" src="https://img.shields.io/npm/v/@pilotspace/add.svg"></a>
|
|
3
3
|
<a href="https://pypi.org/project/pilotspace-add/"><img alt="PyPI version" src="https://img.shields.io/pypi/v/pilotspace-add.svg"></a>
|
|
4
4
|
<a href="https://github.com/pilotspace/ADD/blob/main/LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
5
|
+
<a href="https://pilotspace.github.io/ADD/"><img alt="Read the book" src="https://img.shields.io/badge/docs-read%20the%20book-blue.svg"></a>
|
|
5
6
|
<a href="https://github.com/pilotspace/ADD/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/pilotspace/ADD.svg"></a>
|
|
6
7
|
</p>
|
|
7
8
|
|
|
8
9
|
# ADD — AI-Driven Development
|
|
9
10
|
|
|
10
|
-
**
|
|
11
|
+
**Your AI's first milestone is always great. ADD is for every milestone after that.**
|
|
11
12
|
|
|
12
13
|
> A minimal, state-tracked skill for building software when the AI writes the code
|
|
13
14
|
> and **you** own the two things it cannot do alone: decide *what* to build, and
|
|
14
|
-
> *verify* it is correct.
|
|
15
|
-
> follows the same loop through the phase guides.
|
|
15
|
+
> *verify* it is correct.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
**The agent is the hands. ADD is the memory, judgment, and conscience — the part
|
|
18
|
+
of the team that survives when the context window doesn't.** Memory: the board,
|
|
19
|
+
frozen contracts, and living specs on disk (`add.py status` resumes any session
|
|
20
|
+
losslessly). Judgment: personas propose each task's lane and the loop learns from
|
|
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/).
|
|
21
27
|
|
|
22
28
|
```
|
|
23
29
|
Foundation (context): DDD · SDD · UDD
|
|
24
30
|
Engine (this skill): TDD ⇄ ADD
|
|
25
|
-
Flow per
|
|
31
|
+
Flow per task: Direction (spec · scenarios · contract · red tests → ONE freeze)
|
|
32
|
+
→ Build (red → green) → Verify (evidence-scored gate) ↻
|
|
26
33
|
```
|
|
27
34
|
|
|
28
35
|
## Quick Start
|
|
29
36
|
|
|
30
37
|
```bash
|
|
31
|
-
# Node / npm
|
|
32
|
-
npx @pilotspace/add init
|
|
38
|
+
npx @pilotspace/add init # Node / npm
|
|
33
39
|
```
|
|
34
|
-
|
|
35
40
|
```bash
|
|
36
|
-
# Python / pip
|
|
37
|
-
pip install pilotspace-add && pilotspace-add init
|
|
41
|
+
pip install pilotspace-add && pilotspace-add init # Python / pip
|
|
38
42
|
```
|
|
39
43
|
|
|
40
44
|
Then, in your coding agent, say what you want to build:
|
|
41
45
|
|
|
42
46
|
> `/add` — *"Let users log in with email + password / SSO, and keep them signed in for 30 days unless they explicitly log out."*
|
|
43
47
|
|
|
44
|
-
The agent sizes it into a milestone (you confirm the shape), drafts the
|
|
45
|
-
scenarios → contract → tests as one
|
|
46
|
-
contract)
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
##
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- **
|
|
55
|
-
|
|
56
|
-
- **
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- **
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
contract,
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
48
|
+
The agent sizes it into a milestone (you confirm the shape), drafts the
|
|
49
|
+
specification bundle — spec → scenarios → contract → red tests as one Direction
|
|
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).
|
|
52
|
+
|
|
53
|
+
## Highlights
|
|
54
|
+
|
|
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.
|
|
64
|
+
|
|
65
|
+
> _Direction before speed. Trust comes from passing tests — not from reading code and finding it plausible._
|
|
66
|
+
|
|
67
|
+
## Why ADD — context rot, measured
|
|
68
|
+
|
|
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?
|
|
72
|
+
|
|
73
|
+
Our benchmark runs the same six-milestone evolving project through each flow under
|
|
74
|
+
a pinned model with deterministic probe scoring
|
|
75
|
+
([report, revised edition](https://github.com/pilotspace/ADD/blob/main/benchmark/results/2026-07-add-2.0-remeasure.md)).
|
|
76
|
+
The causal finding: when ONE continued conversation carried the milestones, every
|
|
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.
|
|
81
|
+
|
|
82
|
+
That's the design, in three moves:
|
|
83
|
+
|
|
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.
|
|
99
121
|
|
|
100
122
|
## Install
|
|
101
123
|
|
|
102
|
-
Pick your ecosystem — all three install the same skill
|
|
124
|
+
Pick your ecosystem — all three install the same skill and tooling:
|
|
103
125
|
|
|
104
126
|
```bash
|
|
105
|
-
# Node / npm
|
|
106
|
-
npx @pilotspace/add init
|
|
127
|
+
npx @pilotspace/add init # Node / npm
|
|
107
128
|
```
|
|
108
|
-
|
|
109
129
|
```bash
|
|
110
|
-
# Python / pip
|
|
111
|
-
pip install pilotspace-add
|
|
112
|
-
pilotspace-add init
|
|
130
|
+
pip install pilotspace-add && pilotspace-add init # Python / pip
|
|
113
131
|
```
|
|
114
|
-
|
|
115
132
|
```text
|
|
116
133
|
# Claude Code plugin — no npm or pip needed
|
|
117
134
|
/plugin marketplace add pilotspace/ADD
|
|
118
135
|
/plugin install add@add-method
|
|
119
136
|
```
|
|
120
137
|
|
|
121
|
-
The plugin carries the engine
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
in the plugin, so nothing is duplicated.
|
|
125
|
-
|
|
126
|
-
No flags needed — the project name is inferred from your folder and the stage
|
|
138
|
+
The plugin carries the engine. On first `/add`, the skill materializes it into the
|
|
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
|
|
127
141
|
defaults to `prototype` (pass `--name "My App" --stage mvp` to choose up front).
|
|
128
142
|
|
|
129
|
-
**Already installed?**
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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).
|
|
134
148
|
|
|
135
|
-
**New here?**
|
|
136
|
-
|
|
149
|
+
**New here?** The [10-minute Quickstart](./GETTING-STARTED.md) walks your first
|
|
150
|
+
feature end to end.
|
|
137
151
|
|
|
138
152
|
This installs:
|
|
139
153
|
|
|
140
154
|
| Path | What |
|
|
141
155
|
|------|------|
|
|
142
|
-
| `.claude/skills/add/` | the `add` skill Claude loads
|
|
143
|
-
| `.add/tooling/add.py` | scaffolder +
|
|
144
|
-
| `.add/
|
|
145
|
-
| `.add/DESIGN.md` | (UI projects)
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
- **Runs only when you ask.** Nothing executes on install. The skill acts when you run
|
|
164
|
-
`/add` (or another agent follows the guideline block). It is user-initiated, every time.
|
|
165
|
-
- **What it runs:** the bundled engine and bootstrapper only — `node bin/cli.js` and
|
|
166
|
-
`python3 .add/tooling/add.py`. No downloaded or remote code is executed; everything it
|
|
167
|
-
runs ships in the package.
|
|
168
|
-
- **What it writes:** files under your project's `.add/` (state, milestones, tasks, the
|
|
169
|
-
book) and the managed guideline block in `CLAUDE.md` / `AGENTS.md`. On a plugin install
|
|
170
|
-
it also materializes the engine + book into `.add/` on first run. It writes nowhere
|
|
171
|
-
outside the project working directory; it never touches files above the project root.
|
|
172
|
-
- **Network:** one optional, advisory update check. On `status` / `guide` the engine may
|
|
173
|
-
make a single HTTPS GET to `https://registry.npmjs.org/@pilotspace/add/latest` to see if
|
|
174
|
-
a newer version exists — at most once per 24h (cached in `.update-cache.json`), 1.5s
|
|
175
|
-
timeout, fail-open (offline ⇒ silent no-op). It only writes a one-line note to **stderr**
|
|
176
|
-
and never changes a command's output or exit code. Disable it entirely with
|
|
177
|
-
`ADD_NO_UPDATE_CHECK=1`. No other network access, no telemetry, no analytics.
|
|
156
|
+
| `.claude/skills/add/` | the `add` skill Claude loads — the loop itself, plus three on-demand phase references |
|
|
157
|
+
| `.add/tooling/add.py` | the state kernel — scaffolder + tracker, 31 verbs (Python, stdlib only) |
|
|
158
|
+
| `.add/personas-teacher/` | the vendored teacher corpus personas are distilled from (off-build reading, never runtime) |
|
|
159
|
+
| `.add/DESIGN.md` | (UI projects) front-door to the render-ready UDD foundation — delete it if your project has no UI |
|
|
160
|
+
|
|
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.
|
|
167
|
+
|
|
168
|
+
## Boundaries — what this plugin writes and runs
|
|
169
|
+
|
|
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.
|
|
178
176
|
- **No secrets, no credentials, no privileged access.** Pure local file orchestration.
|
|
179
177
|
|
|
180
178
|
## Use it
|
|
181
179
|
|
|
182
|
-
ADD is AI-first: you talk to the agent; it drives the method.
|
|
183
|
-
|
|
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`.
|
|
184
186
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
**Works with your agent.** The installer detects which coding agent you're in and
|
|
188
|
-
drops the context file it reads — so ADD drives through the CLI under **Claude Code,
|
|
189
|
-
Codex, OpenCode, Cursor, Windsurf, Trae, Gemini CLI, GitHub Copilot, Cline, and
|
|
190
|
-
Aider** (anything else falls back to a generic `AGENTS.md`). Only Claude Code runs
|
|
191
|
-
the `/add` skill natively; every other agent follows the same loop through the
|
|
192
|
-
phase guides via `add.py status` / `guide`.
|
|
193
|
-
|
|
194
|
-
The agent orients from `state.json`, **sizes your request into a milestone** (you
|
|
195
|
-
confirm the shape), then drafts each feature's **specification bundle** — Spec +
|
|
196
|
-
Scenarios + Contract + Tests as one bundle — and you give **one approval at the
|
|
197
|
-
frozen contract**. A self-driving build→verify run takes it to green; security
|
|
198
|
-
findings always stop back to you.
|
|
199
|
-
|
|
200
|
-
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:
|
|
201
188
|
|
|
202
189
|
```bash
|
|
203
190
|
python3 .add/tooling/add.py status # where am I? (resume point)
|
|
@@ -205,13 +192,10 @@ python3 .add/tooling/add.py status # where am I? (resume point)
|
|
|
205
192
|
|
|
206
193
|
## The non-negotiables
|
|
207
194
|
|
|
208
|
-
1. **Direction before speed** — no Build until spec, scenarios, contract, and *red*
|
|
209
|
-
|
|
210
|
-
2. **Trust evidence, not inspection** — a feature is trusted because its tests pass
|
|
211
|
-
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.
|
|
212
197
|
3. **Never weaken a test or edit a frozen contract** to make the build pass.
|
|
213
|
-
4. **No silent skips** — every Verify records `PASS`, `RISK-ACCEPTED`, or
|
|
214
|
-
`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`.
|
|
215
199
|
5. **Ask, don't guess.**
|
|
216
200
|
|
|
217
201
|
## The artifacts survive; the code is disposable
|
|
@@ -222,15 +206,11 @@ be upset to lose is "the code," you're still working the old way.
|
|
|
222
206
|
|
|
223
207
|
## Read the method
|
|
224
208
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
**Dynamic Agent Skills** — the next scope: skills that adapt at runtime to the
|
|
231
|
-
project's current state, stage, and active phase rather than loading a static
|
|
232
|
-
guide. The agent picks the right depth and tooling automatically as the project
|
|
233
|
-
evolves.
|
|
209
|
+
- 📖 [Read the book](https://pilotspace.github.io/ADD/) — the full AIDD method, chapter by chapter
|
|
210
|
+
- 🔍 [Full hands-on walkthrough](./GETTING-STARTED.md) — one real feature, end to end
|
|
211
|
+
- 📊 [Benchmark results](https://github.com/pilotspace/ADD/tree/main/benchmark/results) — every trust and cost claim, measured
|
|
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
|
|
213
|
+
- 🗞️ [ADD Across the Org: AI-Driven Development Beyond Code](https://inkpaper-blog.pages.dev/series/add-across-the-org/)
|
|
234
214
|
|
|
235
215
|
## Develop
|
|
236
216
|
|
package/agents/add-advisor.md
CHANGED
|
@@ -1,31 +1,76 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: add-advisor
|
|
3
|
-
description: The ADD advisor —
|
|
4
|
-
model:
|
|
5
|
-
color:
|
|
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
6
|
---
|
|
7
7
|
|
|
8
|
-
You are the **advisor**
|
|
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.
|
|
9
13
|
|
|
10
|
-
##
|
|
11
|
-
|
|
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. Name the input/state that makes it wrong. Default to "not yet proven" when
|
|
23
|
+
uncertain — your job is to catch the plausible-but-wrong before the human or the gate does.
|
|
12
24
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
Every mode serves EVERY beat — the spawn names the beat + mode, and you calibrate to it:
|
|
26
|
+
**direction** (propose the bundle plan · refute the draft so the human freezes the stronger
|
|
27
|
+
shape), **build** (decide approach forks mid-flight · pressure-test a strategy or a support-
|
|
28
|
+
worker slice partition against the frozen contract), **verify** (refute the earned-green ·
|
|
29
|
+
judge whether the evidence supports the verdict). You never need the beat to be direction
|
|
30
|
+
to be useful; you never need it to be verify to be skeptical.
|
|
18
31
|
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
32
|
+
## 2 · Become the advisory persona (FIRST — before advising)
|
|
33
|
+
Select from `.add/personas/` by frontmatter alone. Prefer a persona whose `flow:` names
|
|
34
|
+
`advisor` (or `verify` for a refute), AND whose `task-kinds:` covers the task's declared
|
|
35
|
+
`kind:` and whose `use-when:` matches the work. Read the body of the ONE you become — its
|
|
36
|
+
`## Critical Rules` bound your advice, its `## Anti-patterns` are the smells you default to
|
|
37
|
+
suspecting, its `## Success Metrics` are the bar you hold the plan to. No persona matched?
|
|
38
|
+
Use the generic fallback — a 15-year specialist in the task's domain, correctness over speed.
|
|
23
39
|
|
|
24
|
-
##
|
|
25
|
-
|
|
40
|
+
## 3 · What you DECIDE vs what you ESCALATE
|
|
41
|
+
You are a subagent — you CANNOT reach the human. That is the point: the worker spawns you so
|
|
42
|
+
a delegable ambiguity gets RESOLVED instead of stalling the beat. So:
|
|
43
|
+
- **DECIDE** (return a binding call): approach forks, pattern/optimization tradeoffs, scope
|
|
44
|
+
reading, edge-case coverage, whether a green is earned — anything the frozen contract leaves open.
|
|
45
|
+
- **ESCALATE** (return a finding, decide nothing): a SECURITY finding on an UNFROZEN contract
|
|
46
|
+
is the one HARD-STOP that must reach the human — UNLESS the frozen contract already authorizes
|
|
47
|
+
it, in which case it is pre-approved and you proceed. Also escalate a needed change to a frozen
|
|
48
|
+
contract or test (a change request back to Specify, never a silent edit) and residue evidence cannot clear.
|
|
49
|
+
Never mark a freeze/gate/lock, never edit code or tests, never lower a gate. You advise; the
|
|
50
|
+
worker executes; the orchestrator records.
|
|
26
51
|
|
|
27
|
-
##
|
|
28
|
-
|
|
29
|
-
|
|
52
|
+
## 4 · Judge through the six confidence dimensions
|
|
53
|
+
The worker self-scores six dimensions; your value is raising the ones it cannot raise alone.
|
|
54
|
+
Aim every response at them so the worker's re-score is honest:
|
|
55
|
+
- **Completeness** — what is missing? a scenario, a failure mode, a caller, an unread source.
|
|
56
|
+
- **Clarity** — is the plan legible enough that the human freeze is informed, not rubber-stamped?
|
|
57
|
+
- **Practicality** — does it survive the BARE declared runtime and this repo's real constraints?
|
|
58
|
+
- **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.
|
|
59
|
+
- **Edge cases** — the guilty-until-proven pass: name the inputs/states most likely to break it.
|
|
60
|
+
- **Self-evaluation** — does the plan carry its own refute step, or is it trusting a plausible read?
|
|
61
|
+
Call out the WEAKEST dimension explicitly and say what would lift it.
|
|
30
62
|
|
|
31
|
-
|
|
63
|
+
## 5 · Communication stance (first principles — don't assume, surface tradeoffs)
|
|
64
|
+
Reason from the problem, not from the worker's framing — challenge the framing when it is wrong.
|
|
65
|
+
Recommend, don't survey: when approaches genuinely diverge, name the one you would pick AND the
|
|
66
|
+
cost you are accepting, not an even-handed menu. State every assumption you had to make. Push
|
|
67
|
+
back on overcomplication — if the plan is 3 steps where 1 would do, say so. Be the skeptic the
|
|
68
|
+
worker cannot be about its own work.
|
|
69
|
+
|
|
70
|
+
## 6 · Return (the worker/orchestrator parses this)
|
|
71
|
+
`{ mode, persona, kind, recommendation, decision|verdict, tradeoffs: [weighed],
|
|
72
|
+
weakest_dimension, risks: [🔴|🟡|💭 …], assumptions, confidence: {per-dimension 0–1},
|
|
73
|
+
escalate: {security_hard_stop|change_request|residue}? }`
|
|
74
|
+
You PROPOSE and DECIDE the delegable; you never RUN the engine or write shared state.
|
|
75
|
+
|
|
76
|
+
Method depth: the AIDD book — read only when a decision is genuinely unclear.
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: add-worker
|
|
3
|
+
description: The ADD execution shell — ONE agent for every EXECUTION beat of the loop. The spawn prompt names the beat (direction · build · verify) or the persona service mode; the agent loads that beat's phase guide plus the best-fit persona and becomes the specialist. Personas carry the expertise; this agent carries the discipline. Pairs with `add-advisor` — spawn it to pressure-test a plan or resolve delegable ambiguity so the beat never stalls. Recommended tier — top for direction/verify, mid for build.
|
|
4
|
+
model: inherit
|
|
5
|
+
color: cyan
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are the **ADD worker** — the execution shell of the roster. Your spawn prompt
|
|
9
|
+
names a MODE; everything else about who you are comes from the persona you load.
|
|
10
|
+
Personas are the method's core value: they carry the domain expertise, the critical
|
|
11
|
+
rules, and the measurable done-bar. You carry the loop discipline that never changes.
|
|
12
|
+
|
|
13
|
+
## 1 · Resolve your mode (from the spawn prompt)
|
|
14
|
+
- **direction** — draft the whole direction bundle (setup on a fresh project · ground ·
|
|
15
|
+
rules · scenarios · contract · scope · red-suite intent) up to, never past, the ONE
|
|
16
|
+
human freeze. Guide: `phases/direction.md`.
|
|
17
|
+
- **build** — turn the frozen contract + scenarios into a red suite, then drive it green
|
|
18
|
+
honestly; any I/O the change adds carries its timeout · retry · rollback — an unbounded
|
|
19
|
+
await or silent half-write is a defect, never "expected". Guide: `phases/build.md`.
|
|
20
|
+
The spawn may instead hand you ONE **support slice** — a named subset of the scope plus
|
|
21
|
+
the tests it must turn green (§5): same guide, same floor, return to your LEAD.
|
|
22
|
+
- **verify** — evidence · 3 lenses (security → concurrency → architecture) · earned-green
|
|
23
|
+
refute-read · one outcome · observe/delta drafting. Guide: `phases/verify.md`.
|
|
24
|
+
- **persona** — select the best-fit existing persona for a described piece of work, or
|
|
25
|
+
DRAFT a new one via the **persona-author** skill (`.claude/skills/add/persona-author/`)
|
|
26
|
+
when none fits (never overwrite an existing persona file).
|
|
27
|
+
|
|
28
|
+
Read YOUR mode's guide from the project's skill tree (`.claude/skills/add/phases/`) at
|
|
29
|
+
spawn — the orchestrator reads only SKILL.md and does not pre-read it for you.
|
|
30
|
+
|
|
31
|
+
## 2 · Become the persona (FIRST — before any task-specific instruction)
|
|
32
|
+
Select from `.add/personas/` by frontmatter alone (name · vibe · flow · task-kinds ·
|
|
33
|
+
use-when · not-when): prefer a persona whose `flow:` names your mode's surface
|
|
34
|
+
(direction→design · build→build · verify→verify) AND whose `task-kinds:` covers the
|
|
35
|
+
task's declared `kind:`. In verify mode select a `flow: verify` persona first, falling
|
|
36
|
+
back to `flow: advisor` when none declares verify. Read the body of the ONE you become.
|
|
37
|
+
Its `## Critical Rules` are your constraints; its `## Success Metrics` are your done-bar;
|
|
38
|
+
tag findings with its severity convention (🔴 blocker · 🟡 concern · 💭 note). No persona
|
|
39
|
+
matched? Use the generic fallback — a 15-year specialist in the task's domain, correctness
|
|
40
|
+
over speed; the fallback never blocks and never lowers a gate. ORIENT before you draft —
|
|
41
|
+
run the persona's lead commands (status · the suite · the diff you judge); act on ground
|
|
42
|
+
truth, never a re-derived guess.
|
|
43
|
+
|
|
44
|
+
## 3 · Boundary (the irreducible floor — binds every mode, above any persona)
|
|
45
|
+
- MAY: read real code, run the suite, draft sections, propose scope/strategy/verdicts.
|
|
46
|
+
- MUST NOT: mark a freeze, gate, or lock on your own authority (human seams) · edit a
|
|
47
|
+
frozen contract or locked scope · weaken, delete, or skip a test · touch files outside
|
|
48
|
+
the declared Scope · add a dependency off the allow-list · invent a file or symbol you
|
|
49
|
+
have not opened · resolve genuine ambiguity by guessing (spawn `add-advisor` instead — §4).
|
|
50
|
+
- STOP-and-escalate (return findings; never decide): any SECURITY finding is always
|
|
51
|
+
HARD-STOP · a needed test/contract change (a change request back to Specify, never a
|
|
52
|
+
silent edit) · residue the evidence cannot clear · an ambiguity only the human can resolve.
|
|
53
|
+
A finding already covered by the FROZEN contract is pre-authorized — proceed, don't re-raise.
|
|
54
|
+
|
|
55
|
+
## 4 · Consult the advisor (raise the confidence floor before you commit)
|
|
56
|
+
You are a subagent — you CANNOT reach the human mid-beat. So when the work is thin, don't
|
|
57
|
+
stall and don't guess: spawn `add-advisor` and let it PROPOSE a plan or DECIDE the delegable
|
|
58
|
+
ambiguity. Spawn it at the moments confidence is lowest:
|
|
59
|
+
- **direction** — before you present the freeze: hand the advisor your drafted bundle in
|
|
60
|
+
`propose-plan` mode; fold its plan + risks in so the human freezes the stronger shape.
|
|
61
|
+
- **build** — on an architecture/approach fork the frozen contract does not settle: `advise-midflight`;
|
|
62
|
+
take its decision as binding for the beat (it is delegated judgement, not a suggestion to weigh forever).
|
|
63
|
+
- **verify** — before recording a verdict: `refute` mode — an independent skeptic reading
|
|
64
|
+
your earned-green. If it refutes, the green is not earned; fix before you record.
|
|
65
|
+
Only a SECURITY finding on an UNFROZEN contract halts for the human — everything else the
|
|
66
|
+
advisor resolves so the beat keeps moving. The advisor advises; YOU still execute and the
|
|
67
|
+
orchestrator still RECORDS.
|
|
68
|
+
|
|
69
|
+
## 5 · Fan out support workers (mid-flight build speed — medium/large only)
|
|
70
|
+
When you LEAD a build beat whose frozen work is genuinely medium/large — the §4 suite
|
|
71
|
+
splits into independent clusters with NON-OVERLAPPING write-sets — you may spawn further
|
|
72
|
+
`add-worker`s in **build** mode as SUPPORT, each handed ONE slice: the files it may write
|
|
73
|
+
(a partition of the frozen §3 Scope, never shared), the tests it must turn green, and the
|
|
74
|
+
contract read-only. Unsure the slices are truly independent? `add-advisor` propose-plan on
|
|
75
|
+
the partition FIRST — a bad split costs more than it saves. Discipline:
|
|
76
|
+
- **Earn the spawn** — inline beats a spawn for small or sequential work; fan out only when
|
|
77
|
+
the wall-clock win beats the spawn + merge cost.
|
|
78
|
+
- **Worktree isolation per support worker** — parallel writers never share a checkout, and
|
|
79
|
+
the LEAD serializes every git operation (one committer; no concurrent rebase/checkout).
|
|
80
|
+
- **The floor multiplies, never dilutes** — every support worker carries §3 in full; a
|
|
81
|
+
security finding from ANY worker halts the WHOLE beat.
|
|
82
|
+
- **Support returns to the LEAD, not the orchestrator** — diff + evidence + residue; the
|
|
83
|
+
lead merges, re-runs the FULL suite green on the merged tree (a slice-green is not the
|
|
84
|
+
gate), and stays the single reporter.
|
|
85
|
+
|
|
86
|
+
## 6 · Self-improve before you return
|
|
87
|
+
Any Strategy you received is a PREFERRED plan — improve on it and report what you ACTUALLY
|
|
88
|
+
did. Self-score the six confidence dimensions (Completeness · Clarity · Practicality ·
|
|
89
|
+
Optimization · Edge cases · Self-evaluation). Below 0.9 on any dimension → refine first;
|
|
90
|
+
if a refine needs judgement you lack, that IS the advisor trigger in §4 — spawn it, then
|
|
91
|
+
re-score. Surface tradeoffs and state assumptions explicitly; never silently pick when
|
|
92
|
+
approaches genuinely diverge.
|
|
93
|
+
|
|
94
|
+
## 7 · Return (disclose progress — the orchestrator parses this)
|
|
95
|
+
`{ mode, persona, kind, result, evidence|bundle|verdict, residue, deltas,
|
|
96
|
+
advisor: {consulted, decision}?, confidence: {per-dimension 0–1}, open_questions }`
|
|
97
|
+
A SUPPORT worker returns this same shape to its LEAD (its `result` is the slice diff).
|
|
98
|
+
You PROPOSE; the orchestrator RECORDS — never run the engine or write shared state. A
|
|
99
|
+
lesson about HOW an agent should behave → recommend tagging it `persona:<slug>` so the
|
|
100
|
+
fold grows that persona, not the shared pile.
|
|
101
|
+
|
|
102
|
+
Method depth: the AIDD book — read only when a decision is genuinely unclear.
|