bmad-method 4.37.0 → 4.39.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (251) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.md +3 -3
  2. package/.github/ISSUE_TEMPLATE/feature_request.md +3 -3
  3. package/.github/workflows/discord.yaml +11 -2
  4. package/.github/workflows/format-check.yaml +42 -0
  5. package/.github/workflows/manual-release.yaml +173 -0
  6. package/.husky/pre-commit +3 -0
  7. package/.vscode/settings.json +26 -1
  8. package/CHANGELOG.md +2 -23
  9. package/README.md +2 -0
  10. package/bmad-core/agent-teams/team-all.yaml +1 -1
  11. package/bmad-core/agents/analyst.md +16 -15
  12. package/bmad-core/agents/architect.md +11 -11
  13. package/bmad-core/agents/bmad-master.md +23 -22
  14. package/bmad-core/agents/bmad-orchestrator.md +13 -17
  15. package/bmad-core/agents/dev.md +14 -11
  16. package/bmad-core/agents/pm.md +15 -14
  17. package/bmad-core/agents/po.md +9 -8
  18. package/bmad-core/agents/qa.md +42 -22
  19. package/bmad-core/agents/sm.md +7 -6
  20. package/bmad-core/agents/ux-expert.md +6 -5
  21. package/bmad-core/core-config.yaml +2 -0
  22. package/bmad-core/data/bmad-kb.md +1 -1
  23. package/bmad-core/data/test-levels-framework.md +146 -0
  24. package/bmad-core/data/test-priorities-matrix.md +172 -0
  25. package/bmad-core/tasks/apply-qa-fixes.md +148 -0
  26. package/bmad-core/tasks/facilitate-brainstorming-session.md +1 -1
  27. package/bmad-core/tasks/nfr-assess.md +343 -0
  28. package/bmad-core/tasks/qa-gate.md +161 -0
  29. package/bmad-core/tasks/review-story.md +234 -74
  30. package/bmad-core/tasks/risk-profile.md +353 -0
  31. package/bmad-core/tasks/test-design.md +174 -0
  32. package/bmad-core/tasks/trace-requirements.md +264 -0
  33. package/bmad-core/templates/architecture-tmpl.yaml +49 -49
  34. package/bmad-core/templates/brainstorming-output-tmpl.yaml +5 -5
  35. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +31 -31
  36. package/bmad-core/templates/brownfield-prd-tmpl.yaml +13 -13
  37. package/bmad-core/templates/competitor-analysis-tmpl.yaml +19 -6
  38. package/bmad-core/templates/front-end-architecture-tmpl.yaml +21 -9
  39. package/bmad-core/templates/front-end-spec-tmpl.yaml +24 -24
  40. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +122 -104
  41. package/bmad-core/templates/market-research-tmpl.yaml +2 -2
  42. package/bmad-core/templates/prd-tmpl.yaml +9 -9
  43. package/bmad-core/templates/project-brief-tmpl.yaml +4 -4
  44. package/bmad-core/templates/qa-gate-tmpl.yaml +102 -0
  45. package/bmad-core/templates/story-tmpl.yaml +12 -12
  46. package/bmad-core/workflows/brownfield-fullstack.yaml +9 -9
  47. package/bmad-core/workflows/brownfield-service.yaml +1 -1
  48. package/bmad-core/workflows/brownfield-ui.yaml +1 -1
  49. package/bmad-core/workflows/greenfield-fullstack.yaml +1 -1
  50. package/bmad-core/workflows/greenfield-service.yaml +1 -1
  51. package/bmad-core/workflows/greenfield-ui.yaml +1 -1
  52. package/common/utils/bmad-doc-template.md +5 -5
  53. package/dist/agents/analyst.txt +1086 -1079
  54. package/dist/agents/architect.txt +1534 -1526
  55. package/dist/agents/bmad-master.txt +646 -632
  56. package/dist/agents/bmad-orchestrator.txt +40 -18
  57. package/dist/agents/dev.txt +158 -19
  58. package/dist/agents/pm.txt +1082 -1107
  59. package/dist/agents/po.txt +314 -332
  60. package/dist/agents/qa.txt +1754 -151
  61. package/dist/agents/sm.txt +88 -98
  62. package/dist/agents/ux-expert.txt +80 -87
  63. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +109 -146
  64. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +75 -86
  65. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +41 -48
  66. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +1903 -1941
  67. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +15 -50
  68. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +149 -195
  69. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +0 -15
  70. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +20 -37
  71. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +2660 -2752
  72. package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +871 -0
  73. package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +78 -0
  74. package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +839 -0
  75. package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
  76. package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +861 -0
  77. package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +796 -0
  78. package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +927 -0
  79. package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +842 -0
  80. package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1126 -0
  81. package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +864 -0
  82. package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +5917 -0
  83. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +25 -27
  84. package/dist/teams/team-all.txt +5541 -3768
  85. package/dist/teams/team-fullstack.txt +3014 -2987
  86. package/dist/teams/team-ide-minimal.txt +2219 -469
  87. package/dist/teams/team-no-ui.txt +2993 -2966
  88. package/docs/enhanced-ide-development-workflow.md +220 -15
  89. package/docs/user-guide.md +271 -18
  90. package/docs/versioning-and-releases.md +122 -44
  91. package/docs/working-in-the-brownfield.md +264 -31
  92. package/eslint.config.mjs +119 -0
  93. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +4 -4
  94. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +1 -1
  95. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
  96. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +26 -28
  97. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +50 -50
  98. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +23 -23
  99. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +24 -24
  100. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +42 -42
  101. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  102. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  103. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +1 -1
  104. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +3 -3
  105. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +1 -1
  106. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +1 -1
  107. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +23 -23
  108. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +63 -63
  109. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +20 -20
  110. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +65 -65
  111. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +5 -5
  112. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +1 -1
  113. package/expansion-packs/bmad-creative-writing/README.md +132 -0
  114. package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +19 -0
  115. package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +91 -0
  116. package/expansion-packs/bmad-creative-writing/agents/book-critic.md +35 -0
  117. package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +90 -0
  118. package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +41 -0
  119. package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +89 -0
  120. package/expansion-packs/bmad-creative-writing/agents/editor.md +90 -0
  121. package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +92 -0
  122. package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +90 -0
  123. package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +92 -0
  124. package/expansion-packs/bmad-creative-writing/agents/world-builder.md +91 -0
  125. package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +16 -0
  126. package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +16 -0
  127. package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +16 -0
  128. package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +16 -0
  129. package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +15 -0
  130. package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +16 -0
  131. package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +16 -0
  132. package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +15 -0
  133. package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +15 -0
  134. package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +16 -0
  135. package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +16 -0
  136. package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +18 -0
  137. package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +16 -0
  138. package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +16 -0
  139. package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +16 -0
  140. package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +16 -0
  141. package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +49 -0
  142. package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +16 -0
  143. package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +16 -0
  144. package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +16 -0
  145. package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +15 -0
  146. package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +16 -0
  147. package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +16 -0
  148. package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +16 -0
  149. package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +16 -0
  150. package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +16 -0
  151. package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +16 -0
  152. package/expansion-packs/bmad-creative-writing/config.yaml +11 -0
  153. package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +197 -0
  154. package/expansion-packs/bmad-creative-writing/data/story-structures.md +58 -0
  155. package/expansion-packs/bmad-creative-writing/docs/brief.md +183 -0
  156. package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +117 -0
  157. package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +16 -0
  158. package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +55 -0
  159. package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +22 -0
  160. package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +16 -0
  161. package/expansion-packs/bmad-creative-writing/tasks/build-world.md +17 -0
  162. package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +15 -0
  163. package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +101 -0
  164. package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +19 -0
  165. package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +19 -0
  166. package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +17 -0
  167. package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +93 -0
  168. package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +16 -0
  169. package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +16 -0
  170. package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +16 -0
  171. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +18 -0
  172. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +19 -0
  173. package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +16 -0
  174. package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +18 -0
  175. package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +16 -0
  176. package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +17 -0
  177. package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +16 -0
  178. package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +15 -0
  179. package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +16 -0
  180. package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +51 -0
  181. package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +96 -0
  182. package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +81 -0
  183. package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
  184. package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +97 -0
  185. package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +77 -0
  186. package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +54 -0
  187. package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
  188. package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +88 -0
  189. package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +176 -0
  190. package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +58 -0
  191. package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +51 -0
  192. package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
  193. package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +92 -0
  194. package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +86 -0
  195. package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +79 -0
  196. package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +65 -0
  197. package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
  198. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +20 -20
  199. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +7 -7
  200. package/package.json +62 -39
  201. package/prettier.config.mjs +32 -0
  202. package/sync-version.sh +23 -0
  203. package/tools/bmad-npx-wrapper.js +10 -10
  204. package/tools/builders/web-builder.js +124 -130
  205. package/tools/bump-all-versions.js +42 -33
  206. package/tools/bump-expansion-version.js +23 -16
  207. package/tools/cli.js +10 -12
  208. package/tools/flattener/aggregate.js +10 -10
  209. package/tools/flattener/binary.js +44 -17
  210. package/tools/flattener/discovery.js +19 -18
  211. package/tools/flattener/files.js +6 -6
  212. package/tools/flattener/ignoreRules.js +125 -125
  213. package/tools/flattener/main.js +426 -70
  214. package/tools/flattener/projectRoot.js +186 -25
  215. package/tools/flattener/prompts.js +9 -9
  216. package/tools/flattener/stats.helpers.js +395 -0
  217. package/tools/flattener/stats.js +64 -14
  218. package/tools/flattener/test-matrix.js +413 -0
  219. package/tools/flattener/xml.js +33 -31
  220. package/tools/installer/bin/bmad.js +156 -113
  221. package/tools/installer/config/ide-agent-config.yaml +1 -1
  222. package/tools/installer/config/install.config.yaml +13 -3
  223. package/tools/installer/lib/config-loader.js +46 -42
  224. package/tools/installer/lib/file-manager.js +91 -113
  225. package/tools/installer/lib/ide-base-setup.js +57 -56
  226. package/tools/installer/lib/ide-setup.js +545 -399
  227. package/tools/installer/lib/installer.js +875 -714
  228. package/tools/installer/lib/memory-profiler.js +54 -53
  229. package/tools/installer/lib/module-manager.js +19 -15
  230. package/tools/installer/lib/resource-locator.js +26 -28
  231. package/tools/installer/package.json +19 -19
  232. package/tools/lib/dependency-resolver.js +26 -30
  233. package/tools/lib/yaml-utils.js +7 -7
  234. package/tools/preview-release-notes.js +66 -0
  235. package/tools/shared/bannerArt.js +3 -3
  236. package/tools/sync-installer-version.js +7 -9
  237. package/tools/update-expansion-version.js +14 -15
  238. package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
  239. package/tools/version-bump.js +41 -26
  240. package/tools/yaml-format.js +56 -43
  241. package/.github/workflows/release.yaml +0 -60
  242. package/.releaserc.json +0 -21
  243. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/Complete AI Agent System - Flowchart.svg +0 -102
  244. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash copy.txt +0 -13
  245. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.1 Google Cloud Project Setup/1.1.1 - Initial Project Configuration - bash.txt +0 -13
  246. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.2 Agent Development Kit Installation/1.2.2 - Basic Project Structure - txt.txt +0 -25
  247. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.1 - settings.py +0 -34
  248. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.3 Core Configuration Files/1.3.2 - main.py - Base Application.py +0 -70
  249. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/PART 1 - Google Cloud Vertex AI Setup Documentation/1.4 Deployment Configuration/1.4.2 - cloudbuild.yaml +0 -26
  250. package/expansion-packs/Complete AI Agent System - Blank Templates & Google Cloud Setup/README.md +0 -109
  251. package/tools/semantic-release-sync-installer.js +0 -30
