ma-agents 3.12.2 → 3.13.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 (255) hide show
  1. package/bin/cli.js +11 -6
  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 +91 -7
  199. package/lib/installer.js +28 -6
  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/templates/instruction-block-git.template.md +25 -0
  209. package/package.json +5 -4
  210. package/scripts/build-bmad-cache.js +143 -42
  211. package/skills/git-workflow-skill/skill.json +21 -21
  212. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
  213. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack +0 -0
  214. package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
  215. package/lib/bmad-cache/bmb/_git_preserved/refs/remotes/origin/HEAD +0 -1
  216. package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +0 -1
  217. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-convert-report.py +0 -406
  218. package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_generate_convert_report.py +0 -243
  219. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.idx +0 -0
  220. package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.rev +0 -0
  221. package/lib/bmad-cache/cis/_git_preserved/refs/remotes/origin/HEAD +0 -1
  222. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.idx +0 -0
  223. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.rev +0 -0
  224. package/lib/bmad-cache/gds/_git_preserved/refs/remotes/origin/HEAD +0 -1
  225. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +0 -41
  226. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +0 -41
  227. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/domain-complexity.csv +0 -15
  228. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/project-types.csv +0 -11
  229. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +0 -41
  230. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +0 -41
  231. package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +0 -41
  232. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +0 -41
  233. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +0 -41
  234. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +0 -15
  235. package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +0 -11
  236. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.idx +0 -0
  237. package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.rev +0 -0
  238. package/lib/bmad-cache/tea/_git_preserved/refs/remotes/origin/HEAD +0 -1
  239. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.idx +0 -0
  240. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.rev +0 -0
  241. package/lib/bmad-cache/wds/_git_preserved/refs/remotes/origin/HEAD +0 -1
  242. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/bmad-skill-manifest.yaml +0 -12
  243. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/bmad-skill-manifest.yaml +0 -12
  244. package/lib/bmad-cache/wds/src/workflows/wds-0-alignment-signoff/bmad-skill-manifest.yaml +0 -1
  245. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/bmad-skill-manifest.yaml +0 -1
  246. package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/bmad-skill-manifest.yaml +0 -1
  247. package/lib/bmad-cache/wds/src/workflows/wds-2-trigger-mapping/bmad-skill-manifest.yaml +0 -1
  248. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/bmad-skill-manifest.yaml +0 -1
  249. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/bmad-skill-manifest.yaml +0 -1
  250. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/bmad-skill-manifest.yaml +0 -1
  251. package/lib/bmad-cache/wds/src/workflows/wds-6-asset-generation/bmad-skill-manifest.yaml +0 -1
  252. package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/bmad-skill-manifest.yaml +0 -1
  253. package/lib/bmad-cache/wds/src/workflows/wds-8-product-evolution/bmad-skill-manifest.yaml +0 -1
  254. /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-create-gdd → gds-gdd/assets}/game-types.csv +0 -0
  255. /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-validate-gdd/data → gds-gdd/assets}/genre-complexity.csv +0 -0
