wdi-method 0.4.6 → 0.5.2

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 (87) hide show
  1. package/README.md +271 -252
  2. package/bin/wdi-method.js +1221 -1030
  3. package/kit/.constitution/method/README.md +73 -169
  4. package/kit/.constitution/{constitution.md → method/constitution.md} +10 -56
  5. package/kit/.constitution/{document → method/document}/architecture-guide.md +209 -209
  6. package/kit/.constitution/{document → method/document}/corpus-guide.md +4 -4
  7. package/kit/.constitution/{document → method/document}/delivery-flow-guide.md +338 -338
  8. package/kit/.constitution/{document → method/document}/sdd-guide.md +1 -1
  9. package/kit/.constitution/{document → method/document}/templates/cross-cutting.md +2 -2
  10. package/kit/.constitution/{document → method/document}/templates/design-system.md +67 -67
  11. package/kit/.constitution/{document → method/document}/templates/inventory.md +69 -69
  12. package/kit/.constitution/{document → method/document}/templates/sdd.md +1 -1
  13. package/kit/.constitution/{document → method/document}/templates/structure-codebase.md +129 -129
  14. package/kit/.constitution/{document → method/document}/templates/structure-document.md +90 -90
  15. package/kit/.constitution/{language-guide.md → method/language-guide.md} +2 -2
  16. package/kit/.constitution/{method-glossary.md → method/method-glossary.md} +169 -169
  17. package/kit/.constitution/{repo-guide.md → method/repo-guide.md} +120 -97
  18. package/kit/.constitution/method/scripts/__pycache__/validate.cpython-314.pyc +0 -0
  19. package/kit/.constitution/{scripts → method/scripts}/timeline.py +2 -2
  20. package/kit/.constitution/{scripts → method/scripts}/validate.py +1648 -1581
  21. package/kit/.constitution/{structure-guide.md → method/structure-guide.md} +3 -3
  22. package/kit/.constitution/method/why/README.md +169 -0
  23. package/kit/.constitution/method/{artifact-map.md → why/artifact-map.md} +5 -5
  24. package/kit/.constitution/method/{portability.md → why/portability.md} +6 -6
  25. package/kit/.constitution/method/{rationale.md → why/rationale.md} +5 -5
  26. package/kit/.constitution/project/README.md +68 -68
  27. package/kit/.constitution/project/constitution.md +64 -0
  28. package/kit/assets/bmad-custom/bmad-advanced-elicitation.toml +15 -15
  29. package/kit/assets/bmad-custom/bmad-architecture.toml +33 -33
  30. package/kit/assets/bmad-custom/bmad-code-review.toml +13 -13
  31. package/kit/assets/bmad-custom/bmad-correct-course.toml +28 -28
  32. package/kit/assets/bmad-custom/bmad-prd.toml +42 -42
  33. package/kit/assets/bmad-custom/bmad-product-brief.toml +34 -34
  34. package/kit/assets/bmad-custom/bmad-retrospective.toml +9 -9
  35. package/kit/assets/bmad-custom/bmad-spec.toml +16 -16
  36. package/kit/assets/bmad-custom/bmad-ux.toml +19 -19
  37. package/kit/skills/wdi-blueprint/SKILL.md +203 -203
  38. package/kit/skills/wdi-build/SKILL.md +244 -244
  39. package/kit/skills/wdi-component/SKILL.md +1 -1
  40. package/kit/skills/wdi-help/SKILL.md +98 -98
  41. package/kit/skills/wdi-init/SKILL.md +1 -1
  42. package/kit/skills/wdi-problem/SKILL.md +90 -90
  43. package/kit/skills/wdi-product/SKILL.md +127 -127
  44. package/kit/skills/wdi-reconcile/SKILL.md +2 -2
  45. package/kit/skills/wdi-report/SKILL.md +205 -205
  46. package/kit/skills/wdi-systematic-debugging/SKILL.md +193 -193
  47. package/kit/skills/wdi-ux/SKILL.md +145 -145
  48. package/kit-overlay/AGENTS.md +215 -212
  49. package/kit-overlay/README.md +24 -17
  50. package/kit-overlay/constitution.md +10 -56
  51. package/kit-overlay/portability.md +6 -6
  52. package/kit-overlay/repo-guide.md +120 -97
  53. package/package.json +4 -2
  54. package/scaffold/.control/questions/blocking.md +1 -1
  55. package/kit/.constitution/README.md +0 -66
  56. /package/kit/.constitution/{document → method/document}/bmad-guide.md +0 -0
  57. /package/kit/.constitution/{document → method/document}/bmad-skill-register.md +0 -0
  58. /package/kit/.constitution/{document → method/document}/brief-guide.md +0 -0
  59. /package/kit/.constitution/{document → method/document}/decision-guide.md +0 -0
  60. /package/kit/.constitution/{document → method/document}/prd-guide.md +0 -0
  61. /package/kit/.constitution/{document → method/document}/srs-guide.md +0 -0
  62. /package/kit/.constitution/{document → method/document}/templates/addendum.md +0 -0
  63. /package/kit/.constitution/{document → method/document}/templates/architecture-spine.md +0 -0
  64. /package/kit/.constitution/{document → method/document}/templates/brief.md +0 -0
  65. /package/kit/.constitution/{document → method/document}/templates/c4.md +0 -0
  66. /package/kit/.constitution/{document → method/document}/templates/contract.md +0 -0
  67. /package/kit/.constitution/{document → method/document}/templates/decision.md +0 -0
  68. /package/kit/.constitution/{document → method/document}/templates/flow.md +0 -0
  69. /package/kit/.constitution/{document → method/document}/templates/integration.md +0 -0
  70. /package/kit/.constitution/{document → method/document}/templates/lc.md +0 -0
  71. /package/kit/.constitution/{document → method/document}/templates/lifecycle.md +0 -0
  72. /package/kit/.constitution/{document → method/document}/templates/meeting.md +0 -0
  73. /package/kit/.constitution/{document → method/document}/templates/model.md +0 -0
  74. /package/kit/.constitution/{document → method/document}/templates/oq.md +0 -0
  75. /package/kit/.constitution/{document → method/document}/templates/prd.md +0 -0
  76. /package/kit/.constitution/{document → method/document}/templates/questions.md +0 -0
  77. /package/kit/.constitution/{document → method/document}/templates/rtr.md +0 -0
  78. /package/kit/.constitution/{document → method/document}/templates/rules.md +0 -0
  79. /package/kit/.constitution/{document → method/document}/templates/scn.md +0 -0
  80. /package/kit/.constitution/{document → method/document}/templates/srs.md +0 -0
  81. /package/kit/.constitution/{document → method/document}/templates/uc.md +0 -0
  82. /package/kit/.constitution/{document → method/document}/templates/ux.md +0 -0
  83. /package/kit/.constitution/{document → method/document}/ux-guide.md +0 -0
  84. /package/kit/.constitution/{scripts → method/scripts}/inventory.py +0 -0
  85. /package/kit/.constitution/{codebase/brownfield-guide.md → project/codebase-brownfield-guide.md} +0 -0
  86. /package/kit/.constitution/{codebase/conventions-guide.md → project/codebase-conventions-guide.md} +0 -0
  87. /package/kit/.constitution/{codebase/stack-guide.md → project/codebase-stack-guide.md} +0 -0
