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.
- package/bin/cli.js +11 -6
- package/docs/architecture.md +18 -0
- package/lib/bmad-cache/bmb/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/hooks/commit-msg.sample +52 -2
- package/lib/bmad-cache/bmb/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
- package/lib/bmad-cache/bmb/_git_preserved/index +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.pack +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-8f8b045fef5af6911495cf3b2a89f1ed75e120f7.rev +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/bmb/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/bmb/package-lock.json +2 -2
- package/lib/bmad-cache/bmb/package.json +1 -1
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/assets/module-help.csv +1 -1
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/merge-config.py +33 -0
- package/lib/bmad-cache/bmb/samples/bmad-agent-dream-weaver/scripts/merge-help-csv.py +28 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/assets/module-help.csv +1 -1
- package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/cleanup-legacy.py +28 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-config.py +33 -0
- package/lib/bmad-cache/bmb/samples/sample-module-setup/scripts/merge-help-csv.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/assets/module-help.csv +1 -1
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/cleanup-legacy.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-config.py +33 -0
- package/lib/bmad-cache/bmb/skills/bmad-bmb-setup/scripts/merge-help-csv.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/assets/Dockerfile +29 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/docker_setup.py +115 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/generate_report.py +184 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/pty_runner.py +171 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_evals.py +492 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/run_triggers.py +366 -0
- package/lib/bmad-cache/bmb/skills/bmad-eval-runner/scripts/utils.py +260 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/assets/module-help.csv +1 -1
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/cleanup-legacy.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-config.py +33 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/setup-skill-template/scripts/merge-help-csv.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-config.py +33 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/assets/standalone-module-template/merge-help-csv.py +28 -0
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/tests/test-validate-module.py +74 -1
- package/lib/bmad-cache/bmb/skills/bmad-module-builder/scripts/validate-module.py +24 -13
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/assets/sample-customize-product-brief.toml +48 -33
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/extract-report-json.py +287 -0
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-html-report.py +57 -8
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/prepass-prompt-metrics.py +7 -7
- package/lib/bmad-cache/bmb/skills/module-help.csv +1 -1
- package/lib/bmad-cache/bmb/website/public/img/eval-test-types.png +0 -0
- package/lib/bmad-cache/cache-manifest.json +17 -18
- package/lib/bmad-cache/cis/_git_preserved/hooks/commit-msg.sample +52 -2
- package/lib/bmad-cache/cis/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
- package/lib/bmad-cache/cis/_git_preserved/index +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/{pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.pack → pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.pack} +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-18c8290560a98bcb7bf0676e6cc9b2ac5ca2823e.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/cis/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/cis/_git_preserved/refs/tags/v0.2.1 +1 -0
- package/lib/bmad-cache/cis/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/cis/package-lock.json +2 -2
- package/lib/bmad-cache/cis/package.json +1 -1
- package/lib/bmad-cache/cis/src/module-help.csv +1 -1
- package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +4 -7
- package/lib/bmad-cache/gds/README.md +3 -1
- package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +52 -2
- package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
- package/lib/bmad-cache/gds/_git_preserved/index +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/{pack-9427a146a90c00bb542cba038874bf9671ba4dc0.pack → pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack} +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/gds/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/gds/package.json +1 -1
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +5 -5
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +5 -5
- package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -5
- package/lib/bmad-cache/gds/src/module-help.csv +6 -12
- package/lib/bmad-cache/gds/src/module.yaml +1 -1
- package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +97 -22
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +190 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +99 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +290 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +190 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +84 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +319 -0
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +101 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +1 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +88 -0
- package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +124 -2
- package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +62 -0
- package/lib/bmad-cache/tea/.claude-plugin/marketplace.json +1 -1
- package/lib/bmad-cache/tea/.github/workflows/docs.yaml +3 -3
- package/lib/bmad-cache/tea/.github/workflows/quality.yaml +10 -10
- package/lib/bmad-cache/tea/AGENTS.md +31 -0
- package/lib/bmad-cache/tea/CHANGELOG.md +42 -1
- package/lib/bmad-cache/tea/README.md +8 -5
- package/lib/bmad-cache/tea/_git_preserved/hooks/commit-msg.sample +52 -2
- package/lib/bmad-cache/tea/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
- package/lib/bmad-cache/tea/_git_preserved/index +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/{pack-f0df537f2649464ff6c5aee241165eb9c8664227.pack → pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.pack} +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-9e4197e37df7763dd7a05c2965ee921dfd2eb617.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/tea/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/tea/_git_preserved/refs/tags/v1.19.0 +1 -0
- package/lib/bmad-cache/tea/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/tea/docs/explanation/engagement-models.md +15 -16
- package/lib/bmad-cache/tea/docs/explanation/knowledge-base-system.md +2 -0
- package/lib/bmad-cache/tea/docs/explanation/risk-based-testing.md +1 -1
- package/lib/bmad-cache/tea/docs/explanation/tea-overview.md +88 -52
- package/lib/bmad-cache/tea/docs/explanation/testing-as-engineering.md +13 -12
- package/lib/bmad-cache/tea/docs/glossary/index.md +2 -2
- package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-for-enterprise.md +19 -18
- package/lib/bmad-cache/tea/docs/how-to/brownfield/use-tea-with-existing-tests.md +1 -1
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-nfr-assess.md +32 -26
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-test-design.md +20 -14
- package/lib/bmad-cache/tea/docs/how-to/workflows/run-trace.md +3 -3
- package/lib/bmad-cache/tea/docs/index.md +13 -11
- package/lib/bmad-cache/tea/docs/reference/commands.md +37 -13
- package/lib/bmad-cache/tea/docs/reference/knowledge-base.md +2 -2
- package/lib/bmad-cache/tea/package-lock.json +2 -2
- package/lib/bmad-cache/tea/package.json +1 -1
- package/lib/bmad-cache/tea/src/agents/bmad-tea/customize.toml +20 -15
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/confidence-gate.md +73 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/knowledge/test-quality.md +1 -0
- package/lib/bmad-cache/tea/src/agents/bmad-tea/resources/tea-index.csv +2 -1
- package/lib/bmad-cache/tea/src/module-help.csv +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/README.md +5 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/role-paths.yaml +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/data/tea-resources-index.yaml +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-01.md +2 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/steps-c/step-04-session-07.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-teach-me-testing/templates/certificate-template.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-atdd/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-automate/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-ci/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-framework/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/SKILL.md +3 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/checklist.md +11 -11
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/instructions.md +4 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/nfr-report-template.md +5 -5
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01-load-context.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-01b-resume.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-02-define-thresholds.md +14 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04-evaluate-and-score.md +7 -7
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04a-subagent-security.md +4 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04b-subagent-performance.md +4 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04c-subagent-reliability.md +4 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04d-subagent-scalability.md +4 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-04e-aggregate-nfr.md +4 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/steps-c/step-05-generate-report.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow-plan.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-nfr/workflow.yaml +3 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/checklist.md +23 -3
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-02-load-context.md +7 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-03-risk-and-testability.md +16 -2
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-04-coverage-plan.md +20 -4
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/steps-c/step-05-generate-output.md +2 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-architecture-template.md +17 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-qa-template.md +15 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-design/test-design-template.md +16 -0
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-test-review/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/checklist.md +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/resources/tea-index.csv +1 -1
- package/lib/bmad-cache/tea/src/workflows/testarch/bmad-testarch-trace/trace-template.md +1 -1
- package/lib/bmad-cache/tea/test/test-installation-components.js +49 -0
- package/lib/bmad-cache/tea/website/astro.config.mjs +2 -2
- package/lib/bmad-cache/wds/README.md +1 -1
- package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +52 -2
- package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +2 -8
- package/lib/bmad-cache/wds/_git_preserved/index +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/{pack-96877c1c09123cccb1f91c1412184b11d2b492ad.pack → pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack} +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
- package/lib/bmad-cache/wds/_git_preserved/packed-refs +1 -1
- package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +1 -1
- package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +1 -0
- package/lib/bmad-cache/wds/_git_preserved/shallow +1 -1
- package/lib/bmad-cache/wds/eslint.config.mjs +1 -1
- package/lib/bmad-cache/wds/package.json +1 -1
- package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +80 -0
- package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +52 -0
- package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +70 -0
- package/lib/bmad-cache/wds/src/module-help.csv +19 -19
- package/lib/bmad-cache/wds/src/module.yaml +28 -0
- package/lib/bmad-cache/wds/src/scripts/README.md +155 -0
- package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +202 -0
- package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +158 -0
- package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +229 -0
- package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +120 -0
- package/lib/bmad-cache/wds/src/scripts/wds-nav.js +201 -0
- package/lib/bmad-cache/wds/src/scripts/wds-validate.js +301 -0
- package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +450 -0
- package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +387 -0
- package/lib/bmad-extension/.claude-plugin/marketplace.json.template +1 -1
- package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +2 -2
- package/lib/bmad.js +91 -7
- package/lib/installer.js +28 -6
- package/lib/mil498-templates/OCD.md +169 -169
- package/lib/mil498-templates/README.md +4 -4
- package/lib/mil498-templates/SDD.md +163 -163
- package/lib/mil498-templates/SDP.md +307 -307
- package/lib/mil498-templates/SRS.md +219 -219
- package/lib/mil498-templates/SSDD.md +154 -154
- package/lib/mil498-templates/SSS.md +225 -225
- package/lib/mil498-templates/STD.md +188 -188
- package/lib/templates/instruction-block-git.template.md +25 -0
- package/package.json +5 -4
- package/scripts/build-bmad-cache.js +143 -42
- package/skills/git-workflow-skill/skill.json +21 -21
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.idx +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.pack +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/objects/pack/pack-6ecd9fc6445b1281449c5ec49a6c5794708e662e.rev +0 -0
- package/lib/bmad-cache/bmb/_git_preserved/refs/remotes/origin/HEAD +0 -1
- package/lib/bmad-cache/bmb/_git_preserved/refs/tags/v1.7.0 +0 -1
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/generate-convert-report.py +0 -406
- package/lib/bmad-cache/bmb/skills/bmad-workflow-builder/scripts/tests/test_generate_convert_report.py +0 -243
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.idx +0 -0
- package/lib/bmad-cache/cis/_git_preserved/objects/pack/pack-42ffc048f54e58ce94c6331bc6be97ebbb7936f2.rev +0 -0
- package/lib/bmad-cache/cis/_git_preserved/refs/remotes/origin/HEAD +0 -1
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.idx +0 -0
- package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-9427a146a90c00bb542cba038874bf9671ba4dc0.rev +0 -0
- package/lib/bmad-cache/gds/_git_preserved/refs/remotes/origin/HEAD +0 -1
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-gdd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/domain-complexity.csv +0 -15
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-prd/data/project-types.csv +0 -11
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-ux-design/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-gdd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-edit-prd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-gdd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/customize.toml +0 -41
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/domain-complexity.csv +0 -15
- package/lib/bmad-cache/gds/src/workflows/2-design/gds-validate-prd/data/project-types.csv +0 -11
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.idx +0 -0
- package/lib/bmad-cache/tea/_git_preserved/objects/pack/pack-f0df537f2649464ff6c5aee241165eb9c8664227.rev +0 -0
- package/lib/bmad-cache/tea/_git_preserved/refs/remotes/origin/HEAD +0 -1
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.idx +0 -0
- package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-96877c1c09123cccb1f91c1412184b11d2b492ad.rev +0 -0
- package/lib/bmad-cache/wds/_git_preserved/refs/remotes/origin/HEAD +0 -1
- package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/bmad-skill-manifest.yaml +0 -12
- package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/bmad-skill-manifest.yaml +0 -12
- package/lib/bmad-cache/wds/src/workflows/wds-0-alignment-signoff/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-2-trigger-mapping/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-6-asset-generation/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/bmad-skill-manifest.yaml +0 -1
- package/lib/bmad-cache/wds/src/workflows/wds-8-product-evolution/bmad-skill-manifest.yaml +0 -1
- /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-create-gdd → gds-gdd/assets}/game-types.csv +0 -0
- /package/lib/bmad-cache/gds/src/workflows/2-design/{gds-validate-gdd/data → gds-gdd/assets}/genre-complexity.csv +0 -0
package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html
ADDED
|
@@ -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:
|
package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml
CHANGED
|
@@ -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"
|