@@ -0,0 +1,319 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ UX Design Validation Report — skeleton template.
4
+
5
+ This file is a starter the synthesis pass fills in directly. There is no
6
+ substitution engine. The LLM:
7
+ 1. Reads {doc_workspace}/review-rubric.md and every review-{slug}.md from
8
+ additional reviewers.
9
+ 2. Copies this skeleton.
10
+ 3. Replaces the placeholder content (everything between TEMPLATE markers)
11
+ with the consolidated review, preserving the structure and CSS.
12
+ 4. Writes the result to {doc_workspace}/validation-report.html.
13
+ 5. Writes a markdown twin to {doc_workspace}/validation-report.md.
14
+
15
+ Visual rules the LLM must preserve:
16
+ - The container width, the color tokens, the typography.
17
+ - One dimension = one collapsible <section class="dimension">.
18
+ - Verdict pill uses the verdict-* class matching its judgment.
19
+ - Severity badge uses the badge-sev-* class matching its level.
20
+ - Each extra reviewer (accessibility, adversarial, etc.) gets its own
21
+ collapsible section below the rubric dimensions.
22
+ - The footer always shows the artifact paths and timestamp.
23
+ -->
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="utf-8">
27
+ <title>UX Design Validation: TEMPLATE_UX_SPEC_NAME</title>
28
+ <style>
29
+ :root {
30
+ --bg: #fafaf9;
31
+ --surface: #ffffff;
32
+ --border: #e7e5e4;
33
+ --text: #1c1917;
34
+ --muted: #78716c;
35
+
36
+ --verdict-strong: #16a34a;
37
+ --verdict-adequate: #65a30d;
38
+ --verdict-thin: #d97706;
39
+ --verdict-broken: #dc2626;
40
+
41
+ --sev-low: #64748b;
42
+ --sev-medium: #ca8a04;
43
+ --sev-high: #ea580c;
44
+ --sev-critical: #dc2626;
45
+ }
46
+ * { box-sizing: border-box; }
47
+ html, body { margin: 0; padding: 0; }
48
+ body {
49
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Inter, system-ui, sans-serif;
50
+ background: var(--bg);
51
+ color: var(--text);
52
+ line-height: 1.6;
53
+ font-size: 15px;
54
+ }
55
+ .container { max-width: 960px; margin: 0 auto; padding: 32px 24px 64px; }
56
+
57
+ header.report-header {
58
+ display: flex;
59
+ align-items: flex-start;
60
+ justify-content: space-between;
61
+ gap: 24px;
62
+ padding-bottom: 16px;
63
+ border-bottom: 1px solid var(--border);
64
+ margin-bottom: 24px;
65
+ }
66
+ .title h1 { margin: 0; font-size: 22px; font-weight: 600; letter-spacing: -0.01em; }
67
+ .title .subtitle { color: var(--muted); font-size: 13px; margin-top: 4px; font-family: ui-monospace, "SF Mono", Menlo, monospace; }
68
+
69
+ .synthesis {
70
+ background: var(--surface);
71
+ border: 1px solid var(--border);
72
+ border-left: 3px solid var(--muted);
73
+ border-radius: 8px;
74
+ padding: 18px 22px;
75
+ margin-bottom: 24px;
76
+ font-size: 15.5px;
77
+ }
78
+ .synthesis p { margin: 0 0 10px; }
79
+ .synthesis p:last-child { margin-bottom: 0; }
80
+
81
+ .dimension-summary {
82
+ display: grid;
83
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
84
+ gap: 10px;
85
+ margin-bottom: 24px;
86
+ }
87
+ .dim-card {
88
+ background: var(--surface);
89
+ border: 1px solid var(--border);
90
+ border-radius: 8px;
91
+ padding: 12px 14px;
92
+ }
93
+ .dim-card .dim-name { font-size: 13px; color: var(--muted); margin-bottom: 6px; }
94
+ .dim-card .dim-verdict { font-size: 14px; font-weight: 600; }
95
+
96
+ section.dimension, section.reviewer-section { margin-bottom: 14px; }
97
+ section.dimension details, section.reviewer-section details {
98
+ background: var(--surface);
99
+ border: 1px solid var(--border);
100
+ border-radius: 8px;
101
+ overflow: hidden;
102
+ }
103
+ section summary {
104
+ padding: 14px 20px;
105
+ cursor: pointer;
106
+ user-select: none;
107
+ list-style: none;
108
+ display: flex;
109
+ align-items: center;
110
+ gap: 12px;
111
+ }
112
+ section summary::-webkit-details-marker { display: none; }
113
+ section summary::before {
114
+ content: "▸";
115
+ display: inline-block;
116
+ color: var(--muted);
117
+ transition: transform 0.15s ease;
118
+ }
119
+ section details[open] summary::before { transform: rotate(90deg); }
120
+ section summary h2 {
121
+ display: inline;
122
+ margin: 0;
123
+ font-size: 16px;
124
+ font-weight: 600;
125
+ letter-spacing: -0.005em;
126
+ flex: 1;
127
+ }
128
+ .verdict-pill {
129
+ font-size: 11px;
130
+ padding: 3px 10px;
131
+ border-radius: 999px;
132
+ font-weight: 600;
133
+ text-transform: uppercase;
134
+ letter-spacing: 0.04em;
135
+ color: white;
136
+ }
137
+ .verdict-strong { background: var(--verdict-strong); }
138
+ .verdict-adequate { background: var(--verdict-adequate); }
139
+ .verdict-thin { background: var(--verdict-thin); }
140
+ .verdict-broken { background: var(--verdict-broken); }
141
+
142
+ .dim-body { padding: 4px 20px 18px; }
143
+ .dim-judgment { color: var(--text); font-size: 14.5px; }
144
+ .dim-judgment p { margin: 0 0 10px; }
145
+
146
+ .findings-list { padding: 0 20px 4px; }
147
+ article.finding {
148
+ padding: 14px 0;
149
+ border-top: 1px solid var(--border);
150
+ }
151
+ article.finding:first-child { border-top: none; }
152
+ article.finding header {
153
+ display: flex;
154
+ align-items: center;
155
+ gap: 10px;
156
+ flex-wrap: wrap;
157
+ margin-bottom: 6px;
158
+ }
159
+ .badge {
160
+ font-size: 10.5px;
161
+ padding: 3px 8px;
162
+ border-radius: 4px;
163
+ font-weight: 600;
164
+ text-transform: uppercase;
165
+ letter-spacing: 0.04em;
166
+ line-height: 1.4;
167
+ }
168
+ .badge-sev-low { background: rgba(100, 116, 139, 0.12); color: var(--sev-low); }
169
+ .badge-sev-medium { background: rgba(202, 138, 4, 0.14); color: var(--sev-medium); }
170
+ .badge-sev-high { background: rgba(234, 88, 12, 0.14); color: var(--sev-high); }
171
+ .badge-sev-critical { background: rgba(220, 38, 38, 0.14); color: var(--sev-critical); }
172
+ .finding-title { margin: 0; font-size: 15px; font-weight: 500; flex: 1; min-width: 200px; }
173
+ .finding-location { font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: 12.5px; color: var(--muted); }
174
+ .finding-note, .finding-fix { margin-top: 6px; font-size: 14px; }
175
+ .finding-fix strong { color: var(--muted); font-weight: 500; }
176
+
177
+ .reviewer-source {
178
+ font-size: 12px;
179
+ color: var(--muted);
180
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
181
+ }
182
+
183
+ .mechanical {
184
+ background: var(--surface);
185
+ border: 1px solid var(--border);
186
+ border-radius: 8px;
187
+ padding: 16px 20px;
188
+ margin-top: 24px;
189
+ font-size: 14px;
190
+ }
191
+ .mechanical h3 { margin: 0 0 10px; font-size: 14px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: 0.04em; }
192
+ .mechanical ul { margin: 0; padding-left: 20px; }
193
+ .mechanical li { margin-bottom: 4px; color: var(--text); }
194
+
195
+ footer.report-footer {
196
+ margin-top: 40px;
197
+ padding-top: 16px;
198
+ border-top: 1px solid var(--border);
199
+ font-size: 12px;
200
+ color: var(--muted);
201
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
202
+ }
203
+ footer .meta { display: flex; gap: 24px; flex-wrap: wrap; }
204
+ </style>
205
+ </head>
206
+ <body>
207
+ <div class="container">
208
+
209
+ <!-- TEMPLATE: header. Fill ux spec name and ux spec path. No overall grade —
210
+ per-category verdicts and severity counts below carry the picture. -->
211
+ <header class="report-header">
212
+ <div class="title">
213
+ <h1>TEMPLATE_UX_SPEC_NAME — UX Design Validation Report</h1>
214
+ <div class="subtitle">TEMPLATE_UX_SPEC_PATH</div>
215
+ </div>
216
+ </header>
217
+
218
+ <!-- TEMPLATE: overall synthesis paragraphs. Lift directly from
219
+ review-rubric.md "Overall verdict" section; expand if extra reviewers
220
+ (accessibility, adversarial, etc.) materially shift the picture.
221
+ Wrap each paragraph in <p>. -->
222
+ <div class="synthesis">
223
+ <p>TEMPLATE_SYNTHESIS_PARAGRAPH</p>
224
+ </div>
225
+
226
+ <!-- TEMPLATE: dimension summary cards. One per rubric category, in this
227
+ canonical order (from references/validate.md):
228
+ 1. Flow coverage
229
+ 2. Token completeness
230
+ 3. Component coverage
231
+ 4. State coverage
232
+ 5. Visual reference coverage
233
+ 6. Bloat & overspecification
234
+ 7. Inheritance discipline
235
+ 8. Shape fit
236
+ The dim-verdict text uses one of: strong | adequate | thin | broken. -->
237
+ <div class="dimension-summary">
238
+ <div class="dim-card">
239
+ <div class="dim-name">TEMPLATE_CATEGORY_NAME</div>
240
+ <div class="dim-verdict" style="color: var(--verdict-TEMPLATE_VERDICT)">TEMPLATE_VERDICT_TEXT</div>
241
+ </div>
242
+ <!-- repeat for each of the eight rubric categories -->
243
+ </div>
244
+
245
+ <!-- TEMPLATE: one section per rubric category, same canonical order as the
246
+ summary cards above. Skip a category entirely if the rubric review
247
+ marked it n/a for this UX spec. Open the section by default if verdict
248
+ is thin or broken. -->
249
+ <section class="dimension">
250
+ <details open>
251
+ <summary>
252
+ <h2>TEMPLATE_CATEGORY_NAME</h2>
253
+ <span class="verdict-pill verdict-TEMPLATE_VERDICT">TEMPLATE_VERDICT_TEXT</span>
254
+ </summary>
255
+ <div class="dim-body">
256
+ <div class="dim-judgment">
257
+ <p>TEMPLATE_DIMENSION_JUDGMENT</p>
258
+ </div>
259
+ </div>
260
+ <div class="findings-list">
261
+ <!-- TEMPLATE: zero or more findings -->
262
+ <article class="finding">
263
+ <header>
264
+ <span class="badge badge-sev-TEMPLATE_SEVERITY">TEMPLATE_SEVERITY</span>
265
+ <h3 class="finding-title">TEMPLATE_FINDING_TITLE</h3>
266
+ <span class="finding-location">TEMPLATE_LOCATION</span>
267
+ </header>
268
+ <div class="finding-note">TEMPLATE_FINDING_NOTE</div>
269
+ <div class="finding-fix"><strong>Fix:</strong> TEMPLATE_SUGGESTED_FIX</div>
270
+ </article>
271
+ </div>
272
+ </details>
273
+ </section>
274
+
275
+ <!-- TEMPLATE: one section per extra reviewer that ran (accessibility,
276
+ adversarial, brand-conformance, etc.). Skip this block entirely if
277
+ only the rubric walker ran. -->
278
+ <section class="reviewer-section">
279
+ <details>
280
+ <summary>
281
+ <h2>Accessibility review</h2>
282
+ <span class="reviewer-source">TEMPLATE_REVIEWER_SOURCE_FILE</span>
283
+ </summary>
284
+ <div class="dim-body">
285
+ <div class="dim-judgment">
286
+ <p>TEMPLATE_REVIEWER_PREAMBLE</p>
287
+ </div>
288
+ </div>
289
+ <div class="findings-list">
290
+ <article class="finding">
291
+ <header>
292
+ <span class="badge badge-sev-TEMPLATE_SEVERITY">TEMPLATE_SEVERITY</span>
293
+ <h3 class="finding-title">TEMPLATE_FINDING_TITLE</h3>
294
+ <span class="finding-location">TEMPLATE_LOCATION</span>
295
+ </header>
296
+ <div class="finding-note">TEMPLATE_FINDING_NOTE</div>
297
+ <div class="finding-fix"><strong>Fix:</strong> TEMPLATE_SUGGESTED_FIX</div>
298
+ </article>
299
+ </div>
300
+ </details>
301
+ </section>
302
+
303
+ <!-- TEMPLATE: mechanical notes — short, bulleted. Skip if there are none. -->
304
+ <div class="mechanical">
305
+ <h3>Mechanical notes</h3>
306
+ <ul>
307
+ <li>TEMPLATE_MECHANICAL_NOTE</li>
308
+ </ul>
309
+ </div>
310
+
311
+ <footer class="report-footer">
312
+ <div class="meta">
313
+ <span>Rubric: TEMPLATE_RUBRIC_PATH</span>
314
+ <span>Generated: TEMPLATE_TIMESTAMP</span>
315
+ </div>
316
+ </footer>
317
+ </div>
318
+ </body>
319
+ </html>
@@ -0,0 +1,101 @@
1
+ # DO NOT EDIT -- overwritten on every update.
2
+ #
3
+ # Workflow customization surface for gds-ux.
4
+ # Overrides:
5
+ # {project-root}/_bmad/custom/gds-ux.toml (team)
6
+ # {project-root}/_bmad/custom/gds-ux.user.toml (personal)
7
+ # Merge rules: scalars override, arrays append.
8
+
9
+ [workflow]
10
+
11
+ # Steps to run before/after standard activation. Append-only.
12
+ activation_steps_prepend = []
13
+ activation_steps_append = []
14
+
15
+ # Persistent facts loaded at activation and kept in mind for the run.
16
+ # Entries: literal sentence, `skill:NAME`, or `file:PATH` (glob ok).
17
+ persistent_facts = [
18
+ "file:{project-root}/**/project-context.md",
19
+ ]
20
+
21
+ # Runs at workflow completion. String or array of instructions.
22
+ on_complete = ""
23
+
24
+ # Reference DESIGN.md spines the distillation subagent reads to anchor shape
25
+ # and editorial richness. Convention-compliant with the Google Labs DESIGN.md
26
+ # spec (https://github.com/google-labs-code/design.md). Append entries via
27
+ # override TOML to seed a studio-specific canonical aesthetic.
28
+ # Each entry: `file:PATH` (or bare relative path, resolved skill-relative).
29
+ design_md_examples = [
30
+ "assets/design-example-game.md",
31
+ "assets/design-example-mobile.md",
32
+ "assets/design-example-editorial.md",
33
+ ]
34
+
35
+ # Reference EXPERIENCE.md spines for the behavioral/flow/IA layer. Each entry:
36
+ # `file:PATH` (or bare relative path, resolved skill-relative).
37
+ experience_md_examples = [
38
+ "assets/experience-example-game.md",
39
+ "assets/experience-example-mobile.md",
40
+ ]
41
+
42
+ # Design handoff targets — external tools that can take over the design /
43
+ # visual identity work. The developer runs the tool externally and saves
44
+ # outputs (whatever the tool produces — DESIGN.md, Figma files, UI components,
45
+ # HTML mocks) to {doc_workspace}.
46
+ # Each entry: `tool:NAME: <directive>`, `skill:NAME`, or plain-text descriptor.
47
+ # Default: Google Stitch (emits DESIGN.md + per-screen HTML). Other producers:
48
+ # Vercel v0, Figma, Galileo, Anima, internal HUD generators.
49
+ design_handoffs = [
50
+ "Google Stitch (https://stitch.withgoogle.com) — emits DESIGN.md + per-screen HTML. Paste assembled prompt; save outputs to {doc_workspace}.",
51
+ ]
52
+
53
+ # HTML skeleton filled in by the validation synthesis pass.
54
+ validation_report_template = "assets/validation-report-template.html"
55
+
56
+ # Run folder. DESIGN.md, EXPERIENCE.md, .decision-log.md, .working/
57
+ # (creative-tool artifacts), imports/ (developer-supplied screens / mood
58
+ # boards / Figma exports / HUD sketches), optional mockups/ and wireframes/
59
+ # (promoted artifacts), optional validation-report.* all land inside
60
+ # {ux_output_path}/{run_folder_pattern}/.
61
+ ux_output_path = "{planning_artifacts}/ux-designs"
62
+ run_folder_pattern = "ux-{project_name}-{date}"
63
+
64
+ # Creative tools registry. Collaborative renderers invoked on demand during
65
+ # Discovery and at Finalize. Entry forms: `file:PATH`, `skill:NAME`,
66
+ # `tool:MCP_TOOL: <directive>`, or plain text. Defaults ship for HTML color
67
+ # themes, HTML design directions, Excalidraw wireframes (Discovery), and
68
+ # 1:1 HTML key-screen mockups (Finalize). Working artifacts land in
69
+ # {doc_workspace}/.working/; finalize promotes those with lasting reference
70
+ # value to mockups/ or wireframes/. See references/creative-tools.md.
71
+ creative_tools = [
72
+ "file:assets/color-themes.md",
73
+ "file:assets/design-directions.md",
74
+ "file:assets/excalidraw-wireframe.md",
75
+ "file:assets/key-screens.md",
76
+ ]
77
+
78
+ # Polish passes applied to DESIGN.md and EXPERIENCE.md at finalize.
79
+ # Entries: `skill:NAME`, `file:PATH`, or plain text directive.
80
+ # Suggested order: structural → content/voice → prose mechanics.
81
+ doc_standards = [
82
+ "skill:bmad-editorial-review-structure",
83
+ "skill:bmad-editorial-review-prose",
84
+ ]
85
+
86
+ # Information retrieval registry. Consulted on demand when the conversation
87
+ # surfaces a matching need. Distinct from creative_tools (artifact production).
88
+ # Example: "When researching HUD patterns, consult studio:ui_pattern_library."
89
+ external_sources = []
90
+
91
+ # Routes outputs beyond local files at Finalize. Returned URLs/IDs surfaced
92
+ # to the user. Unavailable tools skipped and flagged.
93
+ # Example: "Upload DESIGN.md to Confluence via corp:confluence_upload (space_key='DESIGN')."
94
+ external_handoffs = []
95
+
96
+ # Reviewers spawned at Finalize step 4 and at Validate intent, alongside
97
+ # the rubric walker. Entries: `skill:NAME`, `file:PATH`, or plain text.
98
+ # Common ad-hoc add (judged by the skill): accessibility-focused reviewer
99
+ # for commercial / wide-audience titles; input-scheme or HUD-legibility lens
100
+ # per target platform.
101
+ finalize_reviewers = []
@@ -464,6 +464,7 @@ decision_rules:
464
464
  - rapid_prototype: "Godot"
