ma-agents 3.18.0-beta.2 → 3.18.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.js +29 -32
  3. package/docs/architecture.md +2 -2
  4. package/lib/bmad-cache/cache-manifest.json +0 -12
  5. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
  6. package/lib/bmad.js +33 -34
  7. package/package.json +1 -1
  8. package/scripts/build-bmad-cache.js +18 -9
  9. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +0 -56
  10. package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +0 -35
  11. package/lib/bmad-cache/gds/.nvmrc +0 -1
  12. package/lib/bmad-cache/gds/.prettierignore +0 -9
  13. package/lib/bmad-cache/gds/CNAME +0 -1
  14. package/lib/bmad-cache/gds/LICENSE +0 -26
  15. package/lib/bmad-cache/gds/README.md +0 -134
  16. package/lib/bmad-cache/gds/_git_preserved/HEAD +0 -1
  17. package/lib/bmad-cache/gds/_git_preserved/config +0 -13
  18. package/lib/bmad-cache/gds/_git_preserved/description +0 -1
  19. package/lib/bmad-cache/gds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  20. package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +0 -74
  21. package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  22. package/lib/bmad-cache/gds/_git_preserved/hooks/post-update.sample +0 -8
  23. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  24. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-commit.sample +0 -49
  25. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  26. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-push.sample +0 -53
  27. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-rebase.sample +0 -169
  28. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-receive.sample +0 -24
  29. package/lib/bmad-cache/gds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  30. package/lib/bmad-cache/gds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  31. package/lib/bmad-cache/gds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  32. package/lib/bmad-cache/gds/_git_preserved/hooks/update.sample +0 -128
  33. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  34. package/lib/bmad-cache/gds/_git_preserved/info/exclude +0 -6
  35. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
  36. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack +0 -0
  37. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
  38. package/lib/bmad-cache/gds/_git_preserved/packed-refs +0 -2
  39. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +0 -1
  40. package/lib/bmad-cache/gds/_git_preserved/shallow +0 -1
  41. package/lib/bmad-cache/gds/eslint.config.mjs +0 -141
  42. package/lib/bmad-cache/gds/package.json +0 -91
  43. package/lib/bmad-cache/gds/prettier.config.mjs +0 -32
  44. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +0 -57
  45. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +0 -59
  46. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +0 -129
  47. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/gametest/qa-index.csv +0 -18
  48. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -55
  49. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +0 -65
  50. package/lib/bmad-cache/gds/src/module-help.csv +0 -30
  51. package/lib/bmad-cache/gds/src/module.yaml +0 -113
  52. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +0 -41
  53. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/game-brain-methods.csv +0 -26
  54. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +0 -116
  55. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +0 -41
  56. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +0 -41
  57. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/game-types.csv +0 -25
  58. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/genre-complexity.csv +0 -26
  59. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +0 -190
  60. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +0 -99
  61. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +0 -290
  62. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +0 -190
  63. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +0 -84
  64. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +0 -319
  65. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +0 -101
  66. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +0 -41
  67. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +0 -41
  68. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +0 -508
  69. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +0 -41
  70. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +0 -428
  71. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +0 -392
  72. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/pattern-categories.csv +0 -13
  73. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +0 -41
  74. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +0 -41
  75. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +0 -41
  76. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +0 -41
  77. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +0 -41
  78. package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +0 -62
  79. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +0 -41
  80. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +0 -41
  81. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/sprint-status-template.yaml +0 -55
  82. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +0 -41
  83. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +0 -41
  84. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +0 -41
  85. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +0 -41
  86. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +0 -41
  87. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +0 -41
  88. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +0 -41
  89. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +0 -41
  90. package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +0 -41
  91. package/lib/bmad-cache/gds/src/workflows/gds-document-project/documentation-requirements.csv +0 -12
  92. package/lib/bmad-cache/gds/src/workflows/gds-document-project/templates/project-scan-report-schema.json +0 -160
  93. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +0 -41
  94. package/lib/bmad-cache/gds/tools/build-docs.mjs +0 -450
  95. package/lib/bmad-cache/gds/website/astro.config.mjs +0 -142
  96. package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
  97. package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
  98. package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
  99. package/lib/bmad-cache/gds/website/src/components/Banner.astro +0 -71
  100. package/lib/bmad-cache/gds/website/src/components/Header.astro +0 -94
  101. package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +0 -33
  102. package/lib/bmad-cache/gds/website/src/content/config.ts +0 -6
  103. package/lib/bmad-cache/gds/website/src/content/docs +0 -1
  104. package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +0 -25
  105. package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +0 -88
  106. package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +0 -117
  107. package/lib/bmad-cache/gds/website/src/styles/custom.css +0 -503
  108. package/lib/bmad-cache/wds/.claude-plugin/marketplace.json +0 -35
  109. package/lib/bmad-cache/wds/.markdownlint-cli2.yaml +0 -38
  110. package/lib/bmad-cache/wds/.nvmrc +0 -1
  111. package/lib/bmad-cache/wds/.prettierignore +0 -9
  112. package/lib/bmad-cache/wds/LICENSE +0 -27
  113. package/lib/bmad-cache/wds/README.md +0 -139
  114. package/lib/bmad-cache/wds/_git_preserved/HEAD +0 -1
  115. package/lib/bmad-cache/wds/_git_preserved/config +0 -13
  116. package/lib/bmad-cache/wds/_git_preserved/description +0 -1
  117. package/lib/bmad-cache/wds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  118. package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +0 -74
  119. package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  120. package/lib/bmad-cache/wds/_git_preserved/hooks/post-update.sample +0 -8
  121. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  122. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-commit.sample +0 -49
  123. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  124. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-push.sample +0 -53
  125. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-rebase.sample +0 -169
  126. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-receive.sample +0 -24
  127. package/lib/bmad-cache/wds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  128. package/lib/bmad-cache/wds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  129. package/lib/bmad-cache/wds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  130. package/lib/bmad-cache/wds/_git_preserved/hooks/update.sample +0 -128
  131. package/lib/bmad-cache/wds/_git_preserved/index +0 -0
  132. package/lib/bmad-cache/wds/_git_preserved/info/exclude +0 -6
  133. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
  134. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack +0 -0
  135. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
  136. package/lib/bmad-cache/wds/_git_preserved/packed-refs +0 -2
  137. package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +0 -1
  138. package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +0 -1
  139. package/lib/bmad-cache/wds/_git_preserved/shallow +0 -1
  140. package/lib/bmad-cache/wds/eslint.config.mjs +0 -152
  141. package/lib/bmad-cache/wds/package.json +0 -82
  142. package/lib/bmad-cache/wds/prettier.config.mjs +0 -32
  143. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +0 -80
  144. package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +0 -52
  145. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +0 -70
  146. package/lib/bmad-cache/wds/src/module-help.csv +0 -19
  147. package/lib/bmad-cache/wds/src/module.yaml +0 -173
  148. package/lib/bmad-cache/wds/src/scripts/README.md +0 -155
  149. package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +0 -202
  150. package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +0 -158
  151. package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +0 -229
  152. package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +0 -120
  153. package/lib/bmad-cache/wds/src/scripts/wds-nav.js +0 -201
  154. package/lib/bmad-cache/wds/src/scripts/wds-validate.js +0 -301
  155. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  156. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +0 -363
  157. package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  158. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +0 -450
  159. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/design-delivery.template.yaml +0 -104
  160. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/test-scenario.template.yaml +0 -192
  161. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +0 -387
  162. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.css +0 -164
  163. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.html +0 -18
  164. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.js +0 -430
  165. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/demo-data-template.json +0 -63
  166. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/page-template.html +0 -465
  167. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/work-file-template.yaml +0 -264
  168. package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/templates/catalog.template.html +0 -363
