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.
- package/CHANGELOG.md +129 -0
- package/NOTICE +7 -2
- package/README.md +16 -11
- package/bin/wdi-method.js +396 -87
- package/kit/.constitution/method/document/architecture-guide.md +217 -209
- package/kit/.constitution/method/document/bmad-skill-register.md +107 -104
- package/kit/.constitution/method/document/corpus-guide.md +522 -517
- package/kit/.constitution/method/document/decision-guide.md +236 -216
- package/kit/.constitution/method/document/delivery-flow-guide.md +20 -0
- package/kit/.constitution/method/document/prd-guide.md +245 -245
- package/kit/.constitution/method/document/templates/design-system.md +96 -66
- package/kit/.constitution/method/document/templates/experience.md +62 -0
- package/kit/.constitution/method/document/templates/structure-codebase.md +131 -129
- package/kit/.constitution/method/document/templates/ux.md +78 -76
- package/kit/.constitution/method/document/ux-guide.md +161 -115
- package/kit/.constitution/method/method-glossary.md +3 -0
- package/kit/.constitution/method/scripts/validate.py +3375 -3200
- package/kit/.constitution/method/structure-guide.md +204 -202
- package/kit/.constitution/method/why/README.md +1 -1
- package/kit/.constitution/method/why/artifact-map.md +158 -157
- package/kit/.constitution/method/why/portability.md +19 -2
- package/kit/skills/wdi-autopilot/SKILL.md +32 -19
- package/kit/skills/wdi-blueprint/SKILL.md +271 -264
- package/kit/skills/wdi-build/SKILL.md +28 -19
- package/kit/skills/wdi-component/SKILL.md +179 -174
- package/kit/skills/wdi-daily-autopilot/SKILL.md +24 -13
- package/kit/skills/wdi-daily-what-to-build/SKILL.md +9 -6
- package/kit/skills/wdi-daily-what-to-test/SKILL.md +2 -0
- package/kit/skills/wdi-decision/SKILL.md +206 -203
- package/kit/skills/wdi-explain-to-me/SKILL.md +2 -0
- package/kit/skills/wdi-help/SKILL.md +130 -125
- package/kit/skills/wdi-init/SKILL.md +10 -5
- package/kit/skills/wdi-problem/SKILL.md +114 -108
- package/kit/skills/wdi-product/SKILL.md +167 -162
- package/kit/skills/wdi-prune-or-archive/SKILL.md +2 -0
- package/kit/skills/wdi-reconcile/SKILL.md +170 -169
- package/kit/skills/wdi-upgrade/SKILL.md +234 -215
- package/kit/skills/wdi-ux/SKILL.md +187 -169
- package/kit-overlay/AGENTS.md +15 -2
- package/kit-overlay/portability.md +19 -2
- package/lib/platforms.mjs +420 -248
- package/package.json +1 -1
- package/scaffold/.control/registry/index.yaml +2 -1
|
@@ -1,169 +1,187 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wdi-ux
|
|
3
|
-
description: Use when UX is produced or landed — dispatching bmad-ux for a PRD scope, then landing DESIGN.md, EXPERIENCE.md, the design system, and the screen registry into the layers they belong to. Optional, and it rides on G2. Never writes UX content itself.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# WDI UX
|
|
7
|
-
|
|
8
|
-
`bmad-ux` writes the UX. This skill decides whether it should run, hands it the scope, checks what
|
|
9
|
-
came back, and — because `bmad-ux` is **class B** — lands its output into the two layers it splits
|
|
10
|
-
across. No other skill MAY land these files.
|
|
11
|
-
|
|
12
|
-
**A run needs a PRD and nothing else.** It MUST NOT wait for Product Components, and a skill that made
|
|
13
|
-
it wait would deadlock the whole flow: G2 reads `EXPERIENCE.md` — `ux-guide.md` § Passing G2 — and
|
|
14
|
-
`wdi-init` intent `component` requires **G2 passed**. UX before components is not a preference; it is the
|
|
15
|
-
only order that closes.
|
|
16
|
-
|
|
17
|
-
PRD → UX runs → **G2** → components born → G3
|
|
18
|
-
|
|
19
|
-
Two acts: **run** the UX, and **land** it. A run is complete the moment the three documents are written.
|
|
20
|
-
Landing is split by what each half's path actually needs, and only one half waits:
|
|
21
|
-
|
|
22
|
-
| Lands | Needs | So it lands |
|
|
23
|
-
|---|---|---|
|
|
24
|
-
| `design-system.md` → `.how/_platform/` | nothing but the run being final — it crosses components by definition | **immediately**, at G2 |
|
|
25
|
-
| `EXPERIENCE.md` → `.what
|
|
26
|
-
| `
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
|
49
|
-
|
|
50
|
-
| `
|
|
51
|
-
| `.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
`
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
##
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
##
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
1
|
+
---
|
|
2
|
+
name: wdi-ux
|
|
3
|
+
description: Use when UX is produced or landed — dispatching bmad-ux for a PRD scope, then landing DESIGN.md, EXPERIENCE.md, the product-level experience and design system, and the screen registry into the layers they belong to. Optional, and it rides on G2. Never writes UX content itself.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# WDI UX
|
|
7
|
+
|
|
8
|
+
`bmad-ux` writes the UX. This skill decides whether it should run, hands it the scope, checks what
|
|
9
|
+
came back, and — because `bmad-ux` is **class B** — lands its output into the two layers it splits
|
|
10
|
+
across. No other skill MAY land these files.
|
|
11
|
+
|
|
12
|
+
**A run needs a PRD and nothing else.** It MUST NOT wait for Product Components, and a skill that made
|
|
13
|
+
it wait would deadlock the whole flow: G2 reads `EXPERIENCE.md` — `ux-guide.md` § Passing G2 — and
|
|
14
|
+
`wdi-init` intent `component` requires **G2 passed**. UX before components is not a preference; it is the
|
|
15
|
+
only order that closes.
|
|
16
|
+
|
|
17
|
+
PRD → UX runs → **G2** → components born → G3
|
|
18
|
+
|
|
19
|
+
Two acts: **run** the UX, and **land** it. A run is complete the moment the three documents are written.
|
|
20
|
+
Landing is split by what each half's path actually needs, and only one half waits:
|
|
21
|
+
|
|
22
|
+
| Lands | Needs | So it lands |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `design-system.md` → `.how/_platform/` | nothing but the run being final — it crosses components by definition | **immediately**, at G2 |
|
|
25
|
+
| what holds for every component in `EXPERIENCE.md` → `.what/experience.md` | the same — no `<pc>` in its path | **immediately**, at G2 |
|
|
26
|
+
| `EXPERIENCE.md` → `.what/<pc>/04-usecases/` | the `<pc>` in its path to exist | when components are born |
|
|
27
|
+
| `DESIGN.md` → `.how/<pc>/01-ux/` + screen `LC` rows | the same `<pc>`. **Not a container** — see below | when components are born |
|
|
28
|
+
|
|
29
|
+
**The wait is a path, not a rule**, and it is the only one left: those two paths literally contain
|
|
30
|
+
`<pc>`, so there is nowhere to write them until a `<pc>` exists. Nothing else defers.
|
|
31
|
+
|
|
32
|
+
**And the wait is not the owner's to remember.** `wdi-init` intent `component` lands whatever is waiting
|
|
33
|
+
in `_bmad-output/ux/` in the same act as birthing the components — one pass, no tracked to-do. Report
|
|
34
|
+
what is waiting and name that act; do not ask the owner to come back.
|
|
35
|
+
|
|
36
|
+
**Product level first.** `bmad-ux`'s `EXPERIENCE.md` opens with sections that hold for the whole
|
|
37
|
+
product — Foundation, Information architecture, Voice and Tone, State patterns, Interaction primitives,
|
|
38
|
+
the flow map. They are NOT one component's, and they are not all promises: `ux-guide.md` § *Product
|
|
39
|
+
level* maps each onto `.what/experience.md` or `design-system.md`. A section left in `_bmad-output/`
|
|
40
|
+
because no row seemed to fit is the defect that section exists to stop.
|
|
41
|
+
|
|
42
|
+
You MUST NOT write or edit `DESIGN.md` or `EXPERIENCE.md` yourself. If a check fails, name what is
|
|
43
|
+
missing and re-dispatch — a hand-patched UX document makes the memlog lie about how it got that way.
|
|
44
|
+
The content rules are in `ux-guide.md` and MUST NOT be restated here.
|
|
45
|
+
|
|
46
|
+
## Inputs
|
|
47
|
+
|
|
48
|
+
| Source | What it answers |
|
|
49
|
+
|---|---|
|
|
50
|
+
| `.what/_prd/<initiative>/prd.md` | The promises the UX has to make usable — `FR`, `NFR`, `UJ-N` |
|
|
51
|
+
| `.what/_product-brief/brief.md` | The primary user, and the boundary the UX MUST respect |
|
|
52
|
+
| `.constitution/method/document/ux-guide.md` | The rules the result is checked against |
|
|
53
|
+
| `.constitution/method/document/templates/ux.md` | The required shape of each half |
|
|
54
|
+
| `.control/registry/components.yaml` | Whether the Product Components and containers a landing needs exist |
|
|
55
|
+
| `.constitution/method/document/templates/design-system.md` | The shape of the product-level design: tokens, base elements, build patterns |
|
|
56
|
+
| `.constitution/method/document/templates/experience.md` | The shape of the product-level experience |
|
|
57
|
+
| `.control/product-glossary.md` | Terms already fixed, so the screens do not invent competing ones |
|
|
58
|
+
| `_bmad-output/ux/` | An earlier run — the input to *land*, and to intent *update* |
|
|
59
|
+
| `.how/_platform/design-system.md` | Tokens and base components already agreed |
|
|
60
|
+
|
|
61
|
+
## Step 1 — Position
|
|
62
|
+
|
|
63
|
+
- UX is **optional**. It earns a run when the interface is a substantial part of what the PRD
|
|
64
|
+
promises; it MUST NOT be run to fill a slot. Say so and stop when a run buys nothing.
|
|
65
|
+
- The order is `wdi-product` → `wdi-ux`. A UX run with no PRD in scope is designing a promise nobody
|
|
66
|
+
made; route to `wdi-product` first.
|
|
67
|
+
- If the ask is a new capability rather than how an agreed one feels, this is the wrong skill — route
|
|
68
|
+
to `wdi-product` intent `update`.
|
|
69
|
+
- If the ask is how the system behaves internally, route to `wdi-blueprint` for the catalogue, or
|
|
70
|
+
`wdi-component` for a full flow.
|
|
71
|
+
|
|
72
|
+
## Step 2 — Mode
|
|
73
|
+
|
|
74
|
+
Read `_bmad-output/ux/` and `components.yaml`, then state the mode in one line before acting.
|
|
75
|
+
|
|
76
|
+
| State | Mode |
|
|
77
|
+
|---|---|
|
|
78
|
+
| No run for this scope | **run** — Step 3, then Step 5 for whatever is landable |
|
|
79
|
+
| A run exists, finalised, nothing landed | **land** — Step 5 only |
|
|
80
|
+
| A run exists and the PRD has changed under it | **run** intent *update*, then Step 5 |
|
|
81
|
+
| A run exists, landed, and a `<pc>` has since been born | **land** — the deferred half, Step 5 |
|
|
82
|
+
|
|
83
|
+
## Step 3 — Dispatch
|
|
84
|
+
|
|
85
|
+
Invoke `bmad-ux` with the detected intent. Do not restate the rules to it — they arrive through
|
|
86
|
+
`doc_standards` and `persistent_facts` in `_bmad/custom/bmad-ux.toml`, and a second copy here would
|
|
87
|
+
drift.
|
|
88
|
+
|
|
89
|
+
State the scope as **one PRD initiative**, and name the input files explicitly; the skill globs its
|
|
90
|
+
own default locations, which this project redirects. A scope spanning several initiatives MUST be
|
|
91
|
+
split into one run each — the run folder is a singleton per scope, and two initiatives in one folder
|
|
92
|
+
cannot be landed separately later.
|
|
93
|
+
|
|
94
|
+
## Step 4 — Verify
|
|
95
|
+
|
|
96
|
+
Check what came back against the guide. Report every failure; fix none of them by hand.
|
|
97
|
+
|
|
98
|
+
| # | Check | Fails when |
|
|
99
|
+
|---|---|---|
|
|
100
|
+
| 1 | Landing zone | Anything was written into `.what/` or `.how/` by the run itself |
|
|
101
|
+
| 2 | Two documents, split correctly | A layout, component, or token sits in `EXPERIENCE.md`; a promise sits first in `DESIGN.md` |
|
|
102
|
+
| 3 | Journeys reference `UJ-N` | The PRD's journeys were restated under new names |
|
|
103
|
+
| 4 | Every screen has an empty and an error state | Only the populated state was designed |
|
|
104
|
+
| 5 | Every user-facing noun is in the glossary | A new noun appeared — route it through `wdi-blueprint`, which owns the glossary, in this pass |
|
|
105
|
+
| 6 | No new capability | The run designed something no `FR` promises — route to `wdi-product`, and MUST NOT land it |
|
|
106
|
+
| 7 | Every `[ASSUMPTION]` filed | An assumption sits in the text with nothing in `.control/questions/` behind it |
|
|
107
|
+
| 8 | Memlog at `.control/memlog/ux.md` | A `.memlog.md` appeared inside the corpus — `--workspace` was used |
|
|
108
|
+
| 9 | `bmad-review` structure + prose ran at finalize | `doc_standards` did not fire |
|
|
109
|
+
|
|
110
|
+
Check 8 is the one that MUST be fixed immediately rather than reported. A `.memlog.md` inside `.what/`
|
|
111
|
+
or `.how/` is corpus pollution, and `memlog-home` rejects it.
|
|
112
|
+
|
|
113
|
+
## Step 5 — Land, at two speeds
|
|
114
|
+
|
|
115
|
+
Nothing is landed until the run is finalised. The homes are in `corpus-guide.md`; what is decided
|
|
116
|
+
here is **when each one becomes possible**.
|
|
117
|
+
|
|
118
|
+
| Output | Lands into | Possible once |
|
|
119
|
+
|---|---|---|
|
|
120
|
+
| Tokens, base components, build patterns that hold everywhere | `.how/_platform/design-system.md` | The run is final — it crosses components by definition |
|
|
121
|
+
| Experience that holds for every component — `ux-guide.md` § *Product level* | `.what/experience.md` | The run is final — no `<pc>` in its path |
|
|
122
|
+
| `EXPERIENCE.md` | `.what/<pc>/04-usecases/` | The `<pc>` is registered in `components.yaml` |
|
|
123
|
+
| `DESIGN.md` | `.how/<pc>/01-ux/` | The `<pc>` is registered. **The path has no container in it, so none is needed** |
|
|
124
|
+
| Each screen | an `LC` of type `ui-screen` in `components.yaml` | The `<pc>` is registered. `container:` is left **empty** and filled at G3 |
|
|
125
|
+
|
|
126
|
+
- **Nothing is deferred any more.** A run lands whole, in the pass that produced it. `DESIGN.md`
|
|
127
|
+
landing was coupled to the container because its screen `LC` rows need one — but the *file's* path,
|
|
128
|
+
`.how/<pc>/01-ux/`, has no container in it, and the two were never the same requirement.
|
|
129
|
+
- **A screen `LC` is registered now with `container:` empty**, and MUST NOT be given a guessed one. `container-built`
|
|
130
|
+
is silent on an empty container until the `LC`'s own Product Component lists containers; from that
|
|
131
|
+
moment it is owed. `wdi-blueprint` intent `platform` fills every one of them in the same act as
|
|
132
|
+
registering the containers, so the debt closes at G3 without anyone tracking it.
|
|
133
|
+
- You MUST NOT create a Product Component or a container to make a landing possible. A PC comes from
|
|
134
|
+
`wdi-init` intent `component` and a container from `wdi-blueprint` intent `platform`.
|
|
135
|
+
- One run MAY land across several Product Components. Split by which `<pc>` the content serves; a
|
|
136
|
+
screen whose `<pc>` is ambiguous MUST be raised through `wdi-question`, not assigned by guess.
|
|
137
|
+
- A flow zoom-in lands with the component that owns **the screens in it**, never with the owner of a
|
|
138
|
+
shared composite drawn inside it. One whose screens belong to two components stays in the flow map
|
|
139
|
+
of `.what/experience.md`.
|
|
140
|
+
- Every landed document names the run file(s) it came from in its frontmatter `landed_from` — that is
|
|
141
|
+
what `ux-landed` reads to know the run is discharged. The body MUST NOT carry a *landed from* line, and
|
|
142
|
+
nothing else in `.what/` or `.how/` MAY cite the run. Which sections went where goes to
|
|
143
|
+
`.control/memlog/ux.md` in Step 7.
|
|
144
|
+
- Registering the screens is part of landing `DESIGN.md`, in the same act. A screen in `01-ux/`
|
|
145
|
+
without its `components.yaml` entry has been half-landed, and `lc-registered` catches it at a worse moment.
|
|
146
|
+
- `.how/_platform/` otherwise belongs to `wdi-blueprint`. `design-system.md` is the one file in it you
|
|
147
|
+
own, and it has its own template; you MUST NOT touch any other. In `.what/`, `experience.md` is yours
|
|
148
|
+
and `business-rules.md` is `wdi-blueprint`'s: a cross-component rule the system enforces is a
|
|
149
|
+
business rule, not experience.
|
|
150
|
+
- The run folder MUST NOT be deleted after landing. Intent *update* reads it again.
|
|
151
|
+
|
|
152
|
+
## Step 6 — Impact
|
|
153
|
+
|
|
154
|
+
A landed UX changes what other documents can still claim. Check, and **report** — never edit.
|
|
155
|
+
|
|
156
|
+
| Found | Where it goes |
|
|
157
|
+
|---|---|
|
|
158
|
+
| A flow the PRD does not promise | `wdi-product` intent `update`, before it is designed |
|
|
159
|
+
| A behaviour the SRS never stated | `wdi-blueprint` for a catalogue line, `wdi-component` for a flow |
|
|
160
|
+
| A pattern that forces a technology choice | `wdi-decision` — a `DEC-`, not a note in `DESIGN.md` |
|
|
161
|
+
| A screen contradicting an `applied` `DEC-` | `wdi-decision` — a new `DEC-`, never an edit to one already applied |
|
|
162
|
+
|
|
163
|
+
`wdi-reconcile` is the read-only sweep across all layers. Run it rather than reimplementing it.
|
|
164
|
+
|
|
165
|
+
## Step 7 — Memlog
|
|
166
|
+
|
|
167
|
+
Everything in a UX pass — the run and the landing — logs to `.control/memlog/ux.md`, through
|
|
168
|
+
`memlog.py --path`. `--workspace` MUST NOT be used.
|
|
169
|
+
|
|
170
|
+
## Rules
|
|
171
|
+
|
|
172
|
+
- Content MUST NOT be edited while it is being landed. Splitting one document across the homes its
|
|
173
|
+
row names is not editing; changing a sentence to fit its new home is, and it goes back through
|
|
174
|
+
`bmad-ux`.
|
|
175
|
+
- You MUST NOT open G2 on UX that has not been through check 9. Gate time is for deciding.
|
|
176
|
+
- You MUST NOT raise `status:` as part of landing. Status is a stage; the `reviewed:` block is an
|
|
177
|
+
event, and `wdi-review` writes it.
|
|
178
|
+
- You MUST NOT land anything into a spec that is already closed. The spec is reopened through
|
|
179
|
+
`wdi-build`, or the gap is filed through `wdi-question`.
|
|
180
|
+
- When the UX concludes the PRD promised something that cannot be made usable, say so and stop. Route
|
|
181
|
+
to `wdi-product`; do not quietly narrow the promise in `EXPERIENCE.md`.
|
|
182
|
+
|
|
183
|
+
## Output
|
|
184
|
+
|
|
185
|
+
A short report: mode taken, scope run, the result of all nine checks naming the failures, what landed
|
|
186
|
+
and where, what was deferred and what has to exist before it can land, screens registered, impact
|
|
187
|
+
found and where it was routed, and open questions raised.
|
package/kit-overlay/AGENTS.md
CHANGED
|
@@ -48,7 +48,8 @@ free text and both default to English:
|
|
|
48
48
|
Read those two before writing a document. A technical term the industry writes in English MUST be left in
|
|
49
49
|
English whatever the setting says — an equivalent MUST NOT be invented for it.
|
|
50
50
|
|
|
51
|
-
**These files are always English, whatever the settings say:** `AGENTS.md`,
|
|
51
|
+
**These files are always English, whatever the settings say:** `AGENTS.md`, every rule file that mirrors
|
|
52
|
+
its method block (`CLAUDE.md`, `GEMINI.md`, and the others a selected host reads), and everything
|
|
52
53
|
under `.constitution/`. They are agent instructions, and they travel to every repo through the
|
|
53
54
|
`wdi-method` package. The one exception is `.constitution/project/`, which is this product's own room.
|
|
54
55
|
|
|
@@ -160,6 +161,16 @@ The daily tier, started only when the owner types it: `wdi-daily-what-to-build`
|
|
|
160
161
|
**No BMad skill is invoked directly.** Each has a wrapper, and the wrapper is what checks position,
|
|
161
162
|
verifies the result, and lands the memlog.
|
|
162
163
|
|
|
164
|
+
**These hold on every host, whatever the host itself allows.** Many hosts cannot hold a skill to
|
|
165
|
+
manual-only, so on those this block is the lock:
|
|
166
|
+
|
|
167
|
+
- `wdi-daily-what-to-build` · `wdi-daily-autopilot` · `wdi-daily-what-to-test` · `wdi-prune-or-archive` ·
|
|
168
|
+
`wdi-explain-to-me` MUST run only when the owner typed them in the turn that is running.
|
|
169
|
+
- The thirteen BMad skills retired at G5 (`.constitution/method/document/bmad-skill-register.md`) MUST NOT
|
|
170
|
+
be invoked by a model at all; a person typing one is the only route.
|
|
171
|
+
- A skill is invoked through this host's own skill mechanism. On a host with no skill tool that is reading
|
|
172
|
+
the skill's whole `SKILL.md` from this repo — never a paraphrase from memory.
|
|
173
|
+
|
|
163
174
|
## What MUST NOT be done
|
|
164
175
|
|
|
165
176
|
- A method file MUST NOT be invented or patched here to improve the method. If a rule is wrong, it is
|
|
@@ -171,7 +182,9 @@ verifies the result, and lands the memlog.
|
|
|
171
182
|
- The two structure maps in `.control/` MUST NOT be edited by hand — `wdi-init` intent `structure`
|
|
172
183
|
re-derives them.
|
|
173
184
|
- A `DEC-` with status `applied` MUST NOT be edited, except to record its supersession — status moves
|
|
174
|
-
to `superseded` and names its replacement
|
|
185
|
+
to `superseded` and names its replacement — or to append to `touches` a file its applying commit
|
|
186
|
+
really changed within what the Decision says, marked on its line as a completion. A change of mind
|
|
187
|
+
produces a new `DEC-`.
|
|
175
188
|
- A file in `.constitution/method/why/` MUST NOT be cited as the reason to reject a change. It is
|
|
176
189
|
`status: Reference` — it explains, it does not bind, and where it disagrees with a guide the guide
|
|
177
190
|
wins and the disagreement is a defect. This covers `why/` ONLY: a guide in
|
|
@@ -56,9 +56,26 @@ others leaves a method that cannot run:
|
|
|
56
56
|
| Set | Note |
|
|
57
57
|
|---|---|
|
|
58
58
|
| `.constitution/` | Minus the product articles; `promote` / `install` handle the seam |
|
|
59
|
-
|
|
|
59
|
+
| `.<host>/skills/wdi-*/` for every host selected at install | Every wrapper. A wrapper without its guide, or a guide without its wrapper, is half a method |
|
|
60
60
|
| `_bmad/custom/*.toml` | The one most likely to be forgotten. `*.user.toml` stays behind |
|
|
61
|
-
| `AGENTS.md
|
|
61
|
+
| `AGENTS.md`, and each rule file a selected host reads beside it | The routing table is the method; from `## Code` down is the product. `install` / `update` MUST NOT overwrite an existing `AGENTS.md` |
|
|
62
|
+
|
|
63
|
+
## One method, many hosts
|
|
64
|
+
|
|
65
|
+
The method runs on every host the installer offers, and each host differs in five ways that matter.
|
|
66
|
+
`lib/platforms.mjs` in the package is the one record of them; `install` writes the selected hosts into
|
|
67
|
+
`.control/wdi-method.yaml` under `hosts:`, and the skills and `validate.py` read them from there.
|
|
68
|
+
|
|
69
|
+
| Difference | What the method does about it |
|
|
70
|
+
|---|---|
|
|
71
|
+
| **Where skills are read** (`reads:`) | The `wdi-*` skills go to each host's own folder. The six engines MUST be in a folder every selected host reads — Kiro reads only `.kiro/skills` — and `npx wdi-method engines` names the `npx skills add --agent` that puts them there |
|
|
72
|
+
| **How a skill is loaded** | Through the host's own mechanism: a skill tool where it has one, otherwise reading the whole `SKILL.md`. Both are invocation; a paraphrase is neither |
|
|
73
|
+
| **How a person types one** (`invoke:`) | `/name`, `$name`, `/skill:name`, `@name`, or asked for by name. `wdi-help` names the next skill in this host's form |
|
|
74
|
+
| **Manual-only** (`manual_only:`) | Three layers. The host's own lock where it has one (`disable-model-invocation`; `.claude/settings.json` deny rules; `opencode.json` `ask`). A guard line at the top of each manual-only skill. The `AGENTS.md` block, mirrored into every rule file a host reads. On a host with no lock the last two are all there is, and that is the host's limit, not a gap in the install |
|
|
75
|
+
| **A scheduler of its own** (`loop:`) | `wdi-daily-autopilot` and `wdi-autopilot` start it where it exists. Where it does not, they run one iteration per invocation — a shell loop or an OS scheduler is not a substitute |
|
|
76
|
+
|
|
77
|
+
A host the method dropped is named by `update` and left alone: its folders may hold the product's own
|
|
78
|
+
files too, so removing them is the owner's call.
|
|
62
79
|
|
|
63
80
|
## Two directions
|
|
64
81
|
|