465
465
  - web_browser_target: "Godot (HTML5), Phaser, or PlayCanvas"
466
466
  - vr_xr: "Unity (XR Toolkit) or Unreal (OpenXR)"
467
+ - roblox_platform_target: "Roblox Studio — platform handles deployment, networking, and avatar system"
467
468
 
468
469
  networking_model:
469
470
  if_requirements_include:
@@ -18,6 +18,19 @@ decision_categories:
18
18
  pairs_with: ["GDScript", "C#", "GDExtension", "Godot Physics", "GodotSteam"]
19
19
  phaser:
20
20
  pairs_with: ["JavaScript", "TypeScript", "Matter.js", "Arcade Physics"]
21
+ roblox:
22
+ pairs_with:
23
+ [
24
+ "Luau",
25
+ "DataStoreService",
26
+ "MemoryStoreService",
27
+ "RemoteEvents",
28
+ "TweenService",
29
+ "UserInputService",
30
+ "ContextActionService",
31
+ "Rojo",
32
+ "Wally",
33
+ ]
21
34
  bevy:
22
35
  pairs_with: ["Rust", "ECS", "wgpu"]
23
36
  monogame:
@@ -42,6 +55,8 @@ decision_categories:
42
55
  pairs_with: ["Godot", "OpenGL", "mobile", "web export"]
