wdi-method 0.6.0 → 0.6.1

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 CHANGED
@@ -282,7 +282,7 @@ which review lenses run, and which review traces a validator will demand.
282
282
 
283
283
  ---
284
284
 
285
- ## Five gates, sixteen skills
285
+ ## Five gates, seventeen skills
286
286
 
287
287
  | Gate | Decides | Skill |
288
288
  |---|---|---|
@@ -293,7 +293,7 @@ which review lenses run, and which review traces a validator will demand.
293
293
  | **G5 Release** | Whether it is done and proven | `wdi-build` |
294
294
 
295
295
  Around them: `wdi-init` (scaffold, component birth, depth and risk settings, structure maps),
296
- `wdi-decision`, `wdi-question`, `wdi-log`, `wdi-help`, `wdi-reconcile`, `wdi-review`, `wdi-report`,
296
+ `wdi-decision`, `wdi-question`, `wdi-log`, `wdi-help`, `wdi-explain-to-me`, `wdi-reconcile`, `wdi-review`, `wdi-report`,
297
297
  `wdi-systematic-debugging`, and `wdi-upgrade` (moves a corpus written under an older kit into the current
298
298
  shape — content moves, nothing is invented).
299
299
 
@@ -382,9 +382,9 @@ English, whatever the settings say — it travels to every repo through this pac
382
382
 
383
383
  | | |
384
384
  |---|---|
385
- | Overwrites | everything in `.constitution/method/` · the sixteen wrappers · `_bmad/custom/*.toml` · the marked block in `AGENTS.md` |
385
+ | Overwrites | everything in `.constitution/method/` · the seventeen wrappers · `_bmad/custom/*.toml` · the marked block in `AGENTS.md` |
386
386
  | Renames | a file whose content needs no judgment to move — `waves.yaml` → `specs.yaml`, the pre-0.5 registry names. Content is never rewritten |
387
- | Removes | Wrappers the method has retired — a `wdi-*` folder with a `SKILL.md` that is no longer one of the sixteen. Each removal is printed |
387
+ | Removes | Wrappers the method has retired — a `wdi-*` folder with a `SKILL.md` that is no longer one of the seventeen. Each removal is printed |
388
388
  | Reports | what is still in the OLD shape, as an `upgrade` line — and names `wdi-upgrade` as the next step. The installer does not move content; that is a decision, and the skill's |
389
389
  | Keeps | All of `.constitution/project/`, plus your initiative slug and your language choice. A setting somebody already chose is not the installer's to change behind their back |
390
390
  | Never resurrects | A folder you retired. On update, absence is treated as a decision |
