wdi-method 0.6.26 → 0.6.28
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 +65 -0
- package/README.de.md +262 -0
- package/README.es.md +262 -0
- package/README.fr.md +262 -0
- package/README.id.md +172 -101
- package/README.ja.md +172 -99
- package/README.ko.md +262 -0
- package/README.md +164 -97
- package/README.pt-BR.md +262 -0
- package/README.ru.md +262 -0
- package/README.zh-CN.md +262 -0
- package/bin/wdi-method.js +10 -1
- package/kit/.constitution/method/README.md +1 -1
- package/kit/.constitution/method/method-glossary.md +184 -184
- package/kit/.constitution/method/repo-guide.md +5 -0
- package/kit/.constitution/method/scripts/validate.py +61 -1
- package/kit/.constitution/method/why/README.md +201 -192
- package/kit/.constitution/method/why/portability.md +1 -1
- package/kit/skills/wdi-build/SKILL.md +4 -0
- package/kit/skills/wdi-daily-autopilot/SKILL.md +4 -3
- package/kit/skills/wdi-daily-what-to-build/SKILL.md +1 -1
- package/kit/skills/wdi-init/SKILL.md +231 -231
- package/kit/skills/wdi-prune-or-archive/SKILL.md +1 -1
- package/kit-overlay/AGENTS.md +13 -6
- package/kit-overlay/README.md +1 -1
- package/kit-overlay/portability.md +1 -1
- package/kit-overlay/repo-guide.md +5 -0
- package/package.json +26 -3
- package/scaffold/.control/custom-dispatch.yaml.example +14 -9
- package/README.zh.md +0 -189
|
@@ -1,192 +1,201 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: Reference
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# The WDI Method — orientation
|
|
6
|
-
|
|
7
|
-
**Opened when:** you have never seen this method before, or you have and want the shape back in one reading.
|
|
8
|
-
|
|
9
|
-
This file **explains**. It does not bind — `../document/*-guide.md` does, and where the two disagree the guide
|
|
10
|
-
wins and the disagreement is a defect to report.
|
|
11
|
-
|
|
12
|
-
Five minutes. Four more files sit beside this one: `artifact-map.md` for *"where does this file go"*,
|
|
13
|
-
`mode-risk-map.md` for *"I set a `mode` and a `risk_accepted` — what changes?"*, `portability.md` for which
|
|
14
|
-
files are the method's and which are the product's, and `rationale.md` for *"why is it like this"* — open
|
|
15
|
-
that last one before changing a rule, so you know what you are about to break.
|
|
16
|
-
|
|
17
|
-
## What the method is
|
|
18
|
-
|
|
19
|
-
Two methods joined. **WDI** owns the flow, the gates, and the artifacts nobody else writes. **BMad** owns
|
|
20
|
-
the writing skills where it has one. Every BMad skill is invoked through a WDI wrapper, never directly: the
|
|
21
|
-
wrapper is what checks position, verifies the result against the guide, and lands the memlog.
|
|
22
|
-
|
|
23
|
-
The whole thing rests on one sentence:
|
|
24
|
-
|
|
25
|
-
> Owner time is spent at five points. Between them, the agents work alone.
|
|
26
|
-
|
|
27
|
-
## Five gates
|
|
28
|
-
|
|
29
|
-
A gate is named for **what is decided there**, never for the work before it.
|
|
30
|
-
|
|
31
|
-
| Gate | Decides | How often | Budget |
|
|
32
|
-
|---|---|---|---|
|
|
33
|
-
| **G1 Problem** | What the problem is, whose it is, why it earns work | once | 20' |
|
|
34
|
-
| **G2 Product** | What is built, and how it feels to use | once per PRD | 45' |
|
|
35
|
-
| **G3 Blueprint** | The whole portrait: which use cases, their entities, tables, endpoints, screens, and the invariants binding them | once per **product** | 45' |
|
|
36
|
-
| **G4 Component** | How one Product Component is built, and what the choice costs | once per **component** | 20–30' |
|
|
37
|
-
| **G5 Release** | Whether it is done and proven | once per spec | 10' |
|
|
38
|
-
|
|
39
|
-
**Only G4 can disappear.** At `mode: catalog` its session does not happen at all; the other four always run,
|
|
40
|
-
and what each decides never changes. What `mode` does shorten everywhere is the **checklist**: at `catalog`
|
|
41
|
-
only the ★ questions are required, at G1 and G5 as much as at G4. Sessions fixed, checklist elastic — that is
|
|
42
|
-
what lets the whole system be held in one head.
|
|
43
|
-
|
|
44
|
-
## Two settings, and they control different things
|
|
45
|
-
|
|
46
|
-
| Setting | Where | Controls |
|
|
47
|
-
|---|---|---|
|
|
48
|
-
| `mode` | globally in `index.yaml`, per component in `components.yaml` | **Document depth**, and only that |
|
|
49
|
-
| `risk_accepted` | per component | **Review intensity**, and only that |
|
|
50
|
-
|
|
51
|
-
`mode` takes `catalog` · `outline` · `guarded` · `deep`, and the default is `catalog`. A component at
|
|
52
|
-
`catalog` **skips G4 entirely** — its control moved to G3, where its use cases, tables, endpoints, screens,
|
|
53
|
-
domain model, and C4 were all approved.
|
|
54
|
-
|
|
55
|
-
`risk_accepted` takes `low` · `medium` · `high`, and its direction reads off the name: `high` means *"I
|
|
56
|
-
accept a lot of risk here"*, so its review is the lightest.
|
|
57
|
-
|
|
58
|
-
Keeping them apart is what lets one component be **thin on purpose and reviewed the hardest**. Why that
|
|
59
|
-
matters is in `rationale.md`; what each value demands is in `../document/delivery-flow-guide.md`.
|
|
60
|
-
|
|
61
|
-
## The run, first time through
|
|
62
|
-
|
|
63
|
-
| # | Step | Run | Gate |
|
|
64
|
-
|---|---|---|---|
|
|
65
|
-
| 0 | Set up | `wdi-init` intent `setup` — registry scaffolded, global `mode` set, existing documents reported, structure maps derived | — |
|
|
66
|
-
| 1 | Discovery and brief | `wdi-problem` | **G1** |
|
|
67
|
-
| 2 | PRD, one per initiative | `wdi-product` intent `prd` | **G2** |
|
|
68
|
-
| 2b | UX — only when the interface is a large part of the promise. **Before G2**, because G2 reads its `EXPERIENCE.md` | `wdi-ux` | with **G2** |
|
|
69
|
-
| 3 | Birth the components, set `mode` and `risk_accepted`, and land the waiting UX halves | `wdi-init` intent `component` | — (tail of G2) |
|
|
70
|
-
| 4 | Blueprint | `wdi-blueprint` intent `catalog`, then `platform` | **G3** |
|
|
71
|
-
| 5 | One component's depth | `wdi-component` — as deep as its `mode`; **skipped at `catalog`** | **G4** |
|
|
72
|
-
| 6 | Pick the work | `wdi-report` intent `estimate` — candidate tasks derived from `CAP`/`FR`; one row becomes one spec | — |
|
|
73
|
-
| 7 | Build | `wdi-build` — opens the spec, has the owner run `to-spec` and `to-tickets`, ships each ticket, closes the spec | **G5** |
|
|
74
|
-
|
|
75
|
-
After step 7 the next component enters at **step 5** (at `mode: catalog`, at step 6), not at the
|
|
76
|
-
beginning. Steps 0–4 happen once in the life of the product.
|
|
77
|
-
|
|
78
|
-
**What the human reads is one rendered page per gate**: `.what-rendered/_product-brief/brief.md` at G1,
|
|
79
|
-
`.what-rendered/_prd/<slug>/prd.md` at G2, `.how-rendered/blueprint.md` at G3,
|
|
80
|
-
`.how-rendered/<pc>/SDD-<pc>.md` at G4. The working documents under `.what/` and `.how/` point at the
|
|
81
|
-
registry instead of repeating it and are the AI's. `SPEC.md` and ticket files are **not read by humans**.
|
|
82
|
-
|
|
83
|
-
Six engines come from [mattpocock/skills](https://github.com/mattpocock/skills) — `to-spec`,
|
|
84
|
-
`to-tickets`, `implement`, `tdd`, `code-review`, and `domain-modeling` (that last one is G3's, invoked by
|
|
85
|
-
`wdi-blueprint`). They are installed **into the repo**, on any agent:
|
|
86
|
-
`npx skills@latest add mattpocock/skills`. A user-level plugin does not count, and the reason is
|
|
87
|
-
mechanical: three of the six ship with `disable-model-invocation: true`, nothing outside the file lifts
|
|
88
|
-
it, and a plugin's files are not the repo's to edit. `wdi-method` strips it from the repo's own copies so
|
|
89
|
-
`wdi-build` and `wdi-autopilot` can invoke them, and re-applies that on every update because
|
|
90
|
-
`npx skills update` restores the author's file.
|
|
91
|
-
|
|
92
|
-
You do NOT need `/setup-matt-pocock-skills`: the installer seeds `docs/agents/` already answered for this
|
|
93
|
-
method. G1–G4 run without the engines; `wdi-build` and the Fast Path do not.
|
|
94
|
-
|
|
95
|
-
## The run, every time after
|
|
96
|
-
|
|
97
|
-
| Situation | Run |
|
|
98
|
-
|---|---|
|
|
99
|
-
| The next component is being taken on | `wdi-init` intent `mode` or `risk` if either needs changing → `wdi-component` → **G4** → `wdi-build` → **G5** |
|
|
100
|
-
| That component is at `mode: catalog` | straight to `wdi-build`. G4 is skipped |
|
|
101
|
-
| A promise changes where a PRD already exists | `wdi-product` intent `update` — never a second PRD for the same area |
|
|
102
|
-
| A new initiative with a different reader | `wdi-product` intent `prd` → `wdi-init` intent `component` if it births components |
|
|
103
|
-
| A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: the owner runs `/implement` directly, with no wrapper. It **stops and becomes a spec `S`** the moment an `FR` is touched |
|
|
104
|
-
| A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, **before** any fix is proposed |
|
|
105
|
-
| A planning assumption turned out void | `wdi-decision` — it wraps `bmad-correct-course`, proposes, and changes nothing itself |
|
|
106
|
-
| An estimate or a task list is needed | `wdi-report` intent `estimate` |
|
|
107
|
-
| `wdi-method update` printed an `upgrade` line | `wdi-upgrade`, before any other skill — it moves content into the new shape, never invents it, one commit |
|
|
108
|
-
| You do not know where you are | `wdi-help` |
|
|
109
|
-
|
|
110
|
-
##
|
|
111
|
-
|
|
112
|
-
Named for the **gate they serve**, so *"which skill do I run"* is answered by *"which gate am I at"*.
|
|
113
|
-
|
|
114
|
-
**Moment-bound** — running them outside their point is wrong:
|
|
115
|
-
|
|
116
|
-
| Skill | Its moment |
|
|
117
|
-
|---|---|
|
|
118
|
-
| `wdi-init` intent `setup` | before G1, once per project |
|
|
119
|
-
| `wdi-problem` | G1 |
|
|
120
|
-
| `wdi-product` | G2 |
|
|
121
|
-
| `wdi-init` intent `component` | tail of G2, and whenever a new PRD births a component |
|
|
122
|
-
| `wdi-blueprint` | G3 |
|
|
123
|
-
| `wdi-component` | G4 |
|
|
124
|
-
| `wdi-build` | G5, one spec per run |
|
|
125
|
-
|
|
126
|
-
**Anytime** — run the moment the trigger appears, without waiting for a gate:
|
|
127
|
-
|
|
128
|
-
| Skill | Its trigger |
|
|
129
|
-
|---|---|
|
|
130
|
-
| `wdi-decision` | A decision worth remembering · a void assumption · an accepted decision to carry into documents |
|
|
131
|
-
| `wdi-question` | Something that cannot be decided now |
|
|
132
|
-
| `wdi-log` | A meeting finished, or a non-technical fact now binds |
|
|
133
|
-
| `wdi-help` | "Where am I, what next" |
|
|
134
|
-
| `wdi-explain-to-me` | "Brief me so I can decide this" — an open question, a defect, a design fork. Reads everything, writes nothing; the decision then goes to `wdi-decision` or `wdi-question` |
|
|
135
|
-
| `wdi-autopilot` | "Deliver every `FR` and do not ask me in between." A preflight the owner confirms becomes one `DEC-` of `type: mandate`; a loop then fires the skill, and it runs every other skill, decides what they would have asked, and writes each decision to one ledger the owner reviews in parallel |
|
|
136
|
-
| `wdi-upgrade` | `wdi-method update` just moved the method version, and the summary listed content still in the old shape. Moves it, never invents it; one commit |
|
|
137
|
-
| `wdi-reconcile` | Any time. Read-only — it reports, it never edits |
|
|
138
|
-
| `wdi-review` | Over any document, any time |
|
|
139
|
-
| `wdi-systematic-debugging` | A bug, a failed test, a failed build, unexpected behaviour |
|
|
140
|
-
| `wdi-report` | An estimate at the start · progress periodically · before a client update |
|
|
141
|
-
| `wdi-init` intents `mode` · `risk` · `structure` | Any time |
|
|
142
|
-
| `wdi-ux` | Any time after a PRD exists, if UX is being used |
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
|
147
|
-
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
|
156
|
-
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
161
|
-
**
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
| The
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
|
185
|
-
|
|
186
|
-
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
1
|
+
---
|
|
2
|
+
status: Reference
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# The WDI Method — orientation
|
|
6
|
+
|
|
7
|
+
**Opened when:** you have never seen this method before, or you have and want the shape back in one reading.
|
|
8
|
+
|
|
9
|
+
This file **explains**. It does not bind — `../document/*-guide.md` does, and where the two disagree the guide
|
|
10
|
+
wins and the disagreement is a defect to report.
|
|
11
|
+
|
|
12
|
+
Five minutes. Four more files sit beside this one: `artifact-map.md` for *"where does this file go"*,
|
|
13
|
+
`mode-risk-map.md` for *"I set a `mode` and a `risk_accepted` — what changes?"*, `portability.md` for which
|
|
14
|
+
files are the method's and which are the product's, and `rationale.md` for *"why is it like this"* — open
|
|
15
|
+
that last one before changing a rule, so you know what you are about to break.
|
|
16
|
+
|
|
17
|
+
## What the method is
|
|
18
|
+
|
|
19
|
+
Two methods joined. **WDI** owns the flow, the gates, and the artifacts nobody else writes. **BMad** owns
|
|
20
|
+
the writing skills where it has one. Every BMad skill is invoked through a WDI wrapper, never directly: the
|
|
21
|
+
wrapper is what checks position, verifies the result against the guide, and lands the memlog.
|
|
22
|
+
|
|
23
|
+
The whole thing rests on one sentence:
|
|
24
|
+
|
|
25
|
+
> Owner time is spent at five points. Between them, the agents work alone.
|
|
26
|
+
|
|
27
|
+
## Five gates
|
|
28
|
+
|
|
29
|
+
A gate is named for **what is decided there**, never for the work before it.
|
|
30
|
+
|
|
31
|
+
| Gate | Decides | How often | Budget |
|
|
32
|
+
|---|---|---|---|
|
|
33
|
+
| **G1 Problem** | What the problem is, whose it is, why it earns work | once | 20' |
|
|
34
|
+
| **G2 Product** | What is built, and how it feels to use | once per PRD | 45' |
|
|
35
|
+
| **G3 Blueprint** | The whole portrait: which use cases, their entities, tables, endpoints, screens, and the invariants binding them | once per **product** | 45' |
|
|
36
|
+
| **G4 Component** | How one Product Component is built, and what the choice costs | once per **component** | 20–30' |
|
|
37
|
+
| **G5 Release** | Whether it is done and proven | once per spec | 10' |
|
|
38
|
+
|
|
39
|
+
**Only G4 can disappear.** At `mode: catalog` its session does not happen at all; the other four always run,
|
|
40
|
+
and what each decides never changes. What `mode` does shorten everywhere is the **checklist**: at `catalog`
|
|
41
|
+
only the ★ questions are required, at G1 and G5 as much as at G4. Sessions fixed, checklist elastic — that is
|
|
42
|
+
what lets the whole system be held in one head.
|
|
43
|
+
|
|
44
|
+
## Two settings, and they control different things
|
|
45
|
+
|
|
46
|
+
| Setting | Where | Controls |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| `mode` | globally in `index.yaml`, per component in `components.yaml` | **Document depth**, and only that |
|
|
49
|
+
| `risk_accepted` | per component | **Review intensity**, and only that |
|
|
50
|
+
|
|
51
|
+
`mode` takes `catalog` · `outline` · `guarded` · `deep`, and the default is `catalog`. A component at
|
|
52
|
+
`catalog` **skips G4 entirely** — its control moved to G3, where its use cases, tables, endpoints, screens,
|
|
53
|
+
domain model, and C4 were all approved.
|
|
54
|
+
|
|
55
|
+
`risk_accepted` takes `low` · `medium` · `high`, and its direction reads off the name: `high` means *"I
|
|
56
|
+
accept a lot of risk here"*, so its review is the lightest.
|
|
57
|
+
|
|
58
|
+
Keeping them apart is what lets one component be **thin on purpose and reviewed the hardest**. Why that
|
|
59
|
+
matters is in `rationale.md`; what each value demands is in `../document/delivery-flow-guide.md`.
|
|
60
|
+
|
|
61
|
+
## The run, first time through
|
|
62
|
+
|
|
63
|
+
| # | Step | Run | Gate |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| 0 | Set up | `wdi-init` intent `setup` — registry scaffolded, global `mode` set, existing documents reported, structure maps derived | — |
|
|
66
|
+
| 1 | Discovery and brief | `wdi-problem` | **G1** |
|
|
67
|
+
| 2 | PRD, one per initiative | `wdi-product` intent `prd` | **G2** |
|
|
68
|
+
| 2b | UX — only when the interface is a large part of the promise. **Before G2**, because G2 reads its `EXPERIENCE.md` | `wdi-ux` | with **G2** |
|
|
69
|
+
| 3 | Birth the components, set `mode` and `risk_accepted`, and land the waiting UX halves | `wdi-init` intent `component` | — (tail of G2) |
|
|
70
|
+
| 4 | Blueprint | `wdi-blueprint` intent `catalog`, then `platform` | **G3** |
|
|
71
|
+
| 5 | One component's depth | `wdi-component` — as deep as its `mode`; **skipped at `catalog`** | **G4** |
|
|
72
|
+
| 6 | Pick the work | `wdi-report` intent `estimate` — candidate tasks derived from `CAP`/`FR`; one row becomes one spec | — |
|
|
73
|
+
| 7 | Build | `wdi-build` — opens the spec, has the owner run `to-spec` and `to-tickets`, ships each ticket, closes the spec | **G5** |
|
|
74
|
+
|
|
75
|
+
After step 7 the next component enters at **step 5** (at `mode: catalog`, at step 6), not at the
|
|
76
|
+
beginning. Steps 0–4 happen once in the life of the product.
|
|
77
|
+
|
|
78
|
+
**What the human reads is one rendered page per gate**: `.what-rendered/_product-brief/brief.md` at G1,
|
|
79
|
+
`.what-rendered/_prd/<slug>/prd.md` at G2, `.how-rendered/blueprint.md` at G3,
|
|
80
|
+
`.how-rendered/<pc>/SDD-<pc>.md` at G4. The working documents under `.what/` and `.how/` point at the
|
|
81
|
+
registry instead of repeating it and are the AI's. `SPEC.md` and ticket files are **not read by humans**.
|
|
82
|
+
|
|
83
|
+
Six engines come from [mattpocock/skills](https://github.com/mattpocock/skills) — `to-spec`,
|
|
84
|
+
`to-tickets`, `implement`, `tdd`, `code-review`, and `domain-modeling` (that last one is G3's, invoked by
|
|
85
|
+
`wdi-blueprint`). They are installed **into the repo**, on any agent:
|
|
86
|
+
`npx skills@latest add mattpocock/skills`. A user-level plugin does not count, and the reason is
|
|
87
|
+
mechanical: three of the six ship with `disable-model-invocation: true`, nothing outside the file lifts
|
|
88
|
+
it, and a plugin's files are not the repo's to edit. `wdi-method` strips it from the repo's own copies so
|
|
89
|
+
`wdi-build` and `wdi-autopilot` can invoke them, and re-applies that on every update because
|
|
90
|
+
`npx skills update` restores the author's file.
|
|
91
|
+
|
|
92
|
+
You do NOT need `/setup-matt-pocock-skills`: the installer seeds `docs/agents/` already answered for this
|
|
93
|
+
method. G1–G4 run without the engines; `wdi-build` and the Fast Path do not.
|
|
94
|
+
|
|
95
|
+
## The run, every time after
|
|
96
|
+
|
|
97
|
+
| Situation | Run |
|
|
98
|
+
|---|---|
|
|
99
|
+
| The next component is being taken on | `wdi-init` intent `mode` or `risk` if either needs changing → `wdi-component` → **G4** → `wdi-build` → **G5** |
|
|
100
|
+
| That component is at `mode: catalog` | straight to `wdi-build`. G4 is skipped |
|
|
101
|
+
| A promise changes where a PRD already exists | `wdi-product` intent `update` — never a second PRD for the same area |
|
|
102
|
+
| A new initiative with a different reader | `wdi-product` intent `prd` → `wdi-init` intent `component` if it births components |
|
|
103
|
+
| A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: the owner runs `/implement` directly, with no wrapper. It **stops and becomes a spec `S`** the moment an `FR` is touched |
|
|
104
|
+
| A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, **before** any fix is proposed |
|
|
105
|
+
| A planning assumption turned out void | `wdi-decision` — it wraps `bmad-correct-course`, proposes, and changes nothing itself |
|
|
106
|
+
| An estimate or a task list is needed | `wdi-report` intent `estimate` |
|
|
107
|
+
| `wdi-method update` printed an `upgrade` line | `wdi-upgrade`, before any other skill — it moves content into the new shape, never invents it, one commit |
|
|
108
|
+
| You do not know where you are | `wdi-help` |
|
|
109
|
+
|
|
110
|
+
## Twenty-two skills
|
|
111
|
+
|
|
112
|
+
Named for the **gate they serve**, so *"which skill do I run"* is answered by *"which gate am I at"*.
|
|
113
|
+
|
|
114
|
+
**Moment-bound** — running them outside their point is wrong:
|
|
115
|
+
|
|
116
|
+
| Skill | Its moment |
|
|
117
|
+
|---|---|
|
|
118
|
+
| `wdi-init` intent `setup` | before G1, once per project |
|
|
119
|
+
| `wdi-problem` | G1 |
|
|
120
|
+
| `wdi-product` | G2 |
|
|
121
|
+
| `wdi-init` intent `component` | tail of G2, and whenever a new PRD births a component |
|
|
122
|
+
| `wdi-blueprint` | G3 |
|
|
123
|
+
| `wdi-component` | G4 |
|
|
124
|
+
| `wdi-build` | G5, one spec per run |
|
|
125
|
+
|
|
126
|
+
**Anytime** — run the moment the trigger appears, without waiting for a gate:
|
|
127
|
+
|
|
128
|
+
| Skill | Its trigger |
|
|
129
|
+
|---|---|
|
|
130
|
+
| `wdi-decision` | A decision worth remembering · a void assumption · an accepted decision to carry into documents |
|
|
131
|
+
| `wdi-question` | Something that cannot be decided now |
|
|
132
|
+
| `wdi-log` | A meeting finished, or a non-technical fact now binds |
|
|
133
|
+
| `wdi-help` | "Where am I, what next" |
|
|
134
|
+
| `wdi-explain-to-me` | "Brief me so I can decide this" — an open question, a defect, a design fork. Reads everything, writes nothing; the decision then goes to `wdi-decision` or `wdi-question` |
|
|
135
|
+
| `wdi-autopilot` | "Deliver every `FR` and do not ask me in between." A preflight the owner confirms becomes one `DEC-` of `type: mandate`; a loop then fires the skill, and it runs every other skill, decides what they would have asked, and writes each decision to one ledger the owner reviews in parallel |
|
|
136
|
+
| `wdi-upgrade` | `wdi-method update` just moved the method version, and the summary listed content still in the old shape. Moves it, never invents it; one commit |
|
|
137
|
+
| `wdi-reconcile` | Any time. Read-only — it reports, it never edits |
|
|
138
|
+
| `wdi-review` | Over any document, any time |
|
|
139
|
+
| `wdi-systematic-debugging` | A bug, a failed test, a failed build, unexpected behaviour |
|
|
140
|
+
| `wdi-report` | An estimate at the start · progress periodically · before a client update |
|
|
141
|
+
| `wdi-init` intents `mode` · `risk` · `structure` | Any time |
|
|
142
|
+
| `wdi-ux` | Any time after a PRD exists, if UX is being used |
|
|
143
|
+
|
|
144
|
+
**Daily tier** — four more, started only when the owner types them (`disable-model-invocation: true`):
|
|
145
|
+
|
|
146
|
+
| Skill | Its trigger |
|
|
147
|
+
|---|---|
|
|
148
|
+
| `wdi-daily-what-to-build` | Hand-testing notes to turn into a reviewed spec or ticket. Stops before code, commit, or push |
|
|
149
|
+
| `wdi-daily-autopilot` | Start the daily loop: checks for an accepted mandate (preflight if none), resolves reviewers, launches `/loop` over `wdi-autopilot` |
|
|
150
|
+
| `wdi-daily-what-to-test` | After a merge: sync, prune merged branches, prepare the app, build the hand-test checklist |
|
|
151
|
+
| `wdi-prune-or-archive` | Closed specs to archive or prune, through `lifecycle.py` |
|
|
152
|
+
|
|
153
|
+
## Who writes what — WDI and BMad
|
|
154
|
+
|
|
155
|
+
| Artifact | Written by | Wrapped in |
|
|
156
|
+
|---|---|---|
|
|
157
|
+
| Product brief | `bmad-product-brief` | `wdi-problem` |
|
|
158
|
+
| PRD | `bmad-prd` | `wdi-product` |
|
|
159
|
+
| UX | `bmad-ux` | `wdi-ux` |
|
|
160
|
+
| Spine + C4 | `bmad-architecture` | `wdi-blueprint` |
|
|
161
|
+
| **UC catalogue · actors · entities · business rules** | **nothing in BMad** | `wdi-blueprint` writes it itself |
|
|
162
|
+
| **SRS and all of `.what/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
|
|
163
|
+
| **SDD and all of `.how/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
|
|
164
|
+
| `SPEC.md` + tickets | `to-spec` · `to-tickets` — **not BMad's**, and the owner runs them | `wdi-build` |
|
|
165
|
+
| Code | `implement`, with `tdd` inside it — same | `wdi-build` |
|
|
166
|
+
| Code review | `code-review` — same | `wdi-build` |
|
|
167
|
+
| Document review | `bmad-review` | `wdi-review` |
|
|
168
|
+
| Course correction | `bmad-correct-course` | `wdi-decision` |
|
|
169
|
+
|
|
170
|
+
**The bold rows are why this method exists.** BMad stops at the promise and starts again at the mechanism,
|
|
171
|
+
and every behaviour in between had no author. Three consequences stick to those artifacts and are handled
|
|
172
|
+
deliberately: no `doc_standards` fires a review, no memlog is born on its own, and no template enforces
|
|
173
|
+
itself.
|
|
174
|
+
|
|
175
|
+
## Where things live
|
|
176
|
+
|
|
177
|
+
| The thing in your hand | Its folder |
|
|
178
|
+
|---|---|
|
|
179
|
+
| How we work — a rule, a guide, a template | `.constitution/` |
|
|
180
|
+
| What currently holds — a decision, a question, a registry, a map | `.control/` |
|
|
181
|
+
| What is promised — the brief, a PRD, a use case, a business rule | `.what/` |
|
|
182
|
+
| How it is built — the spine, C4, an inventory, an SDD, a contract | `.how/` |
|
|
183
|
+
| The complete page a human reads at a gate — regenerated, never edited | `.what-rendered/` · `.how-rendered/` |
|
|
184
|
+
| A skill run's working output | `_bmad-output/` |
|
|
185
|
+
| Scratch that empties when the task closes | `.work/` |
|
|
186
|
+
| The application | `src/` · `web/` |
|
|
187
|
+
|
|
188
|
+
The test that settles anything ambiguous: **is this file still correct after its spec has passed?** Yes →
|
|
189
|
+
the corpus. No → `_bmad-output/`. In doubt, `../document/corpus-guide.md`.
|
|
190
|
+
|
|
191
|
+
## Model choice
|
|
192
|
+
|
|
193
|
+
| Point | Model |
|
|
194
|
+
|---|---|
|
|
195
|
+
| Decisions — proposing a slicing, wording a `DEC-`, preparing a gate | `opus@high` |
|
|
196
|
+
| Writing, derivation, a review-fix pass | `sonnet@high` |
|
|
197
|
+
| Code review panel | Reviewers dispatched separately from the builder — the local Agent Rules govern CLI/model pairing |
|
|
198
|
+
|
|
199
|
+
In a derivation pass, quality comes from the input rather than the model. Running a "find the gap" lens with
|
|
200
|
+
the most careful model produces the most gaps, and each one becomes an open question — a cost nobody sees
|
|
201
|
+
until the question list has stopped being readable.
|
|
@@ -28,7 +28,7 @@ them only an *example* does — not a rule.
|
|
|
28
28
|
| `templates/design-system.md` | The pointer to wherever this project keeps its tokens | Re-point at that project's token file |
|
|
29
29
|
| `templates/oq.md` | One example of a bad question title | Cosmetic |
|
|
30
30
|
|
|
31
|
-
Everything else — the five gates, the two fields, the
|
|
31
|
+
Everything else — the five gates, the two fields, the twenty-two skills, the templates, `validate.py`,
|
|
32
32
|
`inventory.py`, `../method-glossary.md`, and the three files beside this one — carries without edit.
|
|
33
33
|
|
|
34
34
|
One half-exception, and it is by design: `inventory.py` is the generic engine and carries whole, but
|
|
@@ -145,6 +145,10 @@ is here and name the prior art.
|
|
|
145
145
|
them all four inside a single repo, and a folder nothing can trace back to a row in `specs.yaml` is
|
|
146
146
|
how a spec goes missing. A ticket at the repo root, or under `docs/`, or in a `.scratch/` directory
|
|
147
147
|
with no row in `specs.yaml`, is drift.
|
|
148
|
+
- **Execution scratch, prompt handoffs, and tool logs MUST NOT be placed in `.scratch/`.** Any raw model
|
|
149
|
+
output, multi-agent dispatch transcripts, or debug dumps MUST be written to `.work/<skill>/` and
|
|
150
|
+
deleted after distillation. The root of `.scratch/` MUST NOT contain loose files, and unregistered
|
|
151
|
+
directories MUST NOT be created there (`scratch-hygiene` enforces this).
|
|
148
152
|
|
|
149
153
|
`SPEC.md` and ticket files **are not read by humans.** Both are machine contracts, and no review burden MAY be
|
|
150
154
|
moved onto them. `wdi-review` MAY still be dispatched over the contract; its trace lands on the spec in
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wdi-daily-autopilot
|
|
3
|
-
description: Compose and launch the autonomous daily loop routine (default 10m interval) with self code-review and peer-review runners resolved from local configuration. Invoke as `/wdi-daily-autopilot [
|
|
3
|
+
description: Compose and launch the autonomous daily loop routine (default 10m interval) with self code-review and peer-review runners resolved from local configuration. Invoke as `/wdi-daily-autopilot [self-review] [peer] [interval] [--skip-peer-review|--no-review]` (`[self-review]` alias `[in-session]`).
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -18,7 +18,8 @@ from local configuration or agent rules, and launches the execution via `/loop <
|
|
|
18
18
|
- `[interval]` — optional loop interval matching `^\d+[smhd]$` (e.g., `5m`, `10m`, `15m`). Defaults
|
|
19
19
|
to `10m` when omitted.
|
|
20
20
|
- `--skip-peer-review` / `--no-review` — bypasses the secondary peer review pass. MUST NOT disable
|
|
21
|
-
coordinator self code-review, TDD cycles, or automated test suites
|
|
21
|
+
coordinator self code-review, TDD cycles, or automated test suites, and is refused when any touched
|
|
22
|
+
component has `risk_accepted: low` (§2 Guardrail).
|
|
22
23
|
|
|
23
24
|
## 0. Precondition
|
|
24
25
|
|
|
@@ -49,7 +50,7 @@ Inspect the repository for `.control/custom-dispatch.yaml` (if not found in the
|
|
|
49
50
|
- If `roles.deep_analyst` is `none`, document review and architecture analysis are handled by the main reviewer or
|
|
50
51
|
coordinator directly, without dispatching a separate deep analyst process.
|
|
51
52
|
- `roles.builder` is fixed to `coordinator`: the coordinating session implements code directly inside the active run worktree (ensuring tight TDD cycles, direct verification, and eliminating delegation/handoff hallucinations). Coding delegation (whether `in-session` subagents or external builder runners) is prohibited in the daily routine.
|
|
52
|
-
Guardrail: coordinator direct implementation MUST NOT eliminate independent peer review
|
|
53
|
+
Guardrail: coordinator direct implementation MUST NOT eliminate independent peer review when any component the mandate touches has `risk_accepted: low`. There `low` is the hardest review: `wdi-build` Step 3 requires a two-reviewer panel of agents that are not the builder (`delivery-flow-guide.md`). The coordinator MUST NOT honour a peer-review bypass (`roles.reviewer: none`, `review_policy.peer_review: false`, `--skip-peer-review`, or `--no-review`) when any touched component has `risk_accepted: low`: stop and report which components block it (fail-closed). When every touched component is `medium` or `high`, the bypass is allowed, and the choice MUST be recorded in the mandate text (step 4) and in the ledger.
|
|
53
54
|
- Resolve runner dispatch by `type:` for reviewer and deep analyst:
|
|
54
55
|
- `auto`: Evaluates whether the runner's target model is reachable in-session from the active
|
|
55
56
|
session profile (per the caller's global agent collaboration rules). Dispatches in-session via `Agent`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wdi-daily-what-to-build
|
|
3
|
-
description: Turn raw manual-test notes into a triaged, reviewed spec/ticket ready for wdi-autopilot to pick up in a separate session. Invoke as `/wdi-daily-what-to-build [reviewer] <your raw notes>`.
|
|
3
|
+
description: Turn raw manual-test notes into a triaged, reviewed spec/ticket ready for wdi-autopilot to pick up in a separate session. Invoke as `/wdi-daily-what-to-build [reviewer] [--no-review] <your raw notes>`.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
---
|
|
6
6
|
|