43
56
  custom_2d:
44
57
  pairs_with: ["Phaser", "SDL", "sprite batching", "pixel art"]
58
+ roblox_rendering:
59
+ pairs_with: ["Roblox", "fixed pipeline (platform-managed)", "SurfaceAppearance", "Atmosphere", "Lighting", "StreamingEnabled"]
45
60
 
46
61
  physics_system:
47
62
  triggers: ["physics", "collision", "rigid body", "character controller", "raycasting", "platformer movement"]
@@ -58,6 +73,8 @@ decision_categories:
58
73
  pairs_with: ["platformers", "raycasting", "kinematic bodies"]
59
74
  deterministic:
60
75
  pairs_with: ["rollback netcode", "fixed-point math", "lockstep multiplayer"]
76
+ roblox_physics:
77
+ pairs_with: ["Roblox", "Humanoid", "BasePart constraints", "Workspace.Gravity", "client-authoritative character movement"]
61
78
 
62
79
  audio_system:
63
80
  triggers: ["audio", "music", "sound effects", "SFX", "adaptive music", "spatial audio", "voice"]
@@ -70,6 +87,8 @@ decision_categories:
70
87
  pairs_with: ["Unity", "Unreal", "Godot (via plugin)", "adaptive music", "large projects"]
71
88
  wwise:
72
89
  pairs_with: ["Unity", "Unreal", "AAA projects", "spatial audio", "large sound libraries"]
90
+ roblox_audio:
91
+ pairs_with: ["Roblox", "SoundService", "Sound/SoundGroup instances", "AudioAnalyzer", "spatial 3D audio via RollOffMode"]
73
92
 
74
93
  networking:
75
94
  triggers: ["multiplayer", "online", "netcode", "co-op", "PvP", "lobby", "matchmaking", "dedicated server"]
@@ -92,6 +111,17 @@ decision_categories:
92
111
  pairs_with: ["Godot", "MultiplayerAPI", "ENet", "WebSocket"]
93
112
  custom_udp:
94
113
  pairs_with: ["ENet", "LiteNetLib", "GameServer.io", "custom protocol"]
114
+ roblox_networking:
115
+ pairs_with:
116
+ [
117
+ "Roblox",
118
+ "RemoteEvent",
119
+ "RemoteFunction",
120
+ "server-authoritative (mandatory)",
121
+ "FilteringEnabled",
122
+ "MemoryStoreService for cross-server",
123
+ "MessagingService",
124
+ ]
95
125
 
96
126
  input_system:
97
127
  triggers: ["input", "controls", "controller", "gamepad", "keyboard", "touch", "gesture", "rebinding"]
