ma-agents 3.12.3 → 3.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/bin/cli.js +67 -13
  2. package/docs/architecture.md +18 -0
  3. package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +1 -1
  4. package/lib/bmad-cache/bmb/_git_preserved/hooks/commit-msg.sample +52 -2
  5. package/lib/bmad-cache/bmb/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
  6. package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
  7. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.idx +0 -0
  8. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.pack +0 -0
  9. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.rev +0 -0
  10. package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
  11. package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
  12. package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
  13. package/lib/bmad-cache/bmb/package-lock.json +2 -2
  14. package/lib/bmad-cache/bmb/package.json +1 -1
  15. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module-help.csv +1 -1
  16. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/merge-config.py +33 -0
  17. package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/merge-help-csv.py +28 -0
  18. package/lib/bmad-cache/bmb/samples/sample-module-setup/assets/module-help.csv +1 -1
  19. package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/cleanup-legacy.py +28 -0
  20. package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-config.py +33 -0
  21. package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-help-csv.py +28 -0
  22. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/assets/module-help.csv +1 -1
  23. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/cleanup-legacy.py +28 -0
  24. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-config.py +33 -0
  25. package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-help-csv.py +28 -0
  26. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/assets/Dockerfile +29 -0
  27. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/docker_setup.py +115 -0
  28. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/generate_report.py +184 -0
  29. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/pty_runner.py +171 -0
  30. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_evals.py +492 -0
  31. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_triggers.py +366 -0
  32. package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/utils.py +260 -0
  33. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module-help.csv +1 -1
  34. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/cleanup-legacy.py +28 -0
  35. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-config.py +33 -0
  36. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-help-csv.py +28 -0
  37. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-config.py +33 -0
  38. package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-help-csv.py +28 -0
  39. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-validate-module.py +74 -1
  40. package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/validate-module.py +24 -13
  41. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/sample-customize-product-brief.toml +48 -33
  42. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/extract-report-json.py +287 -0
  43. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-html-report.py +57 -8
  44. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +7 -7
  45. package/lib/bmad-cache/bmb/skills/module-help.csv +1 -1
  46. package/lib/bmad-cache/bmb/website/public/img/eval-test-types.png +0 -0
  47. package/lib/bmad-cache/cache-manifest.json +17 -18
  48. package/lib/bmad-cache/cis/_git_preserved/hooks/commit-msg.sample +52 -2
  49. package/lib/bmad-cache/cis/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
  50. package/lib/bmad-cache/cis/_git_preserved/index +0 -0
  51. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.idx +0 -0
  52. package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.pack → pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.pack} +0 -0
  53. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.rev +0 -0
  54. package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
  55. package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
  56. package/lib/bmad-cache/cis/_git_preserved/refs/tags/v0.2.1 +1 -0
  57. package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
  58. package/lib/bmad-cache/cis/package-lock.json +2 -2
  59. package/lib/bmad-cache/cis/package.json +1 -1
  60. package/lib/bmad-cache/cis/src/module-help.csv +1 -1
  61. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +4 -7
  62. package/lib/bmad-cache/gds/README.md +3 -1
  63. package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +52 -2
  64. package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
  65. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  66. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
  67. package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-9427a146a90c00bb542cba038874bf9671ba4dc0.pack → pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack} +0 -0
  68. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
  69. package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
  70. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
  71. package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
  72. package/lib/bmad-cache/gds/package.json +1 -1
  73. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +5 -5
  74. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +5 -5
  75. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -5
  76. package/lib/bmad-cache/gds/src/module-help.csv +6 -12
  77. package/lib/bmad-cache/gds/src/module.yaml +1 -1
  78. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +97 -22
  79. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +190 -0
  80. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +99 -0
  81. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +290 -0
  82. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +190 -0
  83. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +84 -0
  84. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +319 -0
  85. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +101 -0
  86. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +1 -0
  87. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +88 -0
  88. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +124 -2
  89. package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +62 -0
  90. package/lib/bmad-cache/tea/.claude-plugin/marketplace.json +1 -1
  91. package/lib/bmad-cache/tea/.github/workflows/docs.yaml +3 -3
  92. package/lib/bmad-cache/tea/.github/workflows/quality.yaml +10 -10
  93. package/lib/bmad-cache/tea/AGENTS.md +31 -0
  94. package/lib/bmad-cache/tea/CHANGELOG.md +42 -1
  95. package/lib/bmad-cache/tea/README.md +8 -5
  96. package/lib/bmad-cache/tea/_git_preserved/hooks/commit-msg.sample +52 -2
  97. package/lib/bmad-cache/tea/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
  98. package/lib/bmad-cache/tea/_git_preserved/index +0 -0
  99. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.idx +0 -0
  100. package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-f0df537f2649464ff6c5aee241165eb9c8664227.pack → pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.pack} +0 -0
  101. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.rev +0 -0
  102. package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
  103. package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
  104. package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.19.0 +1 -0
  105. package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
  106. package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +15 -16
  107. package/lib/bmad-cache/tea/docs/explanation/knowledge-base-system.md +2 -0
  108. package/lib/bmad-cache/tea/docs/explanation/risk-based-testing.md +1 -1
  109. package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +88 -52
  110. package/lib/bmad-cache/tea/docs/explanation/testing-as-engineering.md +13 -12
  111. package/lib/bmad-cache/tea/docs/glossary/index.md +2 -2
  112. package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-for-enterprise.md +19 -18
  113. package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-with-existing-tests.md +1 -1
  114. package/lib/bmad-cache/tea/docs/how-to/workflows/run-nfr-assess.md +32 -26
  115. package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-design.md +20 -14
  116. package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +3 -3
  117. package/lib/bmad-cache/tea/docs/index.md +13 -11
  118. package/lib/bmad-cache/tea/docs/reference/commands.md +37 -13
  119. package/lib/bmad-cache/tea/docs/reference/knowledge-base.md +2 -2
  120. package/lib/bmad-cache/tea/package-lock.json +2 -2
  121. package/lib/bmad-cache/tea/package.json +1 -1
  122. package/lib/bmad-cache/tea/src/agents/bmad-tea/customize.toml +20 -15
  123. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/confidence-gate.md +73 -0
  124. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/test-quality.md +1 -0
  125. package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +2 -1
  126. package/lib/bmad-cache/tea/src/module-help.csv +2 -2
  127. package/lib/bmad-cache/tea/src/workflows/testarch/README.md +5 -4
  128. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/role-paths.yaml +1 -1
  129. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/tea-resources-index.yaml +1 -1
  130. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +2 -2
  131. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +1 -1
  132. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/certificate-template.md +1 -1
  133. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +1 -1
  134. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +1 -1
  135. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +1 -1
  136. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +1 -1
  137. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +3 -3
  138. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/checklist.md +11 -11
  139. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +4 -2
  140. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/nfr-report-template.md +5 -5
  141. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +1 -1
  142. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
  143. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01b-resume.md +1 -1
  144. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +14 -3
  145. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +7 -7
  146. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04a-subagent-security.md +4 -4
  147. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04b-subagent-performance.md +4 -4
  148. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04c-subagent-reliability.md +4 -4
  149. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04d-subagent-scalability.md +4 -4
  150. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +4 -4
  151. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +1 -1
  152. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow-plan.md +1 -1
  153. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.yaml +3 -3
  154. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/checklist.md +23 -3
  155. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +1 -1
  156. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +7 -0
  157. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +16 -2
  158. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +20 -4
  159. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +2 -0
  160. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +17 -0
  161. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +15 -0
  162. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +16 -0
  163. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +1 -1
  164. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +1 -1
  165. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +1 -1
  166. package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +1 -1
  167. package/lib/bmad-cache/tea/test/test-installation-components.js +49 -0
  168. package/lib/bmad-cache/tea/website/astro.config.mjs +2 -2
  169. package/lib/bmad-cache/wds/README.md +1 -1
  170. package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +52 -2
  171. package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
  172. package/lib/bmad-cache/wds/_git_preserved/index +0 -0
  173. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
  174. package/lib/bmad-cache/wds/_git_preserved/objects/pack/{pack-96877c1c09123cccb1f91c1412184b11d2b492ad.pack → pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack} +0 -0
  175. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
  176. package/lib/bmad-cache/wds/_git_preserved/packed-refs +1 -1
  177. package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +1 -1
  178. package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +1 -0
  179. package/lib/bmad-cache/wds/_git_preserved/shallow +1 -1
  180. package/lib/bmad-cache/wds/eslint.config.mjs +1 -1
  181. package/lib/bmad-cache/wds/package.json +1 -1
  182. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +80 -0
  183. package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +52 -0
  184. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +70 -0
  185. package/lib/bmad-cache/wds/src/module-help.csv +19 -19
  186. package/lib/bmad-cache/wds/src/module.yaml +28 -0
  187. package/lib/bmad-cache/wds/src/scripts/README.md +155 -0
  188. package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +202 -0
  189. package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +158 -0
  190. package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +229 -0
  191. package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +120 -0
  192. package/lib/bmad-cache/wds/src/scripts/wds-nav.js +201 -0
  193. package/lib/bmad-cache/wds/src/scripts/wds-validate.js +301 -0
  194. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +450 -0
  195. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +387 -0
  196. package/lib/bmad-extension/.claude-plugin/marketplace.json.template +1 -1
  197. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +2 -2
  198. package/lib/bmad.js +361 -18
  199. package/lib/installer.js +296 -26
  200. package/lib/mil498-templates/OCD.md +169 -169
  201. package/lib/mil498-templates/README.md +4 -4
  202. package/lib/mil498-templates/SDD.md +163 -163
  203. package/lib/mil498-templates/SDP.md +307 -307
  204. package/lib/mil498-templates/SRS.md +219 -219
  205. package/lib/mil498-templates/SSDD.md +154 -154
  206. package/lib/mil498-templates/SSS.md +225 -225
  207. package/lib/mil498-templates/STD.md +188 -188
  208. package/lib/profile.js +96 -5
  209. package/lib/templates/instruction-block-git.template.md +25 -0
  210. package/lib/templates/instruction-block-onprem.template.md +86 -86
  211. package/lib/templates/instruction-block-universal.template.md +29 -29
  212. package/package.json +5 -4
  213. package/scripts/build-bmad-cache.js +143 -42
  214. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
  215. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack +0 -0
  216. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
  217. package/lib/bmad-cache/bmb/_git_preserved/refs/remotes/origin/HEAD +0 -1
  218. package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +0 -1
  219. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-convert-report.py +0 -406
  220. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_generate_convert_report.py +0 -243
  221. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.idx +0 -0
  222. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.rev +0 -0
  223. package/lib/bmad-cache/cis/_git_preserved/refs/remotes/origin/HEAD +0 -1
  224. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.idx +0 -0
  225. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.rev +0 -0
  226. package/lib/bmad-cache/gds/_git_preserved/refs/remotes/origin/HEAD +0 -1
  227. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +0 -41
  228. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +0 -41
  229. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/domain-complexity.csv +0 -15
  230. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/project-types.csv +0 -11
  231. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +0 -41
  232. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +0 -41
  233. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +0 -41
  234. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +0 -41
  235. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +0 -41
  236. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +0 -15
  237. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +0 -11
  238. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.idx +0 -0
  239. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.rev +0 -0
  240. package/lib/bmad-cache/tea/_git_preserved/refs/remotes/origin/HEAD +0 -1
  241. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.idx +0 -0
  242. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.rev +0 -0
  243. package/lib/bmad-cache/wds/_git_preserved/refs/remotes/origin/HEAD +0 -1
  244. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/bmad-skill-manifest.yaml +0 -12
  245. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/bmad-skill-manifest.yaml +0 -12
  246. package/lib/bmad-cache/wds/src/workflows/wds-0-alignment-signoff/bmad-skill-manifest.yaml +0 -1
  247. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/bmad-skill-manifest.yaml +0 -1
  248. package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/bmad-skill-manifest.yaml +0 -1
  249. package/lib/bmad-cache/wds/src/workflows/wds-2-trigger-mapping/bmad-skill-manifest.yaml +0 -1
  250. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/bmad-skill-manifest.yaml +0 -1
  251. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/bmad-skill-manifest.yaml +0 -1
  252. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/bmad-skill-manifest.yaml +0 -1
  253. package/lib/bmad-cache/wds/src/workflows/wds-6-asset-generation/bmad-skill-manifest.yaml +0 -1
  254. package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/bmad-skill-manifest.yaml +0 -1
  255. package/lib/bmad-cache/wds/src/workflows/wds-8-product-evolution/bmad-skill-manifest.yaml +0 -1
  256. /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-create-gdd → gds-gdd/assets}/game-types.csv +0 -0
  257. /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-validate-gdd/data → gds-gdd/assets}/genre-complexity.csv +0 -0
@@ -0,0 +1,387 @@
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>
@@ -39,7 +39,7 @@
39
39
  "roo-code",
40
40
  "kilocode"
41
41
  ],
42
- "bmad_min_version": "6.6.0",
42
+ "bmad_min_version": "6.8.0",
43
43
  "plugins": [
44
44
  {
45
45
  "name": "ma-skills",
@@ -31,13 +31,13 @@
31
31
  "roo-code",
32
32
  "kilocode"
33
33
  ],
34
- "bmad_min_version": "6.6.0",
34
+ "bmad_min_version": "6.8.0",
35
35
  "plugins": [
36
36
  {
37
37
  "name": "ma-skills",
38
38
  "source": "./",
39
39
  "description": "ma-agents extension module providing enterprise SDLC personas and operational workflow skills.",
40
- "version": "3.12.3",
40
+ "version": "3.13.1",
41
41
  "author": {
42
42
  "name": "Alon Mayaffit"
43
43
  },