@@ -0,0 +1,119 @@
1
+ import js from '@eslint/js';
2
+ import eslintConfigPrettier from 'eslint-config-prettier/flat';
3
+ import nodePlugin from 'eslint-plugin-n';
4
+ import unicorn from 'eslint-plugin-unicorn';
5
+ import yml from 'eslint-plugin-yml';
6
+
7
+ export default [
8
+ // Global ignores for files/folders that should not be linted
9
+ {
10
+ ignores: ['dist/**', 'coverage/**', '**/*.min.js'],
11
+ },
12
+
13
+ // Base JavaScript recommended rules
14
+ js.configs.recommended,
15
+
16
+ // Node.js rules
17
+ ...nodePlugin.configs['flat/mixed-esm-and-cjs'],
18
+
19
+ // Unicorn rules (modern best practices)
20
+ unicorn.configs.recommended,
21
+
22
+ // YAML linting
23
+ ...yml.configs['flat/recommended'],
24
+
25
+ // Place Prettier last to disable conflicting stylistic rules
26
+ eslintConfigPrettier,
27
+
28
+ // Project-specific tweaks
29
+ {
30
+ rules: {
31
+ // Allow console for CLI tools in this repo
32
+ 'no-console': 'off',
33
+ // Enforce .yaml file extension for consistency
34
+ 'yml/file-extension': [
35
+ 'error',
36
+ {
37
+ extension: 'yaml',
38
+ caseSensitive: true,
39
+ },
40
+ ],
41
+ // Prefer double quotes in YAML wherever quoting is used, but allow the other to avoid escapes
42
+ 'yml/quotes': [
43
+ 'error',
44
+ {
45
+ prefer: 'double',
46
+ avoidEscape: true,
47
+ },
48
+ ],
49
+ // Relax some Unicorn rules that are too opinionated for this codebase
50
+ 'unicorn/prevent-abbreviations': 'off',
51
+ 'unicorn/no-null': 'off',
52
+ },
53
+ },
54
+
55
+ // CLI/CommonJS scripts under tools/**
56
+ {
57
+ files: ['tools/**/*.js'],
58
+ rules: {
59
+ // Allow CommonJS patterns for Node CLI scripts
60
+ 'unicorn/prefer-module': 'off',
61
+ 'unicorn/import-style': 'off',
62
+ 'unicorn/no-process-exit': 'off',
63
+ 'n/no-process-exit': 'off',
64
+ 'unicorn/no-await-expression-member': 'off',
65
+ 'unicorn/prefer-top-level-await': 'off',
66
+ // Avoid failing CI on incidental unused vars in internal scripts
67
+ 'no-unused-vars': 'off',
68
+ // Reduce style-only churn in internal tools
69
+ 'unicorn/prefer-ternary': 'off',
70
+ 'unicorn/filename-case': 'off',
71
+ 'unicorn/no-array-reduce': 'off',
72
+ 'unicorn/no-array-callback-reference': 'off',
73
+ 'unicorn/consistent-function-scoping': 'off',
74
+ 'n/no-extraneous-require': 'off',
75
+ 'n/no-extraneous-import': 'off',
76
+ 'n/no-unpublished-require': 'off',
77
+ 'n/no-unpublished-import': 'off',
78
+ // Some scripts intentionally use globals provided at runtime
79
+ 'no-undef': 'off',
80
+ // Additional relaxed rules for legacy/internal scripts
81
+ 'no-useless-catch': 'off',
82
+ 'unicorn/prefer-number-properties': 'off',
83
+ 'no-unreachable': 'off',
84
+ },
85
+ },
86
+
87
+ // ESLint config file should not be checked for publish-related Node rules
88
+ {
89
+ files: ['eslint.config.mjs'],
90
+ rules: {
91
+ 'n/no-unpublished-import': 'off',
92
+ },
93
+ },
94
+
95
+ // YAML workflow templates allow empty mapping values intentionally
96
+ {
97
+ files: ['bmad-core/workflows/**/*.yaml'],
98
+ rules: {
99
+ 'yml/no-empty-mapping-value': 'off',
100
+ },
101
+ },
102
+
103
+ // GitHub workflow files in this repo may use empty mapping values
104
+ {
105
+ files: ['.github/workflows/**/*.yaml'],
106
+ rules: {
107
+ 'yml/no-empty-mapping-value': 'off',
108
+ },
109
+ },
110
+
111
+ // Other GitHub YAML files may intentionally use empty values and reserved filenames
112
+ {
113
+ files: ['.github/**/*.yaml'],
114
+ rules: {
115
+ 'yml/no-empty-mapping-value': 'off',
116
+ 'unicorn/filename-case': 'off',
117
+ },
118
+ },
119
+ ];
@@ -60,10 +60,10 @@ commands:
60
60
  task-execution:
