wdi-method 0.6.6 → 0.6.8

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.
@@ -1,110 +1,111 @@
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 spec is open, how many of its tickets are done, 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/specs.yaml` | Spec → release, size, `depends_on`, and its ticket index |
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
- | `wdi-method update` just ran and its summary printed an `upgrade` line | `wdi-upgrade` — **before anything else**. Content is still in the old shape, and every skill below reads the new one |
52
- | `wdi-method update` just ran and printed **no** `upgrade` line | Nothing. The update was mechanical and complete; carry on from wherever the gates say you are |
53
- | `wdi-method install` just ran, first time in this repo | `wdi-init` intent `setup` — the global `mode`, and nothing has started until it is set |
54
- | Someone asks whether to run `/setup-matt-pocock-skills` | **No**, unless they are changing tracker. `install` and `update` seed `docs/agents/` already answered for this method; re-running the interview restores defaults that contradict Article 3 |
55
- | The installer refused, naming the ticket engines | Not a skill. Install them — `/plugin install mattpocock-skills`, or `npx skills@latest add mattpocock/skills` — then run the installer again |
56
- | No registry, or no global `mode` set | `wdi-init` intent `setup` — nothing has started |
57
- | No `.what/_product-brief/brief.md` | `wdi-problem` — G1 has not started |
58
- | A brief exists, and no PRD covers the area in play | `wdi-product` intent `prd` |
59
- | A PRD covers it but the promise has moved | `wdi-product` intent `update` — never a second PRD for the same area |
60
- | 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 |
61
- | A PRD exists and the interface is a large part of what it promises | `wdi-ux` optional, and it runs **before G2**, which reads its `EXPERIENCE.md`. It needs no Product Component: `design-system.md` lands at once, and the two `<pc>`-scoped halves land when `wdi-init` intent `component` runs |
62
- | A PRD exists, no `product_components` yet | `wdi-init` intent `component` the slicing is born here, at the tail of G2 |
63
- | 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 |
64
- | Components exist, no UC catalogue or no spine | `wdi-blueprint` intent `catalog` first, then `platform` |
65
- | The blueprint is complete and G3 has not been held | The gate. Read `.how-rendered/blueprint.md`, not seven files |
66
- | G3 passed, a component at `outline`/`guarded`/`deep` has no depth | `wdi-component` |
67
- | G3 passed, the component is at `mode: catalog` | `wdi-build` — G4 is skipped by design |
68
- | Depth done and G4 passed for every component the work touches | `wdi-build` — it opens the spec, has the owner run `to-spec` and `to-tickets`, ships each ticket, closes the spec |
69
- | A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: the owner runs `/implement` directly. It stops and becomes a spec `S` the moment an `FR` is touched |
70
- | The owner wants every `FR` delivered without being asked in between | `wdi-autopilot` a preflight first, then one mandate the owner accepts, then a loop that fires it. Route here only when the owner asks for it; it is never the default next step |
71
- | A planning assumption turned out void | `wdi-decision` intent `open` it proposes, and changes nothing |
72
- | The owner has to decide something and wants the reading done first | `wdi-explain-to-me` — it briefs, and changes nothing; the decision then goes to `wdi-decision` or `wdi-question` |
73
- | An accepted `DEC-` has not reached its documents | `wdi-decision` intent `apply` |
74
- | A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, before any fix is proposed |
75
- | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
76
-
77
- A brief that exists but is thin is still a brief. You MUST NOT route back to `wdi-problem` because a
78
- section reads weakly route there only when the brief is absent, when a change signal invalidates what
79
- it claims, or when one of its eight required sections is missing outright.
80
-
81
- ## Rules
82
-
83
- - You MUST answer from this project's five gates — G1 Problem · G2 Product · G3 Blueprint · G4 Component ·
84
- G5 Release. BMad's `phase` column MUST NOT be used; it mixes two conventions and names gates this
85
- project does not run.
86
- - When a `wdi-*` wrapper exists for a BMad skill, you MUST name the wrapper, never the skill it wraps. The
87
- wrapper carries the position check and the content checks; routing past it produces an artifact nothing
88
- verifies. Today every BMad skill this method uses has one: `wdi-problem`, `wdi-product`,
89
- `wdi-blueprint`, `wdi-build`, `wdi-decision`, `wdi-review`, `wdi-ux`.
90
- - Only `.control/questions/blocking.md` holds a gate. `external.md` holds go-live and MUST NOT be reported
91
- as blocking a design gate; `assumptions.md` holds nothing.
92
- - You MUST NOT invent progress. If `.control/generated/status` is missing or stale, say so and name
93
- `validate.py --generate`.
94
- - You MUST NOT route anyone to `/setup-matt-pocock-skills` to *finish an install*. The installer seeds
95
- `docs/agents/` pre-answered, and that interview's own defaults send every engineering skill looking for a
96
- root `CONTEXT.md` and `docs/adr/` which Article 3 forbids and `wdi-reconcile` reports. It is for
97
- changing tracker, and nothing else.
98
- - You MUST NOT run other skills on the user's behalf. Name the skill; let them invoke it. The one skill that
99
- runs others is `wdi-autopilot`, and only under a mandate the owner accepted that is what the mandate is.
100
- - When the next step is blocked by a decision rather than by work, route to `wdi-question` or
101
- `wdi-decision`, not to a producing skill.
102
- - When asked about BMad itself — what a BMad skill does, what it writes, which are deprecated — answer
103
- from `bmad-skill-register.md`, and only fall back to `bmad-help` for module documentation.
104
- - When the caller has never seen this method, point at `.constitution/method/why/README.md` rather than
105
- paraphrasing it here.
106
-
107
- ## When there is no spec open
108
-
109
- Say so plainly, then route by the table above. An artifact a later gate produces MUST NOT be reported as
110
- 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 spec is open, how many of its tickets are done, 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/specs.yaml` | Spec → release, size, `depends_on`, and its ticket index |
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
+ | `wdi-method update` just ran and its summary printed an `upgrade` line | `wdi-upgrade` — **before anything else**. Content is still in the old shape, and every skill below reads the new one |
52
+ | `wdi-method update` just ran and printed **no** `upgrade` line | Nothing. The update was mechanical and complete; carry on from wherever the gates say you are |
53
+ | `wdi-method install` just ran, first time in this repo | `wdi-init` intent `setup` — the global `mode`, and nothing has started until it is set |
54
+ | Someone asks whether to run `/setup-matt-pocock-skills` | **No**, unless they are changing tracker. `install` and `update` seed `docs/agents/` already answered for this method; re-running the interview restores defaults that contradict Article 3 |
55
+ | The installer refused, naming engines | Not a skill. `npx skills@latest add mattpocock/skills` — **into this repo**, all six it names; a user-level plugin does not count. Then run the installer again |
56
+ | An engine will not invoke, or `engines-invocable` is red | `wdi-init` intent `engines` — `npx skills update` puts the author's `disable-model-invocation` back, and one command strips it out again |
57
+ | No registry, or no global `mode` set | `wdi-init` intent `setup` nothing has started |
58
+ | No `.what/_product-brief/brief.md` | `wdi-problem` G1 has not started |
59
+ | A brief exists, and no PRD covers the area in play | `wdi-product` intent `prd` |
60
+ | A PRD covers it but the promise has moved | `wdi-product` intent `update` never a second PRD for the same area |
61
+ | 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 |
62
+ | A PRD exists and the interface is a large part of what it promises | `wdi-ux` optional, and it runs **before G2**, which reads its `EXPERIENCE.md`. It needs no Product Component: `design-system.md` lands at once, and the two `<pc>`-scoped halves land when `wdi-init` intent `component` runs |
63
+ | A PRD exists, no `product_components` yet | `wdi-init` intent `component` the slicing is born here, at the tail of G2 |
64
+ | 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 |
65
+ | Components exist, no UC catalogue or no spine | `wdi-blueprint` intent `catalog` first, then `platform` |
66
+ | The blueprint is complete and G3 has not been held | The gate. Read `.how-rendered/blueprint.md`, not seven files |
67
+ | G3 passed, a component at `outline`/`guarded`/`deep` has no depth | `wdi-component` |
68
+ | G3 passed, the component is at `mode: catalog` | `wdi-build` — G4 is skipped by design |
69
+ | Depth done and G4 passed for every component the work touches | `wdi-build` it opens the spec, has the owner run `to-spec` and `to-tickets`, ships each ticket, closes the spec |
70
+ | A small fix touching no `FR`, `UC`, `AD-N`, or domain model | Fast Path: the owner runs `/implement` directly. It stops and becomes a spec `S` the moment an `FR` is touched |
71
+ | The owner wants every `FR` delivered without being asked in between | `wdi-autopilot` a preflight first, then one mandate the owner accepts, then a loop that fires it. Route here only when the owner asks for it; it is never the default next step |
72
+ | A planning assumption turned out void | `wdi-decision` intent `open` — it proposes, and changes nothing |
73
+ | The owner has to decide something and wants the reading done first | `wdi-explain-to-me` — it briefs, and changes nothing; the decision then goes to `wdi-decision` or `wdi-question` |
74
+ | An accepted `DEC-` has not reached its documents | `wdi-decision` intent `apply` |
75
+ | A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, before any fix is proposed |
76
+ | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
77
+
78
+ A brief that exists but is thin is still a brief. You MUST NOT route back to `wdi-problem` because a
79
+ section reads weakly route there only when the brief is absent, when a change signal invalidates what
80
+ it claims, or when one of its eight required sections is missing outright.
81
+
82
+ ## Rules
83
+
84
+ - You MUST answer from this project's five gates G1 Problem · G2 Product · G3 Blueprint · G4 Component ·
85
+ G5 Release. BMad's `phase` column MUST NOT be used; it mixes two conventions and names gates this
86
+ project does not run.
87
+ - When a `wdi-*` wrapper exists for a BMad skill, you MUST name the wrapper, never the skill it wraps. The
88
+ wrapper carries the position check and the content checks; routing past it produces an artifact nothing
89
+ verifies. Today every BMad skill this method uses has one: `wdi-problem`, `wdi-product`,
90
+ `wdi-blueprint`, `wdi-build`, `wdi-decision`, `wdi-review`, `wdi-ux`.
91
+ - Only `.control/questions/blocking.md` holds a gate. `external.md` holds go-live and MUST NOT be reported
92
+ as blocking a design gate; `assumptions.md` holds nothing.
93
+ - You MUST NOT invent progress. If `.control/generated/status` is missing or stale, say so and name
94
+ `validate.py --generate`.
95
+ - You MUST NOT route anyone to `/setup-matt-pocock-skills` to *finish an install*. The installer seeds
96
+ `docs/agents/` pre-answered, and that interview's own defaults send every engineering skill looking for a
97
+ root `CONTEXT.md` and `docs/adr/` — which Article 3 forbids and `wdi-reconcile` reports. It is for
98
+ changing tracker, and nothing else.
99
+ - You MUST NOT run other skills on the user's behalf. Name the skill; let them invoke it. The one skill that
100
+ runs others is `wdi-autopilot`, and only under a mandate the owner accepted that is what the mandate is.
101
+ - When the next step is blocked by a decision rather than by work, route to `wdi-question` or
102
+ `wdi-decision`, not to a producing skill.
103
+ - When asked about BMad itself — what a BMad skill does, what it writes, which are deprecated answer
104
+ from `bmad-skill-register.md`, and only fall back to `bmad-help` for module documentation.
105
+ - When the caller has never seen this method, point at `.constitution/method/why/README.md` rather than
106
+ paraphrasing it here.
107
+
108
+ ## When there is no spec open
109
+
110
+ Say so plainly, then route by the table above. An artifact a later gate produces MUST NOT be reported as
111
+ missing — that is not a gap, it is the plan.
@@ -11,7 +11,8 @@ of where things are, a reader that can see this product's code.
11
11
 
