wdi-method 0.4.6 → 0.5.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.
Files changed (84) hide show
  1. package/README.md +264 -252
  2. package/bin/wdi-method.js +1121 -1030
  3. package/kit/.constitution/method/README.md +66 -169
  4. package/kit/.constitution/{constitution.md → method/constitution.md} +10 -56
  5. package/kit/.constitution/{document → method/document}/architecture-guide.md +1 -1
  6. package/kit/.constitution/{document → method/document}/corpus-guide.md +2 -2
  7. package/kit/.constitution/{document → method/document}/delivery-flow-guide.md +338 -338
  8. package/kit/.constitution/{document → method/document}/sdd-guide.md +1 -1
  9. package/kit/.constitution/{document → method/document}/templates/cross-cutting.md +1 -1
  10. package/kit/.constitution/{document → method/document}/templates/design-system.md +67 -67
  11. package/kit/.constitution/{document → method/document}/templates/inventory.md +69 -69
  12. package/kit/.constitution/{document → method/document}/templates/sdd.md +1 -1
  13. package/kit/.constitution/{document → method/document}/templates/structure-codebase.md +129 -129
  14. package/kit/.constitution/{document → method/document}/templates/structure-document.md +90 -90
  15. package/kit/.constitution/{language-guide.md → method/language-guide.md} +2 -2
  16. package/kit/.constitution/{repo-guide.md → method/repo-guide.md} +16 -3
  17. package/kit/.constitution/{scripts → method/scripts}/timeline.py +2 -2
  18. package/kit/.constitution/{scripts → method/scripts}/validate.py +1599 -1581
  19. package/kit/.constitution/{structure-guide.md → method/structure-guide.md} +3 -3
  20. package/kit/.constitution/method/why/README.md +169 -0
  21. package/kit/.constitution/method/{artifact-map.md → why/artifact-map.md} +5 -5
  22. package/kit/.constitution/method/{rationale.md → why/rationale.md} +5 -5
  23. package/kit/.constitution/project/constitution.md +63 -0
  24. package/kit/assets/bmad-custom/bmad-advanced-elicitation.toml +15 -15
  25. package/kit/assets/bmad-custom/bmad-architecture.toml +33 -33
  26. package/kit/assets/bmad-custom/bmad-code-review.toml +13 -13
  27. package/kit/assets/bmad-custom/bmad-correct-course.toml +28 -28
  28. package/kit/assets/bmad-custom/bmad-prd.toml +42 -42
  29. package/kit/assets/bmad-custom/bmad-product-brief.toml +34 -34
  30. package/kit/assets/bmad-custom/bmad-retrospective.toml +9 -9
  31. package/kit/assets/bmad-custom/bmad-spec.toml +16 -16
  32. package/kit/assets/bmad-custom/bmad-ux.toml +19 -19
  33. package/kit/skills/wdi-blueprint/SKILL.md +3 -3
  34. package/kit/skills/wdi-build/SKILL.md +244 -244
  35. package/kit/skills/wdi-component/SKILL.md +1 -1
  36. package/kit/skills/wdi-help/SKILL.md +98 -98
  37. package/kit/skills/wdi-init/SKILL.md +1 -1
  38. package/kit/skills/wdi-problem/SKILL.md +90 -90
  39. package/kit/skills/wdi-product/SKILL.md +127 -127
  40. package/kit/skills/wdi-reconcile/SKILL.md +2 -2
  41. package/kit/skills/wdi-report/SKILL.md +205 -205
  42. package/kit/skills/wdi-systematic-debugging/SKILL.md +193 -193
  43. package/kit/skills/wdi-ux/SKILL.md +145 -145
  44. package/kit-overlay/AGENTS.md +20 -20
  45. package/kit-overlay/README.md +24 -17
  46. package/kit-overlay/constitution.md +10 -56
  47. package/kit-overlay/portability.md +6 -6
  48. package/kit-overlay/repo-guide.md +112 -97
  49. package/package.json +37 -37
  50. package/kit/.constitution/README.md +0 -66
  51. /package/kit/.constitution/{document → method/document}/bmad-guide.md +0 -0
  52. /package/kit/.constitution/{document → method/document}/bmad-skill-register.md +0 -0
  53. /package/kit/.constitution/{document → method/document}/brief-guide.md +0 -0
  54. /package/kit/.constitution/{document → method/document}/decision-guide.md +0 -0
  55. /package/kit/.constitution/{document → method/document}/prd-guide.md +0 -0
  56. /package/kit/.constitution/{document → method/document}/srs-guide.md +0 -0
  57. /package/kit/.constitution/{document → method/document}/templates/addendum.md +0 -0
  58. /package/kit/.constitution/{document → method/document}/templates/architecture-spine.md +0 -0
  59. /package/kit/.constitution/{document → method/document}/templates/brief.md +0 -0
  60. /package/kit/.constitution/{document → method/document}/templates/c4.md +0 -0
  61. /package/kit/.constitution/{document → method/document}/templates/contract.md +0 -0
  62. /package/kit/.constitution/{document → method/document}/templates/decision.md +0 -0
  63. /package/kit/.constitution/{document → method/document}/templates/flow.md +0 -0
  64. /package/kit/.constitution/{document → method/document}/templates/integration.md +0 -0
  65. /package/kit/.constitution/{document → method/document}/templates/lc.md +0 -0
  66. /package/kit/.constitution/{document → method/document}/templates/lifecycle.md +0 -0
  67. /package/kit/.constitution/{document → method/document}/templates/meeting.md +0 -0
  68. /package/kit/.constitution/{document → method/document}/templates/model.md +0 -0
  69. /package/kit/.constitution/{document → method/document}/templates/oq.md +0 -0
  70. /package/kit/.constitution/{document → method/document}/templates/prd.md +0 -0
  71. /package/kit/.constitution/{document → method/document}/templates/questions.md +0 -0
  72. /package/kit/.constitution/{document → method/document}/templates/rtr.md +0 -0
  73. /package/kit/.constitution/{document → method/document}/templates/rules.md +0 -0
  74. /package/kit/.constitution/{document → method/document}/templates/scn.md +0 -0
  75. /package/kit/.constitution/{document → method/document}/templates/srs.md +0 -0
  76. /package/kit/.constitution/{document → method/document}/templates/uc.md +0 -0
  77. /package/kit/.constitution/{document → method/document}/templates/ux.md +0 -0
  78. /package/kit/.constitution/{document → method/document}/ux-guide.md +0 -0
  79. /package/kit/.constitution/{method-glossary.md → method/method-glossary.md} +0 -0
  80. /package/kit/.constitution/{scripts → method/scripts}/inventory.py +0 -0
  81. /package/kit/.constitution/method/{portability.md → why/portability.md} +0 -0
  82. /package/kit/.constitution/{codebase/brownfield-guide.md → project/codebase-brownfield-guide.md} +0 -0
  83. /package/kit/.constitution/{codebase/conventions-guide.md → project/codebase-conventions-guide.md} +0 -0
  84. /package/kit/.constitution/{codebase/stack-guide.md → project/codebase-stack-guide.md} +0 -0
