wdi-method 0.5.2 → 0.5.3

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.
@@ -22,7 +22,7 @@ them only an *example* does — not a rule.
22
22
 
23
23
  | File | What is this product's | What to do when carrying it |
24
24
  |---|---|---|
25
- | `../constitution.md` | Articles 1, 2, and 5 | **Rewrite 2 and 5.** Article 1 cites `index.yaml` `product.name`. Articles 3, 4, 6, 7 travel unchanged. `wdi-method promote` already replaces this file with the kit template |
25
+ | `../../project/constitution.md` | Articles 1, 2, and 5 | **Rewrite 2 and 5.** Article 1 cites `index.yaml` `product.name`. Articles 3, 4, 6, 7 travel unchanged. `wdi-method promote` already replaces this file with the kit template |
26
26
  | `../document/architecture-guide.md` | Seed examples of stack and tree shape | Re-point the examples. Every rule around them travels |
27
27
  | `../document/corpus-guide.md` | Worked examples of `_platform` ownership | Re-point the examples. **Keep both kinds**: they teach the trap better than the rule alone |
28
28
  | `templates/design-system.md` | The pointer to wherever this project keeps its tokens | Re-point at that project's token file |
@@ -75,7 +75,7 @@ the steps that a runbook used to carry are now `wdi-init` intent `setup`. The or
75
75
 
76
76
  1. `npx bmad-method install` in the product repo.
77
77
  2. `npx wdi-method install` (optionally `--agents …`).
78
- 3. Set `product.name` in `.control/registry/index.yaml`. Rewrite `../constitution.md` Articles 2 and 5.
78
+ 3. Set `product.name` in `.control/registry/index.yaml`. Rewrite `../../project/constitution.md` Articles 2 and 5.
79
79
  4. Merge the method routing into `AGENTS.md` if that file already existed.
80
80
  5. Run `wdi-init` intent `setup`.
81
81
  6. Sort what already existed. A file that is already the artifact one slot asks for goes into that