@@ -108,6 +138,9 @@ decision_categories:
108
138
  pairs_with: ["Unity", "advanced controller support", "Steam Input"]
109
139
  custom_buffer:
110
140
  pairs_with: ["fighting games", "input buffering", "command parsing"]
141
+ roblox_input:
142
+ pairs_with:
143
+ ["Roblox", "UserInputService", "ContextActionService", "mobile touch (automatic)", "gamepad (Xbox controller supported)"]
111
144
 
112
145
  ai_system:
113
146
  triggers: ["AI", "enemies", "NPC", "behavior", "pathfinding", "navigation", "companion"]
@@ -142,6 +175,16 @@ decision_categories:
142
175
  pairs_with: ["Steam Cloud", "PSN", "Xbox Cloud", "iCloud", "Google Play"]
143
176
  custom_binary:
144
177
  pairs_with: ["performance-sensitive", "large worlds", "anti-tamper"]
178
+ roblox_datastore:
179
+ pairs_with:
180
+ [
181
+ "Roblox",
182
+ "DataStoreService",
183
+ "UpdateAsync",
184
+ "MemoryStoreService session locking",
185
+ "in-memory cache pattern",
186
+ "BindToClose flush",
187
+ ]
145
188
 
146
189
  ui_framework:
147
190
  triggers: ["UI", "HUD", "menu", "inventory screen", "dialogue box", "health bar", "minimap"]