@@ -1,90 +1,90 @@
1
- ---
2
- type: structure
3
- scope: document
4
- verified: '{YYYY-MM-DD}' # the day the tree was actually read
5
- commit: '{sha}' # the commit it was read at — staleness is measured against this
6
- ---
7
-
8
- # Document Structure
9
-
10
- <!-- TEMPLATE GUIDE — act on these comments, then delete them.
11
-
12
- This file is DESCRIPTIVE. It states which parts of the corpus actually carry content today.
13
- The layers themselves, the placement test, the naming scheme, and slot numbering all belong to
14
- corpus-guide.md and MUST NOT be restated here.
15
-
16
- Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules for both maps live in
17
- .constitution/structure-guide.md.
18
-
19
- Same shape as the codebase map: annotated trees, folders complete, ★ inline on the documents
20
- that earn it. What differs is the split — the codebase map splits by deployability, this one
21
- splits by LAYER, because that is the axis a reader is lost on.
22
-
23
- The five roots are fixed, so the top-level tree is not a discovery. Which sub-folders carry
24
- content, which Product Component folders exist, and which slots have been split out of a kernel
25
- ARE, and that is what this map is for. -->
26
-
27
- ## Verified
28
-
29
- <!-- One line: date, commit SHA, and how the tree was read. If the commit is no longer an ancestor
30
- of HEAD, this map is stale and MUST be refreshed before a gate reads it. -->
31
-
32
- ## Top level
33
-
34
- <!-- The five roots, one line each, with the state of each: populated, or still empty. Mark an empty
35
- root as empty rather than dropping it — a dropped root reads as a root that does not exist. -->
36
-
37
- ```text
38
- .constitution/ # how we work — {state}
39
- .control/ # what currently holds — {state}
40
- .what/ # what was promised — {state}
41
- .how/ # how it is built — {state}
42
- _bmad-output/ # work in progress, not curated — {state}
43
- ```
44
-
45
- ## Per layer
46
-
47
- <!-- One subsection per root that carries content. Annotated tree: sub-folders complete, ★ on the
48
- single-copy documents a reader must find first. Per-Product-Component folders are NOT expanded
49
- here — the table below owns them, and expanding both means maintaining both. -->
50
-
51
- ### {layer}
52
-
53
- ```text
54
- {layer}/
55
- ├── {folder}/ # what belongs here
56
- │ └── {file} # ★ why this one is key
57
- └── {folder}/ # {state}
58
- ```
59
-
60
- ## Product Components
61
-
62
- <!-- One row per PC that actually exists. Both sides are expected: a PC with an SRS and no SDD, or
63
- the reverse, is drift and MUST be listed under Findings rather than normalised here. List only
64
- the slots that have been split out of a kernel; empty slots stay unlisted. -->
65
-
66
- | Product Component | `.what/<pc>/` | `.how/<pc>/` | Slots split out |
67
- | --- | --- | --- | --- |
68
-
69
- ## Registries and generated
70
-
71
- <!-- Which registry files carry entries and which are still empty skeletons, and which generated
72
- tables have been produced. Generated output is never written by hand; naming it here is what
73
- makes a hand edit visible. -->
74
-
75
- | File | State |
76
- | --- | --- |
77
-
78
- ## Findings
79
-
80
- <!-- Drift this map surfaced while being derived: a PC on one side only, a supplement with no
81
- citation, a folder outside the five roots, a document whose home contradicts corpus-guide.md.
82
- Findings are reported, never fixed here — fixing them is `wdi-reconcile` work, or the owning
83
- skill's.
84
- Cut the section only when it is genuinely empty. -->
85
-
86
- ---
87
-
88
- <!-- Keep this legend last, and keep it one line. -->
89
-
90
- ★ = key document: single-copy, referenced from elsewhere, or the first thing a reader must find.
1
+ ---
2
+ type: structure
3
+ scope: document
4
+ verified: '{YYYY-MM-DD}' # the day the tree was actually read
5
+ commit: '{sha}' # the commit it was read at — staleness is measured against this
6
+ ---
7
+
8
+ # Document Structure
9
+
10
+ <!-- TEMPLATE GUIDE — act on these comments, then delete them.
11
+
12
+ This file is DESCRIPTIVE. It states which parts of the corpus actually carry content today.
13
+ The layers themselves, the placement test, the naming scheme, and slot numbering all belong to
14
+ corpus-guide.md and MUST NOT be restated here.
15
+
16
+ Written and refreshed only by `wdi-init` intent `structure`, never by hand. Rules for both maps live in
17
+ .constitution/method/structure-guide.md.
18
+
19
+ Same shape as the codebase map: annotated trees, folders complete, ★ inline on the documents
20
+ that earn it. What differs is the split — the codebase map splits by deployability, this one
21
+ splits by LAYER, because that is the axis a reader is lost on.
22
+
23
+ The five roots are fixed, so the top-level tree is not a discovery. Which sub-folders carry
24
+ content, which Product Component folders exist, and which slots have been split out of a kernel
25
+ ARE, and that is what this map is for. -->
26
+
27
+ ## Verified
28
+
29
+ <!-- One line: date, commit SHA, and how the tree was read. If the commit is no longer an ancestor
30
+ of HEAD, this map is stale and MUST be refreshed before a gate reads it. -->
31
+
32
+ ## Top level
33
+
34
+ <!-- The five roots, one line each, with the state of each: populated, or still empty. Mark an empty
35
+ root as empty rather than dropping it — a dropped root reads as a root that does not exist. -->
36
+
37
+ ```text
38
+ .constitution/ # how we work — {state}
39
+ .control/ # what currently holds — {state}
40
+ .what/ # what was promised — {state}
41
+ .how/ # how it is built — {state}
42
+ _bmad-output/ # work in progress, not curated — {state}
43
+ ```
44
+
45
+ ## Per layer
46
+
47
+ <!-- One subsection per root that carries content. Annotated tree: sub-folders complete, ★ on the
48
+ single-copy documents a reader must find first. Per-Product-Component folders are NOT expanded
49
+ here — the table below owns them, and expanding both means maintaining both. -->
50
+
51
+ ### {layer}
52
+
53
+ ```text
54
+ {layer}/
55
+ ├── {folder}/ # what belongs here
56
+ │ └── {file} # ★ why this one is key
57
+ └── {folder}/ # {state}
58
+ ```
59
+
60
+ ## Product Components
61
+
62
+ <!-- One row per PC that actually exists. Both sides are expected: a PC with an SRS and no SDD, or
63
+ the reverse, is drift and MUST be listed under Findings rather than normalised here. List only
64
+ the slots that have been split out of a kernel; empty slots stay unlisted. -->
65
+
66
+ | Product Component | `.what/<pc>/` | `.how/<pc>/` | Slots split out |
67
+ | --- | --- | --- | --- |
68
+
69
+ ## Registries and generated
70
+
71
+ <!-- Which registry files carry entries and which are still empty skeletons, and which generated
72
+ tables have been produced. Generated output is never written by hand; naming it here is what
73
+ makes a hand edit visible. -->
74
+
75
+ | File | State |
76
+ | --- | --- |
77
+
78
+ ## Findings
79
+
80
+ <!-- Drift this map surfaced while being derived: a PC on one side only, a supplement with no
81
+ citation, a folder outside the five roots, a document whose home contradicts corpus-guide.md.
82
+ Findings are reported, never fixed here — fixing them is `wdi-reconcile` work, or the owning
83
+ skill's.
84
+ Cut the section only when it is genuinely empty. -->
85
+
86
+ ---
87
+
88
+ <!-- Keep this legend last, and keep it one line. -->
89
+
90
+ ★ = key document: single-copy, referenced from elsewhere, or the first thing a reader must find.
@@ -6,7 +6,7 @@ status: Accepted
6
6
 