@@ -1,98 +1,98 @@
1
- ---
2
- name: wdi-help
3
- description: Use when you need to know where the project stands in the delivery flow and which skill comes next. Answers from this project's five gates, not from BMad's phase column.
4
- ---
5
-
6
- # WDI Help
7
-
8
- `bmad-help` cannot answer "where am I" in this project. Its progress detection globs `output-location`
9
- paths resolved from `resolve_config.py`, so it is blind to every class-A artifact this project redirects
10
- into `.what/` and `.how/`. It also lists two required gates — `epics.md` and `sprint-status.yaml` — that
11
- this project's route never produces, and it is the only BMad skill with no `customize.toml`, so none of
12
- that can be corrected.
13
-
14
- This skill replaces it for position and routing. `bmad-help` remains useful for one thing only: questions
15
- about BMad itself.
16
-
17
- ## Inputs
18
-
19
- | Source | What it answers |
20
- |---|---|
21
- | `.control/generated/status` | Which wave is open, which stories sit at which status, which validators are red |
22
- | `.control/registry/index.yaml` | The global `mode`, and the gate map |
23
- | `.control/registry/components.yaml` | Per-component `mode`, `risk_accepted`, and `g4_passed` |
24
- | `.control/registry/waves.yaml` | Wave → release, size, `depends_on` |
25
- | `.constitution/document/delivery-flow-guide.md` | The five gates and their checklists |
26
- | `.constitution/method/README.md` | The whole shape, when the caller has never seen the method |
27
-
28
- You MUST read `.control/generated/status` rather than counting files yourself. It is generated from the
29
- registry; hand-counting produces a second answer that will disagree.
30
-
31
- ## What to answer
32
-
33
- Three things, in this order, and nothing else unless asked:
34
-
35
- 1. **Where the project stands** — the last gate passed, and which gate is next.
36
- 2. **What blocks that gate** — the specific artifact, validator, or blocking question that is not ready.
37
- 3. **Which skill to invoke next** — one skill, named, with its intent, and the reason in a clause.
38
-
39
- Keep it under fifteen lines. A routing answer that needs scrolling has failed at its job.
40
-
41
- ## The one thing that changes the answer
42
-
43
- **Read the component's `mode` before routing to G4.** A component at `mode: catalog` skips G4 entirely —
44
- routing it to `wdi-component` is wrong, and the next step is `wdi-build`. That is the single most common
45
- mis-route in this flow, because every other gate is the same for every component.
46
-
47
- ## Routing by what exists
48
-
49
- | State | Next |
50
- |---|---|
51
- | No registry, or no global `mode` set | `wdi-init` intent `setup` — nothing has started |
52
- | No `.what/_product-brief/brief.md` | `wdi-problem` — G1 has not started |
53
- | A brief exists, and no PRD covers the area in play | `wdi-product` intent `prd` |
54
- | A PRD covers it but the promise has moved | `wdi-product` intent `update` — never a second PRD for the same area |
55
- | Only the **wording** of an `FR` is wrong | Nobody. Whichever skill is at work fixes it directly; putting it behind a gate is how three earlier corrections were dropped |
56
- | A PRD exists and the interface is a large part of what it promises | `wdi-ux` — optional, and it lands nothing until a `<pc>` exists |
57
- | A PRD exists, no `product_components` yet | `wdi-init` intent `component` — the slicing is born here, at the tail of G2 |
58
- | Components exist, `mode` or `risk_accepted` unset | `wdi-init` intents `mode` and `risk` — both are the owner's, and G4 cannot be read without them |
59
- | Components exist, no UC catalogue or no spine | `wdi-blueprint` — intent `catalog` first, then `platform` |
60
- | The blueprint is complete and G3 has not been held | The gate. Read `.control/generated/blueprint.md`, not seven files |
61
- | G3 passed, a component at `outline`/`guarded`/`deep` has no depth | `wdi-component` |
62
- | G3 passed, the component is at `mode: catalog` | `wdi-build` — G4 is skipped by design |
63
- | Depth done and G4 passed for every component the work touches | `wdi-build` — it opens the wave, runs `bmad-spec`, ships each story, closes the wave |
64
- | A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: `bmad-build` directly. It stops and becomes a wave `S` the moment an `FR` is touched |
65
- | A planning assumption turned out void | `wdi-decision` intent `open` — it proposes, and changes nothing |
66
- | An accepted `DEC-` has not reached its documents | `wdi-decision` intent `apply` |
67
- | A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, before any fix is proposed |
68
- | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
69
-
70
- A brief that exists but is thin is still a brief. You MUST NOT route back to `wdi-problem` because a
71
- section reads weakly — route there only when the brief is absent, when a change signal invalidates what
72
- it claims, or when one of its eight required sections is missing outright.
73
-
74
- ## Rules
75
-
76
- - You MUST answer from this project's five gates — G1 Problem · G2 Product · G3 Blueprint · G4 Component ·
77
- G5 Release. BMad's `phase` column MUST NOT be used; it mixes two conventions and names gates this
78
- project does not run.
79
- - When a `wdi-*` wrapper exists for a BMad skill, you MUST name the wrapper, never the skill it wraps. The
80
- wrapper carries the position check and the content checks; routing past it produces an artifact nothing
81
- verifies. Today every BMad skill this method uses has one: `wdi-problem`, `wdi-product`,
82
- `wdi-blueprint`, `wdi-build`, `wdi-decision`, `wdi-review`, `wdi-ux`.
83
- - Only `.control/questions/blocking.md` holds a gate. `external.md` holds go-live and MUST NOT be reported
84
- as blocking a design gate; `assumptions.md` holds nothing.
85
- - You MUST NOT invent progress. If `.control/generated/status` is missing or stale, say so and name
86
- `validate.py --generate`.
87
- - You MUST NOT run other skills on the user's behalf. Name the skill; let them invoke it.
88
- - When the next step is blocked by a decision rather than by work, route to `wdi-question` or
89
- `wdi-decision`, not to a producing skill.
90
- - When asked about BMad itself — what a BMad skill does, what it writes, which are deprecated — answer
91
- from `bmad-skill-register.md`, and only fall back to `bmad-help` for module documentation.
92
- - When the caller has never seen this method, point at `.constitution/method/README.md` rather than
93
- paraphrasing it here.
94
-
95
- ## When there is no wave open
96
-
97
- Say so plainly, then route by the table above. An artifact a later gate produces MUST NOT be reported as
98
- missing — that is not a gap, it is the plan.
1
+ ---
2
+ name: wdi-help
3
+ description: Use when you need to know where the project stands in the delivery flow and which skill comes next. Answers from this project's five gates, not from BMad's phase column.
4
+ ---
5
+
6
+ # WDI Help
7
+
8
+ `bmad-help` cannot answer "where am I" in this project. Its progress detection globs `output-location`
9
+ paths resolved from `resolve_config.py`, so it is blind to every class-A artifact this project redirects
10
+ into `.what/` and `.how/`. It also lists two required gates — `epics.md` and `sprint-status.yaml` — that
11
+ this project's route never produces, and it is the only BMad skill with no `customize.toml`, so none of
12
+ that can be corrected.
13
+
14
+ This skill replaces it for position and routing. `bmad-help` remains useful for one thing only: questions
15
+ about BMad itself.
16
+
17
+ ## Inputs
18
+
19
+ | Source | What it answers |
20
+ |---|---|
21
+ | `.control/generated/status` | Which wave is open, which stories sit at which status, which validators are red |
22
+ | `.control/registry/index.yaml` | The global `mode`, and the gate map |
23
+ | `.control/registry/components.yaml` | Per-component `mode`, `risk_accepted`, and `g4_passed` |
24
+ | `.control/registry/waves.yaml` | Wave → release, size, `depends_on` |
25
+ | `.constitution/method/document/delivery-flow-guide.md` | The five gates and their checklists |
26
+ | `.constitution/method/why/README.md` | The whole shape, when the caller has never seen the method |
27
+
28
+ You MUST read `.control/generated/status` rather than counting files yourself. It is generated from the
29
+ registry; hand-counting produces a second answer that will disagree.
30
+
31
+ ## What to answer
32
+
33
+ Three things, in this order, and nothing else unless asked:
34
+
35
+ 1. **Where the project stands** — the last gate passed, and which gate is next.
36
+ 2. **What blocks that gate** — the specific artifact, validator, or blocking question that is not ready.
37
+ 3. **Which skill to invoke next** — one skill, named, with its intent, and the reason in a clause.
38
+
39
+ Keep it under fifteen lines. A routing answer that needs scrolling has failed at its job.
40
+
41
+ ## The one thing that changes the answer
42
+
43
+ **Read the component's `mode` before routing to G4.** A component at `mode: catalog` skips G4 entirely —
44
+ routing it to `wdi-component` is wrong, and the next step is `wdi-build`. That is the single most common
45
+ mis-route in this flow, because every other gate is the same for every component.
46
+
47
+ ## Routing by what exists
48
+
49
+ | State | Next |
50
+ |---|---|
51
+ | No registry, or no global `mode` set | `wdi-init` intent `setup` — nothing has started |
52
+ | No `.what/_product-brief/brief.md` | `wdi-problem` — G1 has not started |
53
+ | A brief exists, and no PRD covers the area in play | `wdi-product` intent `prd` |
54
+ | A PRD covers it but the promise has moved | `wdi-product` intent `update` — never a second PRD for the same area |
55
+ | Only the **wording** of an `FR` is wrong | Nobody. Whichever skill is at work fixes it directly; putting it behind a gate is how three earlier corrections were dropped |
56
+ | A PRD exists and the interface is a large part of what it promises | `wdi-ux` — optional, and it lands nothing until a `<pc>` exists |
57
+ | A PRD exists, no `product_components` yet | `wdi-init` intent `component` — the slicing is born here, at the tail of G2 |
58
+ | Components exist, `mode` or `risk_accepted` unset | `wdi-init` intents `mode` and `risk` — both are the owner's, and G4 cannot be read without them |
59
+ | Components exist, no UC catalogue or no spine | `wdi-blueprint` — intent `catalog` first, then `platform` |
60
+ | The blueprint is complete and G3 has not been held | The gate. Read `.control/generated/blueprint.md`, not seven files |
61
+ | G3 passed, a component at `outline`/`guarded`/`deep` has no depth | `wdi-component` |
62
+ | G3 passed, the component is at `mode: catalog` | `wdi-build` — G4 is skipped by design |
63
+ | Depth done and G4 passed for every component the work touches | `wdi-build` — it opens the wave, runs `bmad-spec`, ships each story, closes the wave |
64
+ | A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: `bmad-build` directly. It stops and becomes a wave `S` the moment an `FR` is touched |
65
+ | A planning assumption turned out void | `wdi-decision` intent `open` — it proposes, and changes nothing |
66
+ | An accepted `DEC-` has not reached its documents | `wdi-decision` intent `apply` |
67
+ | A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, before any fix is proposed |
68
+ | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
69
+
70
+ A brief that exists but is thin is still a brief. You MUST NOT route back to `wdi-problem` because a
71
+ section reads weakly — route there only when the brief is absent, when a change signal invalidates what
72
+ it claims, or when one of its eight required sections is missing outright.
73
+
74
+ ## Rules
75
+
76
+ - You MUST answer from this project's five gates — G1 Problem · G2 Product · G3 Blueprint · G4 Component ·
77
+ G5 Release. BMad's `phase` column MUST NOT be used; it mixes two conventions and names gates this
78
+ project does not run.
79
+ - When a `wdi-*` wrapper exists for a BMad skill, you MUST name the wrapper, never the skill it wraps. The
80
+ wrapper carries the position check and the content checks; routing past it produces an artifact nothing
81
+ verifies. Today every BMad skill this method uses has one: `wdi-problem`, `wdi-product`,
82
+ `wdi-blueprint`, `wdi-build`, `wdi-decision`, `wdi-review`, `wdi-ux`.
83
+ - Only `.control/questions/blocking.md` holds a gate. `external.md` holds go-live and MUST NOT be reported
84
+ as blocking a design gate; `assumptions.md` holds nothing.
85
+ - You MUST NOT invent progress. If `.control/generated/status` is missing or stale, say so and name
86
+ `validate.py --generate`.
87
+ - You MUST NOT run other skills on the user's behalf. Name the skill; let them invoke it.
88
+ - When the next step is blocked by a decision rather than by work, route to `wdi-question` or
89
+ `wdi-decision`, not to a producing skill.
90
+ - When asked about BMad itself — what a BMad skill does, what it writes, which are deprecated — answer
91
+ from `bmad-skill-register.md`, and only fall back to `bmad-help` for module documentation.
92
+ - When the caller has never seen this method, point at `.constitution/method/why/README.md` rather than
93
+ paraphrasing it here.
94
+
95
+ ## When there is no wave open
96
+
97
+ Say so plainly, then route by the table above. An artifact a later gate produces MUST NOT be reported as
98
+ missing — that is not a gap, it is the plan.
@@ -106,7 +106,7 @@ statement that the content was wrong.
106
106
 
