wdi-method 0.5.13 → 0.6.0
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 +436 -271
- package/bin/wdi-method.js +198 -5
- package/kit/.constitution/method/README.md +76 -75
- package/kit/.constitution/method/constitution.md +2 -1
- package/kit/.constitution/method/document/architecture-guide.md +10 -10
- package/kit/.constitution/method/document/bmad-guide.md +50 -16
- package/kit/.constitution/method/document/bmad-skill-register.md +74 -71
- package/kit/.constitution/method/document/brief-guide.md +42 -11
- package/kit/.constitution/method/document/corpus-guide.md +146 -11
- package/kit/.constitution/method/document/decision-guide.md +199 -134
- package/kit/.constitution/method/document/delivery-flow-guide.md +154 -83
- package/kit/.constitution/method/document/prd-guide.md +63 -20
- package/kit/.constitution/method/document/sdd-guide.md +5 -4
- package/kit/.constitution/method/document/srs-guide.md +150 -147
- package/kit/.constitution/method/document/templates/addendum.md +70 -71
- package/kit/.constitution/method/document/templates/architecture-spine.md +6 -4
- package/kit/.constitution/method/document/templates/brief.md +132 -110
- package/kit/.constitution/method/document/templates/c4.md +11 -11
- package/kit/.constitution/method/document/templates/contract.md +51 -52
- package/kit/.constitution/method/document/templates/cross-cutting.md +1 -2
- package/kit/.constitution/method/document/templates/design-system.md +0 -1
- package/kit/.constitution/method/document/templates/integration.md +68 -69
- package/kit/.constitution/method/document/templates/inventory.md +0 -1
- package/kit/.constitution/method/document/templates/lc.md +49 -47
- package/kit/.constitution/method/document/templates/lifecycle.md +51 -52
- package/kit/.constitution/method/document/templates/model.md +68 -55
- package/kit/.constitution/method/document/templates/oq.md +45 -45
- package/kit/.constitution/method/document/templates/prd.md +244 -226
- package/kit/.constitution/method/document/templates/questions.md +100 -76
- package/kit/.constitution/method/document/templates/rules.md +46 -47
- package/kit/.constitution/method/document/templates/sdd.md +26 -11
- package/kit/.constitution/method/document/templates/srs.md +46 -25
- package/kit/.constitution/method/document/templates/uc.md +1 -1
- package/kit/.constitution/method/document/templates/ux.md +76 -77
- package/kit/.constitution/method/document/ux-guide.md +115 -99
- package/kit/.constitution/method/language-guide.md +1 -1
- package/kit/.constitution/method/method-glossary.md +29 -16
- package/kit/.constitution/method/scripts/timeline.py +663 -665
- package/kit/.constitution/method/scripts/validate.py +1143 -362
- package/kit/.constitution/method/structure-guide.md +3 -3
- package/kit/.constitution/method/why/README.md +184 -169
- package/kit/.constitution/method/why/artifact-map.md +15 -13
- package/kit/.constitution/method/why/mode-risk-map.md +140 -0
- package/kit/.constitution/method/why/portability.md +1 -1
- package/kit/.constitution/method/why/rationale.md +12 -5
- package/kit/.constitution/project/README.md +2 -2
- package/kit/.constitution/project/codebase-brownfield-guide.md +18 -18
- package/kit/.constitution/project/codebase-conventions-guide.md +18 -18
- package/kit/.constitution/project/codebase-stack-guide.md +18 -18
- package/kit/assets/bmad-custom/bmad-architecture.toml +1 -1
- package/kit/assets/bmad-custom/bmad-correct-course.toml +5 -5
- package/kit/assets/bmad-custom/bmad-prd.toml +9 -3
- package/kit/assets/bmad-custom/bmad-product-brief.toml +6 -2
- package/kit/skills/wdi-blueprint/SKILL.md +71 -10
- package/kit/skills/wdi-build/SKILL.md +233 -122
- package/kit/skills/wdi-component/SKILL.md +8 -6
- package/kit/skills/wdi-decision/SKILL.md +187 -183
- package/kit/skills/wdi-help/SKILL.md +8 -7
- package/kit/skills/wdi-init/SKILL.md +20 -6
- package/kit/skills/wdi-problem/SKILL.md +31 -13
- package/kit/skills/wdi-product/SKILL.md +30 -17
- package/kit/skills/wdi-question/SKILL.md +170 -88
- package/kit/skills/wdi-reconcile/SKILL.md +33 -10
- package/kit/skills/wdi-report/SKILL.md +77 -25
- package/kit/skills/wdi-review/SKILL.md +201 -118
- package/kit/skills/wdi-systematic-debugging/SKILL.md +7 -7
- package/kit/skills/wdi-upgrade/SKILL.md +179 -0
- package/kit/skills/wdi-ux/SKILL.md +35 -11
- package/kit-overlay/AGENTS.md +2 -2
- package/kit-overlay/README.md +76 -75
- package/kit-overlay/constitution.md +2 -1
- package/kit-overlay/portability.md +1 -1
- package/package.json +43 -43
- package/scaffold/.control/product-glossary.md +1 -1
- package/scaffold/.control/registry/goals.yaml +25 -0
- package/scaffold/.control/registry/index.yaml +5 -5
- package/scaffold/.control/registry/specs.yaml +5 -0
- package/scaffold/.control/structure-codebase.md +19 -19
- package/scaffold/.control/structure-document.md +25 -25
- package/kit/.constitution/method/document/templates/rtr.md +0 -61
- package/kit/assets/bmad-custom/bmad-build-auto.toml +0 -10
- package/kit/assets/bmad-custom/bmad-build.toml +0 -52
- package/kit/assets/bmad-custom/bmad-code-review.toml +0 -13
- package/kit/assets/bmad-custom/bmad-retrospective.toml +0 -9
- package/kit/assets/bmad-custom/bmad-spec.toml +0 -16
- package/scaffold/.control/registry/requirements.yaml +0 -15
- package/scaffold/.control/registry/waves.yaml +0 -5
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: structure
|
|
3
|
-
scope: codebase
|
|
4
|
-
verified: null
|
|
5
|
-
commit: null
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Codebase Structure
|
|
9
|
-
|
|
10
|
-
Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules live in
|
|
11
|
-
`.constitution/structure-guide.md`.
|
|
12
|
-
|
|
13
|
-
## Verified
|
|
14
|
-
|
|
15
|
-
Not yet derived.
|
|
16
|
-
|
|
17
|
-
## Top level
|
|
18
|
-
|
|
19
|
-
Not yet derived. `wdi-init` intent `structure` fills this from the tree on disk.
|
|
1
|
+
---
|
|
2
|
+
type: structure
|
|
3
|
+
scope: codebase
|
|
4
|
+
verified: null
|
|
5
|
+
commit: null
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Codebase Structure
|
|
9
|
+
|
|
10
|
+
Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules live in
|
|
11
|
+
`.constitution/method/structure-guide.md`.
|
|
12
|
+
|
|
13
|
+
## Verified
|
|
14
|
+
|
|
15
|
+
Not yet derived.
|
|
16
|
+
|
|
17
|
+
## Top level
|
|
18
|
+
|
|
19
|
+
Not yet derived. `wdi-init` intent `structure` fills this from the tree on disk.
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: structure
|
|
3
|
-
scope: document
|
|
4
|
-
verified: null
|
|
5
|
-
commit: null
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Document Structure
|
|
9
|
-
|
|
10
|
-
Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules live in
|
|
11
|
-
`.constitution/structure-guide.md`.
|
|
12
|
-
|
|
13
|
-
## Verified
|
|
14
|
-
|
|
15
|
-
Not yet derived.
|
|
16
|
-
|
|
17
|
-
## Top level
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
.constitution/ # how we work — not yet mapped
|
|
21
|
-
.control/ # what currently holds — not yet mapped
|
|
22
|
-
.what/ # what was promised — empty
|
|
23
|
-
.how/ # how it is built — empty
|
|
24
|
-
_bmad-output/ # run workspace
|
|
25
|
-
```
|
|
1
|
+
---
|
|
2
|
+
type: structure
|
|
3
|
+
scope: document
|
|
4
|
+
verified: null
|
|
5
|
+
commit: null
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Document Structure
|
|
9
|
+
|
|
10
|
+
Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules live in
|
|
11
|
+
`.constitution/method/structure-guide.md`.
|
|
12
|
+
|
|
13
|
+
## Verified
|
|
14
|
+
|
|
15
|
+
Not yet derived.
|
|
16
|
+
|
|
17
|
+
## Top level
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
.constitution/ # how we work — not yet mapped
|
|
21
|
+
.control/ # what currently holds — not yet mapped
|
|
22
|
+
.what/ # what was promised — empty
|
|
23
|
+
.how/ # how it is built — empty
|
|
24
|
+
_bmad-output/ # run workspace
|
|
25
|
+
```
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
type: rtr
|
|
3
|
-
id: RTR-{wave}
|
|
4
|
-
wave: '{W<N>}'
|
|
5
|
-
size: L # the wave size that made this required
|
|
6
|
-
status: draft # draft · reviewed · locked · superseded
|
|
7
|
-
created: '{YYYY-MM-DD}'
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# RTR-{wave} — Retrospective, wave {W<N>}
|
|
11
|
-
|
|
12
|
-
<!-- TEMPLATE GUIDE — act on these comments, then delete them.
|
|
13
|
-
|
|
14
|
-
Home: .control/reports/RTR-<wave>.md, landed by wdi-build at wave close. Its old home
|
|
15
|
-
.control/supplements/ is gone.
|
|
16
|
-
|
|
17
|
-
REQUIRED on wave `L`. Advisory on `S` and `M`, and skipping it MUST be stated rather than left
|
|
18
|
-
silent — V19 is advisory for exactly that reason. It is tied to wave SIZE, never to `mode`: depth
|
|
19
|
-
of documents and volume of work are different things.
|
|
20
|
-
|
|
21
|
-
THE SPEC FOLDER IS EPHEMERAL AND THIS IS NOT. bmad-retrospective writes RETROSPECTIVE.md inside
|
|
22
|
-
the run folder; this is the archived form, and it is the only part that survives the wave.
|
|
23
|
-
|
|
24
|
-
WRITE WHAT WAS LEARNED, NOT WHAT HAPPENED. A wave-by-wave narrative is recoverable from git; what
|
|
25
|
-
is not recoverable is what somebody now knows and would otherwise forget. Every section below is
|
|
26
|
-
one question, and a section with nothing under it MUST be cut. -->
|
|
27
|
-
|
|
28
|
-
## What this wave shipped
|
|
29
|
-
|
|
30
|
-
<!-- One line. Which FR, and whether the RTM rows for them are green. Not a story list. -->
|
|
31
|
-
|
|
32
|
-
## What took longer than expected, and why
|
|
33
|
-
|
|
34
|
-
<!-- G5's question 5. One cause, named concretely. "Underestimated" is not a cause. -->
|
|
35
|
-
|
|
36
|
-
## What the corpus got wrong
|
|
37
|
-
|
|
38
|
-
<!-- The section this method exists to feed. Every defect whose root_cause was `requirement` or
|
|
39
|
-
`architecture` rather than code, by BUG- id — and what in .what/ or .how/ was wrong.
|
|
40
|
-
|
|
41
|
-
This ratio is a fact about the METHOD, not about the team, and it is the only place it is
|
|
42
|
-
recorded per wave. -->
|
|
43
|
-
|
|
44
|
-
| BUG- | Root cause | What was wrong upstream | Fixed where |
|
|
45
|
-
| --- | --- | --- | --- |
|
|
46
|
-
|
|
47
|
-
## What we would do differently
|
|
48
|
-
|
|
49
|
-
<!-- Only items with an owner and a next action. An observation nobody owns is not a finding; it is a
|
|
50
|
-
feeling, and it MUST be cut rather than carried forward into the next wave's reading. -->
|
|
51
|
-
|
|
52
|
-
| Change | Owner | Where it lands |
|
|
53
|
-
| --- | --- | --- |
|
|
54
|
-
|
|
55
|
-
<!-- `Where it lands` MUST name a file or a skill. A retrospective item that lands nowhere is why
|
|
56
|
-
retrospectives get a reputation for being theatre — and it is what makes the next one skippable. -->
|
|
57
|
-
|
|
58
|
-
## What is deliberately carried forward
|
|
59
|
-
|
|
60
|
-
<!-- Follow-ups accepted rather than fixed, each pointing at its OQ- or DEC-. Anything here that has
|
|
61
|
-
no id is being lost right now. -->
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
# One loop iteration with no human in it. Dispatched through {spec_folder} + {story_id}.
|
|
2
|
-
|
|
3
|
-
[workflow]
|
|
4
|
-
|
|
5
|
-
persistent_facts = [
|
|
6
|
-
"This repo runs in stories mode. sprint-status.yaml does not exist and MUST NOT be created.",
|
|
7
|
-
"Test-first discipline binds: a test MUST fail first, and MUST fail for the expected reason.",
|
|
8
|
-
"A worker MUST NOT change anything outside the story it was dispatched. A change it judges necessary beyond that MUST be stated in the final report, never made silently.",
|
|
9
|
-
"When a test or build fails and the cause is not yet known, wdi-systematic-debugging MUST run before any fix is proposed. A third failed fix attempt is the signal to stop and report, not to try a fourth.",
|
|
10
|
-
]
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# G5 — the only executor, dispatched by wdi-build. An executor MUST NOT assemble its own chain.
|
|
2
|
-
#
|
|
3
|
-
# Supplies the test-first discipline bmad-build lacks on its own: it audits tests AFTER
|
|
4
|
-
# implementation (Matrix Test Audit in step-03), but never requires a test to fail first.
|
|
5
|
-
#
|
|
6
|
-
# Merge rule: a string replaces, a list appends, a table merges per key.
|
|
7
|
-
# .claude/skills/bmad-build/customize.toml MUST NOT be edited — it is overwritten on every update.
|
|
8
|
-
|
|
9
|
-
[workflow]
|
|
10
|
-
|
|
11
|
-
# Replaces the default step-03 handoff. Everything the default carries stays (a subagent with no
|
|
12
|
-
# conversation context, the spec as the sole source of truth, loading the files listed in
|
|
13
|
-
# `context:`, a closing report); this override adds the test-first cycle on top.
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
# Deliberately carries METHOD only. Restating the goal, the file list, the acceptance criteria,
|
|
17
|
-
# and house style rules does NOT belong in the dispatch — all of it is already in the spec, and
|
|
18
|
-
# step-03 forbids duplicating it here.
|
|
19
|
-
|
|
20
|
-
implementation_handoff = """
|
|
21
|
-
Launch a subagent with no prior conversation context, with this prompt:
|
|
22
|
-
|
|
23
|
-
> Read {spec_file} fully and implement it — the spec is the sole source of truth. Load every file listed in its frontmatter `context:` before you start.
|
|
24
|
-
>
|
|
25
|
-
> Work test-first, one task at a time:
|
|
26
|
-
>
|
|
27
|
-
> 1. Write the smallest test that expresses the next unmet acceptance criterion.
|
|
28
|
-
> 2. Run it. Confirm it fails, and confirm it fails for the reason you expect — a test that errors on a typo or a missing import has proven nothing.
|
|
29
|
-
> 3. Write the minimum code that makes it pass. No extra scope, no "while I'm here" refactoring.
|
|
30
|
-
> 4. Run the test plus the surrounding suite. Both must be green before you start the next task.
|
|
31
|
-
>
|
|
32
|
-
> If a criterion genuinely cannot be expressed as a test — pure configuration, a docs change, a visual-only tweak — say so explicitly in your report and state how you verified it instead. Never invent a test that asserts nothing in order to satisfy the cycle, and never write the implementation first and the test afterwards to make it look followed.
|
|
33
|
-
>
|
|
34
|
-
> When done, report what you changed, how you verified it, and anything left incomplete or risky. Include the actual command output for the final test run — a claim of green without the output does not count as verification.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
persistent_facts = [
|
|
38
|
-
"This repo runs in stories mode. sprint-status.yaml does not exist and MUST NOT be created; story status lives in the story file's own frontmatter.",
|
|
39
|
-
"A Logical Component MUST be registered in components.yaml before the story touching it is worked.",
|
|
40
|
-
"When something breaks and the cause is not yet known, wdi-systematic-debugging MUST run before any fix is proposed.",
|
|
41
|
-
]
|
|
42
|
-
|
|
43
|
-
# Not overridden, and deliberately so:
|
|
44
|
-
#
|
|
45
|
-
# - review_layers — the three default layers (blind-hunter, edge-case-hunter,
|
|
46
|
-
# verification-gap) plus the two-CLI-family Review Panel that bmad-code-review runs afterward
|
|
47
|
-
# already cover this repo's review needs. A fourth layer would spend tokens without closing a
|
|
48
|
-
# gap.
|
|
49
|
-
#
|
|
50
|
-
# - on_complete — updating the registry once a story is done belongs to wdi-build and the skill
|
|
51
|
-
# that owns that layer, not to bmad-build. Putting it here would give one file two writers.
|
|
52
|
-
# The story-closing checklist lives in 05-gates.md.
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# Review Panel: two reviewers from two different CLI families, and neither may come from the
|
|
2
|
-
# family that ran the implementation.
|
|
3
|
-
#
|
|
4
|
-
# WARNING: the adversarial and edge-case lenses here are read from the bundled copy of
|
|
5
|
-
# review-prompts/, NOT from the bmad-review skill. An override on bmad-review will not be visible
|
|
6
|
-
# on this path.
|
|
7
|
-
|
|
8
|
-
[workflow]
|
|
9
|
-
|
|
10
|
-
persistent_facts = [
|
|
11
|
-
"file:{project-root}/.constitution/project/codebase-conventions-guide.md",
|
|
12
|
-
"A finding that repeats across stories MUST be recorded through bmad-project-context intent record, not fixed silently every time it recurs.",
|
|
13
|
-
]
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Runs in stories mode: reads SPEC.md + stories.yaml + stories/<id>-*.md, not
|
|
2
|
-
# sprint-status.yaml. Its output is RETROSPECTIVE.md inside the spec folder — which is ephemeral.
|
|
3
|
-
|
|
4
|
-
[workflow]
|
|
5
|
-
|
|
6
|
-
persistent_facts = [
|
|
7
|
-
"This repo runs in stories mode. RETROSPECTIVE.md MUST be archived as RTR-<wave> in .control/reports/ by wdi-build before the wave closes. It is REQUIRED on a wave `L` and advisory on `S` and `M` — V19 is tied to wave size, not to `mode`, and skipping it MUST be stated rather than left silent.",
|
|
8
|
-
"Every row of the distillation table in .constitution/method/document/bmad-guide.md MUST be complete before a wave is declared closed.",
|
|
9
|
-
]
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# Class C — one run per (wave x Product Component), spent once G5 closes.
|
|
2
|
-
#
|
|
3
|
-
# The slug decides whether a spec is ephemeral or lives on: the same slug lands in the same
|
|
4
|
-
# folder and keeps its capability ID. A slug per-PC alone would turn SPEC.md into a living
|
|
5
|
-
# document per PC — a direct rival to the SRS. The slug w<N>-<pc> keeps the spec ephemeral, and
|
|
6
|
-
# CAP-N stays sound because it is allocated from the registry, not from BMad's own internal
|
|
7
|
-
# mechanism.
|
|
8
|
-
|
|
9
|
-
[workflow]
|
|
10
|
-
|
|
11
|
-
persistent_facts = [
|
|
12
|
-
"A spec slug MUST take the shape w<N>-<pc>, one run per (wave x Product Component) pair.",
|
|
13
|
-
"SPEC.md MUST NOT carry anything that did not come from the SRS, SDD, or PRD. A new finding MUST be landed in the corpus by the skill that owns that layer — the ownership table in .constitution/method/document/corpus-guide.md — before the wave closes, never left sitting in the spec.",
|
|
14
|
-
"CAP-N MUST be allocated from {project-root}/.control/registry/requirements.yaml.",
|
|
15
|
-
"file:{project-root}/.control/product-glossary.md",
|
|
16
|
-
]
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# requirements.yaml — SSOT for BG · CAP · FR · NFR · UJ
|
|
2
|
-
#
|
|
3
|
-
# Keys are English; prose values follow the product's chosen `doc_language`.
|
|
4
|
-
# Numbers are allocated FROM HERE and MUST NOT restart per document, per component, or per release.
|
|
5
|
-
# The sequence is global to one product.
|
|
6
|
-
|
|
7
|
-
goals: []
|
|
8
|
-
|
|
9
|
-
capabilities: []
|
|
10
|
-
|
|
11
|
-
functional: []
|
|
12
|
-
|
|
13
|
-
nonfunctional: []
|
|
14
|
-
|
|
15
|
-
journeys: []
|