7
7
  **Loaded when:** naming anything — a code identifier, a database field, a file, a folder.
8
8
 
9
- Which language a name is written in, and nothing else. Case style → `codebase/conventions-guide.md`;
9
+ Which language a name is written in, and nothing else. Case style → `../project/codebase-conventions-guide.md`;
10
10
  legal characters → `structure-guide.md`; the right domain word → `.control/product-glossary.md`.
11
11
 
12
12
  ## Code MUST be English
@@ -71,4 +71,4 @@ and they travel to every repo through the `wdi-method` package.
71
71
  ## A wrong name MUST NOT be fixed inside an unrelated change
72
72
 
73
73
  A rename reaches the schema, the API, and every caller. It gets a change of its own, or a ratified
74
- row in `codebase/brownfield-guide.md`. A **new** name MUST NOT copy a wrong neighbour.
74
+ row in `../project/codebase-brownfield-guide.md`. A **new** name MUST NOT copy a wrong neighbour.
@@ -82,9 +82,22 @@ document.
82
82
 
83
83
  ## How the method arrives
84
84
 
85
- Method files in `.constitution/` (except this product's Articles 1, 2, and 5, `codebase/*-guide.md`
86
- once `Accepted`, and any extra file this repo added), the `wdi-*` skills, and `_bmad/custom/*.toml`
87
- arrive from the public WDI Method package via `npx wdi-method install` / `update`.
85
+ Method files in `.constitution/`, the `wdi-*` skills, and `_bmad/custom/*.toml` arrive from the
86
+ public WDI Method package via `npx wdi-method install` / `update`.
87
+
88
+ **Three paths inside `.constitution/` are this product's, not the method's.** Each is seeded once
89
+ when absent and then never written again — an update MUST NOT touch one, and `promote` MUST NOT
90
+ carry one back into the package:
91
+
92
+ | Path | Holds |
93
+ |---|---|
94
+ | `constitution.md` | This product's Articles 1, 2, and 5 |
95
+ | `codebase/*-guide.md` | This product's stack, conventions, and brownfield rules — at **any** `status:`, including `Draft`, which is when they are being written |
96
+ | `project/` | Any rule that binds only this product |
97
+
98
+ The seam is the **path**, never a marked region inside a generic file. `AGENTS.md` uses a marked
99
+ block because it is one file with no alternative; `.constitution/` has fifty-odd, and blocks inside
100
+ them would make every update perform surgery in every file.
88
101
 
89
102
  At **read time** this repo is self-contained: every file the rules need is here, readable with the
90
103
  repo alone. At **change time** the method has one published writer — the WDI Method package. Two
@@ -419,7 +419,7 @@ def gantt(timeline: dict) -> str:
419
419
  return "\n".join(lines) + "\n"
420
420
 
421
421
 
422
- HEADER = ("> Generated by `.constitution/scripts/timeline.py --generate`. "
422
+ HEADER = ("> Generated by `.constitution/method/scripts/timeline.py --generate`. "
423
423
  "MUST NOT be hand-edited.\n")
424
424
 
425
425
 
@@ -570,7 +570,7 @@ def publish(c: Corpus, report: dict, kind: str, asof: dt.date) -> tuple[Path, st
570
570
  "since": report["since"],
571
571
  "sha": report["sha"],
572
572
  "promise_progress": report["promise_progress"],
573
- "generated_by": ".constitution/scripts/timeline.py",
573
+ "generated_by": ".constitution/method/scripts/timeline.py",
574
574
  })
575
575
  path.write_text(f"---\n{front}---\n\n{render_report(report, f'Report {name}')}{NOTE}",
576
576
  encoding="utf-8")