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.
- package/README.md +33 -5
- package/bin/wdi-method.js +389 -26
- package/kit/.constitution/method/constitution.md +4 -1
- package/kit/.constitution/method/document/bmad-guide.md +10 -6
- package/kit/.constitution/method/document/bmad-skill-register.md +36 -6
- package/kit/.constitution/method/scripts/validate.py +162 -18
- package/kit/.constitution/method/why/README.md +192 -186
- package/kit/.constitution/method/why/artifact-map.md +1 -1
- package/kit/skills/wdi-autopilot/SKILL.md +383 -375
- package/kit/skills/wdi-blueprint/SKILL.md +3 -3
- package/kit/skills/wdi-build/SKILL.md +393 -371
- package/kit/skills/wdi-help/SKILL.md +111 -110
- package/kit/skills/wdi-init/SKILL.md +19 -1
- package/kit/skills/wdi-upgrade/SKILL.md +194 -187
- package/kit-overlay/constitution.md +4 -1
- package/package.json +1 -1
- package/scaffold/docs/agents/issue-tracker.md +56 -43
|
@@ -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
|
|
56
|
-
|
|
|
57
|
-
| No
|
|
58
|
-
|
|
|
59
|
-
| A PRD covers
|
|
60
|
-
|
|
|
61
|
-
|
|
|
62
|
-
| A PRD exists
|
|
63
|
-
|
|
|
64
|
-
| Components exist,
|
|
65
|
-
|
|
|
66
|
-
|
|
|
67
|
-
| G3 passed,
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
|
74
|
-
|
|
|
75
|
-
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
|
|
104
|
-
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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.
|