107
107
  ## Intent `structure`
108
108
 
109
- The rules for what belongs in a map live in `.constitution/structure-guide.md`. This intent applies
109
+ The rules for what belongs in a map live in `.constitution/method/structure-guide.md`. This intent applies
110
110
  them; it MUST NOT restate them.
111
111
 
112
112
  1. **Derive from the tree on disk**, honouring `.gitignore`. A map assembled from what the caller says
@@ -1,90 +1,90 @@
1
- ---
2
- name: wdi-problem
3
- description: Use at G1 Problem — when the product brief is created, updated, or validated. Checks position and preconditions, dispatches bmad-product-brief, then verifies the result against brief-guide.md and the template. Never writes the brief itself.
4
- ---
5
-
6
- # WDI Problem
7
-
8
- G1 decides **what the problem is, whose it is, and why it earns work.** `bmad-product-brief` writes the
9
- brief; this skill decides whether it should run at all, hands it the right intent, and checks what came
10
- back. Both halves matter: the override TOML controls **where** the artifact lands, and nothing in BMad
11
- checks **what is in it**.
12
-
13
- You MUST NOT write or edit `brief.md` yourself. If a check fails, name what is missing and re-dispatch — a
14
- hand-patched brief makes the memlog lie about how it got that way.
15
-
16
- ## Inputs
17
-
18
- | Source | What it answers |
19
- |---|---|
20
- | `.what/_product-brief/brief.md` | Whether a brief already exists, and what intent applies |
21
- | `.constitution/document/brief-guide.md` | The rules the result is checked against |
22
- | `.constitution/document/templates/brief.md` | The required shape |
23
- | `_bmad-output/brainstorming/` · `forge/` · `planning-artifacts/` | Raw material available to feed in |
24
- | `.control/product-glossary.md` | Terms already fixed, so the brief does not invent competing ones |
25
-
26
- ## Step 1 — Position
27
-
28
- - If `brief.md` exists, the intent is **update** or **validate**, never **create**. A second create would
29
- overwrite the singleton.
30
- - If a wave is open and the ask is a scope change rather than a problem change, this is the wrong skill.
31
- Route to `wdi-decision`, which wraps `bmad-correct-course`.
32
- - If the ask is about one initiative rather than the product, route to `wdi-product`.
33
-
34
- ## Step 2 — Preconditions
35
-
36
- None of these block. Each is a question you MUST put to the owner before dispatching, once.
37
-
38
- | Check | Why it matters |
39
- |---|---|
40
- | Is there raw material worth feeding in? | Exploration output in `_bmad-output/` is invisible to the skill unless it is named |
41
- | Does the claim rest on outside data? | Market size, competitor, stack choice — those want `bmad-deep-recon` first |
42
- | Is the primary user already obvious? | If not, discovery is not finished and the brief will stall at the gate |
43
-
44
- ## Step 3 — Dispatch
45
-
46
- Invoke `bmad-product-brief` with the detected intent. Do not restate the rules to it — they arrive through
47
- `persistent_facts` and `doc_standards` in `_bmad/custom/bmad-product-brief.toml`. Repeating them here would
48
- create a second copy that drifts.
49
-
50
- Name the raw-material files explicitly in the handoff. The skill globs its own output locations, and this
51
- project redirects them.
52
-
53
- ## Step 4 — Verify
54
-
55
- Check the returned brief against the guide. Report every failure; fix none of them by hand.
56
-
57
- | # | Check | Fails when |
58
- |---|---|---|
59
- | 1 | Home | Anything landed outside `.what/_product-brief/` |
60
- | 2 | Eight required sections present | The template's "drop what does not earn its place" was applied to one of them |
61
- | 3 | Exactly one `primary` in Who This Serves | Zero, or more than one |
62
- | 4 | Goals numbered `BG-N` | Numbered `G1`–`G4`, which collides with the gates |
63
- | 5 | Scope Out written as items | Left implicit |
64
- | 6 | Memlog at `.control/memlog/brief.md` | A `.memlog.md` appeared inside `.what/` — `--workspace` was used |
65
- | 7 | No raw material folded in | Research or brainstorming prose copied into the brief instead of cited |
66
- | 8 | No Product Component list | A slicing was written at G1; it belongs to `wdi-init` intent `component`, after G2 |
67
- | 9 | `bmad-review` structure + prose ran | `doc_standards` did not fire |
68
-
69
- Check 6 MUST be fixed immediately rather than reported. A `.memlog.md` inside `.what/` is corpus pollution,
70
- and every later run compounds it.
71
-
72
- ## Rules
73
-
74
- - You MUST NOT land anything from `_bmad-output/` into the corpus beyond the brief itself. Every other
75
- output has its owner in the table in `corpus-guide.md`, and for exploration output the answer is that it
76
- stays put.
77
- - You MUST NOT delete an exploration run folder after feeding it in. The `update` intents re-read the
78
- original inputs.
79
- - You MUST NOT open G1 on a brief that has not been through check 9. Gate time is for deciding.
80
- - A brief concluding the idea is not worth building is a **pass**. You MUST report it as one rather than
81
- offering to rework it.
82
- - Every unresolved `[ASSUMPTION]` MUST be filed through `wdi-question` before the gate opens — into
83
- `assumptions.md` by default, `blocking.md` only through the three tests that file states.
84
- - When the ask is about the Product Component slicing, this is the wrong skill at any point. Before the list
85
- exists it belongs to `wdi-init` intent `component`; after G3 a correction goes through `wdi-decision`.
86
-
87
- ## Output
88
-
89
- A short report: intent dispatched, what the brief now claims in one line, and the result of all nine checks
90
- — naming the failures, not summarising them away.
1
+ ---
2
+ name: wdi-problem
3
+ description: Use at G1 Problem — when the product brief is created, updated, or validated. Checks position and preconditions, dispatches bmad-product-brief, then verifies the result against brief-guide.md and the template. Never writes the brief itself.
4
+ ---
5
+
6
+ # WDI Problem
7
+
8
+ G1 decides **what the problem is, whose it is, and why it earns work.** `bmad-product-brief` writes the
9
+ brief; this skill decides whether it should run at all, hands it the right intent, and checks what came
10
+ back. Both halves matter: the override TOML controls **where** the artifact lands, and nothing in BMad
11
+ checks **what is in it**.
12
+
13
+ You MUST NOT write or edit `brief.md` yourself. If a check fails, name what is missing and re-dispatch — a
14
+ hand-patched brief makes the memlog lie about how it got that way.
15
+
16
+ ## Inputs
17
+
18
+ | Source | What it answers |
19
+ |---|---|
20
+ | `.what/_product-brief/brief.md` | Whether a brief already exists, and what intent applies |
21
+ | `.constitution/method/document/brief-guide.md` | The rules the result is checked against |
22
+ | `.constitution/method/document/templates/brief.md` | The required shape |
23
+ | `_bmad-output/brainstorming/` · `forge/` · `planning-artifacts/` | Raw material available to feed in |
24
+ | `.control/product-glossary.md` | Terms already fixed, so the brief does not invent competing ones |
25
+
26
+ ## Step 1 — Position
27
+
28
+ - If `brief.md` exists, the intent is **update** or **validate**, never **create**. A second create would
29
+ overwrite the singleton.
30
+ - If a wave is open and the ask is a scope change rather than a problem change, this is the wrong skill.
31
+ Route to `wdi-decision`, which wraps `bmad-correct-course`.
32
+ - If the ask is about one initiative rather than the product, route to `wdi-product`.
33
+
34
+ ## Step 2 — Preconditions
35
+
36
+ None of these block. Each is a question you MUST put to the owner before dispatching, once.
37
+
38
+ | Check | Why it matters |
39
+ |---|---|
40
+ | Is there raw material worth feeding in? | Exploration output in `_bmad-output/` is invisible to the skill unless it is named |
41
+ | Does the claim rest on outside data? | Market size, competitor, stack choice — those want `bmad-deep-recon` first |
42
+ | Is the primary user already obvious? | If not, discovery is not finished and the brief will stall at the gate |
43
+
44
+ ## Step 3 — Dispatch
45
+
46
+ Invoke `bmad-product-brief` with the detected intent. Do not restate the rules to it — they arrive through
47
+ `persistent_facts` and `doc_standards` in `_bmad/custom/bmad-product-brief.toml`. Repeating them here would
48
+ create a second copy that drifts.
49
+
50
+ Name the raw-material files explicitly in the handoff. The skill globs its own output locations, and this
51
+ project redirects them.
52
+
53
+ ## Step 4 — Verify
54
+
55
+ Check the returned brief against the guide. Report every failure; fix none of them by hand.
56
+
57
+ | # | Check | Fails when |
58
+ |---|---|---|
59
+ | 1 | Home | Anything landed outside `.what/_product-brief/` |
60
+ | 2 | Eight required sections present | The template's "drop what does not earn its place" was applied to one of them |
61
+ | 3 | Exactly one `primary` in Who This Serves | Zero, or more than one |
62
+ | 4 | Goals numbered `BG-N` | Numbered `G1`–`G4`, which collides with the gates |
63
+ | 5 | Scope Out written as items | Left implicit |
64
+ | 6 | Memlog at `.control/memlog/brief.md` | A `.memlog.md` appeared inside `.what/` — `--workspace` was used |
65
+ | 7 | No raw material folded in | Research or brainstorming prose copied into the brief instead of cited |
66
+ | 8 | No Product Component list | A slicing was written at G1; it belongs to `wdi-init` intent `component`, after G2 |
67
+ | 9 | `bmad-review` structure + prose ran | `doc_standards` did not fire |
68
+
69
+ Check 6 MUST be fixed immediately rather than reported. A `.memlog.md` inside `.what/` is corpus pollution,
70
+ and every later run compounds it.
71
+
72
+ ## Rules
73
+
74
+ - You MUST NOT land anything from `_bmad-output/` into the corpus beyond the brief itself. Every other
75
+ output has its owner in the table in `corpus-guide.md`, and for exploration output the answer is that it
76
+ stays put.
77
+ - You MUST NOT delete an exploration run folder after feeding it in. The `update` intents re-read the
78
+ original inputs.
79
+ - You MUST NOT open G1 on a brief that has not been through check 9. Gate time is for deciding.
80
+ - A brief concluding the idea is not worth building is a **pass**. You MUST report it as one rather than
81
+ offering to rework it.
82
+ - Every unresolved `[ASSUMPTION]` MUST be filed through `wdi-question` before the gate opens — into
83
+ `assumptions.md` by default, `blocking.md` only through the three tests that file states.
84
+ - When the ask is about the Product Component slicing, this is the wrong skill at any point. Before the list
85
+ exists it belongs to `wdi-init` intent `component`; after G3 a correction goes through `wdi-decision`.
86
+
87
+ ## Output
88
+
89
+ A short report: intent dispatched, what the brief now claims in one line, and the result of all nine checks
90
+ — naming the failures, not summarising them away.