package/bin/wdi-method.js CHANGED
@@ -48,6 +48,7 @@ const WDI_SKILLS = [
48
48
  "wdi-question",
49
49
  "wdi-log",
50
50
  "wdi-help",
51
+ "wdi-explain-to-me",
51
52
  "wdi-reconcile",
52
53
  "wdi-review",
53
54
  "wdi-report",
@@ -29,7 +29,7 @@ Never a rule. When it disagrees with a guide, the guide wins and the disagreemen
29
29
 
30
30
  | File | Opened when |
31
31
  |---|---|
32
- | [`why/README.md`](why/README.md) | You want the whole shape in five minutes — five gates, two settings, sixteen skills, WDI ↔ BMad |
32
+ | [`why/README.md`](why/README.md) | You want the whole shape in five minutes — five gates, two settings, seventeen skills, WDI ↔ BMad |
33
33
  | [`why/artifact-map.md`](why/artifact-map.md) | "Where does this file go", or "does this document exist at my `mode`" |
34
34
  | [`why/mode-risk-map.md`](why/mode-risk-map.md) | A `mode` and a `risk_accepted` are set and you want the two side by side — all twelve cells |
35
35
  | [`why/rationale.md`](why/rationale.md) | Before changing a rule, to know what you would break |
@@ -137,7 +137,7 @@ where BMad's own meaning is wider, the narrower one here wins.
137
137
  | `epics.md` · `sprint-status.yaml` · `bmad-sprint-planning` · `bmad-create-epics-and-stories` · `stories.yaml` | Tickets, each carrying its own status and its blocking edges |
138
138
  | Validator `V10` | Nothing. Its number is not reused |
139
139
  | `bmad-help` as the answer to "where am I" | `wdi-help` |
140
- | The skills `wdi-analysis` · `wdi-architecture` · `wdi-design` · `wdi-glossary` · `wdi-structure` · `wdi-apply` · `wdi-correct-course` · `wdi-wave` · `wdi-ship-story` · `wdi-product-brief` · `wdi-meeting` · `wdi-project-log` | The fifteen in `why/README.md`. `why/rationale.md` says which absorbed which, and why |
140
+ | The skills `wdi-analysis` · `wdi-architecture` · `wdi-design` · `wdi-glossary` · `wdi-structure` · `wdi-apply` · `wdi-correct-course` · `wdi-wave` · `wdi-ship-story` · `wdi-product-brief` · `wdi-meeting` · `wdi-project-log` | The seventeen in `why/README.md`. `why/rationale.md` says which absorbed which, and why |
141
141
  | An Indonesian synonym for a `mode` value — *ringkas*, *terjaga*, *katalog* as prose | The English value, used as written: `catalog` · `outline` · `guarded` · `deep` |
142
142
 
143
143
  ## Synonyms that MUST NOT be coined
@@ -101,7 +101,7 @@ and the Fast Path do not.
101
101
  | `wdi-method update` printed an `upgrade` line | `wdi-upgrade`, before any other skill — it moves content into the new shape, never invents it, one commit |
102
102
  | You do not know where you are | `wdi-help` |
103
103
 
104
- ## Sixteen skills
104
+ ## Seventeen skills
105
105
 
106
106
  Named for the **gate they serve**, so *"which skill do I run"* is answered by *"which gate am I at"*.
107
107
 
@@ -125,6 +125,7 @@ Named for the **gate they serve**, so *"which skill do I run"* is answered by *"
125
125
  | `wdi-question` | Something that cannot be decided now |
126
126
  | `wdi-log` | A meeting finished, or a non-technical fact now binds |
127
127
  | `wdi-help` | "Where am I, what next" |
128
+ | `wdi-explain-to-me` | "Brief me so I can decide this" — an open question, a defect, a design fork. Reads everything, writes nothing; the decision then goes to `wdi-decision` or `wdi-question` |
128
129
  | `wdi-upgrade` | `wdi-method update` just moved the method version, and the summary listed content still in the old shape. Moves it, never invents it; one commit |
129
130
  | `wdi-reconcile` | Any time. Read-only — it reports, it never edits |
130
131
  | `wdi-review` | Over any document, any time |
@@ -124,7 +124,7 @@ someone else performs. `../document/corpus-guide.md` holds the binding version o
124
124
  | `wdi-report` | `.control/reports/<period>.md` |
125
125
  | a script | everything in `.control/generated/`, and the three inventories once code exists |
126
126
 
127
- Four skills write **no file at all**, and that is deliberate: `wdi-reconcile`, `wdi-help`,
127
+ Five skills write **no file at all**, and that is deliberate: `wdi-reconcile`, `wdi-help`, `wdi-explain-to-me`,
128
128
  `wdi-report` intent `dispatch`, and `wdi-review` apart from one frontmatter block. What reports MUST NOT
129
129
  also change things — otherwise there is nothing left to check with.
130
130
 
@@ -28,7 +28,7 @@ them only an *example* does — not a rule.
28
28
  | `templates/design-system.md` | The pointer to wherever this project keeps its tokens | Re-point at that project's token file |
29
29
  | `templates/oq.md` | One example of a bad question title | Cosmetic |
30
30
 
31
- Everything else — the five gates, the two fields, the sixteen skills, the templates, `validate.py`,
31
+ Everything else — the five gates, the two fields, the seventeen skills, the templates, `validate.py`,
32
32
  `inventory.py`, `../method-glossary.md`, and the three files beside this one — carries without edit.
33
33
 
34
34
  One half-exception, and it is by design: `inventory.py` is the generic engine and carries whole, but
@@ -0,0 +1,84 @@
1
+ ---
2
+ name: wdi-explain-to-me
3
+ description: Use when the owner has to decide something — an open question, a defect, a design fork, a failing validator, a vague worry — and wants the reading done for them. Investigates, then briefs in six fixed sections, in the owner's language. Writes no file; the decision itself goes to wdi-decision or wdi-question.
4
+ disable-model-invocation: true
5
+ ---
6
+
7
+ # WDI Explain To Me
8
+
9
+ The owner names a problem. The result is a **decision briefing**: everything needed to decide, with the
10
+ agent doing all of the reading and the owner doing only the deciding.
11
+
12
+ `disable-model-invocation: true` is deliberate. A briefing is written for a person who has to choose;
13
+ a skill that wants one has nothing to choose, and would only be reading its own summary back.
14
+
15
+ Four asks look alike from the outside and are four skills:
16
+
17
+ | Ask | Skill |
18
+ |---|---|
19
+ | "Where am I, what next" | `wdi-help` — position and routing, under fifteen lines |
20
+ | "Brief me so I can decide this" | **this skill** — investigation, then a briefing |
21
+ | "Record what was decided" | `wdi-decision` |
22
+ | "This cannot be decided now" | `wdi-question` |
23
+
24
+ ## Inputs
25
+
26
+ | Source | What it answers |
27
+ |---|---|
28
+ | The topic argument | An id (`OQ-12`, `DEC-007`, a defect row, a validator name), a file path, or a sentence |
29
+ | `.control/registry/*.yaml` · `.control/generated/status` | What the registry says holds today, and which validators are red |
30
+ | `.control/questions/` · `.control/decisions/` | Whether this was asked or decided before, and what is already settled |
31
+ | The working documents in `.what/` and `.how/` | The promise and the mechanism the topic touches |
32
+ | `validate.py` output · tests · git history · the code | What actually holds, as opposed to what a document claims |
33
+
34
+ ## Step 1 — Investigate
35
+
36
+ When the topic is too vague to investigate, ask **one** narrowing question first — one, not a list. A
37
+ briefing on the wrong topic wastes the owner's five minutes.
38
+
39
+ Then read the sources that bear on the topic before writing a word: files, registries, validator or test
40
+ output, git history. Run what can be run. Done when every claim the briefing will make traces to
41
+ something read or executed in this session, with its `file:line` in hand.
42
+
43
+ ## Step 2 — Brief
44
+
45
+ **Language.** Write in the language the owner is using in the conversation. When that is unclear, use
46
+ `policy.doc_language` from `.control/registry/index.yaml`. Method terminology — ids, gate names, the
47
+ values of `mode` and `risk_accepted`, validator names — stays English as `language-guide.md` requires;
48
+ those are keys, not prose.
49
+
50
+ **Six sections, fixed in number, order, and meaning.** The headings are given here in English; render
51
+ each one in the briefing's language and keep its slot. A briefing that drops, merges, or reorders a
52
+ section has changed what the owner can compare it against.
53
+
54
+ 1. **Topic** — what kind of thing this is (an `OQ-`? a defect? a design fork? stale prose?) and the one
55
+ decision it asks for. Two or three sentences.
56
+ 2. **Background** — how it came to exist and what is already settled. Plain language; gloss any term of
57
+ art in half a sentence where it first appears.
58
+ 3. **Problem Analysis** — what is actually wrong and why, with evidence. Put a `file:line` citation
59
+ beside each claim; the reader MAY verify, but MUST NOT need to.
60
+ 4. **Solution Design** — 2–4 options. For each: what changes, what it costs, what breaks or is lost, and
61
+ the size of the work. An option whose downside is missing has not been analysed.
62
+ 5. **Recommendation** — exactly one, with its reason and the single condition that would flip it.
63
+ 6. **What Helps You Decide** — the facts worth weighing against each other, then a verdict on the
64
+ owner's own eyes: either state that this briefing is sufficient, or name the exact file, section, or
65
+ screen the owner MUST look at themselves and what to look for there. Reserve that second verdict for
66
+ judgement only the owner can make — taste, risk appetite, a promise to a stakeholder — never for
67
+ legwork the investigation could have done.
68
+
69
+ Done when the owner could decide from the briefing alone, or knows exactly what to open and why.
70
+
71
+ ## Rules
72
+
73
+ - Reading time MUST stay under five minutes; push detail into citations, not prose.
74
+ - A claim without a source read this session MUST NOT appear in the briefing. Memory is not a source.
75
+ - This skill writes **no file** and MUST NOT edit anything. The briefing lives in the conversation. It
76
+ MUST NOT open a `DEC-`, file an `OQ-`, or patch the corpus on the way — a briefing that also changes
77
+ things leaves nothing to decide against.
78
+ - You MUST NOT run other skills on the owner's behalf. Name the skill; let them invoke it.
79
+
80
+ ## Output
81
+
82
+ The six sections, then one line naming where the decision goes once it is made: `wdi-decision` intent
83
+ `open` when it is worth remembering, the owning document directly when it is not, or `wdi-question`
84
+ when it turns out it cannot be decided yet.
@@ -64,6 +64,7 @@ mis-route in this flow, because every other gate is the same for every component
64
64
  | 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 |
65
65
  | 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 |
66
66
  | A planning assumption turned out void | `wdi-decision` intent `open` — it proposes, and changes nothing |
67
+ | 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` |
67
68
  | An accepted `DEC-` has not reached its documents | `wdi-decision` intent `apply` |
68
69
  | A bug, a failing test, unexpected behaviour | `wdi-systematic-debugging`, before any fix is proposed |
69
70
  | Numbers are wanted before the work is committed | `wdi-report` intent `estimate` |
@@ -112,7 +112,7 @@ derived from the other: one component MAY be thin on purpose and reviewed the ha
112
112
  `.constitution/method/document/delivery-flow-guide.md` owns both;
113
113
  `.constitution/method/why/rationale.md` says why they are separate.
114
114
 
115
- ## The five gates and the sixteen skills
115
+ ## The five gates and the seventeen skills
116
116
 
117
117
  | Gate | Decides | Skill |
118
118
  |---|---|---|
@@ -125,7 +125,7 @@ derived from the other: one component MAY be thin on purpose and reviewed the ha
125
125
  Before G1 and at the tail of G2: `wdi-init`, five intents — `setup` · `component` · `mode` · `risk` ·
126
126
  `structure`.
127
127
 
128
- Any time: `wdi-decision` · `wdi-question` · `wdi-log` · `wdi-help` · `wdi-reconcile` · `wdi-review` ·
128
+ Any time: `wdi-decision` · `wdi-question` · `wdi-log` · `wdi-help` · `wdi-explain-to-me` · `wdi-reconcile` · `wdi-review` ·
129
129
  `wdi-report` · `wdi-systematic-debugging`.
130
130
 
131
131
  **No BMad skill is invoked directly.** Each has a wrapper, and the wrapper is what checks position,
@@ -166,6 +166,7 @@ verifies the result, and lands the memlog.
166
166
  | Looking for a non-technical fact — a domain, an account, a legal entity, a locked date | `.control/project-non-technical-log.md` |
167
167
  | Naming anything — a code identifier, a file, a database column | `.constitution/method/language-guide.md` |
168
168
  | Asking "which gate now, what next" | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-help` |
169
+ | Having to decide something, and wanting the reading done first | skill `wdi-explain-to-me` — it briefs, and changes nothing |
169
170
  | Setting or changing `mode` or `risk_accepted` | `.constitution/method/document/delivery-flow-guide.md` · skill `wdi-init` |
170
171
  | Invoking a BMad skill | `.constitution/method/document/bmad-guide.md` · `.constitution/method/document/bmad-skill-register.md` |
171
172
  | Writing or reviewing a product brief | `.constitution/method/document/brief-guide.md` |
@@ -29,7 +29,7 @@ Never a rule. When it disagrees with a guide, the guide wins and the disagreemen
29
29
 
30
30
  | File | Opened when |
31
31
  |---|---|
32
- | [`why/README.md`](why/README.md) | You want the whole shape in five minutes — five gates, two settings, sixteen skills, WDI ↔ BMad |
32
+ | [`why/README.md`](why/README.md) | You want the whole shape in five minutes — five gates, two settings, seventeen skills, WDI ↔ BMad |
33
33
  | [`why/artifact-map.md`](why/artifact-map.md) | "Where does this file go", or "does this document exist at my `mode`" |
34
34
  | [`why/mode-risk-map.md`](why/mode-risk-map.md) | A `mode` and a `risk_accepted` are set and you want the two side by side — all twelve cells |
35
35
  | [`why/rationale.md`](why/rationale.md) | Before changing a rule, to know what you would break |
@@ -28,7 +28,7 @@ them only an *example* does — not a rule.
28
28
  | `templates/design-system.md` | The pointer to wherever this project keeps its tokens | Re-point at that project's token file |
29
29
  | `templates/oq.md` | One example of a bad question title | Cosmetic |
30
30
 
31
- Everything else — the five gates, the two fields, the sixteen skills, the templates, `validate.py`,
31
+ Everything else — the five gates, the two fields, the seventeen skills, the templates, `validate.py`,
32
32
  `inventory.py`, `../method-glossary.md`, and the three files beside this one — carries without edit.
33
33
 
34
34
  One half-exception, and it is by design: `inventory.py` is the generic engine and carries whole, but
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wdi-method",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "WDI Method — software delivery method that wraps BMad",
5
5
  "type": "module",
6
6
  "bin": {