@@ -1,215 +1,216 @@
1
- # Agent Rules — {product}
2
-
3
- <!-- BEGIN:wdi-method -->
4
- This repo uses **WDI Method**. It wraps BMad; it does not replace it. This marked
5
- block is owned by the WDI Method package and is **replaced on every update**.
6
- Product rules belong **outside** it (extra boundaries, `## Code`, stack notes).
7
- A fact written inside this block will be overwritten.
8
-
9
- Product identity lives in `.control/registry/index.yaml` (`product.name`, optional
10
- `product.client`). G1 confirms it. This file MUST NOT become a second source of the name.
11
-
12
- ## Install and update
13
-
14
- BMad first, then WDI Method. In the product repo:
15
-
16
- ```bash
17
- npx bmad-method install
18
- npx wdi-method
19
- ```
20
-
21
- No subcommand opens the installer TUI. It detects an existing install and offers
22
- **update**. Non-interactive:
23
-
24
- ```bash
25
- npx wdi-method install --yes
26
- npx wdi-method update --yes
27
- ```
28
-
29
- BMad: https://github.com/bmad-code-org/BMAD-METHOD
30
- WDI Method: https://github.com/wiradigitalid/wdi-method
31
-
32
- A method file MUST NOT be invented here. If a rule is wrong, fix it in the WDI
33
- Method package, then update.
34
-
35
- This file is loaded every session; everything else is loaded **lazily**, only when
36
- the task matches.
37
-
38
- ## Language
39
-
40
- **Two settings decide this, and they live in `.control/registry/index.yaml` under `policy:`.** Both are
41
- free text and both default to English:
42
-
43
- | Setting | Governs |
44
- |---|---|
45
- | `doc_language` | The prose of working documents in `.what/` · `.how/` · `.control/` |
46
- | `doc_filename_language` | The slug part of a document filename |
47
-
48
- Read those two before writing a document. A technical term the industry writes in English MUST be left in
49
- English whatever the setting says — an equivalent MUST NOT be invented for it.
50
-
51
- **These files are always English, whatever the settings say:** `AGENTS.md`, `CLAUDE.md`, and everything
52
- under `.constitution/`. They are agent instructions, and they travel to every repo through the
53
- `wdi-method` package. The one exception is `.constitution/project/`, which is this product's own room.
54
-
55
- **Always English and never a setting**, because a script matches them:
56
-
57
- - method terminology — `DEC` `SRS` `SDD` `UC` `FR` `AD`, the gate names, the values of `mode` and
58
- `risk_accepted`
59
- - document code prefixes — `UC-` `DEC-` `SRS-`; only the slug after them follows `doc_filename_language`
60
- - markers — `[NEEDS CONFIRMATION]` `[MISSING]` `[ASSUMED]` `[PARTIAL]`, and `yes`/`no` in a `critical`
61
- column
62
- - registry values — `mode: catalog`, `status: applied`, `risk_accepted: low`. Used as written in prose
63
- too: one thing, one name
64
- - code identifiers, database columns, config keys — `language-guide.md` owns these
65
-
66
- **A corpus written before these settings existed MUST NOT be migrated for them.** The readers accept more
67
- than one language, so existing documents keep working and only new writing follows the setting.
68
-
69
- ## The thing in your hand → its folder
70
-
71
- Read this instead of reasoning about what `.what/` and `.how/` mean.
72
-
73
- | The thing in your hand | Its folder |
74
- |---|---|
75
- | A rule, a guide, a template — how we work | `.constitution/method/` — **overwritten in full by `update`** |
76
- | A rule that binds **only this product** | `.constitution/project/` — `update` never writes over it, `promote` never publishes it |
77
- | The explanation of a rule, never a rule itself | `.constitution/method/why/` |
78
- | A decision, an open question, a registry, a structure map, minutes | `.control/` |
79
- | The brief, a PRD, a use case, a business rule — what is promised | `.what/` |
80
- | The spine, C4, an inventory, an SDD, a contract — how it is built | `.how/` |
81
- | A skill run's working output, and documents that predate the method | `_bmad-output/` |
82
- | Scratch that empties when the task closes | `.work/` |
83
- | The application | named under `## Code` below |
84
-
85
- ## Layer boundaries
86
-
87
- | Layer | Answers | MUST NOT hold |
88
- |---|---|---|
89
- | `.constitution/` | How we work | State, decisions, product content |
90
- | `.control/` | What currently holds and what has been decided | Rules |
91
- | `.what/` | What is promised | Solution shape — tables, endpoints, technology |
92
- | `.how/` | How it is built | Promises to the user |
93
- | `_bmad-output/` | Work in progress; committed, not curated | Anything still correct after its wave has passed |
94
- | `.work/` | Scratch; emptied when a task closes | Secrets, commercial figures, anything meant as authority |
95
-
96
- The placement test: **is this file still correct after its wave has passed?** Yes → the corpus. No →
97
- `_bmad-output/`. In doubt → `document/corpus-guide.md`.
98
-
99
- The method does not use a `docs/` layer for corpus or rules. A leftover `docs/` folder is inventory
100
- to sort, not a second home.
101
-
102
- ## Depth and review intensity — two fields, never merged
103
-
104
- | Field | Where | Controls |
105
- |---|---|---|
106
- | `mode` | `index.yaml` globally, `components.yaml` per component | **Document depth**, and only that. `catalog` · `outline` · `guarded` · `deep`; default `catalog` |
107
- | `risk_accepted` | `components.yaml` per component | **Review intensity**, and only that. `low` · `medium` · `high` |
108
-
109
- Per-component `mode` wins over global, and there is no third scope — `mode` MUST NOT be overridden per
110
- wave or per `SPEC.md`. A component at `mode: catalog` **skips G4 entirely**. Neither field MUST be
111
- derived from the other: one component MAY be thin on purpose and reviewed the hardest.
112
- `document/delivery-flow-guide.md` owns both; `method/rationale.md` says why they are separate.
113
-
114
- ## The five gates and the fifteen skills
115
-
116
- | Gate | Decides | Skill |
117
- |---|---|---|
118
- | **G1 Problem** | What the problem is, whose it is, why it earns work | `wdi-problem` |
119
- | **G2 Product** | What is built, and how it feels to use | `wdi-product` · optional `wdi-ux` |
120
- | **G3 Blueprint** | The whole portrait, once per product | `wdi-blueprint` |
121
- | **G4 Component** | How one component is built **skipped at `catalog`** | `wdi-component` |
122
- | **G5 Release** | Whether it is done and proven | `wdi-build` |
123
-
124
- Before G1 and at the tail of G2: `wdi-init`, five intents — `setup` · `component` · `mode` · `risk` ·
125
- `structure`.
126
-
127
- Any time: `wdi-decision` · `wdi-question` · `wdi-log` · `wdi-help` · `wdi-reconcile` · `wdi-review` ·
128
- `wdi-report` · `wdi-systematic-debugging`.
129
-
130
- **No BMad skill is invoked directly.** Each has a wrapper, and the wrapper is what checks position,
131
- verifies the result, and lands the memlog.
132
-
133
- ## What MUST NOT be done
134
-
135
- - A method file MUST NOT be invented or patched here to improve the method. If a rule is wrong, it is
136
- fixed in the WDI Method package, then brought here with `npx wdi-method update`.
137
- - A file in `_bmad-output/prior-knowledge/` MUST NOT be copied into `.what/` or `.how/`. It enters
138
- the corpus only through the skill that owns the slot.
139
- - `.control/generated/` MUST NOT be written by hand — it is the output of `validate.py` and
140
- `timeline.py`.
141
- - The two structure maps in `.control/` MUST NOT be edited by hand — `wdi-init` intent `structure`
142
- re-derives them.
143
- - A `DEC-` with status `applied` MUST NOT be edited, except to record its supersession — status moves
144
- to `superseded` and names its replacement. A change of mind produces a new `DEC-`.
145
- - A file in `.constitution/method/why/` MUST NOT be cited as the reason to reject a change. It is
146
- `status: Reference` it explains, it does not bind, and where it disagrees with a guide the guide
147
- wins and the disagreement is a defect. This covers `why/` ONLY: a guide in
148
- `.constitution/method/document/` is `status: Accepted` and it binds.
149
- - More than the component's `mode` demands MUST NOT be written. Exceeding the depth the owner set is
150
- not diligence.
151
- - `.claude/skills/bmad-*/customize.toml` MUST NOT be edited — it is overwritten on every BMad update;
152
- customise through `_bmad/custom/`.
153
-
154
- ## Routing — load a guide when the task matches
155
-
156
- | Task | Load |
157
- |---|---|
158
- | Wanting the whole method in five minutes | `.constitution/method/why/README.md` |
159
- | About to change a rule, and needing to know what breaks | `.constitution/method/why/rationale.md` |
160
- | Asking whether a document exists at this `mode`, or where a file goes | `.constitution/method/why/artifact-map.md` |
161
- | Unsure whether a file may exist in this repo | `.constitution/method/repo-guide.md` |
162
- | Unsure where a file lives | `.constitution/method/document/corpus-guide.md` |
163
- | Unsure what a method term means | `.constitution/method/method-glossary.md` |
164
- | Unsure about a domain term | `.control/product-glossary.md` |
165
- | Looking for a non-technical fact — a domain, an account, a legal entity, a locked date | `.control/project-non-technical-log.md` |
166
- | Naming anything — a code identifier, a file, a database column | `.constitution/method/language-guide.md` |
167
- | Asking "which gate now, what next" | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-help` |
168
- | Setting or changing `mode` or `risk_accepted` | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-init` |
169
- | Invoking a BMad skill | `.constitution/method/document/bmad-guide.md` · `document/bmad-skill-register.md` |
170
- | Writing or reviewing a product brief | `.constitution/method/document/brief-guide.md` |
171
- | Writing or reviewing a PRD | `.constitution/method/document/prd-guide.md` |
172
- | Writing or reviewing UX | `.constitution/method/document/ux-guide.md` |
173
- | Writing or reviewing an SRS | `.constitution/method/document/srs-guide.md` |
174
- | Writing or reviewing an SDD | `.constitution/method/document/sdd-guide.md` |
175
- | Writing the spine, an `AD-N`, C4, or one of the three inventories | `.constitution/method/document/architecture-guide.md` |
176
- | Opening, accepting, or applying a `DEC-` | `.constitution/method/document/decision-guide.md` |
177
- | Writing or reading a structure map | `.constitution/method/structure-guide.md` |
178
- | Looking for where code lives, or placing new code | `.control/structure-codebase.md` |
179
- | Looking for where a document lives | `.control/structure-document.md` |
180
- | Writing or reviewing code | `.constitution/project/codebase-stack-guide.md` · `codebase-conventions-guide.md` · `codebase-brownfield-guide.md` |
181
-
182
- All three `.constitution/project/codebase-*-guide.md` start as `status: Draft`. While they are, their contents MAY be read
183
- as guidance but MUST NOT be used to reject a change.
184
-
185
- The two structure maps MUST NOT be installed as `doc_standards` — they are facts, not standards. Nor
186
- MUST anything in `.constitution/method/why/`; `status: Reference` forbids it. A guide in
187
- `.constitution/method/document/` MAY be installed that way, and several already are — see
188
- `_bmad/custom/bmad-prd.toml`.
189
-
190
- ## Bugs, decisions, questions
191
-
192
- - A bug, a failing test, or unexpected behaviour → skill `wdi-systematic-debugging`, **before** any
193
- fix is proposed.
194
- - A decision worth remembering → skill `wdi-decision` → `.control/decisions/`. Recording is **not
195
- mandatory**: if the answer to *why is it like this* is readable from the code, it MUST NOT be
196
- recorded. One case is mandatory contradicting an `AD-N`.
197
- - Something that cannot be decided now skill `wdi-question` → `.control/questions/`. The default
198
- class is `assumptions.md`, not `blocking.md`; filing something as blocking "to be safe" is the
199
- habit that produced unreadable question lists.
200
- - A non-technical fact that constrains the build → skill `wdi-log` intent `fact` →
201
- `.control/project-non-technical-log.md`.
202
-
203
- ## Method policy
204
-
205
- - A skill MUST NOT be invoked automatically. Name the one that fits and wait for the owner's
206
- go-ahead this holds even when the skill's own description says it must be used. Reading a
207
- skill as reference is fine.
208
- - `.work/` is not production code. It MUST NOT be imported by the application, and MUST be
209
- excluded when searching for code.
210
- <!-- END:wdi-method -->
211
-
212
- ## Code
213
-
214
- Rewrite this section for the product. Stack, how to run tests, and known pitfalls belong here.
215
- `wdi-init` intent `structure` derives `.control/structure-codebase.md`; do not duplicate that map.
1
+ # Agent Rules — {product}
2
+
3
+ <!-- BEGIN:wdi-method -->
4
+ This repo uses **WDI Method**. It wraps BMad; it does not replace it. This marked
5
+ block is owned by the WDI Method package and is **replaced on every update**.
6
+ Product rules belong **outside** it (extra boundaries, `## Code`, stack notes).
7
+ A fact written inside this block will be overwritten.
8
+
9
+ Product identity lives in `.control/registry/index.yaml` (`product.name`, optional
10
+ `product.client`). G1 confirms it. This file MUST NOT become a second source of the name.
11
+
12
+ ## Install and update
13
+
14
+ BMad first, then WDI Method. In the product repo:
15
+
16
+ ```bash
17
+ npx bmad-method install
18
+ npx wdi-method
19
+ ```
20
+
21
+ No subcommand opens the installer TUI. It detects an existing install and offers
22
+ **update**. Non-interactive:
23
+
24
+ ```bash
25
+ npx wdi-method install --yes
26
+ npx wdi-method update --yes
27
+ ```
28
+
29
+ BMad: https://github.com/bmad-code-org/BMAD-METHOD
30
+ WDI Method: https://github.com/wiradigitalid/wdi-method
31
+
32
+ A method file MUST NOT be invented here. If a rule is wrong, fix it in the WDI
33
+ Method package, then update.
34
+
35
+ This file is loaded every session; everything else is loaded **lazily**, only when
36
+ the task matches.
37
+
38
+ ## Language
39
+
40
+ **Two settings decide this, and they live in `.control/registry/index.yaml` under `policy:`.** Both are
41
+ free text and both default to English:
42
+
43
+ | Setting | Governs |
44
+ |---|---|
45
+ | `doc_language` | The prose of working documents in `.what/` · `.how/` · `.control/` |
46
+ | `doc_filename_language` | The slug part of a document filename |
47
+
48
+ Read those two before writing a document. A technical term the industry writes in English MUST be left in
49
+ English whatever the setting says — an equivalent MUST NOT be invented for it.
50
+
51
+ **These files are always English, whatever the settings say:** `AGENTS.md`, `CLAUDE.md`, and everything
52
+ under `.constitution/`. They are agent instructions, and they travel to every repo through the
53
+ `wdi-method` package. The one exception is `.constitution/project/`, which is this product's own room.
54
+
55
+ **Always English and never a setting**, because a script matches them:
56
+
57
+ - method terminology — `DEC` `SRS` `SDD` `UC` `FR` `AD`, the gate names, the values of `mode` and
58
+ `risk_accepted`
59
+ - document code prefixes — `UC-` `DEC-` `SRS-`; only the slug after them follows `doc_filename_language`
60
+ - markers — `[NEEDS CONFIRMATION]` `[MISSING]` `[ASSUMED]` `[PARTIAL]`, and `yes`/`no` in a `critical`
61
+ column
62
+ - registry values — `mode: catalog`, `status: applied`, `risk_accepted: low`. Used as written in prose
63
+ too: one thing, one name
64
+ - code identifiers, database columns, config keys — `language-guide.md` owns these
65
+
66
+ **A corpus written before these settings existed MUST NOT be migrated for them.** The readers accept more
67
+ than one language, so existing documents keep working and only new writing follows the setting.
68
+
69
+ ## The thing in your hand → its folder
70
+
71
+ Read this instead of reasoning about what `.what/` and `.how/` mean.
72
+
73
+ | The thing in your hand | Its folder |
74
+ |---|---|
75
+ | A rule, a guide, a template — how we work | `.constitution/method/` — **overwritten in full by `update`** |
76
+ | A rule that binds **only this product** | `.constitution/project/` — `update` never writes over it, `promote` never publishes it |
77
+ | The explanation of a rule, never a rule itself | `.constitution/method/why/` |
78
+ | A decision, an open question, a registry, a structure map, minutes | `.control/` |
79
+ | The brief, a PRD, a use case, a business rule — what is promised | `.what/` |
80
+ | The spine, C4, an inventory, an SDD, a contract — how it is built | `.how/` |
81
+ | A skill run's working output, and documents that predate the method | `_bmad-output/` |
82
+ | Scratch that empties when the task closes | `.work/` |
83
+ | The application | named under `## Code` below |
84
+
85
+ ## Layer boundaries
86
+
87
+ | Layer | Answers | MUST NOT hold |
88
+ |---|---|---|
89
+ | `.constitution/` | How we work | State, decisions, product content |
90
+ | `.control/` | What currently holds and what has been decided | Rules |
91
+ | `.what/` | What is promised | Solution shape — tables, endpoints, technology |
92
+ | `.how/` | How it is built | Promises to the user |
93
+ | `_bmad-output/` | Work in progress; committed, not curated | Anything still correct after its wave has passed |
94
+ | `.work/` | Scratch; emptied when a task closes | Secrets, commercial figures, anything meant as authority |
95
+
96
+ The placement test: **is this file still correct after its wave has passed?** Yes → the corpus. No →
97
+ `_bmad-output/`. In doubt → `.constitution/method/document/corpus-guide.md`.
98
+
99
+ The method does not use a `docs/` layer for corpus or rules. A leftover `docs/` folder is inventory
100
+ to sort, not a second home.
101
+
102
+ ## Depth and review intensity — two fields, never merged
103
+
104
+ | Field | Where | Controls |
105
+ |---|---|---|
106
+ | `mode` | `index.yaml` globally, `components.yaml` per component | **Document depth**, and only that. `catalog` · `outline` · `guarded` · `deep`; default `catalog` |
107
+ | `risk_accepted` | `components.yaml` per component | **Review intensity**, and only that. `low` · `medium` · `high` |
108
+
109
+ Per-component `mode` wins over global, and there is no third scope — `mode` MUST NOT be overridden per
110
+ wave or per `SPEC.md`. A component at `mode: catalog` **skips G4 entirely**. Neither field MUST be
111
+ derived from the other: one component MAY be thin on purpose and reviewed the hardest.
112
+ `.constitution/method/document/delivery-flow-guide.md` owns both;
113
+ `.constitution/method/why/rationale.md` says why they are separate.
114
+
115
+ ## The five gates and the fifteen skills
116
+
117
+ | Gate | Decides | Skill |
118
+ |---|---|---|
119
+ | **G1 Problem** | What the problem is, whose it is, why it earns work | `wdi-problem` |
120
+ | **G2 Product** | What is built, and how it feels to use | `wdi-product` · optional `wdi-ux` |
121
+ | **G3 Blueprint** | The whole portrait, once per product | `wdi-blueprint` |
122
+ | **G4 Component** | How one component is built **skipped at `catalog`** | `wdi-component` |
123
+ | **G5 Release** | Whether it is done and proven | `wdi-build` |
124
+
125
+ Before G1 and at the tail of G2: `wdi-init`, five intents — `setup` · `component` · `mode` · `risk` ·
126
+ `structure`.
127
+
128
+ Any time: `wdi-decision` · `wdi-question` · `wdi-log` · `wdi-help` · `wdi-reconcile` · `wdi-review` ·
129
+ `wdi-report` · `wdi-systematic-debugging`.
130
+
131
+ **No BMad skill is invoked directly.** Each has a wrapper, and the wrapper is what checks position,
132
+ verifies the result, and lands the memlog.
133
+
134
+ ## What MUST NOT be done
135
+
136
+ - A method file MUST NOT be invented or patched here to improve the method. If a rule is wrong, it is
137
+ fixed in the WDI Method package, then brought here with `npx wdi-method update`.
138
+ - A file in `_bmad-output/prior-knowledge/` MUST NOT be copied into `.what/` or `.how/`. It enters
139
+ the corpus only through the skill that owns the slot.
140
+ - `.control/generated/` MUST NOT be written by hand — it is the output of `validate.py` and
141
+ `timeline.py`.
142
+ - The two structure maps in `.control/` MUST NOT be edited by hand — `wdi-init` intent `structure`
143
+ re-derives them.
144
+ - A `DEC-` with status `applied` MUST NOT be edited, except to record its supersession status moves
145
+ to `superseded` and names its replacement. A change of mind produces a new `DEC-`.
146
+ - A file in `.constitution/method/why/` MUST NOT be cited as the reason to reject a change. It is
147
+ `status: Reference` it explains, it does not bind, and where it disagrees with a guide the guide
148
+ wins and the disagreement is a defect. This covers `why/` ONLY: a guide in
149
+ `.constitution/method/document/` is `status: Accepted` and it binds.
150
+ - More than the component's `mode` demands MUST NOT be written. Exceeding the depth the owner set is
151
+ not diligence.
152
+ - `.claude/skills/bmad-*/customize.toml` MUST NOT be edited — it is overwritten on every BMad update;
153
+ customise through `_bmad/custom/`.
154
+
155
+ ## Routing — load a guide when the task matches
156
+
157
+ | Task | Load |
158
+ |---|---|
159
+ | Wanting the whole method in five minutes | `.constitution/method/why/README.md` |
160
+ | About to change a rule, and needing to know what breaks | `.constitution/method/why/rationale.md` |
161
+ | Asking whether a document exists at this `mode`, or where a file goes | `.constitution/method/why/artifact-map.md` |
162
+ | Unsure whether a file may exist in this repo | `.constitution/method/repo-guide.md` |
163
+ | Unsure where a file lives | `.constitution/method/document/corpus-guide.md` |
164
+ | Unsure what a method term means | `.constitution/method/method-glossary.md` |
165
+ | Unsure about a domain term | `.control/product-glossary.md` |
166
+ | Looking for a non-technical fact — a domain, an account, a legal entity, a locked date | `.control/project-non-technical-log.md` |
167
+ | Naming anything a code identifier, a file, a database column | `.constitution/method/language-guide.md` |
168
+ | Asking "which gate now, what next" | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-help` |
169
+ | Setting or changing `mode` or `risk_accepted` | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-init` |
170
+ | Invoking a BMad skill | `.constitution/method/document/bmad-guide.md` · `.constitution/method/document/bmad-skill-register.md` |
171
+ | Writing or reviewing a product brief | `.constitution/method/document/brief-guide.md` |
172
+ | Writing or reviewing a PRD | `.constitution/method/document/prd-guide.md` |
173
+ | Writing or reviewing UX | `.constitution/method/document/ux-guide.md` |
174
+ | Writing or reviewing an SRS | `.constitution/method/document/srs-guide.md` |
175
+ | Writing or reviewing an SDD | `.constitution/method/document/sdd-guide.md` |
176
+ | Writing the spine, an `AD-N`, C4, or one of the three inventories | `.constitution/method/document/architecture-guide.md` |
177
+ | Opening, accepting, or applying a `DEC-` | `.constitution/method/document/decision-guide.md` |
178
+ | Writing or reading a structure map | `.constitution/method/structure-guide.md` |
179
+ | Looking for where code lives, or placing new code | `.control/structure-codebase.md` |
180
+ | Looking for where a document lives | `.control/structure-document.md` |
181
+ | Writing or reviewing code | `.constitution/project/codebase-stack-guide.md` · `.constitution/project/codebase-conventions-guide.md` · `.constitution/project/codebase-brownfield-guide.md` |
182
+
183
+ All three `.constitution/project/codebase-*-guide.md` start as `status: Draft`. While they are, their contents MAY be read
184
+ as guidance but MUST NOT be used to reject a change.
185
+
186
+ The two structure maps MUST NOT be installed as `doc_standards` they are facts, not standards. Nor
187
+ MUST anything in `.constitution/method/why/`; `status: Reference` forbids it. A guide in
188
+ `.constitution/method/document/` MAY be installed that way, and several already are — see
189
+ `_bmad/custom/bmad-prd.toml`.
190
+
191
+ ## Bugs, decisions, questions
192
+
193
+ - A bug, a failing test, or unexpected behaviour → skill `wdi-systematic-debugging`, **before** any
194
+ fix is proposed.
195
+ - A decision worth remembering skill `wdi-decision` `.control/decisions/`. Recording is **not
196
+ mandatory**: if the answer to *why is it like this* is readable from the code, it MUST NOT be
197
+ recorded. One case is mandatory contradicting an `AD-N`.
198
+ - Something that cannot be decided now skill `wdi-question` `.control/questions/`. The default
199
+ class is `assumptions.md`, not `blocking.md`; filing something as blocking "to be safe" is the
200
+ habit that produced unreadable question lists.
201
+ - A non-technical fact that constrains the build → skill `wdi-log` intent `fact` →
202
+ `.control/project-non-technical-log.md`.
203
+
204
+ ## Method policy
205
+
206
+ - A skill MUST NOT be invoked automatically. Name the one that fits and wait for the owner's
207
+ go-ahead — this holds even when the skill's own description says it must be used. Reading a
208
+ skill as reference is fine.
209
+ - `.work/` is not production code. It MUST NOT be imported by the application, and MUST be
210
+ excluded when searching for code.
211
+ <!-- END:wdi-method -->
212
+
213
+ ## Code
214
+
215
+ Rewrite this section for the product. Stack, how to run tests, and known pitfalls belong here.
216
+ `wdi-init` intent `structure` derives `.control/structure-codebase.md`; do not duplicate that map.
@@ -22,7 +22,7 @@ them only an *example* does — not a rule.
22
22
 