61
61
  flow: Read story → Implement game feature → Write tests → Pass tests → Update [x] → Next task
62
62
  updates-ONLY:
63
- - "Checkboxes: [ ] not started | [-] in progress | [x] complete"
64
- - "Debug Log: | Task | File | Change | Reverted? |"
65
- - "Completion Notes: Deviations only, <50 words"
66
- - "Change Log: Requirement changes only"
63
+ - 'Checkboxes: [ ] not started | [-] in progress | [x] complete'
64
+ - 'Debug Log: | Task | File | Change | Reverted? |'
65
+ - 'Completion Notes: Deviations only, <50 words'
66
+ - 'Change Log: Requirement changes only'
67
67
  blocking: Unapproved deps | Ambiguous after story check | 3 failures | Missing game config
68
68
  done: Game feature works + Tests pass + 60 FPS + No lint errors + Follows Phaser 3 best practices
69
69
  dependencies:
@@ -27,7 +27,7 @@ activation-instructions:
27
27
  - When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
28
28
  - STAY IN CHARACTER!
29
29
  - CRITICAL: On activation, ONLY greet user and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
30
- - "CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Game Developer Agent"
30
+ - 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Game Developer Agent'
31
31
  agent:
32
32
  name: Jordan
33
33
  id: game-sm
