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.
Files changed (64) hide show
  1. pilotspace_add-1.0.0/GETTING-STARTED.md +238 -0
  2. pilotspace_add-1.0.0/LICENSE +20 -0
  3. pilotspace_add-1.0.0/MANIFEST.in +17 -0
  4. pilotspace_add-1.0.0/PKG-INFO +131 -0
  5. pilotspace_add-1.0.0/README.md +106 -0
  6. pilotspace_add-1.0.0/pyproject.toml +54 -0
  7. pilotspace_add-1.0.0/setup.cfg +4 -0
  8. pilotspace_add-1.0.0/src/add_method/__init__.py +16 -0
  9. pilotspace_add-1.0.0/src/add_method/__main__.py +7 -0
  10. pilotspace_add-1.0.0/src/add_method/_bundled/docs/00-introduction.md +46 -0
  11. pilotspace_add-1.0.0/src/add_method/_bundled/docs/01-principles.md +71 -0
  12. pilotspace_add-1.0.0/src/add_method/_bundled/docs/02-the-flow.md +93 -0
  13. pilotspace_add-1.0.0/src/add_method/_bundled/docs/03-step-1-specify.md +117 -0
  14. pilotspace_add-1.0.0/src/add_method/_bundled/docs/04-step-2-scenarios.md +78 -0
  15. pilotspace_add-1.0.0/src/add_method/_bundled/docs/05-step-3-contract.md +78 -0
  16. pilotspace_add-1.0.0/src/add_method/_bundled/docs/06-step-4-tests.md +71 -0
  17. pilotspace_add-1.0.0/src/add_method/_bundled/docs/07-step-5-build.md +80 -0
  18. pilotspace_add-1.0.0/src/add_method/_bundled/docs/08-step-6-verify.md +63 -0
  19. pilotspace_add-1.0.0/src/add_method/_bundled/docs/09-the-loop.md +43 -0
  20. pilotspace_add-1.0.0/src/add_method/_bundled/docs/10-setup-and-stages.md +75 -0
  21. pilotspace_add-1.0.0/src/add_method/_bundled/docs/11-governance.md +87 -0
  22. pilotspace_add-1.0.0/src/add_method/_bundled/docs/12-roles.md +99 -0
  23. pilotspace_add-1.0.0/src/add_method/_bundled/docs/13-adoption.md +67 -0
  24. pilotspace_add-1.0.0/src/add_method/_bundled/docs/14-foundation.md +121 -0
  25. pilotspace_add-1.0.0/src/add_method/_bundled/docs/README.md +70 -0
  26. pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-competencies.png +0 -0
  27. pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-flow.png +0 -0
  28. pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-foundation.png +0 -0
  29. pilotspace_add-1.0.0/src/add_method/_bundled/docs/add-hierarchy.png +0 -0
  30. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-a-templates.md +88 -0
  31. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-b-prompts.md +119 -0
  32. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-c-glossary.md +85 -0
  33. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-d-worked-example.md +152 -0
  34. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-e-checklists.md +80 -0
  35. pilotspace_add-1.0.0/src/add_method/_bundled/docs/appendix-f-requirements-matrix.md +170 -0
  36. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/SKILL.md +118 -0
  37. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/deltas.md +69 -0
  38. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/fold.md +66 -0
  39. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/intake.md +49 -0
  40. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/0-setup.md +35 -0
  41. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/1-specify.md +55 -0
  42. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/2-scenarios.md +36 -0
  43. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/3-contract.md +41 -0
  44. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/4-tests.md +37 -0
  45. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/5-build.md +38 -0
  46. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/6-verify.md +39 -0
  47. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/phases/7-observe.md +32 -0
  48. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/run.md +152 -0
  49. pilotspace_add-1.0.0/src/add_method/_bundled/skill/add/scope.md +58 -0
  50. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/add.py +1573 -0
  51. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/CONVENTIONS.md.tmpl +8 -0
  52. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/GLOSSARY.md.tmpl +3 -0
  53. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/MILESTONE.md.tmpl +25 -0
  54. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/MODEL_REGISTRY.md.tmpl +6 -0
  55. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/PROJECT.md.tmpl +42 -0
  56. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/TASK.md.tmpl +111 -0
  57. pilotspace_add-1.0.0/src/add_method/_bundled/tooling/templates/dependencies.allowlist.tmpl +2 -0
  58. pilotspace_add-1.0.0/src/add_method/_cli.py +62 -0
  59. pilotspace_add-1.0.0/src/add_method/_installer.py +157 -0
  60. pilotspace_add-1.0.0/src/pilotspace_add.egg-info/PKG-INFO +131 -0
  61. pilotspace_add-1.0.0/src/pilotspace_add.egg-info/SOURCES.txt +62 -0
  62. pilotspace_add-1.0.0/src/pilotspace_add.egg-info/dependency_links.txt +1 -0
  63. pilotspace_add-1.0.0/src/pilotspace_add.egg-info/entry_points.txt +2 -0
  64. 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,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -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,7 @@
1
+ """Support `python -m add_method` as an alias for the `pilotspace-add` console script."""
2
+ import sys
3
+
4
+ from add_method._cli import main
5
+
6
+ if __name__ == "__main__":
7
+ sys.exit(main())
@@ -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.