23
23
  | File | What is this product's | What to do when carrying it |
24
24
  |---|---|---|
25
- | `../constitution.md` | Articles 1, 2, and 5 | **Rewrite 2 and 5.** Article 1 cites `index.yaml` `product.name`. Articles 3, 4, 6, 7 travel unchanged. `wdi-method promote` already replaces this file with the kit template |
25
+ | `../../project/constitution.md` | Articles 1, 2, and 5 | **Rewrite 2 and 5.** Article 1 cites `index.yaml` `product.name`. Articles 3, 4, 6, 7 travel unchanged. `wdi-method promote` already replaces this file with the kit template |
26
26
  | `../document/architecture-guide.md` | Seed examples of stack and tree shape | Re-point the examples. Every rule around them travels |
27
27
  | `../document/corpus-guide.md` | Worked examples of `_platform` ownership | Re-point the examples. **Keep both kinds**: they teach the trap better than the rule alone |
28
28
  | `templates/design-system.md` | The pointer to wherever this project keeps its tokens | Re-point at that project's token file |
@@ -75,7 +75,7 @@ the steps that a runbook used to carry are now `wdi-init` intent `setup`. The or
75
75
 
76
76
  1. `npx bmad-method install` in the product repo.
77
77
  2. `npx wdi-method install` (optionally `--agents …`).
