ma-agents 3.18.0-beta.2 → 3.18.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 (168) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.js +29 -32
  3. package/docs/architecture.md +2 -2
  4. package/lib/bmad-cache/cache-manifest.json +0 -12
  5. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
  6. package/lib/bmad.js +33 -34
  7. package/package.json +1 -1
  8. package/scripts/build-bmad-cache.js +18 -9
  9. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +0 -56
  10. package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +0 -35
  11. package/lib/bmad-cache/gds/.nvmrc +0 -1
  12. package/lib/bmad-cache/gds/.prettierignore +0 -9
  13. package/lib/bmad-cache/gds/CNAME +0 -1
  14. package/lib/bmad-cache/gds/LICENSE +0 -26
  15. package/lib/bmad-cache/gds/README.md +0 -134
  16. package/lib/bmad-cache/gds/_git_preserved/HEAD +0 -1
  17. package/lib/bmad-cache/gds/_git_preserved/config +0 -13
  18. package/lib/bmad-cache/gds/_git_preserved/description +0 -1
  19. package/lib/bmad-cache/gds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  20. package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +0 -74
  21. package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  22. package/lib/bmad-cache/gds/_git_preserved/hooks/post-update.sample +0 -8
  23. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  24. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-commit.sample +0 -49
  25. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  26. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-push.sample +0 -53
  27. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-rebase.sample +0 -169
  28. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-receive.sample +0 -24
  29. package/lib/bmad-cache/gds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  30. package/lib/bmad-cache/gds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  31. package/lib/bmad-cache/gds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  32. package/lib/bmad-cache/gds/_git_preserved/hooks/update.sample +0 -128
  33. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  34. package/lib/bmad-cache/gds/_git_preserved/info/exclude +0 -6
  35. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
  36. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack +0 -0
  37. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
  38. package/lib/bmad-cache/gds/_git_preserved/packed-refs +0 -2
  39. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +0 -1
  40. package/lib/bmad-cache/gds/_git_preserved/shallow +0 -1
  41. package/lib/bmad-cache/gds/eslint.config.mjs +0 -141
  42. package/lib/bmad-cache/gds/package.json +0 -91
  43. package/lib/bmad-cache/gds/prettier.config.mjs +0 -32
  44. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +0 -57
  45. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +0 -59
  46. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +0 -129
  47. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/gametest/qa-index.csv +0 -18
  48. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -55
  49. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +0 -65
  50. package/lib/bmad-cache/gds/src/module-help.csv +0 -30
  51. package/lib/bmad-cache/gds/src/module.yaml +0 -113
  52. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +0 -41
  53. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/game-brain-methods.csv +0 -26
  54. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +0 -116
  55. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +0 -41
  56. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +0 -41
  57. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/game-types.csv +0 -25
  58. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/genre-complexity.csv +0 -26
  59. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +0 -190
  60. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +0 -99
  61. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +0 -290
  62. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +0 -190
  63. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +0 -84
  64. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +0 -319
  65. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +0 -101
  66. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +0 -41
  67. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +0 -41
  68. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +0 -508
  69. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +0 -41
  70. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +0 -428
  71. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +0 -392
  72. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/pattern-categories.csv +0 -13
  73. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +0 -41
  74. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +0 -41
  75. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +0 -41
  76. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +0 -41
  77. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +0 -41
  78. package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +0 -62
  79. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +0 -41
  80. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +0 -41
  81. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/sprint-status-template.yaml +0 -55
  82. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +0 -41
  83. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +0 -41
  84. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +0 -41
  85. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +0 -41
  86. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +0 -41
  87. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +0 -41
  88. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +0 -41
  89. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +0 -41
  90. package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +0 -41
  91. package/lib/bmad-cache/gds/src/workflows/gds-document-project/documentation-requirements.csv +0 -12
  92. package/lib/bmad-cache/gds/src/workflows/gds-document-project/templates/project-scan-report-schema.json +0 -160
  93. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +0 -41
  94. package/lib/bmad-cache/gds/tools/build-docs.mjs +0 -450
  95. package/lib/bmad-cache/gds/website/astro.config.mjs +0 -142
  96. package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
  97. package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
  98. package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
  99. package/lib/bmad-cache/gds/website/src/components/Banner.astro +0 -71
  100. package/lib/bmad-cache/gds/website/src/components/Header.astro +0 -94
  101. package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +0 -33
  102. package/lib/bmad-cache/gds/website/src/content/config.ts +0 -6
  103. package/lib/bmad-cache/gds/website/src/content/docs +0 -1
  104. package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +0 -25
  105. package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +0 -88
  106. package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +0 -117
  107. package/lib/bmad-cache/gds/website/src/styles/custom.css +0 -503
  108. package/lib/bmad-cache/wds/.claude-plugin/marketplace.json +0 -35
  109. package/lib/bmad-cache/wds/.markdownlint-cli2.yaml +0 -38
  110. package/lib/bmad-cache/wds/.nvmrc +0 -1
  111. package/lib/bmad-cache/wds/.prettierignore +0 -9
  112. package/lib/bmad-cache/wds/LICENSE +0 -27
  113. package/lib/bmad-cache/wds/README.md +0 -139
  114. package/lib/bmad-cache/wds/_git_preserved/HEAD +0 -1
  115. package/lib/bmad-cache/wds/_git_preserved/config +0 -13
  116. package/lib/bmad-cache/wds/_git_preserved/description +0 -1
  117. package/lib/bmad-cache/wds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  118. package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +0 -74
  119. package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  120. package/lib/bmad-cache/wds/_git_preserved/hooks/post-update.sample +0 -8
  121. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  122. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-commit.sample +0 -49
  123. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  124. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-push.sample +0 -53
  125. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-rebase.sample +0 -169
  126. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-receive.sample +0 -24
  127. package/lib/bmad-cache/wds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  128. package/lib/bmad-cache/wds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  129. package/lib/bmad-cache/wds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  130. package/lib/bmad-cache/wds/_git_preserved/hooks/update.sample +0 -128
  131. package/lib/bmad-cache/wds/_git_preserved/index +0 -0
  132. package/lib/bmad-cache/wds/_git_preserved/info/exclude +0 -6
  133. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
  134. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack +0 -0
  135. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
  136. package/lib/bmad-cache/wds/_git_preserved/packed-refs +0 -2
  137. package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +0 -1
  138. package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +0 -1
  139. package/lib/bmad-cache/wds/_git_preserved/shallow +0 -1
  140. package/lib/bmad-cache/wds/eslint.config.mjs +0 -152
  141. package/lib/bmad-cache/wds/package.json +0 -82
  142. package/lib/bmad-cache/wds/prettier.config.mjs +0 -32
  143. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +0 -80
  144. package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +0 -52
  145. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +0 -70
  146. package/lib/bmad-cache/wds/src/module-help.csv +0 -19
  147. package/lib/bmad-cache/wds/src/module.yaml +0 -173
  148. package/lib/bmad-cache/wds/src/scripts/README.md +0 -155
  149. package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +0 -202
  150. package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +0 -158
  151. package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +0 -229
  152. package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +0 -120
  153. package/lib/bmad-cache/wds/src/scripts/wds-nav.js +0 -201
  154. package/lib/bmad-cache/wds/src/scripts/wds-validate.js +0 -301
  155. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  156. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +0 -363
  157. package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  158. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +0 -450
  159. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/design-delivery.template.yaml +0 -104
  160. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/test-scenario.template.yaml +0 -192
  161. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +0 -387
  162. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.css +0 -164
  163. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.html +0 -18
  164. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.js +0 -430
  165. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/demo-data-template.json +0 -63
  166. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/page-template.html +0 -465
  167. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/work-file-template.yaml +0 -264
  168. package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/templates/catalog.template.html +0 -363
