bmad-stella 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/.github/FORK_GUIDE.md +106 -0
  2. package/.github/FUNDING.yaml +15 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  5. package/.github/workflows/discord.yaml +26 -0
  6. package/.github/workflows/format-check.yaml +44 -0
  7. package/.github/workflows/manual-release.yaml +174 -0
  8. package/.github/workflows/pr-validation.yaml +55 -0
  9. package/.husky/pre-commit +3 -0
  10. package/.vscode/settings.json +69 -0
  11. package/CHANGELOG.md +686 -0
  12. package/CONTRIBUTING.md +243 -0
  13. package/LICENSE +26 -0
  14. package/PR-opencode-agents-generator.md +40 -0
  15. package/README.md +159 -0
  16. package/REVIEWER-AGENT-SIMPLE.md +66 -0
  17. package/bmad-core/agent-teams/team-all.yaml +15 -0
  18. package/bmad-core/agent-teams/team-fullstack.yaml +19 -0
  19. package/bmad-core/agent-teams/team-ide-minimal.yaml +11 -0
  20. package/bmad-core/agent-teams/team-no-ui.yaml +14 -0
  21. package/bmad-core/agents/analyst.md +84 -0
  22. package/bmad-core/agents/architect.md +85 -0
  23. package/bmad-core/agents/bmad-master.md +110 -0
  24. package/bmad-core/agents/bmad-orchestrator.md +147 -0
  25. package/bmad-core/agents/dev.md +96 -0
  26. package/bmad-core/agents/planner.md +86 -0
  27. package/bmad-core/agents/pm.md +84 -0
  28. package/bmad-core/agents/po.md +79 -0
  29. package/bmad-core/agents/qa.md +80 -0
  30. package/bmad-core/agents/reviewer.md +61 -0
  31. package/bmad-core/agents/sm.md +65 -0
  32. package/bmad-core/agents/ux-expert.md +69 -0
  33. package/bmad-core/checklists/architect-checklist.md +440 -0
  34. package/bmad-core/checklists/change-checklist.md +184 -0
  35. package/bmad-core/checklists/planner-validation-checklist.md +167 -0
  36. package/bmad-core/checklists/pm-checklist.md +372 -0
  37. package/bmad-core/checklists/po-master-checklist.md +434 -0
  38. package/bmad-core/checklists/story-dod-checklist.md +96 -0
  39. package/bmad-core/checklists/story-draft-checklist.md +155 -0
  40. package/bmad-core/checklists/task-dod-checklist.md +110 -0
  41. package/bmad-core/core-config.yaml +26 -0
  42. package/bmad-core/data/bmad-kb.md +809 -0
  43. package/bmad-core/data/brainstorming-techniques.md +38 -0
  44. package/bmad-core/data/elicitation-methods.md +156 -0
  45. package/bmad-core/data/technical-preferences.md +5 -0
  46. package/bmad-core/data/test-levels-framework.md +148 -0
  47. package/bmad-core/data/test-priorities-matrix.md +174 -0
  48. package/bmad-core/tasks/advanced-elicitation.md +119 -0
  49. package/bmad-core/tasks/apply-qa-fixes.md +150 -0
  50. package/bmad-core/tasks/brownfield-create-epic.md +162 -0
  51. package/bmad-core/tasks/brownfield-create-story.md +149 -0
  52. package/bmad-core/tasks/correct-course.md +72 -0
  53. package/bmad-core/tasks/create-brownfield-story.md +314 -0
  54. package/bmad-core/tasks/create-deep-research-prompt.md +280 -0
  55. package/bmad-core/tasks/create-implementation-plan.md +298 -0
  56. package/bmad-core/tasks/create-next-story.md +114 -0
  57. package/bmad-core/tasks/decompose-task.md +162 -0
  58. package/bmad-core/tasks/document-project.md +345 -0
  59. package/bmad-core/tasks/facilitate-brainstorming-session.md +138 -0
  60. package/bmad-core/tasks/generate-ai-frontend-prompt.md +53 -0
  61. package/bmad-core/tasks/identify-dependencies.md +347 -0
  62. package/bmad-core/tasks/implement-test.md +188 -0
  63. package/bmad-core/tasks/index-docs.md +175 -0
  64. package/bmad-core/tasks/kb-mode-interaction.md +77 -0
  65. package/bmad-core/tasks/nfr-assess.md +345 -0
  66. package/bmad-core/tasks/qa-gate.md +163 -0
  67. package/bmad-core/tasks/review-and-improve.md +95 -0
  68. package/bmad-core/tasks/review-story.md +316 -0
  69. package/bmad-core/tasks/risk-profile.md +355 -0
  70. package/bmad-core/tasks/shard-doc.md +187 -0
  71. package/bmad-core/tasks/test-design.md +176 -0
  72. package/bmad-core/tasks/trace-requirements.md +266 -0
  73. package/bmad-core/tasks/validate-next-story.md +136 -0
  74. package/bmad-core/templates/architecture-tmpl.yaml +651 -0
  75. package/bmad-core/templates/brainstorming-output-tmpl.yaml +156 -0
  76. package/bmad-core/templates/brownfield-architecture-tmpl.yaml +477 -0
  77. package/bmad-core/templates/brownfield-prd-tmpl.yaml +281 -0
  78. package/bmad-core/templates/competitor-analysis-tmpl.yaml +307 -0
  79. package/bmad-core/templates/front-end-architecture-tmpl.yaml +219 -0
  80. package/bmad-core/templates/front-end-spec-tmpl.yaml +350 -0
  81. package/bmad-core/templates/fullstack-architecture-tmpl.yaml +824 -0
  82. package/bmad-core/templates/implementation-plan-tmpl.yaml +224 -0
  83. package/bmad-core/templates/market-research-tmpl.yaml +253 -0
  84. package/bmad-core/templates/prd-tmpl.yaml +203 -0
  85. package/bmad-core/templates/project-brief-tmpl.yaml +222 -0
  86. package/bmad-core/templates/qa-gate-tmpl.yaml +103 -0
  87. package/bmad-core/templates/story-tmpl.yaml +138 -0
  88. package/bmad-core/workflows/brownfield-fullstack.yaml +298 -0
  89. package/bmad-core/workflows/brownfield-service.yaml +188 -0
  90. package/bmad-core/workflows/brownfield-ui.yaml +198 -0
  91. package/bmad-core/workflows/greenfield-fullstack.yaml +241 -0
  92. package/bmad-core/workflows/greenfield-service.yaml +207 -0
  93. package/bmad-core/workflows/greenfield-ui.yaml +236 -0
  94. package/common/tasks/create-doc.md +103 -0
  95. package/common/tasks/execute-checklist.md +88 -0
  96. package/common/utils/bmad-doc-template.md +327 -0
  97. package/common/utils/workflow-management.md +71 -0
  98. package/dist/agents/analyst.txt +2907 -0
  99. package/dist/agents/architect.txt +3567 -0
  100. package/dist/agents/bmad-master.txt +8828 -0
  101. package/dist/agents/bmad-orchestrator.txt +1520 -0
  102. package/dist/agents/dev.txt +576 -0
  103. package/dist/agents/pm.txt +2226 -0
  104. package/dist/agents/po.txt +1359 -0
  105. package/dist/agents/qa.txt +2001 -0
  106. package/dist/agents/sm.txt +667 -0
  107. package/dist/agents/ux-expert.txt +703 -0
  108. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2386 -0
  109. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +1627 -0
  110. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +822 -0
  111. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +11008 -0
  112. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +4031 -0
  113. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3717 -0
  114. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +456 -0
  115. package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +982 -0
  116. package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +15450 -0
  117. package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +921 -0
  118. package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +81 -0
  119. package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +886 -0
  120. package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
  121. package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +903 -0
  122. package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +837 -0
  123. package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +989 -0
  124. package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +888 -0
  125. package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1173 -0
  126. package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +914 -0
  127. package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +6511 -0
  128. package/dist/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.txt +1513 -0
  129. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-analyst.txt +3190 -0
  130. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-architect.txt +4499 -0
  131. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-designer.txt +3925 -0
  132. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-developer.txt +666 -0
  133. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-pm.txt +2381 -0
  134. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-po.txt +1612 -0
  135. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-qa.txt +1741 -0
  136. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-sm.txt +1208 -0
  137. package/dist/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.txt +958 -0
  138. package/dist/expansion-packs/bmad-godot-game-dev/teams/godot-game-team.txt +27717 -0
  139. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2087 -0
  140. package/dist/teams/team-all.txt +12911 -0
  141. package/dist/teams/team-fullstack.txt +10477 -0
  142. package/dist/teams/team-ide-minimal.txt +5299 -0
  143. package/dist/teams/team-no-ui.txt +9029 -0
  144. package/docs/GUIDING-PRINCIPLES.md +91 -0
  145. package/docs/core-architecture.md +219 -0
  146. package/docs/enhanced-ide-development-workflow.md +248 -0
  147. package/docs/expansion-packs.md +200 -0
  148. package/docs/flattener.md +91 -0
  149. package/docs/how-to-contribute-with-pull-requests.md +158 -0
  150. package/docs/stella-user-guide.md +637 -0
  151. package/docs/user-guide.md +577 -0
  152. package/docs/versioning-and-releases.md +155 -0
  153. package/docs/versions.md +48 -0
  154. package/docs/working-in-the-brownfield.md +606 -0
  155. package/eslint.config.mjs +119 -0
  156. package/expansion-packs/README.md +3 -0
  157. package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +14 -0
  158. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +73 -0
  159. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +80 -0
  160. package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +66 -0
  161. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +203 -0
  162. package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +162 -0
  163. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +9 -0
  164. package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +252 -0
  165. package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +649 -0
  166. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +112 -0
  167. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +218 -0
  168. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +292 -0
  169. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +614 -0
  170. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +357 -0
  171. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +344 -0
  172. package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +254 -0
  173. package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
  174. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +184 -0
  175. package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +176 -0
  176. package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +15 -0
  177. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +82 -0
  178. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +79 -0
  179. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +80 -0
  180. package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +67 -0
  181. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +393 -0
  182. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +205 -0
  183. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +203 -0
  184. package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +126 -0
  185. package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +7 -0
  186. package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +771 -0
  187. package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +588 -0
  188. package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +112 -0
  189. package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +143 -0
  190. package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +186 -0
  191. package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +292 -0
  192. package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +202 -0
  193. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +1031 -0
  194. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +357 -0
  195. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +706 -0
  196. package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +257 -0
  197. package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
  198. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +184 -0
  199. package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +176 -0
  200. package/expansion-packs/bmad-creative-writing/README.md +146 -0
  201. package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +20 -0
  202. package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +94 -0
  203. package/expansion-packs/bmad-creative-writing/agents/book-critic.md +40 -0
  204. package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +93 -0
  205. package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +46 -0
  206. package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +92 -0
  207. package/expansion-packs/bmad-creative-writing/agents/editor.md +93 -0
  208. package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +95 -0
  209. package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +93 -0
  210. package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +95 -0
  211. package/expansion-packs/bmad-creative-writing/agents/world-builder.md +94 -0
  212. package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +23 -0
  213. package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +23 -0
  214. package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +23 -0
  215. package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +23 -0
  216. package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +21 -0
  217. package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +23 -0
  218. package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +23 -0
  219. package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +22 -0
  220. package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +22 -0
  221. package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +23 -0
  222. package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +23 -0
  223. package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +25 -0
  224. package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +23 -0
  225. package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +23 -0
  226. package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +23 -0
  227. package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +23 -0
  228. package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +59 -0
  229. package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +23 -0
  230. package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +23 -0
  231. package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +23 -0
  232. package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +22 -0
  233. package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +23 -0
  234. package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +23 -0
  235. package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +23 -0
  236. package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +23 -0
  237. package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +23 -0
  238. package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +23 -0
  239. package/expansion-packs/bmad-creative-writing/config.yaml +12 -0
  240. package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +209 -0
  241. package/expansion-packs/bmad-creative-writing/data/story-structures.md +67 -0
  242. package/expansion-packs/bmad-creative-writing/docs/brief.md +212 -0
  243. package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +119 -0
  244. package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +23 -0
  245. package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +67 -0
  246. package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +29 -0
  247. package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +23 -0
  248. package/expansion-packs/bmad-creative-writing/tasks/build-world.md +24 -0
  249. package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +22 -0
  250. package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +103 -0
  251. package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +26 -0
  252. package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +26 -0
  253. package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +24 -0
  254. package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +88 -0
  255. package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +23 -0
  256. package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +23 -0
  257. package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +23 -0
  258. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +25 -0
  259. package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +26 -0
  260. package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +23 -0
  261. package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +25 -0
  262. package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +23 -0
  263. package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +24 -0
  264. package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +23 -0
  265. package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +22 -0
  266. package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +23 -0
  267. package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +64 -0
  268. package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +97 -0
  269. package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +82 -0
  270. package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
  271. package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +98 -0
  272. package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +78 -0
  273. package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +55 -0
  274. package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
  275. package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +89 -0
  276. package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +218 -0
  277. package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +56 -0
  278. package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +50 -0
  279. package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
  280. package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +91 -0
  281. package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +85 -0
  282. package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +78 -0
  283. package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +64 -0
  284. package/expansion-packs/bmad-godot-game-dev/README.md +244 -0
  285. package/expansion-packs/bmad-godot-game-dev/agent-teams/godot-game-team.yaml +18 -0
  286. package/expansion-packs/bmad-godot-game-dev/agents/bmad-orchestrator.md +147 -0
  287. package/expansion-packs/bmad-godot-game-dev/agents/game-analyst.md +84 -0
  288. package/expansion-packs/bmad-godot-game-dev/agents/game-architect.md +146 -0
  289. package/expansion-packs/bmad-godot-game-dev/agents/game-designer.md +78 -0
  290. package/expansion-packs/bmad-godot-game-dev/agents/game-developer.md +124 -0
  291. package/expansion-packs/bmad-godot-game-dev/agents/game-pm.md +82 -0
  292. package/expansion-packs/bmad-godot-game-dev/agents/game-po.md +115 -0
  293. package/expansion-packs/bmad-godot-game-dev/agents/game-qa.md +159 -0
  294. package/expansion-packs/bmad-godot-game-dev/agents/game-sm.md +66 -0
  295. package/expansion-packs/bmad-godot-game-dev/agents/game-ux-expert.md +75 -0
  296. package/expansion-packs/bmad-godot-game-dev/checklists/game-architect-checklist.md +377 -0
  297. package/expansion-packs/bmad-godot-game-dev/checklists/game-change-checklist.md +250 -0
  298. package/expansion-packs/bmad-godot-game-dev/checklists/game-design-checklist.md +225 -0
  299. package/expansion-packs/bmad-godot-game-dev/checklists/game-po-checklist.md +448 -0
  300. package/expansion-packs/bmad-godot-game-dev/checklists/game-story-dod-checklist.md +202 -0
  301. package/expansion-packs/bmad-godot-game-dev/config.yaml +30 -0
  302. package/expansion-packs/bmad-godot-game-dev/data/bmad-kb.md +811 -0
  303. package/expansion-packs/bmad-godot-game-dev/data/brainstorming-techniques.md +36 -0
  304. package/expansion-packs/bmad-godot-game-dev/data/development-guidelines.md +893 -0
  305. package/expansion-packs/bmad-godot-game-dev/data/elicitation-methods.md +156 -0
  306. package/expansion-packs/bmad-godot-game-dev/data/technical-preferences.md +3 -0
  307. package/expansion-packs/bmad-godot-game-dev/tasks/advanced-elicitation.md +110 -0
  308. package/expansion-packs/bmad-godot-game-dev/tasks/apply-qa-fixes.md +224 -0
  309. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-epic.md +162 -0
  310. package/expansion-packs/bmad-godot-game-dev/tasks/brownfield-create-story.md +149 -0
  311. package/expansion-packs/bmad-godot-game-dev/tasks/correct-course-game.md +159 -0
  312. package/expansion-packs/bmad-godot-game-dev/tasks/create-deep-research-prompt.md +278 -0
  313. package/expansion-packs/bmad-godot-game-dev/tasks/create-doc.md +103 -0
  314. package/expansion-packs/bmad-godot-game-dev/tasks/create-game-story.md +202 -0
  315. package/expansion-packs/bmad-godot-game-dev/tasks/document-project.md +343 -0
  316. package/expansion-packs/bmad-godot-game-dev/tasks/execute-checklist.md +88 -0
  317. package/expansion-packs/bmad-godot-game-dev/tasks/facilitate-brainstorming-session.md +136 -0
  318. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-epic.md +160 -0
  319. package/expansion-packs/bmad-godot-game-dev/tasks/game-brownfield-create-story.md +147 -0
  320. package/expansion-packs/bmad-godot-game-dev/tasks/game-design-brainstorming.md +290 -0
  321. package/expansion-packs/bmad-godot-game-dev/tasks/game-risk-profile.md +368 -0
  322. package/expansion-packs/bmad-godot-game-dev/tasks/game-test-design.md +219 -0
  323. package/expansion-packs/bmad-godot-game-dev/tasks/generate-ai-frontend-prompt.md +51 -0
  324. package/expansion-packs/bmad-godot-game-dev/tasks/kb-mode-interaction.md +77 -0
  325. package/expansion-packs/bmad-godot-game-dev/tasks/review-game-story.md +364 -0
  326. package/expansion-packs/bmad-godot-game-dev/tasks/shard-doc.md +187 -0
  327. package/expansion-packs/bmad-godot-game-dev/tasks/validate-game-story.md +208 -0
  328. package/expansion-packs/bmad-godot-game-dev/templates/brainstorming-output-tmpl.yaml +156 -0
  329. package/expansion-packs/bmad-godot-game-dev/templates/brownfield-prd-tmpl.yaml +281 -0
  330. package/expansion-packs/bmad-godot-game-dev/templates/competitor-analysis-tmpl.yaml +306 -0
  331. package/expansion-packs/bmad-godot-game-dev/templates/game-architecture-tmpl.yaml +1111 -0
  332. package/expansion-packs/bmad-godot-game-dev/templates/game-brief-tmpl.yaml +356 -0
  333. package/expansion-packs/bmad-godot-game-dev/templates/game-design-doc-tmpl.yaml +724 -0
  334. package/expansion-packs/bmad-godot-game-dev/templates/game-prd-tmpl.yaml +209 -0
  335. package/expansion-packs/bmad-godot-game-dev/templates/game-qa-gate-tmpl.yaml +186 -0
  336. package/expansion-packs/bmad-godot-game-dev/templates/game-story-tmpl.yaml +406 -0
  337. package/expansion-packs/bmad-godot-game-dev/templates/game-ui-spec-tmpl.yaml +601 -0
  338. package/expansion-packs/bmad-godot-game-dev/templates/level-design-doc-tmpl.yaml +620 -0
  339. package/expansion-packs/bmad-godot-game-dev/templates/market-research-tmpl.yaml +418 -0
  340. package/expansion-packs/bmad-godot-game-dev/utils/bmad-doc-template.md +327 -0
  341. package/expansion-packs/bmad-godot-game-dev/utils/workflow-management.md +71 -0
  342. package/expansion-packs/bmad-godot-game-dev/workflows/game-dev-greenfield.yaml +245 -0
  343. package/expansion-packs/bmad-godot-game-dev/workflows/game-prototype.yaml +213 -0
  344. package/expansion-packs/bmad-infrastructure-devops/README.md +147 -0
  345. package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +73 -0
  346. package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +486 -0
  347. package/expansion-packs/bmad-infrastructure-devops/config.yaml +10 -0
  348. package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +307 -0
  349. package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +161 -0
  350. package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +155 -0
  351. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +425 -0
  352. package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +630 -0
  353. package/package.json +116 -0
  354. package/prettier.config.mjs +32 -0
  355. package/tools/bmad-npx-wrapper.js +39 -0
  356. package/tools/builders/web-builder.js +675 -0
  357. package/tools/bump-all-versions.js +115 -0
  358. package/tools/bump-expansion-version.js +90 -0
  359. package/tools/cli.js +152 -0
  360. package/tools/flattener/aggregate.js +76 -0
  361. package/tools/flattener/binary.js +80 -0
  362. package/tools/flattener/discovery.js +71 -0
  363. package/tools/flattener/files.js +35 -0
  364. package/tools/flattener/ignoreRules.js +178 -0
  365. package/tools/flattener/main.js +568 -0
  366. package/tools/flattener/projectRoot.js +206 -0
  367. package/tools/flattener/prompts.js +44 -0
  368. package/tools/flattener/stats.helpers.js +395 -0
  369. package/tools/flattener/stats.js +80 -0
  370. package/tools/flattener/test-matrix.js +413 -0
  371. package/tools/flattener/xml.js +88 -0
  372. package/tools/implement-fork-friendly-ci.sh +229 -0
  373. package/tools/installer/README.md +8 -0
  374. package/tools/installer/bin/bmad.js +633 -0
  375. package/tools/installer/config/ide-agent-config.yaml +58 -0
  376. package/tools/installer/config/install.config.yaml +184 -0
  377. package/tools/installer/lib/config-loader.js +257 -0
  378. package/tools/installer/lib/dependency-manager.js +383 -0
  379. package/tools/installer/lib/file-manager.js +394 -0
  380. package/tools/installer/lib/ide-base-setup.js +228 -0
  381. package/tools/installer/lib/ide-setup.js +2461 -0
  382. package/tools/installer/lib/installer.js +2094 -0
  383. package/tools/installer/lib/memory-profiler.js +225 -0
  384. package/tools/installer/lib/module-manager.js +114 -0
  385. package/tools/installer/lib/resource-locator.js +308 -0
  386. package/tools/installer/package.json +47 -0
  387. package/tools/lib/dependency-resolver.js +175 -0
  388. package/tools/lib/yaml-utils.js +29 -0
  389. package/tools/md-assets/web-agent-startup-instructions.md +39 -0
  390. package/tools/preview-release-notes.js +66 -0
  391. package/tools/setup-hooks.sh +37 -0
  392. package/tools/shared/bannerArt.js +105 -0
  393. package/tools/sync-installer-version.js +32 -0
  394. package/tools/sync-version.sh +23 -0
  395. package/tools/update-expansion-version.js +53 -0
  396. package/tools/upgraders/v3-to-v4-upgrader.js +673 -0
  397. package/tools/version-bump.js +94 -0
  398. package/tools/yaml-format.js +253 -0
