pilotspace-add 1.0.0__tar.gz
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.
- pilotspace_add-1.0.0/GETTING-STARTED.md +238 -0
- pilotspace_add-1.0.0/LICENSE +20 -0
- pilotspace_add-1.0.0/MANIFEST.in +17 -0
- pilotspace_add-1.0.0/PKG-INFO +131 -0
- pilotspace_add-1.0.0/README.md +106 -0
- pilotspace_add-1.0.0/pyproject.toml +54 -0
- pilotspace_add-1.0.0/setup.cfg +4 -0
- pilotspace_add-1.0.0/src/add_method/__init__.py +16 -0
- pilotspace_add-1.0.0/src/add_method/__main__.py +7 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/00-introduction.md +46 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/01-principles.md +71 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/02-the-flow.md +93 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/03-step-1-specify.md +117 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/04-step-2-scenarios.md +78 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/05-step-3-contract.md +78 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/06-step-4-tests.md +71 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/07-step-5-build.md +80 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/08-step-6-verify.md +63 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/09-the-loop.md +43 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/10-setup-and-stages.md +75 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/11-governance.md +87 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/12-roles.md +99 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/13-adoption.md +67 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/14-foundation.md +121 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/README.md +70 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-competencies.png +0 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-flow.png +0 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-foundation.png +0 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-hierarchy.png +0 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-a-templates.md +88 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-b-prompts.md +119 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-c-glossary.md +85 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-d-worked-example.md +152 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-e-checklists.md +80 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-f-requirements-matrix.md +170 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/SKILL.md +118 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/deltas.md +69 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/fold.md +66 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/intake.md +49 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/0-setup.md +35 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/1-specify.md +55 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/2-scenarios.md +36 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/3-contract.md +41 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/4-tests.md +37 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/5-build.md +38 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/6-verify.md +39 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/7-observe.md +32 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/run.md +152 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/scope.md +58 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/add.py +1573 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/CONVENTIONS.md.tmpl +8 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/GLOSSARY.md.tmpl +3 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/MILESTONE.md.tmpl +25 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/MODEL_REGISTRY.md.tmpl +6 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/PROJECT.md.tmpl +42 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/TASK.md.tmpl +111 -0
- pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/dependencies.allowlist.tmpl +2 -0
- pilotspace_add-1.0.0/src/add_method/_cli.py +62 -0
- pilotspace_add-1.0.0/src/add_method/_installer.py +157 -0
- pilotspace_add-1.0.0/src/pilotspace_add.egg-info/PKG-INFO +131 -0
- pilotspace_add-1.0.0/src/pilotspace_add.egg-info/SOURCES.txt +62 -0
- pilotspace_add-1.0.0/src/pilotspace_add.egg-info/dependency_links.txt +1 -0
- pilotspace_add-1.0.0/src/pilotspace_add.egg-info/entry_points.txt +2 -0
- pilotspace_add-1.0.0/src/pilotspace_add.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# Getting started with ADD — your first feature in ~10 minutes
|
|
2
|
+
|
|
3
|
+
This is a runnable walkthrough. Follow it top to bottom and you'll take one real
|
|
4
|
+
feature — *transfer money between a user's own accounts* (the book's worked
|
|
5
|
+
example) — from nothing to a verified, passing result, using the ADD method.
|
|
6
|
+
|
|
7
|
+
You'll learn the whole loop by doing it once:
|
|
8
|
+
|
|
9
|
+
> **Specify → Scenarios → Contract → Tests → Build → Verify → Observe**
|
|
10
|
+
|
|
11
|
+
ADD is **AI-first**: you talk to the agent and it drives the method — you don't
|
|
12
|
+
hand-type the commands. The commands below are the agent's hands (and your escape
|
|
13
|
+
hatch); the rest of this guide shows both so you can see what the agent does.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## The fast path — talk to the agent
|
|
18
|
+
|
|
19
|
+
After installing (step 1 below), the whole on-ramp is one move:
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
in Claude Code: /add
|
|
23
|
+
you: "I want to let users transfer money between their own accounts."
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
From there the agent runs the **on-ramp** for you:
|
|
27
|
+
|
|
28
|
+
1. **Orient** — it reads `add.py status` (the resume point), never re-reading your repo.
|
|
29
|
+
2. **Intake** — it sizes your request into versioned scope and proposes a **milestone**
|
|
30
|
+
(goal · scope · breadth-first tasks · exit criteria). *You confirm the shape.*
|
|
31
|
+
3. **One-approval front** — for each task it drafts Spec + Scenarios + Contract + Tests
|
|
32
|
+
as one bundle. *You give one approval at the frozen contract.*
|
|
33
|
+
4. **Self-driving run** — build→verify runs to green; a security finding always stops
|
|
34
|
+
back to you.
|
|
35
|
+
|
|
36
|
+
So a milestone-sized feature is: **describe it → confirm the milestone → approve each
|
|
37
|
+
contract → review the result.** Everything between is the agent.
|
|
38
|
+
|
|
39
|
+
> New term: **On-ramp** — the install→first-milestone path. See `docs/appendix-c-glossary.md`.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 0 · Prerequisites
|
|
44
|
+
|
|
45
|
+
- **Node.js ≥ 18** (to install) and **Python 3.10+** (the tool is stdlib-only).
|
|
46
|
+
- A project folder. It can be empty or an existing repo.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 1 · Install
|
|
51
|
+
|
|
52
|
+
From your project root:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx @pilotspace/add init --name "My App" --stage prototype
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
This creates `.add/` (your runtime), drops the `add` skill into
|
|
59
|
+
`.claude/skills/add/`, and bundles the book into `.add/docs/`. Pick the stage that
|
|
60
|
+
matches your intent — `prototype`, `poc`, `mvp`, or `production`. You can change it
|
|
61
|
+
later with `python3 .add/tooling/add.py stage mvp`.
|
|
62
|
+
|
|
63
|
+
> Why stages exist: the steps never change, only how *deeply* you run them.
|
|
64
|
+
> See `.add/docs/10-setup-and-stages.md`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 2 · Orient — the command you'll use most
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
python3 .add/tooling/add.py status
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
`add.py status` is your home base. It reads `.add/state.json` and tells you the
|
|
75
|
+
project stage, the active task, and which phase you're in. **Start every session
|
|
76
|
+
with it** — that's how ADD resumes work without re-reading your whole repo.
|
|
77
|
+
|
|
78
|
+
> Tip: shorten typing with an alias — `alias add="python3 .add/tooling/add.py"` —
|
|
79
|
+
> then you can run `add status`, `add advance`, etc. The rest of this guide writes
|
|
80
|
+
> the full `python3 .add/tooling/add.py ...` form so copy-paste always works.
|
|
81
|
+
|
|
82
|
+
And when you're mid-task and unsure what the current phase needs, ask:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
python3 .add/tooling/add.py guide
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`status` tells you *where* you are; `guide` tells you *what to do next* — the active
|
|
89
|
+
task's phase, the one concrete next action, the chapter to read, and the exact command
|
|
90
|
+
to run once that phase is done.
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## 3 · Start your first feature
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
python3 .add/tooling/add.py new-task transfer --title "Transfer money between my accounts"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
This scaffolds `.add/tasks/transfer/TASK.md` — **one file holding all seven phase
|
|
101
|
+
sections** — plus empty `tests/` and `src/` folders, and makes it the active task
|
|
102
|
+
at phase `specify`.
|
|
103
|
+
|
|
104
|
+
Open `.add/tasks/transfer/TASK.md` in your editor. You'll fill it top to bottom.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Under the hood — the seven phases by hand (escape hatch)
|
|
109
|
+
|
|
110
|
+
Everything above is what the agent drives for you through the one-approval front. This
|
|
111
|
+
section is the **escape hatch**: the same seven phases run by hand, so you can see what
|
|
112
|
+
each one produces and step in manually whenever you want to. You never *have* to type
|
|
113
|
+
these — they are the agent's hands, and yours when you take the wheel.
|
|
114
|
+
|
|
115
|
+
The rhythm is always: **fill the section → run `python3 .add/tooling/add.py advance`.**
|
|
116
|
+
The tool keeps the `phase:` marker at the top of TASK.md in sync.
|
|
117
|
+
|
|
118
|
+
### Phase 1 — Specify (`docs/03-step-1-specify.md`)
|
|
119
|
+
|
|
120
|
+
Write the rules in **§1**. State what it *must* do, what it must *reject* (each
|
|
121
|
+
with a named error code), and what's true after success:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
Must:
|
|
125
|
+
- move an amount from one of my accounts to another of mine
|
|
126
|
+
- amount > 0 ; source ≠ destination ; source has enough balance
|
|
127
|
+
After:
|
|
128
|
+
- source balance -= amount, destination balance += amount
|
|
129
|
+
Reject:
|
|
130
|
+
- amount <= 0 -> "amount_invalid"
|
|
131
|
+
- source == destination -> "same_account"
|
|
132
|
+
- balance < amount -> "insufficient_funds"
|
|
133
|
+
- account not mine -> "forbidden"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Confirm every assumption (no FX, no daily limit in v1). Then:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
python3 .add/tooling/add.py advance
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Phase 2 — Scenarios (`docs/04-step-2-scenarios.md`)
|
|
143
|
+
|
|
144
|
+
In **§2**, turn each rule into a Given/When/Then. For every rejection, assert what
|
|
145
|
+
must stay **unchanged**:
|
|
146
|
+
|
|
147
|
+
```gherkin
|
|
148
|
+
Scenario: insufficient funds
|
|
149
|
+
Given A has 20, mine
|
|
150
|
+
When I transfer 50 from A to B
|
|
151
|
+
Then it is rejected "insufficient_funds"
|
|
152
|
+
And no balance changes
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Then `python3 .add/tooling/add.py advance`.
|
|
156
|
+
|
|
157
|
+
### Phase 3 — Contract (`docs/05-step-3-contract.md`)
|
|
158
|
+
|
|
159
|
+
In **§3**, fix the external shape and **freeze** it (`Status: FROZEN @ v1`):
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
POST /transfers body: { fromAccountId, toAccountId, amount }
|
|
163
|
+
200 -> { transferId, fromBalance, toBalance }
|
|
164
|
+
400 -> { error: "amount_invalid" | "same_account" | "insufficient_funds" }
|
|
165
|
+
403 -> { error: "forbidden" }
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
A frozen contract is the seam that makes the AI build safe. Then advance.
|
|
169
|
+
|
|
170
|
+
### Phase 4 — Tests, red first (`docs/06-step-4-tests.md`)
|
|
171
|
+
|
|
172
|
+
Write one test per scenario into `.add/tasks/transfer/tests/`, then **run them and
|
|
173
|
+
confirm they FAIL** — there's no code yet. A test that passes now is testing
|
|
174
|
+
nothing. This is red/green TDD: red before green. Then advance.
|
|
175
|
+
|
|
176
|
+
### Phase 5 — Build (`docs/07-step-5-build.md`)
|
|
177
|
+
|
|
178
|
+
Now let the AI write code into `.add/tasks/transfer/src/` until **every test
|
|
179
|
+
passes** — without changing any test or the frozen contract. Honor the safety rule
|
|
180
|
+
(here: debit + credit in one atomic transaction). Then advance.
|
|
181
|
+
|
|
182
|
+
### Phase 6 — Verify (`docs/08-step-6-verify.md`)
|
|
183
|
+
|
|
184
|
+
In **§6**, confirm the evidence (all green, nothing weakened) and check what tests
|
|
185
|
+
miss: concurrency, security, architecture. Record the gate — and close the task:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
python3 .add/tooling/add.py gate PASS
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
`gate PASS` marks the task `done`. (Use `gate HARD-STOP` to send it back to Build,
|
|
192
|
+
or `gate RISK-ACCEPTED` for a signed, non-security waiver.)
|
|
193
|
+
|
|
194
|
+
### Phase 7 — Observe (`docs/09-the-loop.md`)
|
|
195
|
+
|
|
196
|
+
In **§7**, note what to watch in production and the next spec delta. Every learning
|
|
197
|
+
becomes the next `new-task`. The flow is a loop, not a finish line.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 5 · Self-check
|
|
202
|
+
|
|
203
|
+
Confirm your project is internally consistent at any time:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
python3 .add/tooling/add.py check
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
It verifies state is valid, every task has its TASK.md, and markers match. Exit
|
|
210
|
+
code 0 means healthy — handy as a CI gate.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## 6 · Resume next session
|
|
215
|
+
|
|
216
|
+
Close your laptop, come back tomorrow, run:
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
python3 .add/tooling/add.py status
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
It tells you exactly where you left off and what to do next. No context rot — the
|
|
223
|
+
state lives on disk, not in a chat window.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## 7 · Where to read more
|
|
228
|
+
|
|
229
|
+
You just ran the method; now read *why* it's shaped this way:
|
|
230
|
+
|
|
231
|
+
- The shift & principles — `.add/docs/00-introduction.md`, `.add/docs/01-principles.md`
|
|
232
|
+
- The flow end to end — `.add/docs/02-the-flow.md`
|
|
233
|
+
- Each step in depth — `.add/docs/03..09`
|
|
234
|
+
- Operating it on a team — `.add/docs/11-governance.md`, `.add/docs/12-roles.md`
|
|
235
|
+
- A fully worked example — `.add/docs/appendix-d-worked-example.md`
|
|
236
|
+
|
|
237
|
+
The rule to remember: **build the right thing (direction), prove it's right
|
|
238
|
+
(verification), and let the AI do the building in between.**
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tin Dang
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# MANIFEST.in — controls sdist (source distribution) inclusion.
|
|
2
|
+
# python -m build builds the wheel FROM the sdist, so files missing here
|
|
3
|
+
# can be silently absent from the wheel too. This is the primary trap to avoid.
|
|
4
|
+
|
|
5
|
+
# The generated bundle — the only non-Python data this package ships.
|
|
6
|
+
graft src/add_method/_bundled
|
|
7
|
+
|
|
8
|
+
# Top-level prose
|
|
9
|
+
include README.md
|
|
10
|
+
include GETTING-STARTED.md
|
|
11
|
+
include LICENSE
|
|
12
|
+
|
|
13
|
+
# Global excludes — keep the distributions clean
|
|
14
|
+
global-exclude __pycache__
|
|
15
|
+
global-exclude *.py[co]
|
|
16
|
+
global-exclude .DS_Store
|
|
17
|
+
global-exclude *.egg-info
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pilotspace-add
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: ADD (AI-Driven Development) — install the ADD skill, tooling, and AIDD book into any project
|
|
5
|
+
Author-email: Tin Dang <tindang.ht97@gmail.com>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/pilotspace/ADD
|
|
8
|
+
Project-URL: Repository, https://github.com/pilotspace/ADD
|
|
9
|
+
Project-URL: Issues, https://github.com/pilotspace/ADD/issues
|
|
10
|
+
Keywords: ai-driven-development,add,aidd,claude-code,skill,tdd,spec-driven,agent,methodology
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Software Development
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Description-Content-Type: text/markdown
|
|
23
|
+
License-File: LICENSE
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
# ADD — AI-Driven Development
|
|
27
|
+
|
|
28
|
+
> A minimal, state-tracked Claude Code skill for building software when the AI
|
|
29
|
+
> writes the code and **you** own the two things it cannot do alone: decide *what*
|
|
30
|
+
> to build, and *verify* it is correct.
|
|
31
|
+
|
|
32
|
+
ADD is the **orchestration engine** of the AIDD method. It sits on top of a
|
|
33
|
+
context foundation (DDD → SDD → UDD) and runs as a red/green TDD ↔ AI-build loop.
|
|
34
|
+
The full reasoning — *why* every rule exists — is the AIDD book bundled in
|
|
35
|
+
[`docs/`](./docs/README.md). Read it once; keep it open beside you.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Foundation (context): DDD · SDD · UDD
|
|
39
|
+
Engine (this skill): TDD ⇄ ADD
|
|
40
|
+
Flow per feature: Specify → Scenarios → Contract → Tests → Build → Verify → Observe ↻
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Why ADD (and why it is minimal)
|
|
44
|
+
|
|
45
|
+
Heavy doc-first methods burn your time writing documents and lose the thread
|
|
46
|
+
across sessions (context rot). ADD fixes both:
|
|
47
|
+
|
|
48
|
+
- **One file per feature.** Spec, scenarios, contract, test-plan, and gate record
|
|
49
|
+
all live inline in a single `TASK.md`. No sprawling doc tree.
|
|
50
|
+
- **State on disk, not in chat.** A Python tool tracks where you are in
|
|
51
|
+
`.add/state.json`, so a fresh session resumes with one command instead of
|
|
52
|
+
re-reading the repo.
|
|
53
|
+
- **Progressive disclosure.** The skill loads only the guide for the phase you are
|
|
54
|
+
in — the context window stays lean.
|
|
55
|
+
|
|
56
|
+
## Install
|
|
57
|
+
|
|
58
|
+
Pick your ecosystem — both install the same skill, tooling, and book:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Node / npm
|
|
62
|
+
npx @pilotspace/add init --name "My App" --stage prototype
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Python / pip
|
|
67
|
+
pip install pilotspace-add
|
|
68
|
+
pilotspace-add init --name "My App" --stage prototype
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**New here?** Follow the [10-minute Quickstart](./GETTING-STARTED.md) — it walks
|
|
72
|
+
your first feature end to end.
|
|
73
|
+
|
|
74
|
+
This installs:
|
|
75
|
+
|
|
76
|
+
| Path | What |
|
|
77
|
+
|------|------|
|
|
78
|
+
| `.claude/skills/add/` | the `add` skill Claude loads (thin router + per-phase guides) |
|
|
79
|
+
| `.add/tooling/add.py` | scaffolder + state tracker (Python, stdlib only) |
|
|
80
|
+
| `.add/docs/` | the AIDD book — the trust layer |
|
|
81
|
+
| `.add/state.json` | where the project is |
|
|
82
|
+
| `.add/CONVENTIONS.md`, `GLOSSARY.md`, `MODEL_REGISTRY.md`, `dependencies.allowlist` | survivor-layer files |
|
|
83
|
+
|
|
84
|
+
## Use it
|
|
85
|
+
|
|
86
|
+
ADD is AI-first: you talk to the agent; it drives the method. In Claude Code, run
|
|
87
|
+
**`/add`** and say what you want to build:
|
|
88
|
+
|
|
89
|
+
> `/add` — *"I want to let users transfer money between their own accounts."*
|
|
90
|
+
|
|
91
|
+
The agent orients from `state.json`, **sizes your request into a milestone** (you
|
|
92
|
+
confirm the shape), then drafts each feature's **one-approval front** — Spec +
|
|
93
|
+
Scenarios + Contract + Tests as one bundle — and you give **one approval at the
|
|
94
|
+
frozen contract**. A self-driving build→verify run takes it to green; security
|
|
95
|
+
findings always stop back to you.
|
|
96
|
+
|
|
97
|
+
Under the hood the agent runs the CLI as its hands — and you can hand-drive it too:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
python3 .add/tooling/add.py status # where am I? (resume point)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## The non-negotiables
|
|
104
|
+
|
|
105
|
+
1. **Direction before speed** — no Build until spec, scenarios, contract, and *red*
|
|
106
|
+
tests exist.
|
|
107
|
+
2. **Trust evidence, not inspection** — a feature is trusted because its tests pass
|
|
108
|
+
and the blind spots (concurrency, security, architecture) were checked.
|
|
109
|
+
3. **Never weaken a test or edit a frozen contract** to make the build pass.
|
|
110
|
+
4. **No silent skips** — every Verify records `PASS`, `RISK-ACCEPTED`, or
|
|
111
|
+
`HARD-STOP`. Security findings are always `HARD-STOP`.
|
|
112
|
+
5. **Ask, don't guess.**
|
|
113
|
+
|
|
114
|
+
## The artifacts survive; the code is disposable
|
|
115
|
+
|
|
116
|
+
The durable asset is the decisions — spec, scenarios, contract, tests. The code is
|
|
117
|
+
one implementation that satisfies them and can be regenerated. If the thing you'd
|
|
118
|
+
be upset to lose is "the code," you're still working the old way.
|
|
119
|
+
|
|
120
|
+
## Read the method
|
|
121
|
+
|
|
122
|
+
Start at [`docs/README.md`](./docs/README.md) — Foundations → the six steps →
|
|
123
|
+
operating it across a team → templates, prompts, and a full worked example.
|
|
124
|
+
|
|
125
|
+
## Develop
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm test # runs the Python tests for the tooling (red/green)
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
License: MIT.
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ADD — AI-Driven Development
|
|
2
|
+
|
|
3
|
+
> A minimal, state-tracked Claude Code skill for building software when the AI
|
|
4
|
+
> writes the code and **you** own the two things it cannot do alone: decide *what*
|
|
5
|
+
> to build, and *verify* it is correct.
|
|
6
|
+
|
|
7
|
+
ADD is the **orchestration engine** of the AIDD method. It sits on top of a
|
|
8
|
+
context foundation (DDD → SDD → UDD) and runs as a red/green TDD ↔ AI-build loop.
|
|
9
|
+
The full reasoning — *why* every rule exists — is the AIDD book bundled in
|
|
10
|
+
[`docs/`](./docs/README.md). Read it once; keep it open beside you.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Foundation (context): DDD · SDD · UDD
|
|
14
|
+
Engine (this skill): TDD ⇄ ADD
|
|
15
|
+
Flow per feature: Specify → Scenarios → Contract → Tests → Build → Verify → Observe ↻
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Why ADD (and why it is minimal)
|
|
19
|
+
|
|
20
|
+
Heavy doc-first methods burn your time writing documents and lose the thread
|
|
21
|
+
across sessions (context rot). ADD fixes both:
|
|
22
|
+
|
|
23
|
+
- **One file per feature.** Spec, scenarios, contract, test-plan, and gate record
|
|
24
|
+
all live inline in a single `TASK.md`. No sprawling doc tree.
|
|
25
|
+
- **State on disk, not in chat.** A Python tool tracks where you are in
|
|
26
|
+
`.add/state.json`, so a fresh session resumes with one command instead of
|
|
27
|
+
re-reading the repo.
|
|
28
|
+
- **Progressive disclosure.** The skill loads only the guide for the phase you are
|
|
29
|
+
in — the context window stays lean.
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
Pick your ecosystem — both install the same skill, tooling, and book:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Node / npm
|
|
37
|
+
npx @pilotspace/add init --name "My App" --stage prototype
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
# Python / pip
|
|
42
|
+
pip install pilotspace-add
|
|
43
|
+
pilotspace-add init --name "My App" --stage prototype
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**New here?** Follow the [10-minute Quickstart](./GETTING-STARTED.md) — it walks
|
|
47
|
+
your first feature end to end.
|
|
48
|
+
|
|
49
|
+
This installs:
|
|
50
|
+
|
|
51
|
+
| Path | What |
|
|
52
|
+
|------|------|
|
|
53
|
+
| `.claude/skills/add/` | the `add` skill Claude loads (thin router + per-phase guides) |
|
|
54
|
+
| `.add/tooling/add.py` | scaffolder + state tracker (Python, stdlib only) |
|
|
55
|
+
| `.add/docs/` | the AIDD book — the trust layer |
|
|
56
|
+
| `.add/state.json` | where the project is |
|
|
57
|
+
| `.add/CONVENTIONS.md`, `GLOSSARY.md`, `MODEL_REGISTRY.md`, `dependencies.allowlist` | survivor-layer files |
|
|
58
|
+
|
|
59
|
+
## Use it
|
|
60
|
+
|
|
61
|
+
ADD is AI-first: you talk to the agent; it drives the method. In Claude Code, run
|
|
62
|
+
**`/add`** and say what you want to build:
|
|
63
|
+
|
|
64
|
+
> `/add` — *"I want to let users transfer money between their own accounts."*
|
|
65
|
+
|
|
66
|
+
The agent orients from `state.json`, **sizes your request into a milestone** (you
|
|
67
|
+
confirm the shape), then drafts each feature's **one-approval front** — Spec +
|
|
68
|
+
Scenarios + Contract + Tests as one bundle — and you give **one approval at the
|
|
69
|
+
frozen contract**. A self-driving build→verify run takes it to green; security
|
|
70
|
+
findings always stop back to you.
|
|
71
|
+
|
|
72
|
+
Under the hood the agent runs the CLI as its hands — and you can hand-drive it too:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
python3 .add/tooling/add.py status # where am I? (resume point)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## The non-negotiables
|
|
79
|
+
|
|
80
|
+
1. **Direction before speed** — no Build until spec, scenarios, contract, and *red*
|
|
81
|
+
tests exist.
|
|
82
|
+
2. **Trust evidence, not inspection** — a feature is trusted because its tests pass
|
|
83
|
+
and the blind spots (concurrency, security, architecture) were checked.
|
|
84
|
+
3. **Never weaken a test or edit a frozen contract** to make the build pass.
|
|
85
|
+
4. **No silent skips** — every Verify records `PASS`, `RISK-ACCEPTED`, or
|
|
86
|
+
`HARD-STOP`. Security findings are always `HARD-STOP`.
|
|
87
|
+
5. **Ask, don't guess.**
|
|
88
|
+
|
|
89
|
+
## The artifacts survive; the code is disposable
|
|
90
|
+
|
|
91
|
+
The durable asset is the decisions — spec, scenarios, contract, tests. The code is
|
|
92
|
+
one implementation that satisfies them and can be regenerated. If the thing you'd
|
|
93
|
+
be upset to lose is "the code," you're still working the old way.
|
|
94
|
+
|
|
95
|
+
## Read the method
|
|
96
|
+
|
|
97
|
+
Start at [`docs/README.md`](./docs/README.md) — Foundations → the six steps →
|
|
98
|
+
operating it across a team → templates, prompts, and a full worked example.
|
|
99
|
+
|
|
100
|
+
## Develop
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm test # runs the Python tests for the tooling (red/green)
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
License: MIT.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pilotspace-add"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "ADD (AI-Driven Development) — install the ADD skill, tooling, and AIDD book into any project"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "MIT"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "Tin Dang", email = "tindang.ht97@gmail.com" },
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"ai-driven-development", "add", "aidd", "claude-code",
|
|
17
|
+
"skill", "tdd", "spec-driven", "agent", "methodology",
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 4 - Beta",
|
|
21
|
+
"Intended Audience :: Developers",
|
|
22
|
+
"Operating System :: OS Independent",
|
|
23
|
+
"Programming Language :: Python :: 3",
|
|
24
|
+
"Programming Language :: Python :: 3.10",
|
|
25
|
+
"Programming Language :: Python :: 3.11",
|
|
26
|
+
"Programming Language :: Python :: 3.12",
|
|
27
|
+
"Programming Language :: Python :: 3.13",
|
|
28
|
+
"Programming Language :: Python :: 3.14",
|
|
29
|
+
"Topic :: Software Development",
|
|
30
|
+
]
|
|
31
|
+
requires-python = ">=3.10"
|
|
32
|
+
dependencies = []
|
|
33
|
+
|
|
34
|
+
[project.urls]
|
|
35
|
+
Homepage = "https://github.com/pilotspace/ADD"
|
|
36
|
+
Repository = "https://github.com/pilotspace/ADD"
|
|
37
|
+
Issues = "https://github.com/pilotspace/ADD/issues"
|
|
38
|
+
|
|
39
|
+
[project.scripts]
|
|
40
|
+
pilotspace-add = "add_method._cli:main"
|
|
41
|
+
|
|
42
|
+
[tool.setuptools]
|
|
43
|
+
package-dir = { "" = "src" }
|
|
44
|
+
include-package-data = true
|
|
45
|
+
|
|
46
|
+
[tool.setuptools.packages.find]
|
|
47
|
+
where = ["src"]
|
|
48
|
+
|
|
49
|
+
[tool.setuptools.package-data]
|
|
50
|
+
# Belt-and-suspenders: declare explicitly so the wheel always ships _bundled/
|
|
51
|
+
# regardless of whether files are git-tracked or MANIFEST.in is processed.
|
|
52
|
+
add_method = [
|
|
53
|
+
"_bundled/**/*",
|
|
54
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""add_method — Python installer for the ADD (AI-Driven Development) method.
|
|
2
|
+
|
|
3
|
+
Published as `pilotspace-add` on PyPI. Installs the ADD skill, tooling, and
|
|
4
|
+
AIDD book into a target project, then runs `add.py init`.
|
|
5
|
+
|
|
6
|
+
Usage (CLI):
|
|
7
|
+
pilotspace-add init [targetDir] [--force] [--stage STAGE] [--name NAME]
|
|
8
|
+
|
|
9
|
+
Usage (Python API):
|
|
10
|
+
from add_method import install
|
|
11
|
+
install("/path/to/project", stage="mvp", name="my-app")
|
|
12
|
+
"""
|
|
13
|
+
from add_method._installer import install
|
|
14
|
+
|
|
15
|
+
__all__ = ["install"]
|
|
16
|
+
__version__ = "1.0.0"
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 00 · The shift: why AIDD exists
|
|
2
|
+
|
|
3
|
+
[Contents](./README.md) · Next: [01 Core principles →](./01-principles.md)
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Code became cheap
|
|
8
|
+
|
|
9
|
+
For the whole history of software, writing code was the slow, expensive, central act. Methodologies — waterfall, agile, and the rest — were arrangements for managing that expensive act: how to plan it, divide it, review it, and ship it.
|
|
10
|
+
|
|
11
|
+
AI changed the cost. An agent can now produce a working module in the time it takes to describe it. The marginal cost of *writing* a piece of code, and of *re-writing* it, has fallen close to zero.
|
|
12
|
+
|
|
13
|
+
When the cost of one activity collapses, value moves to whatever is still scarce. Three things remain scarce:
|
|
14
|
+
|
|
15
|
+
1. **Validated decisions** — knowing what should be built, and being right about it.
|
|
16
|
+
2. **Stable contracts** — the agreed interfaces and data shapes that everything else depends on.
|
|
17
|
+
3. **Verification capacity** — the rate at which people can confirm that what was produced is actually correct.
|
|
18
|
+
|
|
19
|
+
AIDD is a development method organized around protecting those three things, because they are now where the difficulty lives.
|
|
20
|
+
|
|
21
|
+
## The failure mode AIDD prevents
|
|
22
|
+
|
|
23
|
+
The naïve way to use an AI agent is to describe a feature in a sentence and accept whatever it returns. This works for a throwaway script and fails for real software, for one reason: **an AI agent is fast in whatever direction it is pointed.**
|
|
24
|
+
|
|
25
|
+
If the direction is vague, the agent does not slow down and ask. It produces a confident, plausible, complete-looking result that is subtly wrong — built on an assumption you never made, missing an edge case you never stated. Because it looks finished, the error survives a quick read and surfaces later, when it is expensive to fix.
|
|
26
|
+
|
|
27
|
+
Speed in the wrong direction is not progress; it is faster waste. The entire purpose of AIDD is to fix the direction *before* turning on the speed.
|
|
28
|
+
|
|
29
|
+
## Where value moves — and what that means for you
|
|
30
|
+
|
|
31
|
+
If writing code is no longer the scarce skill, then a software person's value is no longer "can write code." It is two new things:
|
|
32
|
+
|
|
33
|
+
- **Direction** — turning a fuzzy need into an unambiguous, buildable definition.
|
|
34
|
+
- **Verification** — establishing, through evidence, that the result is correct and safe.
|
|
35
|
+
|
|
36
|
+
This is not a smaller job than coding; it is a harder one. It is the part of engineering that was always the real work, now made explicit because the typing has been automated away.
|
|
37
|
+
|
|
38
|
+
## What this book gives you
|
|
39
|
+
|
|
40
|
+
The rest of the book is the practical consequence of the shift:
|
|
41
|
+
|
|
42
|
+
- A **flow** (Part II) that front-loads direction and back-loads AI execution, with verification built in.
|
|
43
|
+
- An **operating manual** (Part III) for running that flow across stages, roles, and risk levels.
|
|
44
|
+
- **Reference material** (Part IV) — templates, prompts, and a fully worked example — so the method is concrete from day one.
|
|
45
|
+
|
|
46
|
+
> **The thesis in one line.** Build the right thing (direction), prove it is right (verification), and let the AI do the building in between.
|