@@ -158,6 +201,9 @@ decision_categories:
158
201
  pairs_with: ["Godot", "Control nodes", "themes", "containers"]
159
202
  imgui:
160
203
  pairs_with: ["debug tools", "dev UI", "any engine via binding"]
204
+ roblox_gui:
205
+ pairs_with:
206
+ ["Roblox", "ScreenGui", "PlayerGui", "vanilla Roblox UI", "Fusion (community reactive)", "Roact (community declarative)"]
161
207
 
162
208
  asset_pipeline:
163
209
  triggers: ["assets", "textures", "models", "sprites", "animation", "import", "asset bundles", "streaming"]
@@ -172,6 +218,8 @@ decision_categories:
172
218
  pairs_with: ["Unreal", "async loading", "streaming levels", "pak files"]
173
219
  godot_resource_loader:
174
220
  pairs_with: ["Godot", "ResourceLoader", "threaded loading", "PCK files"]
221
+ roblox_assets:
222
+ pairs_with: ["Roblox", "Creator Store", "ContentProvider", "StreamingEnabled", "ReplicatedStorage vs ServerStorage split"]
175
223
 
176
224
  deployment_platform:
177
225
  triggers: ["platform", "target", "build", "export", "Steam", "console", "mobile", "web"]
@@ -190,6 +238,17 @@ decision_categories:
190
238
  pairs_with: ["WebGL", "WebAssembly", "itch.io", "Newgrounds"]