package/README.md CHANGED
@@ -569,7 +569,7 @@ Running `ma-agents` on a project where skills are already installed triggers the
569
569
  `ma-agents` ships with everything needed to install BMAD without any network access at install time:
570
570
 
571
571
  - **`bmad-method` is a direct npm dependency** — no runtime `npx bmad-method` fetch required. The correct version is pinned and bundled inside `node_modules/` when you `npm install ma-agents`.
572
- - **External modules pre-bundled** — `lib/bmad-cache/` ships exactly 5 optional BMAD modules (`bmb`, `cis`, `gds`, `tea`, `wds`) inside the package itself. They are pre-populated to `~/.bmad/cache/external-modules/` before any install runs, so BMAD never needs to clone them from GitHub. The bundled set is a **closed allowlist** — a build-time guard fails loud if the resolved set is ever smaller (a thin cache) *or* larger (a silent upstream addition) than these five, so a new upstream module can never be force-bundled or installed by default. `bmad-loop` (BMAD's own unattended-dev orchestrator, added upstream at v6.10.0) is deliberately **excluded** from this bundle — see "BMAD-loop and other opt-in modules" below.
572
+ - **External modules pre-bundled** — `lib/bmad-cache/` ships exactly 3 optional BMAD modules (`bmb`, `cis`, `tea`) inside the package itself. They are pre-populated to `~/.bmad/cache/external-modules/` before any install runs, so BMAD never needs to clone them from GitHub. The bundled set is a **closed allowlist** — a build-time guard fails loud if the resolved set is ever smaller (a thin cache) *or* larger (a silent upstream addition) than these three, so a new upstream module can never be force-bundled or installed by default. The two design-studio modules `gds` (Game Dev Studio) and `wds` (Whiteport Design Studio) are **not bundled and not installable by ma-agents** — they are not offered by the `--bmad-modules` multiselect, and obtaining either one requires network access to its upstream repository, so on an air-gapped machine neither is available. `bmad-loop` (BMAD's own unattended-dev orchestrator, added upstream at v6.10.0) is deliberately **excluded** from this bundle — see "BMAD-loop and other opt-in modules" below.
573
573
  - **Plugin bundle pre-built** — `lib/bmad-extension-plugin/` ships as a deterministic, byte-stable bundle (built from `lib/bmad-extension/` via `scripts/build-plugin.js`). At install time it is staged into `<project>/.ma-agents-plugin-stage/` and consumed by `bmad-method install --custom-source`, so the install never touches the network for plugin assembly.
574
574
  - **Deterministic installs** — same `ma-agents` version always produces the same `_bmad/` output, regardless of network conditions (NFR21). Bundle reproducibility is gated by a CI drift check.
575
575
  - **Air-gapped friendly** — install from a tarball (`npm install ./ma-agents-x.y.z.tgz`) and run `npx ma-agents install` completely offline. Every PR runs an offline-install gate (`--network none` Docker) to enforce this guarantee (NFR54).
@@ -952,7 +952,7 @@ ma-agents/
952
952
  │ │ ├── clinerules.template.md # .clinerules expansion for Cline
953
953
  │ │ └── project-context.template.md # project-context.md generation template
954
954
  │ ├── bmad-customize/ # Source-of-truth: per-persona phase / on_prem_phase_prefix YAML (consumed by the post-install marker-block injector)
955
- │ ├── bmad-cache/ # Pre-bundled BMAD external modules (bmb, cis, gds, tea)
955
+ │ ├── bmad-cache/ # Pre-bundled BMAD external modules (bmb, cis, tea)
956
956
  │ ├── bmad-customizations/ # BMAD persona templates (.md) and YAML configs
957
957
  │ ├── bmad-extension/ # Extension source: sprint management, bug tracking, agent skills (hand-edited)
958
958
  │ ├── bmad-extension-plugin/ # Generated plugin bundle (deterministic; built from bmad-extension/ via scripts/build-plugin.js)
package/bin/cli.js CHANGED
@@ -158,13 +158,13 @@ ${chalk.bold('Install options:')}
158
158
  ${chalk.cyan('--agent <name>')} Target a specific agent (skip agent selection)
159
159
  ${chalk.cyan('--bmad-modules [csv]')} Control BMAD module selection.
160
160
  Bare: open a multiselect prompt (offers every
161
- bundled module, incl. gds and wds)
161
+ bundled module: bmm, tea, bmb, cis)
162
162
  With CSV: install exactly those (e.g. tea,bmb)
163
- Omitted: install bmm,tea,bmb,cis (default). The
164
- design-studio modules gds and wds are
165
- bundled but not installed by default —
166
- select them to install them.
167
- 'bmm' is always force-included.
163
+ Omitted: install bmm,tea,bmb,cis (default)
164
+ 'bmm' is always force-included. The design-studio
165
+ modules gds and wds are not bundled and cannot be
166
+ installed by ma-agents; getting either one needs
167
+ network access to its upstream repository.
168
168
  ${chalk.cyan('--bmad-custom-source <ref>')} Enumerate extensions from ONE custom
169
169
  marketplace repo (local path or Git URL containing
170
170
  .claude-plugin/marketplace.json) and offer them in
@@ -3675,25 +3675,23 @@ async function collectSprintManagementLocation(concern, existingRecord) {
3675
3675
  *
3676
3676
  * Three branches:
3677
3677
  * 1. `--bmad-modules <csv>` → install exactly those (bmm force-prepended,
3678
- * unknowns rejected with a clear error). An explicit selection always
3679
- * wins, including one that names `gds` or `wds`.
3678
+ * unknowns rejected with a clear error). `gds`/`wds` are not bundled
3679
+ * (FR75), so naming either one is an unknown-module error.
3680
3680
  * 2. `--bmad-modules` bare → multiselect prompt; EVERY bundled module is
3681
3681
  * offered, bmm is required and pre-checked, and the remaining initial
3682
3682
  * check state is the FR123 default set — so a no-op confirmation lands
3683
3683
  * on exactly the same modules as branch 3.
3684
3684
  * 3. (no flag) → no prompt. In order: a persisted selection
3685
3685
  * from a prior run (bug 27.13), else the modules already present under
3686
- * `_bmad/`, else `bmad.getDefaultBmadModules()` — FR123's amended
3687
- * default set, bmm + tea + bmb + cis.
3686
+ * `_bmad/`, else `bmad.getDefaultBmadModules()` — FR123's default set,
3687
+ * bmm + tea + bmb + cis.
3688
3688
  *
3689
- * WHY BRANCH 3 IS NO LONGER "EVERY NON-RETIRED MODULE" (FR123, amended
3690
- * 2026-08-02): that default is what put a five-folder `design-artifacts/`
3691
- * tree at the root of a Copilot+Cline project that had never asked for UX
3692
- * tooling — `wds` installed unasked and materialised its `directories:`
3693
- * block. `gds` and `wds` are still BUNDLED and still installable offline;
3694
- * they are simply no longer installed without being asked for. Bundling and
3695
- * installing are different decisions made at different times, and only the
3696
- * second one moved.
3689
+ * BRANCH 3 IS A NAMED LITERAL, NOT "EVERY NON-RETIRED MODULE" (FR123).
3690
+ * Deriving the default from the manifest made it grow silently every time a
3691
+ * module was bundled; naming the members means the next bundled module has to
3692
+ * be added on purpose. The bundled set and the default set currently coincide,
3693
+ * so branches 2 and 3 land on the same modules — but they are still two
3694
+ * different decisions and the literal keeps them apart.
3697
3695
  *
3698
3696
  * `bmm` is force-included in every path because the BMad core agents
3699
3697
  * (analyst, PM, dev, architect, ...) live there and downstream skills
@@ -3728,12 +3726,12 @@ async function selectBmadModules({ bmadModulesFlag, bmadModulesPrompt, projectRo
3728
3726
 
3729
3727
  // Branch 2: bare --bmad-modules → multiselect prompt.
3730
3728
  if (bmadModulesPrompt) {
3731
- // FR123: every bundled module is OFFERED — this prompt is the documented
3732
- // route by which `gds`/`wds` remain reachable offline — but the initial
3733
- // check state is the default INSTALL set, so pressing Enter without
3734
- // touching anything lands on the same modules as the no-flag branch below.
3735
- // Checking them all here would silently reintroduce the very "installs
3736
- // everything" default this change removes.
3729
+ // FR123: every bundled module is OFFERED, and the initial check state is
3730
+ // the default INSTALL set, so pressing Enter without touching anything
3731
+ // lands on the same modules as the no-flag branch below. The offered list
3732
+ // is `getInstallableBmadModules()`, i.e. the cache manifest — a module
3733
+ // that is not bundled (`gds`/`wds`, FR75) is not offered here, because
3734
+ // offering something this package cannot install would be a lie.
3737
3735
  const defaultIds = new Set(bmad.getDefaultBmadModules(installable));
3738
3736
  const choices = installable.map(m => {
3739
3737
  const isCore = m.id === 'bmm';
@@ -3780,10 +3778,10 @@ async function selectBmadModules({ bmadModulesFlag, bmadModulesPrompt, projectRo
3780
3778
  }
3781
3779
  }
3782
3780
 
3783
- // 3b — NON-DESTRUCTIVE MIGRATION. Narrowing the default (FR123, amended
3784
- // 2026-08-02) is behaviour-visible to projects that already installed under
3785
- // the old every-module default, and an update run passes this same resolved
3786
- // list to `bmad.updateBmad`. A project that already has `wds` under `_bmad/`
3781
+ // 3b — NON-DESTRUCTIVE MIGRATION. The narrowed default (FR123) is
3782
+ // behaviour-visible to projects that installed under an older, wider
3783
+ // default, and an update run passes this same resolved list to
3784
+ // `bmad.updateBmad`. A project that already has a module under `_bmad/`
3787
3785
  // must not have it dropped out of its own module list just because the
3788
3786
  // default moved — narrowing applies to NEW installs, not to existing ones.
3789
3787
  //
@@ -4461,10 +4459,9 @@ async function installWizard(preselectedSkill, preselectedAgents, customPath, fo
4461
4459
  // stage the plugin and invoke the installer in one pass.
4462
4460
  // v6.6.0: --tools none is rejected for fresh installs; skip BMAD entirely when no IDE tools selected.
4463
4461
  if (bmadTools.length > 0) {
4464
- // Resolve module set once per BMAD invocation. Default (FR123, amended
4465
- // 2026-08-02) is bmm+tea+bmb+cis; the bundled design-studio modules gds
4466
- // and wds install only when asked for, via --bmad-modules <csv> or the
4467
- // multiselect that bare --bmad-modules opens.
4462
+ // Resolve module set once per BMAD invocation. Default (FR123) is
4463
+ // bmm+tea+bmb+cis, which is the whole bundled set; `--bmad-modules <csv>`
4464
+ // or the multiselect that bare --bmad-modules opens can narrow it.
4468
4465
  const bmadModules = await selectBmadModules({
4469
4466
  bmadModulesFlag,
4470
4467
  bmadModulesPrompt,
@@ -199,7 +199,7 @@ skills/<skill-name>/
199
199
 
200
200
  **Responsibility**: Pre-vendor BMAD's external modules so installs never touch the network.
201
201
 
202
- ma-agents bundles bmad-method as an npm dependency **and** pre-clones BMAD's external modules (`tea`, `bmb`, `cis`, `gds`) into `lib/bmad-cache/` at build time via `npm run build:bmad-cache` ([scripts/build-bmad-cache.js](../scripts/build-bmad-cache.js)). This is what lets `npx ma-agents install` run fully offline in air-gapped environments (NFR2/NFR50/NFR54) — the npm tarball already contains every module bmad-method would otherwise `git clone` from GitHub at install time.
202
+ ma-agents bundles bmad-method as an npm dependency **and** pre-clones BMAD's external modules (`tea`, `bmb`, `cis`) into `lib/bmad-cache/` at build time via `npm run build:bmad-cache` ([scripts/build-bmad-cache.js](../scripts/build-bmad-cache.js)). This is what lets `npx ma-agents install` run fully offline in air-gapped environments (NFR2/NFR50/NFR54) — the npm tarball already contains every module bmad-method would otherwise `git clone` from GitHub at install time.
203
203
 
204
204
  **Module discovery**: the builder reads BMAD's bundled module registry to learn which external modules to clone. **The registry source has moved across BMAD versions** and the reader must track it:
205
205
 
@@ -209,7 +209,7 @@ ma-agents bundles bmad-method as an npm dependency **and** pre-clones BMAD's ext
209
209
  | 6.3.0 – 6.6.x | `tools/installer/modules/registry-fallback.yaml` | YAML |
210
210
  | 6.8.0+ | `bmad-modules.yaml` (bmad-method **package root**) | YAML (`modules:` map; the in-package `registry-fallback.yaml` was retired in 6.7.0) |
211
211
 
212
- The registry has stayed **YAML** throughout — only its path has moved. (`tools/installer/modules/official-modules.js` is unchanged loader code that reads this YAML; it does not contain the module list.) Modules are classified by a `type` field: `type: bmad-org` modules are bundled (**tea, bmb, cis, gds, wds**) and `type: experimental` modules are excluded (currently `automator`). `bmm`/`core` are built-in (loaded from bmad-method's local `module.yaml`, absent from the registry) and are never cloned. The reader for the current pin and its fail-loud contract are defined by Architecture Decision **P5-5** (Epic 27) in `_bmad-output/planning-artifacts/architecture.md`. A companion build step, `npm run build:plugin` ([scripts/build-plugin.js](../scripts/build-plugin.js)), assembles the ma-agents extension plugin bundle (`lib/bmad-extension-plugin/`) deterministically; a CI Bundle Drift Guard enforces that the committed bundle matches a fresh build.
212
+ The registry has stayed **YAML** throughout — only its path has moved. (`tools/installer/modules/official-modules.js` is unchanged loader code that reads this YAML; it does not contain the module list.) The bundle is governed by a closed allowlist, `KNOWN_BUNDLED_MODULES` = **tea, bmb, cis** (FR235); every other registry entry is excluded whatever its `type`, including `type: experimental` (currently `automator`), the `marketplace-plugin` module `bmad-loop`, and the two design-studio modules `gds`/`wds`, which FR75 does not bundle. `bmm`/`core` are built-in (loaded from bmad-method's local `module.yaml`, absent from the registry) and are never cloned. The reader for the current pin and its fail-loud contract are defined by Architecture Decision **P5-5** (Epic 27) in `_bmad-output/planning-artifacts/architecture.md`. A companion build step, `npm run build:plugin` ([scripts/build-plugin.js](../scripts/build-plugin.js)), assembles the ma-agents extension plugin bundle (`lib/bmad-extension-plugin/`) deterministically; a CI Bundle Drift Guard enforces that the committed bundle matches a fresh build.
213
213
 
214
214
  > **Maintenance note:** because the registry path has now moved twice (YAML→YAML→YAML at three locations), the cache builder fails loud — if the resolved `type: bmad-org` set is smaller than the known bundled set, or no module source is found, it exits non-zero rather than producing a thin/empty cache, so a future BMAD registry move surfaces at build time, not as a broken air-gapped install.
215
215
 
@@ -20,18 +20,6 @@
20
20
  "branch": "main",
21
21
  "commitSha": "07a8dd03d196a762f21c241d985293fe5b0f90e7",
22
22
  "clonedAt": "2026-06-13T15:11:42.507Z"
23
- },
24
- "gds": {
25
- "url": "https://github.com/bmad-code-org/bmad-module-game-dev-studio.git",
26
- "branch": "main",
27
- "commitSha": "46c3a6cddf882af1f918187d6e5748c1edfd9c52",
28
- "clonedAt": "2026-06-13T15:11:43.930Z"
29
- },
30
- "wds": {
31
- "url": "https://github.com/bmad-code-org/bmad-method-wds-expansion",
32
- "branch": "main",
33
- "commitSha": "cc16f09fcfab26d35635af1491f36a38a8431c8d",
34
- "clonedAt": "2026-06-13T15:11:45.601Z"
35
23
  }
36
24
  }
37
25
  }
@@ -37,7 +37,7 @@
37
37
  "name": "ma-skills",
38
38
  "source": "./",
39
39
  "description": "ma-agents extension module providing enterprise SDLC personas and operational workflow skills.",
40
- "version": "3.18.0-beta.2",
40
+ "version": "3.18.0-beta.3",
41
41
  "author": {
42
42
  "name": "Alon Mayaffit"
43
43
  },
package/lib/bmad.js CHANGED
@@ -522,48 +522,44 @@ const BMAD_MODULE_DESCRIPTIONS = Object.freeze({
522
522
  bmm: 'BMad Method core — analyst, PM, architect, dev, UX, tech-writer (required)',
523
523
  bmb: 'BMad Builder — agent, module, and workflow builders',
524
524
  cis: 'Creative Intelligence Suite — innovation and ideation toolkit',
525
- gds: 'Game Dev Studio — game development workflows',
526
525
  tea: 'Test Architecture Enterprise — Test Architect (Murat) + 9 testarch workflows',
527
- wds: 'Whiteport Design Studio — strategic UX and design-first planning',
528
526
  });
529
527
 
530
528
  /**
531
- * FR123, as amended 2026-08-02 — the DEFAULT BMAD install set.
529
+ * FR123 — the DEFAULT BMAD install set.
532
530
  *
533
- * "the default install set is bmm plus the non-design bundled modules —
534
- * tea, bmb, cis — from the bundled cache manifest. The two design-studio
535
- * modules gds (Game Design Studio) and wds (Whiteport Design Studio) are
536
- * bundled but not installed by default."
531
+ * "the default install set is bmm, tea, bmb, cis, drawn from the bundled
532
+ * cache manifest."
537
533
  *
538
534
  * BUNDLING AND INSTALLING ARE DIFFERENT THINGS and this constant only speaks
539
- * about the second one. `gds` and `wds` stay in `lib/bmad-cache/`, stay in
540
- * `cache-manifest.json`, stay in `KNOWN_BUNDLED_MODULES`, and stay offered by
541
- * the `--bmad-modules` multiselect — a `--bmad-modules wds` install still
542
- * resolves entirely from the bundled cache with no network access (NFR2 /
543
- * NFR50 / NFR57 are untouched). What changes is only that they no longer
544
- * arrive uninvited.
545
- *
546
- * WHY THESE TWO AND NOT OTHERS: they are the only bundled modules that
547
- * declare a `directories:` block scaffolding `design-artifacts/` at the
548
- * project root, which is how a Copilot+Cline user with no interest in UX
549
- * tooling ended up with an unexplained five-folder `design-artifacts/` tree
550
- * (bug B2). Upstream itself declares `default_selected: false` on every
551
- * bundled module and `true` only on `bmm`, so narrowing here moves ma-agents
552
- * TOWARDS upstream's stated intent rather than away from it.
553
- *
554
- * DELIBERATELY A LITERAL, NOT DERIVED FROM THE MANIFEST. The previous
555
- * behaviour — "every non-retired key of the cache manifest" — is precisely
556
- * what made the set grow silently every time a module was bundled. Naming the
557
- * members means the next bundled module has to be added here on purpose.
535
+ * about the second one. They currently coincide: `bmm` ships inside the
536
+ * `bmad-method` dependency and `tea`/`bmb`/`cis` are the whole of
537
+ * `KNOWN_BUNDLED_MODULES`, so every installable module is a default one.
538
+ *
539
+ * `gds` and `wds` ARE NOT HERE BECAUSE THEY ARE NOT BUNDLED (FR75). They are
540
+ * absent from `lib/bmad-cache/`, absent from `cache-manifest.json`, and absent
541
+ * from `KNOWN_BUNDLED_MODULES`, so `getInstallableBmadModules()` never lists
542
+ * them: the `--bmad-modules` multiselect does not offer them and
543
+ * `--bmad-modules wds` is rejected by `resolveBmadModules` as an unknown
544
+ * module. Obtaining either one requires network access to its upstream GitHub
545
+ * repository, which is exactly what the bundled cache exists to avoid — on an
546
+ * air-gapped machine they are not installable at all.
547
+ *
548
+ * DELIBERATELY A LITERAL, NOT DERIVED FROM THE MANIFEST. Deriving it — "every
549
+ * non-retired key of the cache manifest" — is what made the set grow silently
550
+ * every time a module was bundled. Naming the members means the next bundled
551
+ * module has to be added here on purpose.
558
552
  */
559
553
  const DEFAULT_BMAD_MODULE_IDS = Object.freeze(['bmm', 'tea', 'bmb', 'cis']);
560
554
 
561
555
  /**
562
- * The counterpart to DEFAULT_BMAD_MODULE_IDS: bundled, fully installable, but
563
- * only when explicitly asked for. Exported so callers (and tests) can state
564
- * "bundled but not default" without re-deriving it by subtraction.
556
+ * The counterpart to DEFAULT_BMAD_MODULE_IDS: modules that are bundled and
557
+ * installable but NOT installed unless asked for. Empty — the bundled set and
558
+ * the default set coincide. Exported (and kept, rather than deleted) so
559
+ * callers and tests can state "nothing is bundled-but-withheld" directly
560
+ * instead of re-deriving it by subtraction.
565
561
  */
566
- const NON_DEFAULT_BMAD_MODULE_IDS = Object.freeze(['gds', 'wds']);
562
+ const NON_DEFAULT_BMAD_MODULE_IDS = Object.freeze([]);
567
563
 
568
564
  /**
569
565
  * The FR123 default set, intersected with what this bundle can actually
@@ -594,12 +590,15 @@ function getDefaultBmadModules(available) {
594
590
  * Return the BMAD modules this ma-agents bundle can install. `bmm` (the
595
591
  * BMad core) is always first because it ships inside the `bmad-method`
596
592
  * npm dependency itself, not in `lib/bmad-cache/` — the cache only carries
597
- * the optional external modules (bmb, cis, gds, tea, wds, ...).
593
+ * the optional external modules (bmb, cis, tea).
594
+ *
595
+ * The list is the cache manifest, so it is exactly the bundled set: a module
596
+ * that is not bundled is not installable by this package at all, and callers
597
+ * never have to special-case one (FR75).
598
598
  *
599
599
  * Each entry carries a `retired` flag so the caller can hide modules that
600
600
  * have been retired upstream (driven by the manifest's `retiredUpstream`
601
- * marker; at v6.8.0 the bundled set — tea, bmb, cis, gds, wds — are all
602
- * active `type: bmad-org` clones, so none are flagged).
601
+ * marker; tea, bmb and cis are all active clones, so none are flagged).
603
602
  *
604
603
  * If the cache manifest is missing or unreadable, falls back to a list
605
604
  * containing only `bmm` — that's the minimum a successful install needs.
@@ -635,7 +634,7 @@ function getInstallableBmadModules() {
635
634
  * projects that predate bug 27.13's persisted selection.
636
635
  *
637
636
  * DIRECTORIES, not merely entries. `fs.existsSync` answers yes for a regular
638
- * file, so a stray `_bmad/wds` FILE was enough to make this report wds
637
+ * file, so a stray `_bmad/cis` FILE was enough to make this report cis
639
638
  * installed — and because branch 3b PERSISTS what it finds, that misreading
640
639
  * became a durable "explicit user selection" the project could never shed.
641
640
  * `prePopulateBmadCache` checks `stat.isDirectory()` in the analogous place
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ma-agents",
3
- "version": "3.18.0-beta.2",
3
+ "version": "3.18.0-beta.3",
4
4
  "description": "NPX tool to install skills for AI coding agents (Claude Code, Gemini, Copilot, Kilocode, Cline, Cursor, Roo Code)",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -23,8 +23,8 @@ const force = process.argv.includes('--force');
23
23
  // carry `code`/`url`/`name`/`type` — the same shape the parser already reads.
24
24
  // Crucially the new schema carries no `branch` field (default to `main`) and
25
25
  // it expresses the bundle decision via a `type` field rather than the old
26
- // `built_in` flag: `type: bmad-org` modules (tea, bmb, cis, gds, wds) are
27
- // cloned; `type: experimental` (automator) is excluded; `bmm`/`core` are
26
+ // `built_in` flag. The bundle itself is governed by the closed allowlist
27
+ // below (KNOWN_BUNDLED_MODULES = tea, bmb, cis), not by `type`; `bmm`/`core` are
28
28
  // built into the npm package itself and are absent from the registry entirely.
29
29
  //
30
30
  // Candidates are tried in order; the first that exists on disk wins. The
@@ -57,7 +57,7 @@ const REGISTRY_CANDIDATES = [
57
57
  // FUTURE plain `bmad-org` module) onto air-gapped machines. Closing to this
58
58
  // allowlist means new/renamed/re-flagged upstream modules FAIL CLOSED (excluded)
59
59
  // rather than fail open.
60
- const KNOWN_BUNDLED_MODULES = ['tea', 'bmb', 'cis', 'gds', 'wds'];
60
+ const KNOWN_BUNDLED_MODULES = ['tea', 'bmb', 'cis'];
61
61
 
62
62
  // The registry `type` first-party expansions carry. Retained for diagnostics
63
63
  // and for the shape-flip assertion below (an allowlisted module is expected to
@@ -206,7 +206,7 @@ function parseModulesYaml(content) {
206
206
  * { code, url, name, branch }
207
207
  *
208
208
  * CLOSED-BY-DEFAULT (FR235). The filter is an ALLOWLIST: an entry survives ONLY
209
- * if its `code` is in KNOWN_BUNDLED_MODULES (tea, bmb, cis, gds, wds). Every
209
+ * if its `code` is in KNOWN_BUNDLED_MODULES (tea, bmb, cis). Every
210
210
  * other registry entry is dropped no matter its `type` — so a NEW upstream
211
211
  * module (even a plain `type: bmad-org` one carrying neither disqualifying
212
212
  * flag), `bmad-loop` (`marketplace-plugin: true`), the deprecated
@@ -602,11 +602,20 @@ function main() {
602
602
  }
603
603
  }
604
604
 
605
- // AC #7 gate: preserve existing cached modules that are no longer in the
606
- // upstream registry (e.g. v6.3.0 retired `wds`). We keep the directory and
607
- // the manifest entry verbatim so downstream consumers keep working until a
608
- // maintainer explicitly confirms deletion. The retirement is documented in
609
- // the story's Dev Notes.
605
+ // AC #7 gate: preserve existing cached modules that the resolved set no
606
+ // longer contains. We keep the directory and the manifest entry verbatim so
607
+ // downstream consumers keep working until a maintainer explicitly confirms
608
+ // deletion.
609
+ //
610
+ // THE GATE IS DIRECTORY-TRIGGERED, AND THAT MATTERS FOR A DELIBERATE
611
+ // UNBUNDLING. "Resolved set no longer contains it" covers two different
612
+ // causes: retired upstream, and removed from KNOWN_BUNDLED_MODULES on
613
+ // purpose (`gds`/`wds` per FR75). This loop cannot tell them apart — it only
614
+ // asks whether `lib/bmad-cache/<code>/` is still on disk. So removing a code
615
+ // from the allowlist WITHOUT deleting its directory re-adds it to the
616
+ // manifest flagged `retiredUpstream: true`, and it is back in
617
+ // `getInstallableBmadModules()`. Deleting the directory is therefore part of
618
+ // unbundling a module, not a separate tidy-up.
610
619
  //
611
620
  // `retentionStash` was built up-front (before any --force wipe) so the
612
621
  // retention decision does not depend on whether the module directory
@@ -1,56 +0,0 @@
1
- {
2
- "name": "bmad-game-dev-studio",
3
- "owner": {
4
- "name": "Brian (BMad) Madison"
5
- },
6
- "license": "MIT",
7
- "homepage": "https://github.com/bmad-code-org/bmad-module-game-dev-studio",
8
- "repository": "https://github.com/bmad-code-org/bmad-module-game-dev-studio",
9
- "keywords": ["bmad", "game-dev", "unity", "unreal", "godot", "game-design", "game-architecture"],
10
- "plugins": [
11
- {
12
- "name": "bmad-game-dev-studio",
13
- "source": "./",
14
- "description": "A comprehensive game development module with agents and workflows for preproduction, design, architecture, production, and testing across Unity, Unreal, and Godot. Part of the BMad Method ecosystem.",
15
- "version": "0.6.0",
16
- "author": {
17
- "name": "Brian (BMad) Madison"
18
- },
19
- "skills": [
20
- "./src/agents/gds-agent-game-architect",
21
- "./src/agents/gds-agent-game-designer",
22
- "./src/agents/gds-agent-game-dev",
23
- "./src/agents/gds-agent-game-solo-dev",
24
- "./src/agents/gds-agent-tech-writer",
25
- "./src/workflows/1-preproduction/gds-brainstorm-game",
26
- "./src/workflows/1-preproduction/gds-create-game-brief",
27
- "./src/workflows/1-preproduction/research/gds-domain-research",
28
- "./src/workflows/2-design/gds-create-narrative",
29
- "./src/workflows/2-design/gds-create-ux-design",
30
- "./src/workflows/2-design/gds-gdd",
31
- "./src/workflows/2-design/gds-prd",
32
- "./src/workflows/3-technical/gds-check-implementation-readiness",
33
- "./src/workflows/3-technical/gds-create-epics-and-stories",
34
- "./src/workflows/3-technical/gds-game-architecture",
35
- "./src/workflows/3-technical/gds-generate-project-context",
36
- "./src/workflows/4-production/gds-code-review",
37
- "./src/workflows/4-production/gds-correct-course",
38
- "./src/workflows/4-production/gds-create-story",
39
- "./src/workflows/4-production/gds-dev-story",
40
- "./src/workflows/4-production/gds-investigate",
41
- "./src/workflows/4-production/gds-retrospective",
42
- "./src/workflows/4-production/gds-sprint-planning",
43
- "./src/workflows/4-production/gds-sprint-status",
44
- "./src/workflows/gametest/gds-e2e-scaffold",
45
- "./src/workflows/gametest/gds-performance-test",
46
- "./src/workflows/gametest/gds-playtest-plan",
47
- "./src/workflows/gametest/gds-test-automate",
48
- "./src/workflows/gametest/gds-test-design",
49
- "./src/workflows/gametest/gds-test-framework",
50
- "./src/workflows/gametest/gds-test-review",
51
- "./src/workflows/gds-document-project",
52
- "./src/workflows/gds-quick-flow/gds-quick-dev"
53
- ]
54
- }
55
- ]
56
- }
@@ -1,35 +0,0 @@
1
- # markdownlint-cli2 configuration
2
- # https://github.com/DavidAnson/markdownlint-cli2
3
-
4
- ignores:
5
- - node_modules/**
6
- - test/fixtures/**
7
- - CODE_OF_CONDUCT.md
8
- - _bmad/**
9
- - _bmad*/**
10
- - .*/**
11
- - z*/**
12
-
13
- # Rule configuration
14
- config:
15
- # Disable all rules by default
16
- default: false
17
-
18
- # Heading levels should increment by one (h1 -> h2 -> h3, not h1 -> h3)
19
- MD001: true
20
-
21
- # Duplicate sibling headings (same heading text at same level under same parent)
22
- MD024:
23
- siblings_only: true
24
-
25
- # Trailing commas in headings (likely typos)
26
- MD026:
27
- punctuation: ","
28
-
29
- # Bare URLs - may not render as links in all parsers
30
- # Should use <url> or [text](url) format
31
- MD034: true
32
-
33
- # Spaces inside emphasis markers - breaks rendering
34
- # e.g., "* text *" won't render as emphasis
35
- MD037: true
@@ -1 +0,0 @@
1
- 22
@@ -1,9 +0,0 @@
1
- # Test fixtures with intentionally broken/malformed files
2
- test/fixtures/**
3
-
4
- # Contributor Covenant (external standard)
5
- CODE_OF_CONDUCT.md
6
-
7
- # BMAD runtime folders (user-specific, not in repo)
8
- _bmad/
9
- _bmad*/
@@ -1 +0,0 @@
1
- game-dev-studio-docs.bmad-method.org
@@ -1,26 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 BMad Code, LLC
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
23
- TRADEMARK NOTICE:
24
- BMad™ , BMAD-CORE™ and BMAD-METHOD™ are trademarks of BMad Code, LLC. The use of these
25
- trademarks in this software does not grant any rights to use the trademarks
26
- for any other purpose.
@@ -1,134 +0,0 @@
1
- # BMad Game Dev Studio
2
-
3
- [![Version](https://img.shields.io/npm/v/bmad-game-dev-studio?color=blue&label=version)](https://www.npmjs.com/package/bmad-game-dev-studio)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
5
- [![Python Version](https://img.shields.io/badge/python-%3E%3D3.10-blue?logo=python&logoColor=white)](https://www.python.org)
6
- [![uv](https://img.shields.io/badge/uv-package%20manager-blueviolet?logo=uv)](https://docs.astral.sh/uv/)
7
- [![Discord](https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&logoColor=white)](https://discord.gg/gk8jAdXWmj)
8
-
9
- **BMGD brings BMad's structured development to game development.** Create working prototypes quickly in Unity, Unreal, Godot, Roblox—or any engine you choose.
10
-
11
- ![BMGD Logo](docs/bmgd-logo.png)
12
-
13
- ## About BMGD
14
-
15
- BMad Game Dev Studio (BMGD) adapts the BMad Method framework for game development. Developed by game industry veterans, BMGD guides you through product research, technical design, narrative design, and a full epic-driven production cycle.
16
-
17
- ## Supported Engines
18
-
19
- BMGD has first-class support for:
20
-
21
- - [Unity](https://unity.com) — C# scripting, industry-standard for many game types
22
- - [Unreal Engine](https://www.unrealengine.com/) — Blueprint and C++, AAA powerhouse
23
- - [Godot](https://godotengine.org/) — Open-source, GDScript, rapidly growing
24
- - [Roblox](https://www.roblox.com/create) — Luau scripting, platform-native game development
25
-
26
- But you're not limited to these—BMGD works with any platform, from pure C to custom engines.
27
-
28
- ## What You Can Create
29
-
30
- BMGD supports **21 game types**, including:
31
-
32
- | Genre | Examples |
33
- |-------|----------|
34
- | Action | Platformers, shooters, hack-and-slash |
35
- | RPG | Action RPG, tactical RPG, dungeon crawlers |
36
- | Strategy | Turn-based, RTS, tower defense |
37
- | Simulation | Life sim, tycoon, management |
38
- | Adventure | Visual novels, point-and-click, walking simulators |
39
- | And more... | Survival, horror, puzzle, racing, etc. |
40
-
41
- ## What BMGD Does
42
-
43
- - **Product Research** — Market analysis, competitor research, positioning
44
- - **Game Design Document** — Comprehensive GDD with mechanics, progression, and balance
45
- - **Narrative Design** — Story structure, characters, dialogue, world-building
46
- - **UX Design** — Two peer specs: `DESIGN.md` (visual identity) and `EXPERIENCE.md` (UI/HUD behavior, input schemes, player journeys)
47
- - **Technical Architecture** — Engine patterns, performance considerations
48
- - **Production Planning** — Epic-driven sprints, story tracking, retrospectives
49
- - **Quick Prototyping** — Skip the planning, jump straight into building
50
-
51
- ## What BMGD Doesn't Do
52
-
53
- BMGD works *with* coding agents like Claude Code, Cursor, or GitHub Copilot—but it can't create everything:
54
-
55
- - Art assets (models, textures, sprites)
56
- - Animations
57
- - Music and sound effects
58
- - Full game implementation from scratch
59
-
60
- Think of BMGD as your senior game dev colleague—not a replacement for your entire team.
61
-
62
- ## Installation
63
-
64
- BMGD is installed as a module during BMad Method setup:
65
-
66
- ```bash
67
- npx bmad-method install
68
- ```
69
-
70
- Select **Game Dev Studio** from the modules list.
71
-
72
- *Just a heads-up: if you’re only using Game Dev Studio (GDS), you don’t need to install the main BMM module. GDS runs on its own, but BMM gets updated more often, so you might want to use its workflows—they work together nicely!*
73
-
74
- ## Quick Start
75
-
76
- After installing, run from your project root:
77
-
78
- ```
79
- /bmad-help # Get guided help for game development
80
- /bmgd-quick-dev # Jump straight into prototyping
81
- /bmgd-gdd # Create a Game Design Document
82
- /bmgd-narrative # Design your game's story
83
- ```
84
-
85
- ## Two Ways to Work
86
-
87
- | Approach | When to Use | Workflow |
88
- |----------|-------------|----------|
89
- | **Quick Flow** | Rapid prototyping, small projects | `/bmgd-quick-dev` |
90
- | **Full Production** | Full games, teams, long-term | `/bmad-help` for guided path |
91
-
92
- ## Example: Starting a New Game
93
-
94
- ```
95
- You: /bmad-help
96
- BMGD: What kind of game are you making?
97
- You: A tactical sci-fi RPG
98
- BMGD: Great choice! Here's what I recommend...
99
- [Guides you through genre-specific planning]
100
- [Helps select appropriate workflows]
101
- ```
102
-
103
- ## Documentation
104
-
105
- **[BMad Game Dev Studio Documentation](http://game-dev-studio-docs.bmad-method.org)** — Tutorials, how-to guides, and reference
106
-
107
- - [Getting Started](http://game-dev-studio-docs.bmad-method.org/tutorials/)
108
- - [BMad Method Docs](http://docs.bmad-method.org) — Core framework documentation
109
-
110
- ## Community
111
-
112
- - [Discord](https://discord.gg/gk8jAdXWmj) — Get help from other game devs
113
- - [YouTube](https://youtube.com/@BMadCode) — Tutorials, master class, and more
114
- - [X / Twitter](https://x.com/BMadCode)
115
- - [Website](https://bmadcode.com)
116
- - [GitHub Issues](https://github.com/bmad-code-org/bmad-module-game-dev-studio/issues) — Report bugs
117
-
118
- ## Support BMad
119
-
120
- BMad is free for everyone and always will be. Star this repo, [buy me a coffee](https://buymeacoffee.com/bmad), or email <contact@bmadcode.com> for corporate sponsorship.
121
-
122
- ## License
123
-
124
- MIT License — see [LICENSE](LICENSE) for details.
125
-
126
- ---
127
-
128
- **BMad Game Dev Studio** — Part of the [BMad Method](https://github.com/bmad-code-org/BMAD-METHOD) ecosystem.
129
-
130
- [![Contributors](https://contrib.rocks/image?repo=bmad-code-org/bmad-module-game-dev-studio)](https://github.com/bmad-code-org/bmad-module-game-dev-studio/graphs/contributors)
131
-
132
- See [CONTRIBUTORS.md](CONTRIBUTORS.md) for contributor information.
133
-
134
- *If you can dream it, you can build it.*
@@ -1 +0,0 @@
1
- ref: refs/heads/main