wdi-method 0.6.30 → 0.6.32

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 (43) hide show
  1. package/CHANGELOG.md +129 -0
  2. package/NOTICE +7 -2
  3. package/README.md +16 -11
  4. package/bin/wdi-method.js +396 -87
  5. package/kit/.constitution/method/document/architecture-guide.md +217 -209
  6. package/kit/.constitution/method/document/bmad-skill-register.md +107 -104
  7. package/kit/.constitution/method/document/corpus-guide.md +522 -517
  8. package/kit/.constitution/method/document/decision-guide.md +236 -216
  9. package/kit/.constitution/method/document/delivery-flow-guide.md +20 -0
  10. package/kit/.constitution/method/document/prd-guide.md +245 -245
  11. package/kit/.constitution/method/document/templates/design-system.md +96 -66
  12. package/kit/.constitution/method/document/templates/experience.md +62 -0
  13. package/kit/.constitution/method/document/templates/structure-codebase.md +131 -129
  14. package/kit/.constitution/method/document/templates/ux.md +78 -76
  15. package/kit/.constitution/method/document/ux-guide.md +161 -115
  16. package/kit/.constitution/method/method-glossary.md +3 -0
  17. package/kit/.constitution/method/scripts/validate.py +3375 -3200
  18. package/kit/.constitution/method/structure-guide.md +204 -202
  19. package/kit/.constitution/method/why/README.md +1 -1
  20. package/kit/.constitution/method/why/artifact-map.md +158 -157
  21. package/kit/.constitution/method/why/portability.md +19 -2
  22. package/kit/skills/wdi-autopilot/SKILL.md +32 -19
  23. package/kit/skills/wdi-blueprint/SKILL.md +271 -264
  24. package/kit/skills/wdi-build/SKILL.md +28 -19
  25. package/kit/skills/wdi-component/SKILL.md +179 -174
  26. package/kit/skills/wdi-daily-autopilot/SKILL.md +24 -13
  27. package/kit/skills/wdi-daily-what-to-build/SKILL.md +9 -6
  28. package/kit/skills/wdi-daily-what-to-test/SKILL.md +2 -0
  29. package/kit/skills/wdi-decision/SKILL.md +206 -203
  30. package/kit/skills/wdi-explain-to-me/SKILL.md +2 -0
  31. package/kit/skills/wdi-help/SKILL.md +130 -125
  32. package/kit/skills/wdi-init/SKILL.md +10 -5
  33. package/kit/skills/wdi-problem/SKILL.md +114 -108
  34. package/kit/skills/wdi-product/SKILL.md +167 -162
  35. package/kit/skills/wdi-prune-or-archive/SKILL.md +2 -0
  36. package/kit/skills/wdi-reconcile/SKILL.md +170 -169
  37. package/kit/skills/wdi-upgrade/SKILL.md +234 -215
  38. package/kit/skills/wdi-ux/SKILL.md +187 -169
  39. package/kit-overlay/AGENTS.md +15 -2
  40. package/kit-overlay/portability.md +19 -2
  41. package/lib/platforms.mjs +420 -248
  42. package/package.json +1 -1
  43. package/scaffold/.control/registry/index.yaml +2 -1