@@ -1,192 +0,0 @@
1
- # WDS Test Scenario Template
2
- # Save to: test-scenarios/TS-XXX-name.yaml
3
-
4
- test_scenario:
5
- id: "TS-XXX" # Format: TS-001, TS-002, etc.
6
- name: "Feature Testing" # Human-readable name
7
- delivery_id: "DD-XXX" # Related Design Delivery
8
- type: "user_acceptance" # user_acceptance | integration | e2e
9
- status: "ready" # ready | in_progress | blocked
10
- tester: "designer" # designer | qa | developer
11
- created_at: "YYYY-MM-DDTHH:MM:SSZ"
12
-
13
- test_objectives:
14
- - "Validate implementation matches design specifications"
15
- - "Verify user flow is intuitive and smooth"
16
- - "Confirm all edge cases are handled"
17
- - "Ensure design system components are used correctly"
18
- - "Test accessibility and usability"
19
-
20
- test_environment:
21
- devices:
22
- - "Device 1 (OS version)"
23
- - "Device 2 (OS version)"
24
-
25
- test_data:
26
- - field: "value"
27
- - field: "value"
28
-
29
- # Happy Path Tests
30
- happy_path:
31
- - id: "HP-001"
32
- name: "Main User Flow"
33
- priority: "critical" # critical | high | medium | low
34
-
35
- steps:
36
- - action: "[User action]"
37
- expected: "[Expected result]"
38
- design_ref: "[Path to specification]#[section]"
39
-
40
- - action: "[User action]"
41
- expected: "[Expected result]"
42
- design_ref: "[Path to specification]#[section]"
43
-
44
- success_criteria:
45
- - "[Success criterion 1]"
46
- - "[Success criterion 2]"
47
- - "[Success criterion 3]"
48
-
49
- # Error State Tests
50
- error_states:
51
- - id: "ES-001"
52
- name: "Error Scenario"
53
- priority: "high"
54
-
55
- steps:
56
- - action: "[Action that triggers error]"
57
- - expected: "[Expected error message]"
58
- - expected: "[Expected recovery option]"
59
- - design_ref: "[Path to specification]#[error-section]"
60
-
61
- success_criteria:
62
- - "[Error handling criterion 1]"
63
- - "[Error handling criterion 2]"
64
-
65
- # Edge Case Tests
66
- edge_cases:
67
- - id: "EC-001"
68
- name: "Edge Case Scenario"
69
- priority: "medium"
70
-
71
- steps:
72
- - action: "[Unusual action]"
73
- - expected: "[Expected handling]"
74
- - design_ref: "[Path to specification]#[edge-case-section]"
75
-
76
- success_criteria:
77
- - "[Edge case criterion 1]"
78
-
79
- # Design System Validation
80
- design_system_checks:
81
- - id: "DS-001"
82
- name: "Component Validation"
83
- checks:
84
- - component: "Component Name"
85
- instances: ["Location 1", "Location 2"]
86
- verify:
87
- - "[Visual property 1]"
88
- - "[Visual property 2]"
89
- - "[State behavior 1]"
90
- design_ref: "D-Design-System/path/to/component.md"
91
-
92
- # Accessibility Tests
93
- accessibility:
94
- - id: "A11Y-001"
95
- name: "Screen Reader Navigation"
96
- priority: "high"
97
-
98
- setup: "Enable screen reader (VoiceOver/TalkBack)"
99
-
100
- steps:
101
- - action: "[Navigate with screen reader]"
102
- - verify:
103
- - "[Accessibility check 1]"
104
- - "[Accessibility check 2]"
105
-
106
- success_criteria:
107
- - "[Accessibility criterion 1]"
108
- - "[Accessibility criterion 2]"
109
-
110
- # Usability Tests
111
- usability:
112
- - id: "UX-001"
113
- name: "First Impression"
114
- type: "observational"
115
-
116
- instructions: |
117
- [Instructions for conducting usability test]
118
-
119
- success_criteria:
120
- - "[Usability criterion 1]"
121
- - "[Usability criterion 2]"
122
-
123
- # Performance Tests
124
- performance:
125
- - id: "PERF-001"
126
- name: "Performance Check"
127
-
128
- verify:
129
- - "[Performance metric 1]"
130
- - "[Performance metric 2]"
131
-
132
- success_criteria:
133
- - "[Performance target 1]"
134
- - "[Performance target 2]"
135
-
136
- # Test Report Template
137
- report_template:
138
- sections:
139
- - name: "Test Summary"
140
- fields:
141
- - "Date tested"
142
- - "Tester name"
143
- - "Device tested"
144
- - "Build version"
145
- - "Overall result (Pass/Fail/Partial)"
146
-
147
- - name: "Happy Path Results"
148
- fields:
149
- - "Test ID"
150
- - "Result (Pass/Fail)"
151
- - "Notes"
152
- - "Screenshots"
153
-
154
- - name: "Issues Found"
155
- fields:
156
- - "Issue ID"
157
- - "Severity (Critical/High/Medium/Low)"
158
- - "Description"
159
- - "Steps to reproduce"
160
- - "Expected vs Actual"
161
- - "Screenshot/Video"
162
- - "Design reference violated"
163
-
164
- - name: "Design System Compliance"
165
- fields:
166
- - "Component"
167
- - "Compliant (Yes/No)"
168
- - "Deviations noted"
169
-
170
- - name: "Recommendations"
171
- fields:
172
- - "What worked well"
173
- - "What needs improvement"
174
- - "Suggested changes"
175
-
176
- # Sign-off Criteria
177
- sign_off:
178
- required_for_approval:
179
- - "All critical tests pass"
180
- - "No critical or high severity issues"
181
- - "Design system compliance > 95%"
182
- - "Accessibility tests pass"
183
- - "Usability metrics meet targets"
184
-
185
- designer_approval:
186
- statement: |
187
- I confirm that the implemented feature matches the design
188
- specifications and meets the quality standards defined in
189
- this test scenario.
190
-
191
- signature: "________________"
192
- date: "________________"
@@ -1,387 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <workflow id="wds-4-specify" name="WDS Phase 4 — Specify Page" version="1.0">
3
- <description>
4
- Create a complete, implementation-ready page specification: layout, components with Object IDs,
5
- multilingual content, interactions, states, validation, spacing, and typography.
6
- All 9 steps must be completed in sequence before the specification is considered done.
7
- Validation runs at step 9 before the spec is written to disk.
8
- </description>
9
-
10
- <prerequisites>
11
- <require file="{output_folder}/C-UX-Scenarios/{scenario-slug}/{scenario-slug}.md" label="Scenario outline"/>
12
- <require file="{output_folder}/C-UX-Scenarios/{scenario-slug}/pages/{NN}.{step}-{page-slug}/" label="Page folder from Phase 3 or design activity"/>
13
- <require file="{output_folder}/_progress/00-design-log.md" label="Design log"/>
14
- </prerequisites>
15
-
16
- <!-- ═══════════════════════════════════════════════════════════════════ -->
17
- <!-- INITIALIZATION — runs before step 1 -->
18
- <!-- ═══════════════════════════════════════════════════════════════════ -->
19
-
20
- <initialization>
21
- <instruction>
22
- Read the design log at {output_folder}/_progress/00-design-log.md before starting.
23
- Check Current table for any in-progress work from a previous session.
24
- </instruction>
25
- <instruction>
26
- Load page context from the existing page folder:
27
- {output_folder}/C-UX-Scenarios/[NN-slug]/pages/[NN].[step]-[page-slug]/
28
- The page boilerplate created in Phase 3 contains scenario, page number, platform,
29
- page purpose, entry context, exit action, and on-page interactions.
30
- </instruction>
31
- <instruction>
32
- Update the design log Current table: add this page with status "specifying".
33
- </instruction>
34
- <gate type="file-exists" path="{output_folder}/C-UX-Scenarios/{scenario-slug}/{scenario-slug}.md"
35
- failure-message="Scenario outline must exist. Select a scenario from the design log before running Specify."/>
36
- <gate type="folder-exists" path="{output_folder}/C-UX-Scenarios/{scenario-slug}/pages/{NN}.{step}-{page-slug}/"
37
- failure-message="Page folder must exist. Run Phase 3 or a design activity (Suggest/Dream) to create the page structure before specifying."/>
38
- </initialization>
39
-
40
- <!-- ═══════════════════════════════════════════════════════════════════ -->
41
- <!-- STEP 1 — Page Basics -->
42
- <!-- ═══════════════════════════════════════════════════════════════════ -->
43
-
44
- <step id="1-page-basics" name="Capture page metadata and entry/exit points" step-file="steps-p/step-01-page-basics.md">
45
- <instruction>
46
- Present the page basics form to the user and collect all required fields:
47
- - Page name/title
48
- - URL/route (if applicable)
49
- - Main user goal (one sentence)
50
- - Entry points (where users come from)
51
- - Exit points (where users go next)
52
-
53
- For public pages, also collect SEO data — check the project brief's SEO Strategy for target keywords:
54
- - Primary keyword
55
- - Secondary keywords
56
- - URL slug (from keyword map)
57
- </instruction>
58
- <instruction>
59
- Store all captured values as page_basics:
60
- page_title, url_route, user_goal, entry_points, exit_points,
61
- primary_keyword (public pages), secondary_keywords (public pages), url_slug (public pages).
62
- </instruction>
63
-
64
- <gate type="data-captured" required="page_title url_route user_goal entry_points exit_points"
65
- failure-message="All basic page fields must be captured before proceeding. Do not skip any field."/>
66
- <gate type="seo-data-captured" condition="page-is-public"
67
- required="primary_keyword secondary_keywords url_slug"
68
- failure-message="SEO data is mandatory for public pages. Check the project brief's SEO Strategy section."/>
69
- <gate type="user-confirms" prompt="All page basics captured and confirmed by user?"/>
70
-
71
- <output>page_basics stored — title, route, goal, entry/exit points, and SEO data (if public page).</output>
72
- </step>
73
-
74
- <!-- ═══════════════════════════════════════════════════════════════════ -->
75
- <!-- STEP 2 — Layout Sections -->
76
- <!-- ═══════════════════════════════════════════════════════════════════ -->
77
-
78
- <step id="2-layout-sections" name="Define major page sections" step-file="steps-p/step-02-layout-sections.md">
79
- <instruction>
80
- Ask the user to describe the major areas of the page (header, hero, main content, sidebar,
81
- footer, etc.). Do not define individual components yet — only high-level sections.
82
- </instruction>
83
- <instruction>
84
- For each section described, store:
85
- - section_name
86
- - section_purpose
87
- - section_priority (primary / secondary)
88
- </instruction>
89
- <instruction>
90
- Confirm the section list with the user before proceeding.
91
- </instruction>
92
-
93
- <gate type="data-captured" required="layout_sections" minimum-count="1"
94
- failure-message="At least one layout section must be defined. Do not proceed to components without a section structure."/>
95
- <gate type="section-attributes-complete" required-per-section="name purpose priority"
96
- failure-message="Each section must have a name, purpose, and priority before proceeding."/>
97
- <gate type="user-confirms" prompt="Layout sections defined and confirmed?"/>
98
-
99
- <output>layout_sections stored — section names, purposes, and priorities captured.</output>
100
- </step>
101
-
102
- <!-- ═══════════════════════════════════════════════════════════════════ -->
103
- <!-- STEP 3 — Components and Object IDs -->
104
- <!-- ═══════════════════════════════════════════════════════════════════ -->
105
-
106
- <step id="3-components-objects" name="Identify components and assign Object IDs" step-file="steps-p/step-03-components-objects.md">
107
- <instruction>
108
- Work through each section identified in step 2. For each section, go top-to-bottom,
109
- left-to-right. Ask the user to describe the next object in the section.
110
- </instruction>
111
- <instruction>
112
- For each object described, load and execute the object router:
113
- data/object-types/object-router.md
114
- The router will: ask for object type, load the correct object-type template, guide through
115
- complete documentation, generate a specification with an Object ID, then return here.
116
- </instruction>
117
- <instruction>
118
- After each component specification is complete, check project config:
119
- if design system is enabled, run workflows/wds-7-design-system/design-system-router.md
120
- to check for similar components and extract component-level info. Update page spec with
121
- the reference. If design system is disabled, keep the full specification on the page.
122
- </instruction>
123
- <instruction>
124
- Continue until the user confirms all objects in the section are documented.
125
- Move to the next section. Continue until all sections are complete.
126
- Present a summary: sections processed, total components, components by type, all Object IDs assigned.
127
- </instruction>
128
-
129
- <gate type="all-sections-processed" rule="every-layout-section-has-been-worked-through"
130
- failure-message="All sections from step 2 must be processed. Do not skip any section."/>
131
- <gate type="object-ids-assigned" rule="every-component-has-an-object-id"
132
- failure-message="Every documented component must have an Object ID before proceeding to content. Missing IDs block downstream steps."/>
133
- <gate type="object-router-used" rule="every-component-routed-through-object-router"
134
- failure-message="Object-type routing must be used for every component. Do not document components without using the router."/>
135
- <gate type="design-system-check-performed" condition="design-system-enabled"
136
- failure-message="Design system check must be performed after every component when design system is enabled."/>
137
- <gate type="user-confirms" prompt="All components documented with Object IDs, design system checks complete?"/>
138
-
139
- <output>Component registry complete — all Object IDs assigned, design system references updated where applicable.</output>
140
- </step>
141
-
142
- <!-- ═══════════════════════════════════════════════════════════════════ -->
143
- <!-- STEP 4 — Content and Languages -->
144
- <!-- ═══════════════════════════════════════════════════════════════════ -->
145
-
146
- <step id="4-content-languages" name="Specify all text content in all languages" step-file="steps-p/step-04-content-languages.md">
147
- <instruction>
148
- Ask the user what languages this page supports. Store as supported_languages array.
149
- </instruction>
150
- <instruction>
151
- For every text element on the page (labels, buttons, headings, messages, placeholders,
152
- error text — derived from the component list), ask the user to provide content in every
153
- supported language. Primary language first, then each additional language.
154
- </instruction>
155
- <instruction>
156
- Store multilingual_content keyed by element and language.
157
- No text element may have content in only a subset of languages — full coverage is required.
158
- </instruction>
159
-
160
- <gate type="languages-defined" required="supported_languages-array-not-empty"
161
- failure-message="Supported languages must be defined before collecting content. Ask the user for the language list first."/>
162
- <gate type="multilingual-coverage" rule="every-text-element-has-content-in-every-language"
163
- failure-message="Every text element must have content in ALL supported languages. Do not proceed with incomplete language coverage."/>
164
- <gate type="user-confirms" prompt="All text content specified in all supported languages?"/>
165
-
166
- <output>multilingual_content stored — all text elements captured in all supported languages.</output>
167
- </step>
168
-
169
- <!-- ═══════════════════════════════════════════════════════════════════ -->
170
- <!-- STEP 5 — Interactions -->
171
- <!-- ═══════════════════════════════════════════════════════════════════ -->
172
-
173
- <step id="5-interactions" name="Define interaction behaviors per component" step-file="steps-p/step-05-interactions.md">
174
- <instruction>
175
- For each interactive component in the registry (from step 3), ask the user what happens
176
- when the user interacts with it. Cover: on click / on input / on focus,
177
- immediate response, state changes, navigation (if applicable), data sent/received.
178
- </instruction>
179
- <instruction>
180
- Store interaction_behavior keyed by Object ID. Do not generate behaviors without
181
- user input — ask for each component individually.
182
- </instruction>
183
- <instruction>
184
- Do not define visual states in this step — that is step 6.
185
- </instruction>
186
-
187
- <gate type="all-interactive-components-covered" rule="every-interactive-object-id-has-interaction-behavior"
188
- failure-message="Every interactive component must have defined behaviors. Do not skip any."/>
189
- <gate type="interaction-types-covered" rule="click-input-focus-navigation-data-considered-per-component"
190
- failure-message="Consider all relevant interaction types for each component before moving on."/>
191
- <gate type="user-confirms" prompt="All interaction behaviors defined for every interactive component?"/>
192
-
193
- <output>interaction_behavior stored per Object ID — all interactive components covered.</output>
194
- </step>
195
-
196
- <!-- ═══════════════════════════════════════════════════════════════════ -->
197
- <!-- STEP 6 — States -->
198
- <!-- ═══════════════════════════════════════════════════════════════════ -->
199
-
200
- <step id="6-states" name="Define page-level and component-level states" step-file="steps-p/step-06-states.md">
201
- <instruction>
202
- Define page-level states first. Ask the user to describe each situation:
203
- default/loaded, empty (no data), loading (fetching), error (something went wrong),
204
- success (after action completes). For each: when it occurs, what user sees, available actions.
205
- </instruction>
206
- <instruction>
207
- For each component with multiple possible appearances, ask the user to define applicable states:
208
- default, hover, active/pressed, focus, disabled, loading, error, success.
209
- Only specify states that actually apply to each component.
210
- </instruction>
211
- <instruction>
212
- Store page_states and component_states.
213
- Do not define validation rules in this step — that is step 7.
214
- </instruction>
215
-
216
- <gate type="page-states-defined" required="default-state-minimum"
217
- failure-message="At minimum, the default page state must be defined."/>
218
- <gate type="component-states-defined" rule="multi-state-components-have-all-applicable-states"
219
- failure-message="Components with multiple appearances must have all applicable states documented. Do not skip multi-state components."/>
220
- <gate type="user-confirms" prompt="All page-level and component-level states defined?"/>
221
-
222
- <output>page_states and component_states stored — all state variations documented.</output>
223
- </step>
224
-
225
- <!-- ═══════════════════════════════════════════════════════════════════ -->
226
- <!-- STEP 7 — Validation -->
227
- <!-- ═══════════════════════════════════════════════════════════════════ -->
228
-
229
- <step id="7-validation" name="Define validation rules and error messages" step-file="steps-p/step-07-validation.md">
230
- <instruction>
231
- Identify all fields and inputs that require validation. For each, ask:
232
- - What makes it valid / invalid?
233
- - Required or optional?
234
- - Format rules and length limits?
235
- - Custom rules?
236
- - Validation timing: on blur, on submit, or real-time?
237
- </instruction>
238
- <instruction>
239
- For each validation rule, define error messages in ALL supported languages.
240
- Assign an error code (e.g., ERR_EMAIL_INVALID) to every message.
241
- </instruction>
242
- <instruction>
243
- Store validation_rules and error_messages per field, with codes and translations.
244
- Do not generate the specification document yet — that is step 9.
245
- </instruction>
246
-
247
- <check-if condition="page-has-input-fields-or-forms">
248
- <then>
249
- Proceed with full validation definition. Every input field must have rules and error messages.
250
- </then>
251
- <else>
252
- No validated fields on this page. Store an empty validation_rules object and note
253
- "No form inputs on this page" before proceeding to step 8.
254
- </else>
255
- </check-if>
256
-
257
- <gate type="validation-rules-complete" rule="every-input-field-has-rules"
258
- condition="page-has-input-fields"
259
- failure-message="Every input field must have validation rules defined. Do not skip any field."/>
260
- <gate type="error-messages-translated" rule="every-error-code-has-message-in-every-language"
261
- condition="page-has-input-fields"
262
- failure-message="Error messages must be provided in ALL supported languages. Incomplete translations block step 9."/>
263
- <gate type="error-codes-assigned" rule="every-error-message-has-a-code"
264
- condition="page-has-input-fields"
265
- failure-message="Every error message must have an error code (e.g., ERR_EMAIL_INVALID)."/>
266
- <gate type="user-confirms" prompt="Validation rules and error messages complete?"/>
267
-
268
- <output>validation_rules and error_messages stored — all fields covered, all languages translated, all codes assigned.</output>
269
- </step>
270
-
271
- <!-- ═══════════════════════════════════════════════════════════════════ -->
272
- <!-- STEP 8 — Spacing and Typography -->
273
- <!-- ═══════════════════════════════════════════════════════════════════ -->
274
-
275
- <step id="8-spacing-typography" name="Define spacing objects and typography tokens" step-file="steps-p/step-08-spacing-typography.md">
276
- <instruction>
277
- Walk through adjacent section pairs top-to-bottom. For each pair, ask the user which
278
- spacing token applies. Present the full table of gaps at once for efficiency.
279
-
280
- Available tokens: zero, sm, md, lg, xl, 2xl, 3xl.
281
- Zero-spacing is an intentional design choice — document it, never skip it.
282
-
283
- Store spacing objects using naming convention:
284
- - {page-slug}-v-space-{size} for vertical spacing
285
- - {page-slug}-v-separator-{size} for lines/dividers with spacing
286
-
287
- Also capture grid gaps for sections with repeated items (card grids, lists).
288
- </instruction>
289
- <instruction>
290
- For each heading in the content (from step 4), define typography tokens.
291
- Collect from the user: semantic tag (h1/h2/h3) and visual size per breakpoint
292
- (mobile / tablet / desktop).
293
-
294
- Available heading tokens: heading-xxs (14px), heading-xs (16px), heading-sm (18px),
295
- heading-md (20px), heading-lg (24px), heading-xl (30px), heading-2xl (36px),
296
- heading-3xl (44px), heading-4xl (56px).
297
-
298
- Rule: use token names only — never arbitrary pixel values.
299
- Rule: step up one token size per breakpoint (mobile → tablet → desktop) as a guide.
300
-
301
- Store typography_tokens with Object ID, tag, and visual size per breakpoint.
302
- </instruction>
303
- <instruction>
304
- Present the complete invisible layer to the user — spacing objects and typography tokens.
305
- Ask if anything needs adjusting before generating the specification.
306
- </instruction>
307
-
308
- <gate type="spacing-complete" rule="every-section-boundary-has-spacing-object"
309
- failure-message="Every adjacent section pair must have a spacing object. Including zero-spacing decisions."/>
310
- <gate type="no-pixel-values" rule="only-token-names-used-in-spacing-and-typography"
311
- failure-message="Only token names are allowed (zero, sm, md, lg, xl, 2xl, 3xl for spacing; heading-xxs through heading-4xl for typography). No pixel values."/>
312
- <gate type="typography-complete" rule="every-heading-has-tag-and-responsive-token"
313
- failure-message="Every heading must have a semantic tag and visual token for all three breakpoints."/>
314
- <gate type="grid-gaps-documented" condition="page-has-card-grids-or-repeated-items"
315
- failure-message="Grid gaps must be documented for sections containing repeated items (card grids, lists)."/>
316
- <gate type="user-confirms" prompt="Spacing objects and typography tokens reviewed and approved?"/>
317
-
318
- <output>spacing_objects and typography_tokens stored — every section boundary and heading documented with tokens.</output>
319
- </step>
320
-
321
- <!-- ═══════════════════════════════════════════════════════════════════ -->
322
- <!-- STEP 9 — Generate Specification -->
323
- <!-- ═══════════════════════════════════════════════════════════════════ -->
324
-
325
- <step id="9-generate-spec" name="Compile and save the complete page specification" step-file="steps-p/step-09-generate-spec.md">
326
- <instruction>
327
- Verify all data from steps 1-8 is present before generating:
328
- page_basics, layout_sections, component registry with Object IDs, multilingual_content,
329
- interaction_behavior, page_states, component_states, validation_rules, error_messages,
330
- spacing_objects, typography_tokens.
331
- If any section is missing, return to the relevant step to complete it first.
332
- </instruction>
333
- <instruction>
334
- Generate the complete specification document using the template at:
335
- templates/page-specification.template.md
336
-
337
- Fill ALL sections with data from steps 1-8. Do not invent new formats —
338
- the template defines the structure.
339
- </instruction>
340
- <instruction>
341
- Run the validation script before saving:
342
- wds-validate.js --page {current-page-path}
343
- Review any errors or warnings reported. Fix issues in the relevant data sections
344
- and re-run until validation passes.
345
- </instruction>
346
- <instruction>
347
- Save the complete specification to:
348
- {output_folder}/C-UX-Scenarios/{scenario-slug}/pages/{NN}.{step}-{page-slug}/{NN}.{step}-{page-slug}.md
349
-
350
- Present the summary to the user: sections, components, languages, interactions, states,
351
- validation rules, spacing objects, typography tokens — with counts.
352
- </instruction>
353
- <instruction>
354
- Update the design log: append a row to the Design Loop Status table with status "specified":
355
- | [scenario-slug] | [NN.step] | [page-name] | specified | [YYYY-MM-DD] |
356
-
357
- Remove this page from the Current table. Do NOT skip this — the design log drives the
358
- adaptive dashboard across sessions.
359
- </instruction>
360
-
361
- <gate type="all-data-sections-present" required="page_basics layout_sections components multilingual_content interaction_behavior page_states validation_rules spacing_objects typography_tokens"
362
- failure-message="All data sections from steps 1-8 must be present before generating the specification. Return to incomplete steps."/>
363
- <gate type="script-run" script="src/scripts/wds-validate.js" args="--page {current-page-path}"
364
- failure-message="Validation script must pass before saving the specification. Fix reported issues and re-run."/>
365
- <gate type="file-saved" path="{output_folder}/C-UX-Scenarios/{scenario-slug}/pages/{NN}.{step}-{page-slug}/{NN}.{step}-{page-slug}.md"
366
- failure-message="Specification file must be saved to the correct path before this step is complete."/>
367
- <gate type="design-log-updated" rule="design-loop-status-row-appended-with-status-specified"
368
- failure-message="Design log must be updated with 'specified' status before this step is complete. This is not optional."/>
369
-
370
- <output>Complete page specification generated, validated, saved, and design log updated with 'specified' status.</output>
371
- </step>
372
-
373
- <!-- ═══════════════════════════════════════════════════════════════════ -->
374
- <!-- COMPLETION -->
375
- <!-- ═══════════════════════════════════════════════════════════════════ -->
376
-
377
- <completion>
378
- <require step="all" failure-message="All 9 steps must be completed. The specification is not valid until step 9 passes validation and saves the file."/>
379
- <output-file>{output_folder}/C-UX-Scenarios/{scenario-slug}/pages/{NN}.{step}-{page-slug}/{NN}.{step}-{page-slug}.md</output-file>
380
- <post-completion>
381
- Return to the calling workflow's transition logic. If called from step-01-exploration.md (Discuss)
382
- or workflow-suggest.md (Suggest), the calling step determines what comes next.
383
- The design log status "specified" is the signal that this page is done.
384
- </post-completion>
385
- </completion>
386
-
387
- </workflow>