@@ -1,5 +1,5 @@
1
1
  name: bmad-2d-phaser-game-dev
2
- version: 1.12.0
2
+ version: 1.13.0
3
3
  short-title: Phaser 3 2D Game Dev Pack
4
4
  description: >-
5
5
  2D Game Development expansion pack for BMad Method - Phaser 3 & TypeScript
@@ -73,7 +73,7 @@ interface GameState {
73
73
  interface GameSettings {
74
74
  musicVolume: number;
75
75
  sfxVolume: number;
76
- difficulty: "easy" | "normal" | "hard";
76
+ difficulty: 'easy' | 'normal' | 'hard';
77
77
  controls: ControlScheme;
78
78
  }
79
79
  ```
@@ -114,12 +114,12 @@ class GameScene extends Phaser.Scene {
114
114
  private inputManager!: InputManager;
115
115
 
116
116
  constructor() {
117
- super({ key: "GameScene" });
117
+ super({ key: 'GameScene' });
118
118
  }
119
119
 
120
120
  preload(): void {
121
121
  // Load only scene-specific assets
122
- this.load.image("player", "assets/player.png");
122
+ this.load.image('player', 'assets/player.png');
123
123
  }
124
124
 
125
125
  create(data: SceneData): void {
@@ -144,7 +144,7 @@ class GameScene extends Phaser.Scene {
144
144
  this.inputManager.destroy();
145
145
 
146
146
  // Remove event listeners
147
- this.events.off("*");
147
+ this.events.off('*');
148
148
  }
149
149
  }
150
150
  ```
@@ -153,13 +153,13 @@ class GameScene extends Phaser.Scene {
153
153
 
154
154
  ```typescript
155
155
  // Proper scene transitions with data
156
- this.scene.start("NextScene", {
156
+ this.scene.start('NextScene', {
157
157
  playerScore: this.playerScore,
158
158
  currentLevel: this.currentLevel + 1,
159
159
  });
160
160
 
161
161
  // Scene overlays for UI
162
- this.scene.launch("PauseMenuScene");
162
+ this.scene.launch('PauseMenuScene');
163
163
  this.scene.pause();
164
164
  ```
165
165
 
@@ -203,7 +203,7 @@ class Player extends GameEntity {
203
203
  private health!: HealthComponent;
204
204
 
205
205
  constructor(scene: Phaser.Scene, x: number, y: number) {
206
- super(scene, x, y, "player");
206
+ super(scene, x, y, 'player');
207
207
 
208
208
  this.movement = this.addComponent(new MovementComponent(this));
209
209
  this.health = this.addComponent(new HealthComponent(this, 100));
@@ -223,7 +223,7 @@ class GameManager {
223
223
 
224
224
  constructor(scene: Phaser.Scene) {
225
225
  if (GameManager.instance) {
226
- throw new Error("GameManager already exists!");
226
+ throw new Error('GameManager already exists!');
227
227
  }
228
228
 
229
229
  this.scene = scene;
@@ -233,7 +233,7 @@ class GameManager {
233
233
 
234
234
  static getInstance(): GameManager {
235
235
  if (!GameManager.instance) {
236
- throw new Error("GameManager not initialized!");
236
+ throw new Error('GameManager not initialized!');
237
237
  }
238
238
  return GameManager.instance;
239
239
  }
@@ -280,7 +280,7 @@ class BulletPool {
280
280
  }
281
281
 
282
282
  // Pool exhausted - create new bullet
283
- console.warn("Bullet pool exhausted, creating new bullet");
283
+ console.warn('Bullet pool exhausted, creating new bullet');
284
284
  return new Bullet(this.scene, 0, 0);
285
285
  }
286
286
 
@@ -380,14 +380,12 @@ class InputManager {
380
380
  }
381
381
 
382
382
  private setupKeyboard(): void {
383
- this.keys = this.scene.input.keyboard.addKeys(
384
- "W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT",
385
- );
383
+ this.keys = this.scene.input.keyboard.addKeys('W,A,S,D,SPACE,ESC,UP,DOWN,LEFT,RIGHT');
386
384
  }
387
385
 
388
386
  private setupTouch(): void {
389
- this.scene.input.on("pointerdown", this.handlePointerDown, this);
390
- this.scene.input.on("pointerup", this.handlePointerUp, this);
387
+ this.scene.input.on('pointerdown', this.handlePointerDown, this);
388
+ this.scene.input.on('pointerup', this.handlePointerUp, this);
391
389
  }
392
390
 
393
391
  update(): void {
@@ -414,9 +412,9 @@ class InputManager {
414
412
  class AssetManager {
415
413
  loadAssets(): Promise<void> {
416
414
  return new Promise((resolve, reject) => {
417
- this.scene.load.on("filecomplete", this.handleFileComplete, this);
418
- this.scene.load.on("loaderror", this.handleLoadError, this);
419
- this.scene.load.on("complete", () => resolve());
415
+ this.scene.load.on('filecomplete', this.handleFileComplete, this);
416
+ this.scene.load.on('loaderror', this.handleLoadError, this);
417
+ this.scene.load.on('complete', () => resolve());
420
418
 
421
419
  this.scene.load.start();
422
420
  });
@@ -432,8 +430,8 @@ class AssetManager {
432
430
  private loadFallbackAsset(key: string): void {
433
431
  // Load placeholder or default assets
434
432
  switch (key) {
435
- case "player":
436
- this.scene.load.image("player", "assets/defaults/default-player.png");
433
+ case 'player':
434
+ this.scene.load.image('player', 'assets/defaults/default-player.png');
437
435
  break;
438
436
  default:
439
437
  console.warn(`No fallback for asset: ${key}`);
@@ -460,11 +458,11 @@ class GameSystem {
460
458
 
461
459
  private attemptRecovery(context: string): void {
462
460
  switch (context) {
463
- case "update":
461
+ case 'update':
464
462
  // Reset system state
465
463
  this.reset();
466
464
  break;
467
- case "render":
465
+ case 'render':
468
466
  // Disable visual effects
469
467
  this.disableEffects();
470
468
  break;
@@ -484,7 +482,7 @@ class GameSystem {
484
482
 
485
483
  ```typescript
486
484
  // Example test for game mechanics
487
- describe("HealthComponent", () => {
485
+ describe('HealthComponent', () => {
488
486
  let healthComponent: HealthComponent;
489
487
 
490
488
  beforeEach(() => {
@@ -492,18 +490,18 @@ describe("HealthComponent", () => {
492
490
  healthComponent = new HealthComponent(mockEntity, 100);
493
491
  });
494
492
 
495
- test("should initialize with correct health", () => {
493
+ test('should initialize with correct health', () => {
496
494
  expect(healthComponent.currentHealth).toBe(100);
497
495
  expect(healthComponent.maxHealth).toBe(100);
498
496
  });
499
497
 
500
- test("should handle damage correctly", () => {
498
+ test('should handle damage correctly', () => {
501
499
  healthComponent.takeDamage(25);
502
500
  expect(healthComponent.currentHealth).toBe(75);
503
501
  expect(healthComponent.isAlive()).toBe(true);
504
502
  });
505
503
 
506
- test("should handle death correctly", () => {
504
+ test('should handle death correctly', () => {
507
505
  healthComponent.takeDamage(150);
508
506
  expect(healthComponent.currentHealth).toBe(0);
509
507
  expect(healthComponent.isAlive()).toBe(false);
@@ -516,7 +514,7 @@ describe("HealthComponent", () => {
516
514
  **Scene Testing:**
517
515
 
518
516
  ```typescript
519
- describe("GameScene Integration", () => {
517
+ describe('GameScene Integration', () => {
520
518
  let scene: GameScene;
521
519
  let mockGame: Phaser.Game;
522
520
 
@@ -526,7 +524,7 @@ describe("GameScene Integration", () => {
526
524
  scene = new GameScene();
527
525
  });
528
526
 
529
- test("should initialize all systems", () => {
527
+ test('should initialize all systems', () => {
530
528
  scene.create({});
531
529
 
532
530
  expect(scene.gameManager).toBeDefined();
@@ -14,7 +14,7 @@ sections:
14
14
  - id: initial-setup
15
15
  instruction: |
16
16
  This template creates a comprehensive game architecture document specifically for Phaser 3 + TypeScript projects. This should provide the technical foundation for all game development stories and epics.
17
-
17
+
18
18
  If available, review any provided documents: Game Design Document (GDD), Technical Preferences. This architecture should support all game mechanics defined in the GDD.
19
19
 
20
20
  - id: introduction
@@ -22,7 +22,7 @@ sections:
22
22
  instruction: Establish the document's purpose and scope for game development
23
23
  content: |
24
24
  This document outlines the complete technical architecture for {{game_title}}, a 2D game built with Phaser 3 and TypeScript. It serves as the technical foundation for AI-driven game development, ensuring consistency and scalability across all game systems.
25
-
25
+
26
26
  This architecture is designed to support the gameplay mechanics defined in the Game Design Document while maintaining 60 FPS performance and cross-platform compatibility.
27
27
  sections:
28
28
  - id: change-log
@@ -41,7 +41,7 @@ sections:
41
41
  title: Architecture Summary
42
42
  instruction: |
43
43
  Provide a comprehensive overview covering:
44
-
44
+
45
45
  - Game engine choice and configuration
46
46
  - Project structure and organization
47
47
  - Key systems and their interactions
@@ -129,23 +129,23 @@ sections:
129
129
  title: Scene Management System
130
130
  template: |
131
131
  **Purpose:** Handle game flow and scene transitions
132
-
132
+
133
133
  **Key Components:**
134
-
134
+
135
135
  - Scene loading and unloading
136
136
  - Data passing between scenes
137
137
  - Transition effects
138
138
  - Memory management
139
-
139
+
140
140
  **Implementation Requirements:**
141
-
141
+
142
142
  - Preload scene for asset loading
143
143
  - Menu system with navigation
144
144
  - Gameplay scenes with state management
145
145
  - Pause/resume functionality
146
-
146
+
147
147
  **Files to Create:**
148
-
148
+
149
149
  - `src/scenes/BootScene.ts`
150
150
  - `src/scenes/PreloadScene.ts`
151
151
  - `src/scenes/MenuScene.ts`
@@ -155,23 +155,23 @@ sections:
155
155
  title: Game State Management
156
156
  template: |
157
157
  **Purpose:** Track player progress and game status
158
-
158
+
159
159
  **State Categories:**
160
-
160
+
161
161
  - Player progress (levels, unlocks)
162
162
  - Game settings (audio, controls)
163
163
  - Session data (current level, score)
164
164
  - Persistent data (achievements, statistics)
165
-
165
+
166
166
  **Implementation Requirements:**
167
-
167
+
168
168
  - Save/load system with localStorage
169
169
  - State validation and error recovery
170
170
  - Cross-session data persistence
171
171
  - Settings management
172
-
172
+
173
173
  **Files to Create:**
174
-
174
+
175
175
  - `src/systems/GameState.ts`
176
176
  - `src/systems/SaveManager.ts`
177
177
  - `src/types/GameData.ts`
@@ -179,23 +179,23 @@ sections:
179
179
  title: Asset Management System
180
180
  template: |
181
181
  **Purpose:** Efficient loading and management of game assets
182
-
182
+
183
183
  **Asset Categories:**
184
-
184
+
185
185
  - Sprite sheets and animations
186
186
  - Audio files and music
187
187
  - Level data and configurations
188
188
  - UI assets and fonts
189
-
189
+
190
190
  **Implementation Requirements:**
191
-
191
+
192
192
  - Progressive loading strategy
193
193
  - Asset caching and optimization
194
194
  - Error handling for failed loads
195
195
  - Memory management for large assets
196
-
196
+
197
197
  **Files to Create:**
198
-
198
+
199
199
  - `src/systems/AssetManager.ts`
200
200
  - `src/config/AssetConfig.ts`
201
201
  - `src/utils/AssetLoader.ts`
@@ -203,23 +203,23 @@ sections:
203
203
  title: Input Management System
204
204
  template: |
205
205
  **Purpose:** Handle all player input across platforms
206
-
206
+
207
207
  **Input Types:**
208
-
208
+
209
209
  - Keyboard controls
210
210
  - Mouse/pointer interaction
211
211
  - Touch gestures (mobile)
212
212
  - Gamepad support (optional)
213
-
213
+
214
214
  **Implementation Requirements:**
215
-
215
+
216
216
  - Input mapping and configuration
217
217
  - Touch-friendly mobile controls
218
218
  - Input buffering for responsive gameplay
219
219
  - Customizable control schemes
220
-
220
+
221
221
  **Files to Create:**
222
-
222
+
223
223
  - `src/systems/InputManager.ts`
224
224
  - `src/utils/TouchControls.ts`
225
225
  - `src/types/InputTypes.ts`
@@ -232,19 +232,19 @@ sections:
232
232
  title: "{{mechanic_name}} System"
233
233
  template: |
234
234
  **Purpose:** {{system_purpose}}
235
-
235
+
236
236
  **Core Functionality:**
237
-
237
+
238
238
  - {{feature_1}}
239
239
  - {{feature_2}}
240
240
  - {{feature_3}}
241
-
241
+
242
242
  **Dependencies:** {{required_systems}}
243
-
243
+
244
244
  **Performance Considerations:** {{optimization_notes}}
245
-
245
+
246
246
  **Files to Create:**
247
-
247
+
248
248
  - `src/systems/{{system_name}}.ts`
249
249
  - `src/gameObjects/{{related_object}}.ts`
250
250
  - `src/types/{{system_types}}.ts`
@@ -252,65 +252,65 @@ sections:
252
252
  title: Physics & Collision System
253
253
  template: |
254
254
  **Physics Engine:** {{physics_choice}} (Arcade Physics/Matter.js)
255
-
255
+
256
256
  **Collision Categories:**
257
-
257
+
258
258
  - Player collision
259
259
  - Enemy interactions
260
260
  - Environmental objects
261
261
  - Collectibles and items
262
-
262
+
263
263
  **Implementation Requirements:**
264
-
264
+
265
265
  - Optimized collision detection
266
266
  - Physics body management
267
267
  - Collision callbacks and events
268
268
  - Performance monitoring
269
-
269
+
270
270
  **Files to Create:**
271
-
271
+
272
272
  - `src/systems/PhysicsManager.ts`
273
273
  - `src/utils/CollisionGroups.ts`
274
274
  - id: audio-system
275
275
  title: Audio System
276
276
  template: |
277
277
  **Audio Requirements:**
278
-
278
+
279
279
  - Background music with looping
280
280
  - Sound effects for actions
281
281
  - Audio settings and volume control
282
282
  - Mobile audio optimization
283
-
283
+
284
284
  **Implementation Features:**
285
-
285
+
286
286
  - Audio sprite management
287
287
  - Dynamic music system
288
288
  - Spatial audio (if applicable)
289
289
  - Audio pooling for performance
290
-
290
+
291
291
  **Files to Create:**
292
-
292
+
293
293
  - `src/systems/AudioManager.ts`
294
294
  - `src/config/AudioConfig.ts`
295
295
  - id: ui-system
296
296
  title: UI System
297
297
  template: |
298
298
  **UI Components:**
299
-
299
+
300
300
  - HUD elements (score, health, etc.)
301
301
  - Menu navigation
302
302
  - Modal dialogs
303
303
  - Settings screens
304
-
304
+
305
305
  **Implementation Requirements:**
306
-
306
+
307
307
  - Responsive layout system
308
308
  - Touch-friendly interface
309
309
  - Keyboard navigation support
310
310
  - Animation and transitions
311
-
311
+
312
312
  **Files to Create:**
313
-
313
+
314
314
  - `src/systems/UIManager.ts`
315
315
  - `src/gameObjects/UI/`
316
316
  - `src/types/UITypes.ts`
@@ -610,4 +610,4 @@ sections:
610
610
  - 90%+ test coverage on game logic
611
611
  - Zero TypeScript errors in strict mode
612
612
  - Consistent adherence to coding standards
613
- - Comprehensive documentation coverage
613
+ - Comprehensive documentation coverage