78
- 3. Set `product.name` in `.control/registry/index.yaml`. Rewrite `../constitution.md` Articles 2 and 5.
78
+ 3. Set `product.name` in `.control/registry/index.yaml`. Rewrite `../../project/constitution.md` Articles 2 and 5.
79
79
  4. Merge the method routing into `AGENTS.md` if that file already existed.
80
80
  5. Run `wdi-init` intent `setup`.
81
81
  6. Sort what already existed. A file that is already the artifact one slot asks for goes into that
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wdi-method",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "WDI Method — software delivery method that wraps BMad",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,7 +13,9 @@
13
13
  "kit-overlay/",
14
14
  "scaffold/",
15
15
  "README.md",
16
- "LICENSE"
16
+ "LICENSE",
17
+ "!**/__pycache__",
18
+ "!**/*.pyc"
17
19
  ],
18
20
  "engines": {
19
21
  "node": ">=20"
@@ -22,7 +24,9 @@
22
24
  "test": "node --test tests/*.test.mjs",
23
25
  "prepublishOnly": "node --test tests/*.test.mjs",
24
26
  "overlay": "node scripts/apply-overlay.mjs",
25
- "pretest": "node scripts/apply-overlay.mjs"
27
+ "pretest": "node scripts/apply-overlay.mjs && node scripts/clean-kit.mjs",
28
+ "prepack": "node scripts/clean-kit.mjs",
29
+ "clean": "node scripts/clean-kit.mjs"
26
30
  },
27
31
  "dependencies": {
28
32
  "@clack/prompts": "^0.11.0"