@@ -0,0 +1,175 @@
1
+ const fs = require('node:fs').promises;
2
+ const path = require('node:path');
3
+ const yaml = require('js-yaml');
4
+ const { extractYamlFromAgent } = require('./yaml-utils');
5
+
6
+ class DependencyResolver {
7
+ constructor(rootDir) {
8
+ this.rootDir = rootDir;
9
+ this.bmadCore = path.join(rootDir, 'bmad-core');
10
+ this.common = path.join(rootDir, 'common');
11
+ this.cache = new Map();
12
+ }
13
+
14
+ async resolveAgentDependencies(agentId) {
15
+ const agentPath = path.join(this.bmadCore, 'agents', `${agentId}.md`);
16
+ const agentContent = await fs.readFile(agentPath, 'utf8');
17
+
18
+ // Extract YAML from markdown content with command cleaning
19
+ const yamlContent = extractYamlFromAgent(agentContent, true);
20
+ if (!yamlContent) {
21
+ throw new Error(`No YAML configuration found in agent ${agentId}`);
22
+ }
23
+
24
+ const agentConfig = yaml.load(yamlContent);
25
+
26
+ const dependencies = {
27
+ agent: {
28
+ id: agentId,
29
+ path: agentPath,
30
+ content: agentContent,
31
+ config: agentConfig,
32
+ },
33
+ resources: [],
34
+ };
35
+
36
+ // Personas are now embedded in agent configs, no need to resolve separately
37
+
38
+ // Resolve other dependencies
39
+ const depTypes = ['tasks', 'templates', 'checklists', 'data', 'utils'];
40
+ for (const depType of depTypes) {
41
+ const deps = agentConfig.dependencies?.[depType] || [];
42
+ for (const depId of deps) {
43
+ const resource = await this.loadResource(depType, depId);
44
+ if (resource) dependencies.resources.push(resource);
45
+ }
46
+ }
47
+
48
+ return dependencies;
49
+ }
50
+
51
+ async resolveTeamDependencies(teamId) {
52
+ const teamPath = path.join(this.bmadCore, 'agent-teams', `${teamId}.yaml`);
53
+ const teamContent = await fs.readFile(teamPath, 'utf8');
54
+ const teamConfig = yaml.load(teamContent);
55
+
56
+ const dependencies = {
57
+ team: {
58
+ id: teamId,
59
+ path: teamPath,
60
+ content: teamContent,
61
+ config: teamConfig,
62
+ },
63
+ agents: [],
64
+ resources: new Map(), // Use Map to deduplicate resources
65
+ };
66
+
67
+ // Always add bmad-orchestrator agent first if it's a team
68
+ const bmadAgent = await this.resolveAgentDependencies('bmad-orchestrator');
69
+ dependencies.agents.push(bmadAgent.agent);
70
+ for (const res of bmadAgent.resources) {
71
+ dependencies.resources.set(res.path, res);
72
+ }
73
+
74
+ // Resolve all agents in the team
75
+ let agentsToResolve = teamConfig.agents || [];
76
+
77
+ // Handle wildcard "*" - include all agents except bmad-master
78
+ if (agentsToResolve.includes('*')) {
79
+ const allAgents = await this.listAgents();
80
+ // Remove wildcard and add all agents except those already in the list and bmad-master
81
+ agentsToResolve = agentsToResolve.filter((a) => a !== '*');
82
+ for (const agent of allAgents) {
83
+ if (!agentsToResolve.includes(agent) && agent !== 'bmad-master') {
84
+ agentsToResolve.push(agent);
85
+ }
86
+ }
87
+ }
88
+
89
+ for (const agentId of agentsToResolve) {
90
+ if (agentId === 'bmad-orchestrator' || agentId === 'bmad-master') continue; // Already added or excluded
91
+ const agentDeps = await this.resolveAgentDependencies(agentId);
92
+ dependencies.agents.push(agentDeps.agent);
93
+
94
+ // Add resources with deduplication
95
+ for (const res of agentDeps.resources) {
96
+ dependencies.resources.set(res.path, res);
97
+ }
98
+ }
99
+
100
+ // Resolve workflows
101
+ for (const workflowId of teamConfig.workflows || []) {
102
+ const resource = await this.loadResource('workflows', workflowId);
103
+ if (resource) dependencies.resources.set(resource.path, resource);
104
+ }
105
+
106
+ // Convert Map back to array
107
+ dependencies.resources = [...dependencies.resources.values()];
108
+
109
+ return dependencies;
110
+ }
111
+
112
+ async loadResource(type, id) {
113
+ const cacheKey = `${type}#${id}`;
114
+ if (this.cache.has(cacheKey)) {
115
+ return this.cache.get(cacheKey);
116
+ }
117
+
118
+ try {
119
+ let content = null;
120
+ let filePath = null;
121
+
122
+ // First try bmad-core
123
+ try {
124
+ filePath = path.join(this.bmadCore, type, id);
125
+ content = await fs.readFile(filePath, 'utf8');
126
+ } catch {
127
+ // If not found in bmad-core, try common folder
128
+ try {
129
+ filePath = path.join(this.common, type, id);
130
+ content = await fs.readFile(filePath, 'utf8');
131
+ } catch {
132
+ // File not found in either location
133
+ }
134
+ }
135
+
136
+ if (!content) {
137
+ console.warn(`Resource not found: ${type}/${id}`);
138
+ return null;
139
+ }
140
+
141
+ const resource = {
142
+ type,
143
+ id,
144
+ path: filePath,
145
+ content,
146
+ };
147
+
148
+ this.cache.set(cacheKey, resource);
149
+ return resource;
150
+ } catch (error) {
151
+ console.error(`Error loading resource ${type}/${id}:`, error.message);
152
+ return null;
153
+ }
154
+ }
155
+
156
+ async listAgents() {
157
+ try {
158
+ const files = await fs.readdir(path.join(this.bmadCore, 'agents'));
159
+ return files.filter((f) => f.endsWith('.md')).map((f) => f.replace('.md', ''));
160
+ } catch {
161
+ return [];
162
+ }
163
+ }
164
+
165
+ async listTeams() {
166
+ try {
167
+ const files = await fs.readdir(path.join(this.bmadCore, 'agent-teams'));
168
+ return files.filter((f) => f.endsWith('.yaml')).map((f) => f.replace('.yaml', ''));
169
+ } catch {
170
+ return [];
171
+ }
172
+ }
173
+ }
174
+
175
+ module.exports = DependencyResolver;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Utility functions for YAML extraction from agent files
3
+ */
4
+
5
+ /**
6
+ * Extract YAML content from agent markdown files
7
+ * @param {string} agentContent - The full content of the agent file
8
+ * @param {boolean} cleanCommands - Whether to clean command descriptions (default: false)
9
+ * @returns {string|null} - The extracted YAML content or null if not found
10
+ */
11
+ function extractYamlFromAgent(agentContent, cleanCommands = false) {
12
+ // Remove carriage returns and match YAML block
13
+ const yamlMatch = agentContent.replaceAll('\r', '').match(/```ya?ml\n([\s\S]*?)\n```/);
14
+ if (!yamlMatch) return null;
15
+
16
+ let yamlContent = yamlMatch[1].trim();
17
+
18
+ // Clean up command descriptions if requested
19
+ // Converts "- command - description" to just "- command"
20
+ if (cleanCommands) {
21
+ yamlContent = yamlContent.replaceAll(/^(\s*-)(\s*"[^"]+")(\s*-\s*.*)$/gm, '$1$2');
22
+ }
23
+
24
+ return yamlContent;
25
+ }
26
+
27
+ module.exports = {
28
+ extractYamlFromAgent,
29
+ };
@@ -0,0 +1,39 @@
1
+ # Web Agent Bundle Instructions
2
+
3
+ You are now operating as a specialized AI agent from the BMad-Method framework. This is a bundled web-compatible version containing all necessary resources for your role.
4
+
5
+ ## Important Instructions
6
+
7
+ ### **Follow all startup commands**: Your agent configuration includes startup instructions that define your behavior, personality, and approach. These MUST be followed exactly.
8
+
9
+ ### **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
10
+
11
+ - `==================== START: .bmad-core/folder/filename.md ====================`
12
+ - `==================== END: .bmad-core/folder/filename.md ====================`
13
+
14
+ When you need to reference a resource mentioned in your instructions:
15
+
16
+ - Look for the corresponding START/END tags
17
+ - The format is always the full path with dot prefix (e.g., `.bmad-core/personas/analyst.md`, `.bmad-core/tasks/create-story.md`)
18
+ - If a section is specified (e.g., `{root}/tasks/create-story.md#section-name`), navigate to that section within the file
19
+
20
+ **Understanding YAML References**: In the agent configuration, resources are referenced in the dependencies section. For example:
21
+
22
+ ```yaml
23
+ dependencies:
24
+ utils:
25
+ - template-format
26
+ tasks:
27
+ - create-story
28
+ ```
29
+
30
+ These references map directly to bundle sections:
31
+
32
+ - `dependencies.utils: template-format` → Look for `==================== START: .bmad-core/utils/template-format.md ====================`
33
+ - `dependencies.utils: create-story` → Look for `==================== START: .bmad-core/tasks/create-story.md ====================`
34
+
35
+ ### **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance. You have no file system to write to, so you will maintain document history being drafted in your memory unless a canvas feature is available and the user confirms its usage.
36
+
37
+ ## **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role explicitly as defined.
38
+
39
+ ---
@@ -0,0 +1,66 @@
1
+ const { execSync } = require('node:child_process');
2
+ const fs = require('node:fs');
3
+
4
+ // Get the latest stable tag (exclude beta tags)
5
+ const allTags = execSync('git tag -l | sort -V', { encoding: 'utf8' }).split('\n').filter(Boolean);
6
+ const stableTags = allTags.filter((tag) => !tag.includes('beta'));
7
+ const latestTag = stableTags.at(-1) || 'v5.0.0';
8
+
9
+ // Get commits since last tag
10
+ const commits = execSync(`git log ${latestTag}..HEAD --pretty=format:"- %s" --reverse`, {
11
+ encoding: 'utf8',
12
+ })
13
+ .split('\n')
14
+ .filter(Boolean);
15
+
16
+ // Categorize commits
17
+ const features = commits.filter((commit) => /^- (feat|Feature)/.test(commit));
18
+ const fixes = commits.filter((commit) => /^- (fix|Fix)/.test(commit));
19
+ const chores = commits.filter((commit) => /^- (chore|Chore)/.test(commit));
20
+ const others = commits.filter(
21
+ (commit) => !/^- (feat|Feature|fix|Fix|chore|Chore|release:|Release:)/.test(commit),
22
+ );
23
+
24
+ // Get next version (you can modify this logic)
25
+ const currentVersion = require('../package.json').version;
26
+ const versionParts = currentVersion.split('.').map(Number);
27
+ const nextVersion = `${versionParts[0]}.${versionParts[1] + 1}.0`; // Default to minor bump
28
+
29
+ console.log(`## 🚀 What's New in v${nextVersion}\n`);
30
+
31
+ if (features.length > 0) {
32
+ console.log('### ✨ New Features');
33
+ for (const feature of features) console.log(feature);
34
+ console.log('');
35
+ }
36
+
37
+ if (fixes.length > 0) {
38
+ console.log('### 🐛 Bug Fixes');
39
+ for (const fix of fixes) console.log(fix);
40
+ console.log('');
41
+ }
42
+
43
+ if (others.length > 0) {
44
+ console.log('### 📦 Other Changes');
45
+ for (const other of others) console.log(other);
46
+ console.log('');
47
+ }
48
+
49
+ if (chores.length > 0) {
50
+ console.log('### 🔧 Maintenance');
51
+ for (const chore of chores) console.log(chore);
52
+ console.log('');
53
+ }
54
+
55
+ console.log('\n## 📦 Installation\n');
56
+ console.log('```bash');
57
+ console.log('npx bmad-method install');
58
+ console.log('```');
59
+
60
+ console.log(
61
+ `\n**Full Changelog**: https://github.com/bmadcode/BMAD-METHOD/compare/${latestTag}...v${nextVersion}`,
62
+ );
63
+
64
+ console.log(`\n---\n📊 **Summary**: ${commits.length} commits since ${latestTag}`);
65
+ console.log(`🏷️ **Previous tag**: ${latestTag}`);
66
+ console.log(`🚀 **Next version**: v${nextVersion} (estimated)`);
@@ -0,0 +1,37 @@
1
+ #!/bin/bash
2
+
3
+ # Setup script for git hooks
4
+ echo "Setting up git hooks..."
5
+
6
+ # Install husky
7
+ npm install --save-dev husky
8
+
9
+ # Initialize husky
10
+ npx husky init
11
+
12
+ # Create pre-commit hook
13
+ cat > .husky/pre-commit << 'EOF'
14
+ #!/usr/bin/env sh
15
+ . "$(dirname -- "$0")/_/husky.sh"
16
+
17
+ # Run validation checks before commit
18
+ echo "Running pre-commit checks..."
19
+
20
+ npm run validate
21
+ npm run format:check
22
+ npm run lint
23
+
24
+ if [ $? -ne 0 ]; then
25
+ echo "❌ Pre-commit checks failed. Please fix the issues before committing."
26
+ echo " Run 'npm run format' to fix formatting issues"
27
+ echo " Run 'npm run lint:fix' to fix some lint issues"
28
+ exit 1
29
+ fi
30
+
31
+ echo "✅ Pre-commit checks passed!"
32
+ EOF
33
+
34
+ chmod +x .husky/pre-commit
35
+
36
+ echo "✅ Git hooks setup complete!"
37
+ echo "Now commits will be validated before they're created."
@@ -0,0 +1,105 @@
1
+ // ASCII banner art definitions extracted from banners.js to separate art from logic
2
+
3
+ const BMAD_TITLE = 'BMAD-METHOD™';
4
+ const FLATTENER_TITLE = 'FLATTENER';
5
+ const INSTALLER_TITLE = 'INSTALLER';
6
+
7
+ // Large ASCII blocks (block-style fonts)
8
+ const BMAD_LARGE = `
9
+ ██████╗ ███╗ ███╗ █████╗ ██████╗ ███╗ ███╗███████╗████████╗██╗ ██╗ ██████╗ ██████╗
10
+ ██╔══██╗████╗ ████║██╔══██╗██╔══██╗ ████╗ ████║██╔════╝╚══██╔══╝██║ ██║██╔═══██╗██╔══██╗
11
+ ██████╔╝██╔████╔██║███████║██║ ██║█████╗██╔████╔██║█████╗ ██║ ███████║██║ ██║██║ ██║
12
+ ██╔══██╗██║╚██╔╝██║██╔══██║██║ ██║╚════╝██║╚██╔╝██║██╔══╝ ██║ ██╔══██║██║ ██║██║ ██║
13
+ ██████╔╝██║ ╚═╝ ██║██║ ██║██████╔╝ ██║ ╚═╝ ██║███████╗ ██║ ██║ ██║╚██████╔╝██████╔╝
14
+ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
15
+ `;
16
+
17
+ const FLATTENER_LARGE = `
18
+ ███████╗██╗ █████╗ ████████╗████████╗███████╗███╗ ██╗███████╗██████╗
19
+ ██╔════╝██║ ██╔══██╗╚══██╔══╝╚══██╔══╝██╔════╝████╗ ██║██╔════╝██╔══██╗
20
+ █████╗ ██║ ███████║ ██║ ██║ █████╗ ██╔██╗ ██║█████╗ ██████╔╝
21
+ ██╔══╝ ██║ ██╔══██║ ██║ ██║ ██╔══╝ ██║╚██╗██║██╔══╝ ██╔══██╗
22
+ ██║ ███████║██║ ██║ ██║ ██║ ███████╗██║ ╚████║███████╗██║ ██║
23
+ ╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝
24
+ `;
25
+
26
+ const INSTALLER_LARGE = `
27
+ ██╗███╗ ██╗███████╗████████╗ █████╗ ██╗ ██╗ ███████╗██████╗
28
+ ██║████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██║ ██║ ██╔════╝██╔══██╗
29
+ ██║██╔██╗ ██║███████╗ ██║ ███████║██║ ██║ █████╗ ██████╔╝
30
+ ██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██║ ██╔══╝ ██╔══██╗
31
+ ██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗███████╗██║ ██║
32
+ ╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝╚═╝ ╚═╝
33
+ `;
34
+
35
+ // Curated medium/small/tiny variants (fixed art, no runtime scaling)
36
+ // Medium: bold framed title with heavy fill (high contrast, compact)
37
+ const BMAD_MEDIUM = `
38
+ ███╗ █╗ █╗ ██╗ ███╗ █╗ █╗███╗█████╗█╗ █╗ ██╗ ███╗
39
+ █╔═█╗██╗ ██║█╔═█╗█╔═█╗ ██╗ ██║█╔═╝╚═█╔═╝█║ █║█╔═█╗█╔═█╗
40
+ ███╔╝█╔███╔█║████║█║ █║██╗█╔███╔█║██╗ █║ ████║█║ █║█║ █║
41
+ █╔═█╗█║ █╔╝█║█╔═█║█║ █║╚═╝█║ █╔╝█║█╔╝ █║ █╔═█║█║ █║█║ █║
42
+ ███╔╝█║ ╚╝ █║█║ █║███╔╝ █║ ╚╝ █║███╗ █║ █║ █║╚██╔╝███╔╝
43
+ ╚══╝ ╚╝ ╚╝╚╝ ╚╝╚══╝ ╚╝ ╚╝╚══╝ ╚╝ ╚╝ ╚╝ ╚═╝ ╚══╝
44
+ `;
45
+
46
+ const FLATTENER_MEDIUM = `
47
+ ███╗█╗ ██╗ █████╗█████╗███╗█╗ █╗███╗███╗
48
+ █╔═╝█║ █╔═█╗╚═█╔═╝╚═█╔═╝█╔═╝██╗ █║█╔═╝█╔═█╗
49
+ ██╗ █║ ████║ █║ █║ ██╗ █╔█╗█║██╗ ███╔╝
50
+ █╔╝ █║ █╔═█║ █║ █║ █╔╝ █║ ██║█╔╝ █╔═█╗
51
+ █║ ███║█║ █║ █║ █║ ███╗█║ █║███╗█║ █║
52
+ ╚╝ ╚══╝╚╝ ╚╝ ╚╝ ╚╝ ╚══╝╚╝ ╚╝╚══╝╚╝ ╚╝
53
+ `;
54
+
55
+ const INSTALLER_MEDIUM = `
56
+ █╗█╗ █╗████╗█████╗ ██╗ █╗ █╗ ███╗███╗
57
+ █║██╗ █║█╔══╝╚═█╔═╝█╔═█╗█║ █║ █╔═╝█╔═█╗
58
+ █║█╔█╗█║████╗ █║ ████║█║ █║ ██╗ ███╔╝
59
+ █║█║ ██║╚══█║ █║ █╔═█║█║ █║ █╔╝ █╔═█╗
60
+ █║█║ █║████║ █║ █║ █║███╗███╗███╗█║ █║
61
+ ╚╝╚╝ ╚╝╚═══╝ ╚╝ ╚╝ ╚╝╚══╝╚══╝╚══╝╚╝ ╚╝
62
+ `;
63
+
64
+ // Small: rounded box with bold rule
65
+ // Width: 30 columns total (28 inner)
66
+ const BMAD_SMALL = `
67
+ ╭──────────────────────────╮
68
+ │ BMAD-METHOD™ │
69
+ ╰──────────────────────────╯
70
+ `;
71
+
72
+ const FLATTENER_SMALL = `
73
+ ╭──────────────────────────╮
74
+ │ FLATTENER │
75
+ ╰──────────────────────────╯
76
+ `;
77
+
78
+ const INSTALLER_SMALL = `
79
+ ╭──────────────────────────╮
80
+ │ INSTALLER │
81
+ ╰──────────────────────────╯
82
+ `;
83
+
84
+ // Tiny (compact brackets)
85
+ const BMAD_TINY = `[ BMAD-METHOD™ ]`;
86
+ const FLATTENER_TINY = `[ FLATTENER ]`;
87
+ const INSTALLER_TINY = `[ INSTALLER ]`;
88
+
89
+ module.exports = {
90
+ BMAD_TITLE,
91
+ FLATTENER_TITLE,
92
+ INSTALLER_TITLE,
93
+ BMAD_LARGE,
94
+ FLATTENER_LARGE,
95
+ INSTALLER_LARGE,
96
+ BMAD_MEDIUM,
97
+ FLATTENER_MEDIUM,
98
+ INSTALLER_MEDIUM,
99
+ BMAD_SMALL,
100
+ FLATTENER_SMALL,
101
+ INSTALLER_SMALL,
102
+ BMAD_TINY,
103
+ FLATTENER_TINY,
104
+ INSTALLER_TINY,
105
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Sync installer package.json version with main package.json
3
+ * Used by semantic-release to keep versions in sync
4
+ */
5
+
6
+ const fs = require('node:fs');
7
+ const path = require('node:path');
8
+
9
+ function syncInstallerVersion() {
10
+ // Read main package.json
11
+ const mainPackagePath = path.join(__dirname, '..', 'package.json');
12
+ const mainPackage = JSON.parse(fs.readFileSync(mainPackagePath, 'utf8'));
13
+
14
+ // Read installer package.json
15
+ const installerPackagePath = path.join(__dirname, 'installer', 'package.json');
16
+ const installerPackage = JSON.parse(fs.readFileSync(installerPackagePath, 'utf8'));
17
+
18
+ // Update installer version to match main version
19
+ installerPackage.version = mainPackage.version;
20
+
21
+ // Write back installer package.json
22
+ fs.writeFileSync(installerPackagePath, JSON.stringify(installerPackage, null, 2) + '\n');
23
+
24
+ console.log(`Synced installer version to ${mainPackage.version}`);
25
+ }
26
+
27
+ // Run if called directly
28
+ if (require.main === module) {
29
+ syncInstallerVersion();
30
+ }
31
+
32
+ module.exports = { syncInstallerVersion };
@@ -0,0 +1,23 @@
1
+ #!/bin/bash
2
+
3
+ # Sync local version with published npm version
4
+ # Run this after a release if the version bump commit didn't sync automatically
5
+
6
+ echo "🔄 Syncing local version with npm..."
7
+
8
+ # Get the latest published version
9
+ VERSION=$(npm view bmad-method@latest version)
10
+ echo "📦 Latest published version: $VERSION"
11
+
12
+ # Update package.json
13
+ npm version $VERSION --no-git-tag-version
14
+
15
+ # Update installer package.json
16
+ sed -i '' 's/"version": ".*"/"version": "'$VERSION'"/' tools/installer/package.json
17
+
18
+ # Commit and push
19
+ git add package.json tools/installer/package.json
20
+ git commit -m "sync: update to published version $VERSION"
21
+ git push
22
+
23
+ echo "✅ Synced to version $VERSION"
@@ -0,0 +1,53 @@
1
+ const fs = require('node:fs');
2
+ const path = require('node:path');
3
+ const yaml = require('js-yaml');
4
+
5
+ const arguments_ = process.argv.slice(2);
6
+
7
+ if (arguments_.length < 2) {
8
+ console.log('Usage: node update-expansion-version.js <expansion-pack-id> <new-version>');
9
+ console.log('Example: node update-expansion-version.js bmad-creator-tools 1.1.0');
10
+ process.exit(1);
11
+ }
12
+
13
+ const [packId, newVersion] = arguments_;
14
+
15
+ // Validate version format
16
+ if (!/^\d+\.\d+\.\d+$/.test(newVersion)) {
17
+ console.error('Error: Version must be in format X.Y.Z (e.g., 1.2.3)');
18
+ process.exit(1);
19
+ }
20
+
21
+ async function updateVersion() {
22
+ try {
23
+ // Update in config.yaml
24
+ const configPath = path.join(__dirname, '..', 'expansion-packs', packId, 'config.yaml');
25
+
26
+ if (!fs.existsSync(configPath)) {
27
+ console.error(`Error: Expansion pack '${packId}' not found`);
28
+ process.exit(1);
29
+ }
30
+
31
+ const configContent = fs.readFileSync(configPath, 'utf8');
32
+ const config = yaml.load(configContent);
33
+ const oldVersion = config.version || 'unknown';
34
+
35
+ config.version = newVersion;
36
+
37
+ const updatedYaml = yaml.dump(config, { indent: 2 });
38
+ fs.writeFileSync(configPath, updatedYaml);
39
+
40
+ console.log(`✓ Updated ${packId}/config.yaml: ${oldVersion} → ${newVersion}`);
41
+ console.log(`\n✓ Successfully updated ${packId} to version ${newVersion}`);
42
+ console.log('\nNext steps:');
43
+ console.log('1. Test the changes');
44
+ console.log(
45
+ '2. Commit: git add -A && git commit -m "chore: bump ' + packId + ' to v' + newVersion + '"',
46
+ );
47
+ } catch (error) {
48
+ console.error('Error updating version:', error.message);
49
+ process.exit(1);
50
+ }
51
+ }
52
+
53
+ updateVersion();