191
239
  vr_headset:
192
240
  pairs_with: ["OpenXR", "Meta SDK", "SteamVR", "platform store"]
241
+ roblox_platform:
242
+ pairs_with:
243
+ [
244
+ "Roblox handles all deployment",
245
+ "PC",
246
+ "mobile iOS/Android",
247
+ "Xbox",
248
+ "VR (Meta Quest)",
249
+ "no App Store submission required",
250
+ "Robux monetization",
251
+ ]
193
252
 
194
253
  # Opinionated stack combinations for common game types
195
254
  common_stacks:
@@ -223,6 +282,21 @@ common_stacks:
223
282
  components: ["Godot", "GDScript or C#", "Forward+ renderer", "NavigationServer", "Jolt Physics"]
224
283
  good_for: "Mid-scope 3D games, open source priority, multi-platform"
225
284
 
285
+ roblox_experience:
286
+ name: "Roblox Experience"
287
+ components:
288
+ [
289
+ "Roblox Studio",
290
+ "Luau",
291
+ "DataStoreService + MemoryStoreService",
292
+ "RemoteEvents/RemoteFunctions",
293
+ "UserInputService/ContextActionService",
294
+ "SoundService",
295
+ "Rojo (version control)",
296
+ "Wally (packages)",
297
+ ]
298
+ good_for: "Social games, multiplayer experiences, UGC-driven games, games targeting the Roblox platform"
299
+
226
300
  web_browser_game:
227
301
  name: "Browser/HTML5 Game"
228
302
  components: ["Phaser or Godot HTML5", "JavaScript/TypeScript", "WebGL", "Howler.js for audio"]
@@ -294,6 +368,20 @@ starter_templates:
294
368
  decisions_provided: ["Phaser framework", "TypeScript option", "Vite bundler", "Arcade Physics"]
295
369
  good_for: ["Browser games", "2D web games", "game jams"]
296
370
 
371
+ roblox_new_place:
372
+ name: "Roblox New Place"
373
+ command_search: "Roblox Studio → New → Baseplate (or your template of choice)"
374
+ decisions_provided:
375
+ [
376
+ "Roblox engine",
377
+ "Luau language",
378
+ "server-authoritative networking (mandatory)",
379
+ "DataStoreService persistence",
380
+ "platform-managed deployment",
381
+ "Roblox avatar system",
382
+ ]
383
+ good_for: ["Roblox platform games", "multiplayer experiences", "social games", "UGC games"]
384
+
297
385
  bevy_default:
298
386
  name: "Bevy Default"
299
387
  command_search: "cargo init && cargo add bevy"