12
12
  | Intent | Does | Precondition | How often |
13
13
  |---|---|---|---|
14
- | `setup` | Guide the global `mode` setting · scaffold the registries that are still empty · **report** the documents already present, read-only · derive the two structure maps | before G1 | once per project |
14
+ | `setup` | Guide the global `mode` setting · scaffold the registries that are still empty · **report** the documents already present, read-only · derive the two structure maps · align the engines | before G1 | once per project |
15
+ | `engines` | Run `npx wdi-method engines --fix`, then report what it changed: the flag stripped from `to-spec` · `to-tickets` · `implement` so `wdi-build` can invoke them, the retired BMad G5 wrappers locked out of model invocation and denied in `.claude/settings.json`, and `docs/agents/` repaired where it still carried upstream's answer | after every `wdi-method install` or `update` | each version jump, and any time `engines-invocable` is red |
15
16
  | `component` | Propose the slicing from the brief plus every PRD · birth what is accepted: registry row plus `SRS`/`SDD` skeletons · propose `mode`, `risk_accepted`, `risk_note`, `owns` | **G2 passed** | each time a component is born |
16
17
  | `mode` | Change `mode` — global in `index.yaml`, or one component in `components.yaml`. Guided | — | any time |
17
18
  | `risk` | Set or review one component's `risk_accepted`, with disclosure of what it touches | the component exists | any time, usually before G4 |