@@ -1,104 +1,107 @@
1
- ---
2
- status: Accepted
3
- ---
4
-
5
- # BMad Skill Register
6
-
7
- **Loaded when:** deciding which BMad skill a piece of work needs, or checking what one writes
8
-
9
- This used to be the full catalogue of all 59 installed BMad skills. **That catalogue is retired.** It was a
10
- copy of somebody else's inventory, it went stale on every BMad update, and nothing in this method read more
11
- than a dozen of its rows. What binds is the division of labour below; for anything about a BMad skill this
12
- method does not invoke, ask `bmad-help`, which reads BMad's own documentation.
13
-
14
- ## Who writes what
15
-
16
- | Artifact | Written by | Wrapped in |
17
- |---|---|---|
18
- | Product brief | `bmad-product-brief` | `wdi-problem` |
19
- | PRD | `bmad-prd` | `wdi-product` |
20
- | UX — `EXPERIENCE.md` + `DESIGN.md` | `bmad-ux` | `wdi-ux` |
21
- | Architecture spine + the C4 set | `bmad-architecture` | `wdi-blueprint` intent `platform` |
22
- | **UC catalogue · actors · entities · business rules** | **nothing in BMad** | `wdi-blueprint` writes it itself |
23
- | **SRS and all of `.what/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
24
- | **SDD and all of `.how/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
25
- | Document review | `bmad-review` | `wdi-review` |
26
- | Course correction | `bmad-correct-course` | `wdi-decision` |
27
-
28
- **Everything below G5 left this table.** `SPEC.md`, the tickets, the code, and the code panel are produced
29
- by `to-spec`, `to-tickets`, `implement`, `tdd`, and `code-review` — engines that are not BMad's. Three of
30
- the five ship with `disable-model-invocation: true`; `wdi-method` strips it from the copies installed in
31
- this repo and writes a guard line naming who may drive them, so **`wdi-build` and `wdi-autopilot` invoke
32
- them directly** and an unattended iteration needs nobody. `wdi-build` owns that pipeline;
33
- `bmad-guide.md` owns the reasoning.
34
-
35
- **The three bold rows are why this method exists.** BMad stops at the promise and starts again at the
36
- mechanism, and every behaviour in between had no author. Three consequences attach to those artifacts and
37
- MUST be handled deliberately rather than discovered: no `doc_standards` fires a review, no memlog is born on
38
- its own, and no template enforces itself.
39
-
40
- ## No BMad skill is invoked directly
41
-
42
- Every one above has a wrapper, and the wrapper is what checks position, verifies the result against the
43
- guide, and lands the memlog. Routing past it produces an artifact nothing verifies.
44
-
45
- **One exception, and it is narrow:** on the Fast Path the owner runs `/implement` directly, with no wrapper.
46
- A Fast Path that turns out to touch an `FR` MUST stop and become a spec `S`, which puts it back inside
47
- `wdi-build`.
48
-
49
- ## What is available but writes nothing
50
-
51
- | Skill | Use |
52
- |---|---|
53
- | `bmad-advanced-elicitation` · `bmad-party-mode` | Thinking aids. They produce no artifact and MUST NOT be treated as authors |
54
- | `bmad-deep-recon` | Research, before a brief rests on outside data. Its output stays in `_bmad-output/` permanently and MUST NOT be folded into the brief |
55
- | `bmad-qa-generate-e2e-tests` | Tests for a feature that **already exists**. `tdd` is test-first for work being built, so this has no replacement here and is NOT retired — but what it writes is a test, never a contract, and it MUST NOT be read as one |
56
- | `bmad-checkpoint-preview` | A human reading aid over a change, the same class as `bmad-advanced-elicitation`. It MUST NOT be counted as the Step 3 panel: that one is a separate dispatch by a different agent |
57
- | `bmad-help` | Questions about BMad itself. It MUST NOT be used to answer "where am I" — that is `wdi-help` |
58
-
59
- ## What is NOT USED, and MUST NOT be
60
-
61
- **The criterion, and it binds every row below.** A BMad skill is retired only where this method has a
62
- **named replacement** for what it produces. Without one it is not retired — it goes in the table above
63
- instead, as something that may be used but MUST NOT author. Banning a capability with nothing in its
64
- place is how a method gets worked around rather than followed.
65
-
66
- ### Retired at G5 — enforced by install and update
67
-
68
- **This is enforced, not only stated.** `install` and `update` set `disable-model-invocation: true` on
69
- every wrapper below and add a `Skill(<name>)` deny rule to `.claude/settings.json`, both re-applied on
70
- every run because BMad's installer rewrites its own wrappers. A person typing `/bmad-build` still gets
71
- it: the method retires a default, it does not confiscate a tool. The list lives in
72
- `bin/wdi-method.js` as `BMAD_RETIRED_G5`, and a test fails when this table and that array disagree.
73
-
74
- | Skill | Replaced by | Why |
75
- |---|---|---|
76
- | `bmad-spec` | `to-spec` | **Retired.** The contract below G5 is no longer BMad's. Its `_bmad/custom/*.toml` override is withdrawn and `update` removes any still installed |
77
- | `bmad-build` · `bmad-build-auto` | `implement` · `wdi-autopilot` | **Retired.** `bmad-build` describes itself as implementing "any user intent, requirement, story, bug fix or change request" — the most inviting description in the repo's skill index, for the one thing this method owns most tightly. `bmad-build-auto` is an unattended loop, which is `wdi-autopilot`'s |
78
- | `bmad-code-review` | `code-review` | **Retired.** The panel at Step 3 is a separate dispatch by a different agent; BMad's own review layers are the builder reviewing itself |
79
- | `bmad-retrospective` | — | **Retired** with `RTR-` and `V19`. A frozen `RTR-` file stays where it is |
80
- | `bmad-agent-dev` | `implement` | **Retired.** "Senior software engineer for story execution and code implementation" is `implement`'s sentence |
81
- | `bmad-create-epics-and-stories` | `to-tickets` | **Retired**, and not merely by preference: the `epics` level between a spec and its tickets is **repealed in code** — `validate.py` reads a flat `tickets:` list. A skill whose only output is a shape nothing reads |
82
- | `bmad-create-story` · `bmad-dev-story` · `bmad-dev-auto` · `bmad-quick-dev` | `implement` | **Retired.** BMad deprecated all four in favour of `bmad-build`, which is itself retired here. An alias to a retired skill is retired |
83
- | `bmad-sprint-planning` · `bmad-sprint-status` | the ticket itself | **Retired.** The sprint route keeps status in a hand-edited file; this method reads status from the ticket — `bmad-guide.md` owns the reasoning |
84
-
85
- ### Not used for other reasons — not enforced, and not G5's
86
-
87
- These are outside the enforced list above: nothing locks them, because nothing here replaces them and
88
- none of them competes for G5's work.
89
-
90
- | Skill | Why |
91
- |---|---|
92
- | `bmad-editorial-review*` · `bmad-review-*` | Shims onto `bmad-review` lenses. Ask for the lens, not the shim |
93
- | `bmad-document-project` · `bmad-generate-project-context` | Forward to `bmad-project-context`. This repo's agent instructions are maintained by hand |
94
- | Any skill named as a **gate condition** | A gate is passed by its checklist and its validators, never by a skill having run |
95
-
96
- ## The class that decides where output lands
97
-
98
- `bmad-guide.md` owns the class definitions; what matters here is that **class B** exists because some skills
99
- write several things at once that belong to different layers. `bmad-ux` is the case: `EXPERIENCE.md` is a
100
- promise and `DESIGN.md` is a build detail, and no configuration can send them to two places. Its output
101
- lands in a neutral folder first, and `wdi-ux` places it.
102
-
103
- Which skill lands which output is the ownership table in `corpus-guide.md`, and it MUST NOT be duplicated
104
- here.
1
+ ---
2
+ status: Accepted
3
+ ---
4
+
5
+ # BMad Skill Register
6
+
7
+ **Loaded when:** deciding which BMad skill a piece of work needs, or checking what one writes
8
+
9
+ This used to be the full catalogue of all 59 installed BMad skills. **That catalogue is retired.** It was a
10
+ copy of somebody else's inventory, it went stale on every BMad update, and nothing in this method read more
11
+ than a dozen of its rows. What binds is the division of labour below; for anything about a BMad skill this
12
+ method does not invoke, ask `bmad-help`, which reads BMad's own documentation.
13
+
14
+ ## Who writes what
15
+
16
+ | Artifact | Written by | Wrapped in |
17
+ |---|---|---|
18
+ | Product brief | `bmad-product-brief` | `wdi-problem` |
19
+ | PRD | `bmad-prd` | `wdi-product` |
20
+ | UX — `EXPERIENCE.md` + `DESIGN.md` | `bmad-ux` | `wdi-ux` |
21
+ | Architecture spine + the C4 set | `bmad-architecture` | `wdi-blueprint` intent `platform` |
22
+ | **UC catalogue · actors · entities · business rules** | **nothing in BMad** | `wdi-blueprint` writes it itself |
23
+ | **SRS and all of `.what/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
24
+ | **SDD and all of `.how/<pc>/`** | **nothing in BMad** | `wdi-component` writes it itself |
25
+ | Document review | `bmad-review` | `wdi-review` |
26
+ | Course correction | `bmad-correct-course` | `wdi-decision` |
27
+
28
+ **Everything below G5 left this table.** `SPEC.md`, the tickets, the code, and the code panel are produced
29
+ by `to-spec`, `to-tickets`, `implement`, `tdd`, and `code-review` — engines that are not BMad's. Three of
30
+ the five ship with `disable-model-invocation: true`; `wdi-method` strips it from the copies installed in
31
+ this repo and writes a guard line naming who may drive them, so **`wdi-build` and `wdi-autopilot` invoke
32
+ them directly** and an unattended iteration needs nobody. `wdi-build` owns that pipeline;
33
+ `bmad-guide.md` owns the reasoning.
34
+
35
+ **The three bold rows are why this method exists.** BMad stops at the promise and starts again at the
36
+ mechanism, and every behaviour in between had no author. Three consequences attach to those artifacts and
37
+ MUST be handled deliberately rather than discovered: no `doc_standards` fires a review, no memlog is born on
38
+ its own, and no template enforces itself.
39
+
40
+ ## No BMad skill is invoked directly
41
+
42
+ Every one above has a wrapper, and the wrapper is what checks position, verifies the result against the
43
+ guide, and lands the memlog. Routing past it produces an artifact nothing verifies.
44
+
45
+ **One exception, and it is narrow:** on the Fast Path the owner runs `/implement` directly, with no wrapper.
46
+ A Fast Path that turns out to touch an `FR` MUST stop and become a spec `S`, which puts it back inside
47
+ `wdi-build`.
48
+
49
+ ## What is available but writes nothing
50
+
51
+ | Skill | Use |
52
+ |---|---|
53
+ | `bmad-advanced-elicitation` · `bmad-party-mode` | Thinking aids. They produce no artifact and MUST NOT be treated as authors |
54
+ | `bmad-deep-recon` | Research, before a brief rests on outside data. Its output stays in `_bmad-output/` permanently and MUST NOT be folded into the brief |
55
+ | `bmad-qa-generate-e2e-tests` | Tests for a feature that **already exists**. `tdd` is test-first for work being built, so this has no replacement here and is NOT retired — but what it writes is a test, never a contract, and it MUST NOT be read as one |
56
+ | `bmad-checkpoint-preview` | A human reading aid over a change, the same class as `bmad-advanced-elicitation`. It MUST NOT be counted as the Step 3 panel: that one is a separate dispatch by a different agent |
57
+ | `bmad-help` | Questions about BMad itself. It MUST NOT be used to answer "where am I" — that is `wdi-help` |
58
+
59
+ ## What is NOT USED, and MUST NOT be
60
+
61
+ **The criterion, and it binds every row below.** A BMad skill is retired only where this method has a
62
+ **named replacement** for what it produces. Without one it is not retired — it goes in the table above
63
+ instead, as something that may be used but MUST NOT author. Banning a capability with nothing in its
64
+ place is how a method gets worked around rather than followed.
65
+
66
+ ### Retired at G5 — enforced by install and update
67
+
68
+ **This is enforced, not only stated — as far as each host allows.** `install` and `update` set
69
+ `disable-model-invocation: true` on every wrapper below (every host that honours the key holds it),
70
+ add a `Skill(<name>)` deny rule to `.claude/settings.json` for Claude Code and `"<name>": "ask"` under
71
+ `permission.skill` in `opencode.json` for OpenCode, all re-applied on every run because BMad's installer
72
+ rewrites its own wrappers. On a host with no lock at all, the `AGENTS.md` method block — mirrored into
73
+ that host's own rule file — is what forbids them. A person typing `/bmad-build` still gets
74
+ it: the method retires a default, it does not confiscate a tool. The list lives in
75
+ `bin/wdi-method.js` as `BMAD_RETIRED_G5`, and a test fails when this table and that array disagree.
76
+
77
+ | Skill | Replaced by | Why |
78
+ |---|---|---|
79
+ | `bmad-spec` | `to-spec` | **Retired.** The contract below G5 is no longer BMad's. Its `_bmad/custom/*.toml` override is withdrawn and `update` removes any still installed |
80
+ | `bmad-build` · `bmad-build-auto` | `implement` · `wdi-autopilot` | **Retired.** `bmad-build` describes itself as implementing "any user intent, requirement, story, bug fix or change request" — the most inviting description in the repo's skill index, for the one thing this method owns most tightly. `bmad-build-auto` is an unattended loop, which is `wdi-autopilot`'s |
81
+ | `bmad-code-review` | `code-review` | **Retired.** The panel at Step 3 is a separate dispatch by a different agent; BMad's own review layers are the builder reviewing itself |
82
+ | `bmad-retrospective` | — | **Retired** with `RTR-` and `V19`. A frozen `RTR-` file stays where it is |
83
+ | `bmad-agent-dev` | `implement` | **Retired.** "Senior software engineer for story execution and code implementation" is `implement`'s sentence |
84
+ | `bmad-create-epics-and-stories` | `to-tickets` | **Retired**, and not merely by preference: the `epics` level between a spec and its tickets is **repealed in code** — `validate.py` reads a flat `tickets:` list. A skill whose only output is a shape nothing reads |
85
+ | `bmad-create-story` · `bmad-dev-story` · `bmad-dev-auto` · `bmad-quick-dev` | `implement` | **Retired.** BMad deprecated all four in favour of `bmad-build`, which is itself retired here. An alias to a retired skill is retired |
86
+ | `bmad-sprint-planning` · `bmad-sprint-status` | the ticket itself | **Retired.** The sprint route keeps status in a hand-edited file; this method reads status from the ticket — `bmad-guide.md` owns the reasoning |
87
+
88
+ ### Not used for other reasons — not enforced, and not G5's
89
+
90
+ These are outside the enforced list above: nothing locks them, because nothing here replaces them and
91
+ none of them competes for G5's work.
92
+
93
+ | Skill | Why |
94
+ |---|---|
95
+ | `bmad-editorial-review*` · `bmad-review-*` | Shims onto `bmad-review` lenses. Ask for the lens, not the shim |
96
+ | `bmad-document-project` · `bmad-generate-project-context` | Forward to `bmad-project-context`. This repo's agent instructions are maintained by hand |
97
+ | Any skill named as a **gate condition** | A gate is passed by its checklist and its validators, never by a skill having run |
98
+
99
+ ## The class that decides where output lands
100
+
101
+ `bmad-guide.md` owns the class definitions; what matters here is that **class B** exists because some skills
102
+ write several things at once that belong to different layers. `bmad-ux` is the case: `EXPERIENCE.md` is a
103
+ promise and `DESIGN.md` is a build detail, and no configuration can send them to two places. Its output
104
+ lands in a neutral folder first, and `wdi-ux` places it.
105
+
106
+ Which skill lands which output is the ownership table in `corpus-guide.md`, and it MUST NOT be duplicated
107
+ here.