@@ -26,6 +27,23 @@ of where things are, a reader that can see this product's code.
26
27
  - Retiring or renaming a Product Component that already carries an SRS **is not its authority**. That
27
28
  goes through `wdi-decision`. Birthing is cheap; retiring is not.
28
29
 
30
+ ## Intent `engines`
31
+
32
+ One command does the work — `npx wdi-method engines --fix` — and this intent exists because the work is
33
+ not the installer's to do unasked. Two of the three things it touches are files somebody else owns:
34
+ `docs/agents/*.md` is the product's, and the engines' `SKILL.md` files are the author's. `install` and
35
+ `update` do the two mechanical halves (the flag, the BMad lock) on every run; the config repair happens
36
+ only here, knowingly, and the previous text is kept as `.bak`.
37
+
38
+ Report, always, in this order: which engines are present and which are missing (all six are required —
39
+ `to-spec` · `to-tickets` · `implement` · `tdd` · `code-review` · `domain-modeling`), which had the flag
40
+ stripped, how many BMad wrappers were locked, and whether `docs/agents/issue-tracker.md` was upstream's
41
+ or already the method's. If any engine is missing, say so and stop: `npx skills@latest add
42
+ mattpocock/skills` is the owner's to run, and a user-level plugin does not count — its files cannot be
43
+ unlocked.
44
+
45
+ Then run `validate.py`. `engines-invocable` green is the proof, not the report.
46
+
29
47
  ## Intent `setup`
30
48
 
31
49
  1. Read the tree. Report every document already present, by path, with one line on what it looks like.