bmad-elsabro 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 (572) hide show
  1. package/.auto-claude-security.json +209 -0
  2. package/.claude_settings.json +34 -0
  3. package/.coderabbit.yaml +40 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +9 -0
  6. package/AI_TEST_GENERATOR_VERIFICATION.md +260 -0
  7. package/BUDGET_ALERT_TESTING.md +325 -0
  8. package/CHANGELOG.md +1488 -0
  9. package/CNAME +1 -0
  10. package/CONTRIBUTING.md +167 -0
  11. package/CONTRIBUTORS.md +32 -0
  12. package/LEGACY_MIGRATION_TESTING.md +428 -0
  13. package/LICENSE +30 -0
  14. package/PARTY_MODE_VERIFICATION.md +274 -0
  15. package/PROJECT_DETECTOR_TESTING.md +288 -0
  16. package/README.md +236 -0
  17. package/SECURITY.md +85 -0
  18. package/TRADEMARK.md +55 -0
  19. package/WORKFLOW_ROUTER_IMPLEMENTATION.md +379 -0
  20. package/Wordmark.png +0 -0
  21. package/banner-bmad-method.png +0 -0
  22. package/build/icons/512x512.png +0 -0
  23. package/build-mac.sh +3 -0
  24. package/docs/404.md +9 -0
  25. package/docs/_STYLE_GUIDE.md +367 -0
  26. package/docs/developer/api-reference.md +945 -0
  27. package/docs/developer/architecture.md +563 -0
  28. package/docs/developer/contributing.md +831 -0
  29. package/docs/downloads.md +74 -0
  30. package/docs/explanation/advanced-elicitation.md +24 -0
  31. package/docs/explanation/adversarial-review.md +57 -0
  32. package/docs/explanation/brainstorming.md +31 -0
  33. package/docs/explanation/brownfield-faq.md +55 -0
  34. package/docs/explanation/party-mode.md +57 -0
  35. package/docs/explanation/preventing-agent-conflicts.md +110 -0
  36. package/docs/explanation/quick-flow.md +27 -0
  37. package/docs/explanation/why-solutioning-matters.md +75 -0
  38. package/docs/how-to/brownfield/index.md +84 -0
  39. package/docs/how-to/brownfield/quick-fix-in-brownfield.md +76 -0
  40. package/docs/how-to/customize-bmad.md +158 -0
  41. package/docs/how-to/get-answers-about-bmad.md +102 -0
  42. package/docs/how-to/install-bmad.md +82 -0
  43. package/docs/how-to/shard-large-documents.md +101 -0
  44. package/docs/how-to/upgrade-to-v6.md +131 -0
  45. package/docs/index.md +56 -0
  46. package/docs/reference/workflow-map.md +83 -0
  47. package/docs/tea/explanation/engagement-models.md +710 -0
  48. package/docs/tea/explanation/fixture-architecture.md +457 -0
  49. package/docs/tea/explanation/knowledge-base-system.md +554 -0
  50. package/docs/tea/explanation/network-first-patterns.md +853 -0
  51. package/docs/tea/explanation/risk-based-testing.md +586 -0
  52. package/docs/tea/explanation/tea-overview.md +410 -0
  53. package/docs/tea/explanation/test-quality-standards.md +907 -0
  54. package/docs/tea/explanation/testing-as-engineering.md +112 -0
  55. package/docs/tea/glossary/index.md +159 -0
  56. package/docs/tea/how-to/brownfield/use-tea-for-enterprise.md +525 -0
  57. package/docs/tea/how-to/brownfield/use-tea-with-existing-tests.md +577 -0
  58. package/docs/tea/how-to/customization/enable-tea-mcp-enhancements.md +424 -0
  59. package/docs/tea/how-to/customization/integrate-playwright-utils.md +813 -0
  60. package/docs/tea/how-to/workflows/run-atdd.md +436 -0
  61. package/docs/tea/how-to/workflows/run-automate.md +653 -0
  62. package/docs/tea/how-to/workflows/run-nfr-assess.md +679 -0
  63. package/docs/tea/how-to/workflows/run-test-design.md +135 -0
  64. package/docs/tea/how-to/workflows/run-test-review.md +605 -0
  65. package/docs/tea/how-to/workflows/run-trace.md +883 -0
  66. package/docs/tea/how-to/workflows/setup-ci.md +712 -0
  67. package/docs/tea/how-to/workflows/setup-test-framework.md +98 -0
  68. package/docs/tea/reference/commands.md +276 -0
  69. package/docs/tea/reference/configuration.md +678 -0
  70. package/docs/tea/reference/knowledge-base.md +340 -0
  71. package/docs/tea/tutorials/tea-lite-quickstart.md +444 -0
  72. package/docs/tutorials/getting-started.md +205 -0
  73. package/docs/user-guide/getting-started.md +348 -0
  74. package/docs/user-guide/token-economy.md +601 -0
  75. package/docs/user-guide/workflows.md +546 -0
  76. package/electron-builder.yml +75 -0
  77. package/eslint.config.mjs +152 -0
  78. package/package.json +162 -0
  79. package/prettier.config.mjs +32 -0
  80. package/public/monaco-workers/index.js +21 -0
  81. package/renderer/App.tsx +311 -0
  82. package/renderer/components/ChatPanel.tsx +285 -0
  83. package/renderer/components/CodeEditor.tsx +327 -0
  84. package/renderer/components/CodeEditor.types.ts +245 -0
  85. package/renderer/components/FlowSelector.tsx +534 -0
  86. package/renderer/components/MessageInput.tsx +252 -0
  87. package/renderer/components/MessageList.tsx +204 -0
  88. package/renderer/components/MigrationWizard.tsx +896 -0
  89. package/renderer/components/NotificationCenter.tsx +291 -0
  90. package/renderer/components/OnboardingWizard.tsx +112 -0
  91. package/renderer/components/PartyMode.tsx +555 -0
  92. package/renderer/components/Sidebar.module.css +258 -0
  93. package/renderer/components/Sidebar.tsx +157 -0
  94. package/renderer/components/TemplateSelector.tsx +553 -0
  95. package/renderer/components/Terminal.tsx +523 -0
  96. package/renderer/components/TestCenter.tsx +364 -0
  97. package/renderer/components/TokenAnalytics.tsx +607 -0
  98. package/renderer/components/TokenMonitor.tsx +331 -0
  99. package/renderer/components/TutorialOverlay.tsx +483 -0
  100. package/renderer/components/WorkflowEditor.tsx +470 -0
  101. package/renderer/components/onboarding/Step1Welcome.tsx +72 -0
  102. package/renderer/components/onboarding/Step2Setup.tsx +193 -0
  103. package/renderer/components/onboarding/Step3CreateProject.tsx +209 -0
  104. package/renderer/components/test-center/CoverageDashboard.tsx +588 -0
  105. package/renderer/components/test-center/ELI5Guide.tsx +521 -0
  106. package/renderer/components/test-center/TestList.tsx +381 -0
  107. package/renderer/components/test-center/TestRunner.tsx +431 -0
  108. package/renderer/components/test-center/TestStepWizard.tsx +1000 -0
  109. package/renderer/components/test-center/VisualTestBuilder.tsx +460 -0
  110. package/renderer/components/workflow/DependencyEdge.tsx +200 -0
  111. package/renderer/components/workflow/StepNode.tsx +234 -0
  112. package/renderer/components/workflow/StepPalette.tsx +412 -0
  113. package/renderer/context/ThemeContext.tsx +97 -0
  114. package/renderer/data/shortcuts.json +94 -0
  115. package/renderer/data/testing-guides.json +261 -0
  116. package/renderer/data/tutorials.json +546 -0
  117. package/renderer/hooks/useKeyboardShortcuts.ts +249 -0
  118. package/renderer/hooks/useNotifications.ts +267 -0
  119. package/renderer/hooks/useTheme.ts +149 -0
  120. package/renderer/hooks/useTokenTracking.ts +464 -0
  121. package/renderer/hooks/useWorkflowState.ts +309 -0
  122. package/renderer/index.html +16 -0
  123. package/renderer/index.tsx +17 -0
  124. package/renderer/lib/MONACO_OFFLINE_CONFIG.md +153 -0
  125. package/renderer/lib/chart-utils.ts +472 -0
  126. package/renderer/lib/file-system-provider.ts +295 -0
  127. package/renderer/lib/monaco-loader.ts +247 -0
  128. package/renderer/renderer/components/NOTIFICATION_SYSTEM.md +192 -0
  129. package/renderer/styles.css +55 -0
  130. package/renderer/types/css-modules.d.ts +21 -0
  131. package/renderer/types/electron.d.ts +316 -0
  132. package/src/bmm/_module-installer/installer.js +48 -0
  133. package/src/bmm/agents/analyst.agent.yaml +36 -0
  134. package/src/bmm/agents/architect.agent.yaml +28 -0
  135. package/src/bmm/agents/dev.agent.yaml +38 -0
  136. package/src/bmm/agents/parallel-orchestrator.agent.yaml +50 -0
  137. package/src/bmm/agents/pm.agent.yaml +46 -0
  138. package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
  139. package/src/bmm/agents/sm.agent.yaml +36 -0
  140. package/src/bmm/agents/tea.agent.yaml +63 -0
  141. package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  142. package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +45 -0
  143. package/src/bmm/agents/ux-designer.agent.yaml +26 -0
  144. package/src/bmm/agents/yolo-dev.agent.yaml +41 -0
  145. package/src/bmm/data/auto-testing-config.yaml +84 -0
  146. package/src/bmm/data/guided-mode-instructions.yaml +112 -0
  147. package/src/bmm/data/parallelization-config.yaml +136 -0
  148. package/src/bmm/data/project-context-template.md +26 -0
  149. package/src/bmm/data/speed-profiles.yaml +127 -0
  150. package/src/bmm/module-help.csv +32 -0
  151. package/src/bmm/module.yaml +60 -0
  152. package/src/bmm/teams/default-party.csv +21 -0
  153. package/src/bmm/teams/team-fullstack.yaml +12 -0
  154. package/src/bmm/testarch/knowledge/adr-quality-readiness-checklist.md +350 -0
  155. package/src/bmm/testarch/knowledge/api-request.md +442 -0
  156. package/src/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
  157. package/src/bmm/testarch/knowledge/auth-session.md +552 -0
  158. package/src/bmm/testarch/knowledge/burn-in.md +273 -0
  159. package/src/bmm/testarch/knowledge/ci-burn-in.md +675 -0
  160. package/src/bmm/testarch/knowledge/component-tdd.md +486 -0
  161. package/src/bmm/testarch/knowledge/contract-testing.md +957 -0
  162. package/src/bmm/testarch/knowledge/data-factories.md +500 -0
  163. package/src/bmm/testarch/knowledge/email-auth.md +721 -0
  164. package/src/bmm/testarch/knowledge/error-handling.md +725 -0
  165. package/src/bmm/testarch/knowledge/feature-flags.md +750 -0
  166. package/src/bmm/testarch/knowledge/file-utils.md +463 -0
  167. package/src/bmm/testarch/knowledge/fixture-architecture.md +401 -0
  168. package/src/bmm/testarch/knowledge/fixtures-composition.md +382 -0
  169. package/src/bmm/testarch/knowledge/intercept-network-call.md +430 -0
  170. package/src/bmm/testarch/knowledge/log.md +429 -0
  171. package/src/bmm/testarch/knowledge/network-error-monitor.md +405 -0
  172. package/src/bmm/testarch/knowledge/network-first.md +486 -0
  173. package/src/bmm/testarch/knowledge/network-recorder.md +527 -0
  174. package/src/bmm/testarch/knowledge/nfr-criteria.md +670 -0
  175. package/src/bmm/testarch/knowledge/overview.md +286 -0
  176. package/src/bmm/testarch/knowledge/playwright-config.md +730 -0
  177. package/src/bmm/testarch/knowledge/probability-impact.md +601 -0
  178. package/src/bmm/testarch/knowledge/recurse.md +421 -0
  179. package/src/bmm/testarch/knowledge/risk-governance.md +615 -0
  180. package/src/bmm/testarch/knowledge/selective-testing.md +732 -0
  181. package/src/bmm/testarch/knowledge/selector-resilience.md +527 -0
  182. package/src/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
  183. package/src/bmm/testarch/knowledge/test-levels-framework.md +473 -0
  184. package/src/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
  185. package/src/bmm/testarch/knowledge/test-quality.md +664 -0
  186. package/src/bmm/testarch/knowledge/timing-debugging.md +372 -0
  187. package/src/bmm/testarch/knowledge/visual-debugging.md +524 -0
  188. package/src/bmm/testarch/tea-index.csv +35 -0
  189. package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  190. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  191. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  192. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  193. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  194. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  195. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  196. package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  197. package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  198. package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  199. package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  200. package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  201. package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  202. package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  203. package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  204. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  205. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  206. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  207. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  208. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  209. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  210. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  211. package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
  212. package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  213. package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  214. package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  215. package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  216. package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  217. package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  218. package/src/bmm/workflows/1-analysis/research/workflow.md +173 -0
  219. package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
  220. package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  221. package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  222. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  223. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
  224. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  225. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  226. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  227. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  228. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  229. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  230. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  231. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  232. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  233. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  234. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  235. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  236. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  237. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  238. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  239. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  240. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
  241. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  242. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  243. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  244. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  245. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  246. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  247. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  248. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  249. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  250. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  251. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  252. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  253. package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  254. package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  255. package/src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
  256. package/src/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
  257. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  258. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  259. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  260. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  261. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  262. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  263. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  264. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  265. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  266. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  267. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  268. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  269. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  270. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  271. package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  272. package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  273. package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  274. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  275. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  276. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  277. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  278. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  279. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
  280. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  281. package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  282. package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  283. package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  284. package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  285. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  286. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  287. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  288. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  289. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  290. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  291. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  292. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  293. package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  294. package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  295. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  296. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  297. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  298. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  299. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  300. package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  301. package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  302. package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  303. package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +51 -0
  304. package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  305. package/src/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  306. package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +60 -0
  307. package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  308. package/src/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
  309. package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
  310. package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +61 -0
  311. package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  312. package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  313. package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +32 -0
  314. package/src/bmm/workflows/4-implementation/fix-and-test/workflow.md +197 -0
  315. package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  316. package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +58 -0
  317. package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  318. package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  319. package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  320. package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +54 -0
  321. package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  322. package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
  323. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-01-detect.md +55 -0
  324. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-02-confirm.md +48 -0
  325. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/steps/step-03-implement.md +61 -0
  326. package/src/bmm/workflows/bmad-quick-flow/brownfield-fast-track/workflow.md +41 -0
  327. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
  328. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  329. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +153 -0
  330. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  331. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  332. package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
  333. package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +73 -0
  334. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
  335. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
  336. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  337. package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
  338. package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  339. package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +93 -0
  340. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/steps/step-01-rapid-spec.md +54 -0
  341. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/steps/step-02-ship-it.md +65 -0
  342. package/src/bmm/workflows/bmad-quick-flow/yolo-mode/workflow.md +54 -0
  343. package/src/bmm/workflows/document-project/checklist.md +245 -0
  344. package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  345. package/src/bmm/workflows/document-project/instructions.md +221 -0
  346. package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  347. package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
  348. package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  349. package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  350. package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  351. package/src/bmm/workflows/document-project/workflow.yaml +30 -0
  352. package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  353. package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  354. package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  355. package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  356. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  357. package/src/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  358. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  359. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  360. package/src/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
  361. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  362. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  363. package/src/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
  364. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  365. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  366. package/src/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
  367. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  368. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  369. package/src/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
  370. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-01-parse-target.md +49 -0
  371. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-02-launch-streams.md +135 -0
  372. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-03-sync-point.md +74 -0
  373. package/src/bmm/workflows/parallel-work/parallel-analysis/steps/step-04-merge-insights.md +179 -0
  374. package/src/bmm/workflows/parallel-work/parallel-analysis/workflow.md +55 -0
  375. package/src/bmm/workflows/parallel-work/parallel-generation/workflow.md +109 -0
  376. package/src/bmm/workflows/parallel-work/parallel-reviews/workflow.md +111 -0
  377. package/src/bmm/workflows/parallel-work/parallel-stories/workflow.md +112 -0
  378. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-01-load-sprint.md +54 -0
  379. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-02-plan-execution.md +63 -0
  380. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-03-execute-stories.md +112 -0
  381. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-04-code-review.md +148 -0
  382. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-05-integration-testing.md +200 -0
  383. package/src/bmm/workflows/parallel-work/sprint-mode/steps/step-06-sprint-report.md +290 -0
  384. package/src/bmm/workflows/parallel-work/sprint-mode/workflow.md +58 -0
  385. package/src/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  386. package/src/bmm/workflows/testarch/atdd/checklist.md +374 -0
  387. package/src/bmm/workflows/testarch/atdd/instructions.md +806 -0
  388. package/src/bmm/workflows/testarch/atdd/workflow.yaml +47 -0
  389. package/src/bmm/workflows/testarch/automate/checklist.md +582 -0
  390. package/src/bmm/workflows/testarch/automate/instructions.md +1324 -0
  391. package/src/bmm/workflows/testarch/automate/workflow.yaml +54 -0
  392. package/src/bmm/workflows/testarch/ci/checklist.md +247 -0
  393. package/src/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
  394. package/src/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  395. package/src/bmm/workflows/testarch/ci/instructions.md +536 -0
  396. package/src/bmm/workflows/testarch/ci/workflow.yaml +47 -0
  397. package/src/bmm/workflows/testarch/framework/checklist.md +320 -0
  398. package/src/bmm/workflows/testarch/framework/instructions.md +481 -0
  399. package/src/bmm/workflows/testarch/framework/workflow.yaml +49 -0
  400. package/src/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
  401. package/src/bmm/workflows/testarch/nfr-assess/instructions.md +726 -0
  402. package/src/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +461 -0
  403. package/src/bmm/workflows/testarch/nfr-assess/workflow.yaml +49 -0
  404. package/src/bmm/workflows/testarch/test-design/checklist.md +407 -0
  405. package/src/bmm/workflows/testarch/test-design/instructions.md +1158 -0
  406. package/src/bmm/workflows/testarch/test-design/test-design-architecture-template.md +213 -0
  407. package/src/bmm/workflows/testarch/test-design/test-design-qa-template.md +286 -0
  408. package/src/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
  409. package/src/bmm/workflows/testarch/test-design/workflow.yaml +71 -0
  410. package/src/bmm/workflows/testarch/test-review/checklist.md +472 -0
  411. package/src/bmm/workflows/testarch/test-review/instructions.md +628 -0
  412. package/src/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
  413. package/src/bmm/workflows/testarch/test-review/workflow.yaml +48 -0
  414. package/src/bmm/workflows/testarch/trace/checklist.md +642 -0
  415. package/src/bmm/workflows/testarch/trace/instructions.md +1030 -0
  416. package/src/bmm/workflows/testarch/trace/trace-template.md +675 -0
  417. package/src/bmm/workflows/testarch/trace/workflow.yaml +57 -0
  418. package/src/core/_module-installer/installer.js +60 -0
  419. package/src/core/agents/bmad-master.agent.yaml +29 -0
  420. package/src/core/module-help.csv +9 -0
  421. package/src/core/module.yaml +25 -0
  422. package/src/core/resources/excalidraw/README.md +160 -0
  423. package/src/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  424. package/src/core/resources/excalidraw/library-loader.md +50 -0
  425. package/src/core/resources/excalidraw/validate-json-instructions.md +79 -0
  426. package/src/core/tasks/editorial-review-prose.xml +100 -0
  427. package/src/core/tasks/editorial-review-structure.xml +209 -0
  428. package/src/core/tasks/help.md +62 -0
  429. package/src/core/tasks/index-docs.xml +65 -0
  430. package/src/core/tasks/review-adversarial-general.xml +48 -0
  431. package/src/core/tasks/shard-doc.xml +109 -0
  432. package/src/core/tasks/workflow.xml +235 -0
  433. package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
  434. package/src/core/workflows/advanced-elicitation/workflow.xml +117 -0
  435. package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
  436. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  437. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  438. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  439. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  440. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  441. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  442. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  443. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  444. package/src/core/workflows/brainstorming/template.md +15 -0
  445. package/src/core/workflows/brainstorming/workflow.md +58 -0
  446. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  447. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  448. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
  449. package/src/core/workflows/party-mode/workflow.md +194 -0
  450. package/src/utility/agent-components/activation-rules.txt +6 -0
  451. package/src/utility/agent-components/activation-steps.txt +14 -0
  452. package/src/utility/agent-components/agent-command-header.md +1 -0
  453. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  454. package/src/utility/agent-components/handler-action.txt +4 -0
  455. package/src/utility/agent-components/handler-data.txt +5 -0
  456. package/src/utility/agent-components/handler-exec.txt +6 -0
  457. package/src/utility/agent-components/handler-multi.txt +14 -0
  458. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  459. package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
  460. package/src/utility/agent-components/handler-workflow.txt +10 -0
  461. package/src/utility/agent-components/menu-handlers.txt +6 -0
  462. package/tools/bmad-npx-wrapper.js +69 -0
  463. package/tools/build-docs.js +577 -0
  464. package/tools/cli/README.md +7 -0
  465. package/tools/cli/bmad-cli.js +65 -0
  466. package/tools/cli/commands/diagnostics.js +303 -0
  467. package/tools/cli/commands/install.js +87 -0
  468. package/tools/cli/commands/module.js +210 -0
  469. package/tools/cli/commands/status.js +65 -0
  470. package/tools/cli/commands/uninstall.js +86 -0
  471. package/tools/cli/external-official-modules.yaml +54 -0
  472. package/tools/cli/installers/install-messages.yaml +59 -0
  473. package/tools/cli/installers/lib/core/config-collector.js +1079 -0
  474. package/tools/cli/installers/lib/core/custom-module-cache.js +259 -0
  475. package/tools/cli/installers/lib/core/dependency-resolver.js +739 -0
  476. package/tools/cli/installers/lib/core/detector.js +223 -0
  477. package/tools/cli/installers/lib/core/ide-config-manager.js +156 -0
  478. package/tools/cli/installers/lib/core/installer.js +2812 -0
  479. package/tools/cli/installers/lib/core/manifest-generator.js +1054 -0
  480. package/tools/cli/installers/lib/core/manifest.js +1036 -0
  481. package/tools/cli/installers/lib/custom/handler.js +363 -0
  482. package/tools/cli/installers/lib/ide/_base-ide.js +655 -0
  483. package/tools/cli/installers/lib/ide/_config-driven.js +450 -0
  484. package/tools/cli/installers/lib/ide/codex.js +440 -0
  485. package/tools/cli/installers/lib/ide/kilo.js +250 -0
  486. package/tools/cli/installers/lib/ide/kiro-cli.js +326 -0
  487. package/tools/cli/installers/lib/ide/manager.js +271 -0
  488. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  489. package/tools/cli/installers/lib/ide/platform-codes.yaml +227 -0
  490. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +181 -0
  491. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +163 -0
  492. package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
  493. package/tools/cli/installers/lib/ide/shared/path-utils.js +292 -0
  494. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +270 -0
  495. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +319 -0
  496. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  497. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  498. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  499. package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
  500. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  501. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  502. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  503. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  504. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  505. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  506. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  507. package/tools/cli/installers/lib/ide/templates/split/opencode/body.md +10 -0
  508. package/tools/cli/installers/lib/ide/templates/split/opencode/header.md +4 -0
  509. package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
  510. package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
  511. package/tools/cli/installers/lib/message-loader.js +85 -0
  512. package/tools/cli/installers/lib/modules/external-manager.js +135 -0
  513. package/tools/cli/installers/lib/modules/manager.js +1375 -0
  514. package/tools/cli/lib/activation-builder.js +163 -0
  515. package/tools/cli/lib/agent/compiler.js +522 -0
  516. package/tools/cli/lib/agent/compiler.ts +572 -0
  517. package/tools/cli/lib/agent/installer.js +716 -0
  518. package/tools/cli/lib/agent/template-engine.js +152 -0
  519. package/tools/cli/lib/agent/types.ts +155 -0
  520. package/tools/cli/lib/agent-analyzer.js +109 -0
  521. package/tools/cli/lib/agent-party-generator.js +194 -0
  522. package/tools/cli/lib/cli-utils.js +227 -0
  523. package/tools/cli/lib/config.js +213 -0
  524. package/tools/cli/lib/config.ts +227 -0
  525. package/tools/cli/lib/file-ops.js +204 -0
  526. package/tools/cli/lib/file-ops.ts +215 -0
  527. package/tools/cli/lib/platform-codes.js +116 -0
  528. package/tools/cli/lib/project-root.js +77 -0
  529. package/tools/cli/lib/prompts.js +433 -0
  530. package/tools/cli/lib/prompts.ts +541 -0
  531. package/tools/cli/lib/types/config.types.ts +43 -0
  532. package/tools/cli/lib/types/xml-handler.types.ts +50 -0
  533. package/tools/cli/lib/ui.js +1660 -0
  534. package/tools/cli/lib/xml-handler.js +177 -0
  535. package/tools/cli/lib/xml-handler.ts +188 -0
  536. package/tools/cli/lib/xml-to-markdown.js +82 -0
  537. package/tools/cli/lib/yaml-format.js +245 -0
  538. package/tools/cli/lib/yaml-xml-builder.js +587 -0
  539. package/tools/docs/BUNDLE_DISTRIBUTION_SETUP.md +95 -0
  540. package/tools/docs/fix-refs.md +91 -0
  541. package/tools/docs/index.md +2 -0
  542. package/tools/fix-doc-links.js +288 -0
  543. package/tools/flattener/aggregate.js +76 -0
  544. package/tools/flattener/aggregate.ts +78 -0
  545. package/tools/flattener/binary.js +80 -0
  546. package/tools/flattener/discovery.js +71 -0
  547. package/tools/flattener/files.js +35 -0
  548. package/tools/flattener/files.ts +31 -0
  549. package/tools/flattener/ignoreRules.js +172 -0
  550. package/tools/flattener/main.js +483 -0
  551. package/tools/flattener/main.ts +262 -0
  552. package/tools/flattener/projectRoot.js +201 -0
  553. package/tools/flattener/prompts.js +44 -0
  554. package/tools/flattener/stats.helpers.js +368 -0
  555. package/tools/flattener/stats.js +75 -0
  556. package/tools/flattener/test-matrix.js +409 -0
  557. package/tools/flattener/types.ts +53 -0
  558. package/tools/flattener/xml.js +82 -0
  559. package/tools/format-workflow-md.js +263 -0
  560. package/tools/lib/xml-utils.js +13 -0
  561. package/tools/maintainer/review-pr-README.md +55 -0
  562. package/tools/maintainer/review-pr.md +242 -0
  563. package/tools/migrate-custom-module-paths.js +124 -0
  564. package/tools/platform-codes.yaml +157 -0
  565. package/tools/schema/agent.js +491 -0
  566. package/tools/schema/agent.ts +489 -0
  567. package/tools/schema/agent.types.ts +31 -0
  568. package/tools/update-bmad.sh +24 -0
  569. package/tools/validate-agent-schema.js +110 -0
  570. package/tools/validate-doc-links.js +371 -0
  571. package/tools/validate-svg-changes.sh +356 -0
  572. package/vite-plugin-monaco-editor.ts +108 -0
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Path transformation utilities for IDE installer standardization
3
+ *
4
+ * Provides utilities to convert hierarchical paths to flat naming conventions.
5
+ *
6
+ * DASH-BASED NAMING (new standard):
7
+ * - Agents: bmad-agent-module-name.md (with bmad-agent- prefix)
8
+ * - Workflows/Tasks/Tools: bmad-module-name.md
9
+ *
10
+ * Example outputs:
11
+ * - cis/agents/storymaster.md → bmad-agent-cis-storymaster.md
12
+ * - bmm/workflows/plan-project.md → bmad-bmm-plan-project.md
13
+ * - bmm/tasks/create-story.md → bmad-bmm-create-story.md
14
+ * - core/agents/brainstorming.md → bmad-agent-brainstorming.md (core agents skip module name)
15
+ */
16
+
17
+ // Type segments - agents are included in naming, others are filtered out
18
+ const TYPE_SEGMENTS = ['workflows', 'tasks', 'tools'];
19
+ const AGENT_SEGMENT = 'agents';
20
+
21
+ /**
22
+ * Convert hierarchical path to flat dash-separated name (NEW STANDARD)
23
+ * Converts: 'bmm', 'agents', 'pm' → 'bmad-agent-bmm-pm.md'
24
+ * Converts: 'bmm', 'workflows', 'correct-course' → 'bmad-bmm-correct-course.md'
25
+ * Converts: 'core', 'agents', 'brainstorming' → 'bmad-agent-brainstorming.md' (core agents skip module name)
26
+ *
27
+ * @param {string} module - Module name (e.g., 'bmm', 'core')
28
+ * @param {string} type - Artifact type ('agents', 'workflows', 'tasks', 'tools')
29
+ * @param {string} name - Artifact name (e.g., 'pm', 'brainstorming')
30
+ * @returns {string} Flat filename like 'bmad-agent-bmm-pm.md' or 'bmad-bmm-correct-course.md'
31
+ */
32
+ function toDashName(module, type, name) {
33
+ const isAgent = type === AGENT_SEGMENT;
34
+
35
+ // For core module, skip the module name: use 'bmad-agent-name.md' instead of 'bmad-agent-core-name.md'
36
+ if (module === 'core') {
37
+ return isAgent ? `bmad-agent-${name}.md` : `bmad-${name}.md`;
38
+ }
39
+
40
+ // Module artifacts: bmad-module-name.md or bmad-agent-module-name.md
41
+ // eslint-disable-next-line unicorn/prefer-string-replace-all -- regex replace is intentional here
42
+ const dashName = name.replace(/\//g, '-'); // Flatten nested paths
43
+ return isAgent ? `bmad-agent-${module}-${dashName}.md` : `bmad-${module}-${dashName}.md`;
44
+ }
45
+
46
+ /**
47
+ * Convert relative path to flat dash-separated name
48
+ * Converts: 'bmm/agents/pm.md' → 'bmad-agent-bmm-pm.md'
49
+ * Converts: 'bmm/agents/tech-writer/tech-writer.md' → 'bmad-agent-bmm-tech-writer.md' (uses folder name)
50
+ * Converts: 'bmm/workflows/correct-course.md' → 'bmad-bmm-correct-course.md'
51
+ * Converts: 'core/agents/brainstorming.md' → 'bmad-agent-brainstorming.md' (core agents skip module name)
52
+ *
53
+ * @param {string} relativePath - Path like 'bmm/agents/pm.md'
54
+ * @returns {string} Flat filename like 'bmad-agent-bmm-pm.md' or 'bmad-brainstorming.md'
55
+ */
56
+ function toDashPath(relativePath) {
57
+ if (!relativePath || typeof relativePath !== 'string') {
58
+ // Return a safe default for invalid input
59
+ return 'bmad-unknown.md';
60
+ }
61
+
62
+ const withoutExt = relativePath.replace('.md', '');
63
+ const parts = withoutExt.split(/[/\\]/);
64
+
65
+ const module = parts[0];
66
+ const type = parts[1];
67
+ let name;
68
+
69
+ // For agents, if nested in a folder (more than 3 parts), use the folder name only
70
+ // e.g., 'bmm/agents/tech-writer/tech-writer' → 'tech-writer' (not 'tech-writer-tech-writer')
71
+ if (type === 'agents' && parts.length > 3) {
72
+ // Use the folder name (parts[2]) as the name, ignore the file name
73
+ name = parts[2];
74
+ } else {
75
+ // For non-nested or non-agents, join all parts after type
76
+ name = parts.slice(2).join('-');
77
+ }
78
+
79
+ return toDashName(module, type, name);
80
+ }
81
+
82
+ /**
83
+ * Create custom agent dash name
84
+ * Creates: 'bmad-custom-agent-fred-commit-poet.md'
85
+ *
86
+ * @param {string} agentName - Custom agent name
87
+ * @returns {string} Flat filename like 'bmad-custom-agent-fred-commit-poet.md'
88
+ */
89
+ function customAgentDashName(agentName) {
90
+ return `bmad-custom-agent-${agentName}.md`;
91
+ }
92
+
93
+ /**
94
+ * Check if a filename uses dash format
95
+ * @param {string} filename - Filename to check
96
+ * @returns {boolean} True if filename uses dash format
97
+ */
98
+ function isDashFormat(filename) {
99
+ return filename.startsWith('bmad-') && filename.includes('-');
100
+ }
101
+
102
+ /**
103
+ * Extract parts from a dash-formatted filename
104
+ * Parses: 'bmad-agent-bmm-pm.md' → { prefix: 'bmad', module: 'bmm', type: 'agents', name: 'pm' }
105
+ * Parses: 'bmad-bmm-correct-course.md' → { prefix: 'bmad', module: 'bmm', type: 'workflows', name: 'correct-course' }
106
+ * Parses: 'bmad-agent-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'agents', name: 'brainstorming' } (core agents)
107
+ * Parses: 'bmad-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'workflows', name: 'brainstorming' } (core workflows)
108
+ *
109
+ * @param {string} filename - Dash-formatted filename
110
+ * @returns {Object|null} Parsed parts or null if invalid format
111
+ */
112
+ function parseDashName(filename) {
113
+ const withoutExt = filename.replace('.md', '');
114
+ const parts = withoutExt.split('-');
115
+
116
+ if (parts.length < 2 || parts[0] !== 'bmad') {
117
+ return null;
118
+ }
119
+
120
+ // Check if this is an agent file (has 'agent' as second part)
121
+ const isAgent = parts[1] === 'agent';
122
+
123
+ if (isAgent) {
124
+ // This is an agent file
125
+ // Format: bmad-agent-name (core) or bmad-agent-module-name
126
+ if (parts.length === 3) {
127
+ // Core agent: bmad-agent-name
128
+ return {
129
+ prefix: parts[0],
130
+ module: 'core',
131
+ type: 'agents',
132
+ name: parts[2],
133
+ };
134
+ } else {
135
+ // Module agent: bmad-agent-module-name
136
+ return {
137
+ prefix: parts[0],
138
+ module: parts[2],
139
+ type: 'agents',
140
+ name: parts.slice(3).join('-'),
141
+ };
142
+ }
143
+ }
144
+
145
+ // Not an agent file - must be a workflow/tool/task
146
+ // If only 2 parts (bmad-name), it's a core workflow/tool/task
147
+ if (parts.length === 2) {
148
+ return {
149
+ prefix: parts[0],
150
+ module: 'core',
151
+ type: 'workflows', // Default to workflows for non-agent core items
152
+ name: parts[1],
153
+ };
154
+ }
155
+
156
+ // Otherwise, it's a module workflow/tool/task (bmad-module-name)
157
+ return {
158
+ prefix: parts[0],
159
+ module: parts[1],
160
+ type: 'workflows', // Default to workflows for non-agent module items
161
+ name: parts.slice(2).join('-'),
162
+ };
163
+ }
164
+
165
+ // ============================================================================
166
+ // LEGACY FUNCTIONS (underscore format) - kept for backward compatibility
167
+ // ============================================================================
168
+
169
+ /**
170
+ * Convert hierarchical path to flat underscore-separated name (LEGACY)
171
+ * @deprecated Use toDashName instead
172
+ */
173
+ function toUnderscoreName(module, type, name) {
174
+ const isAgent = type === AGENT_SEGMENT;
175
+ if (module === 'core') {
176
+ return isAgent ? `bmad_agent_${name}.md` : `bmad_${name}.md`;
177
+ }
178
+ return isAgent ? `bmad_${module}_agent_${name}.md` : `bmad_${module}_${name}.md`;
179
+ }
180
+
181
+ /**
182
+ * Convert relative path to flat underscore-separated name (LEGACY)
183
+ * @deprecated Use toDashPath instead
184
+ */
185
+ function toUnderscorePath(relativePath) {
186
+ const withoutExt = relativePath.replace('.md', '');
187
+ const parts = withoutExt.split(/[/\\]/);
188
+
189
+ const module = parts[0];
190
+ const type = parts[1];
191
+ const name = parts.slice(2).join('_');
192
+
193
+ return toUnderscoreName(module, type, name);
194
+ }
195
+
196
+ /**
197
+ * Create custom agent underscore name (LEGACY)
198
+ * @deprecated Use customAgentDashName instead
199
+ */
200
+ function customAgentUnderscoreName(agentName) {
201
+ return `bmad_custom_${agentName}.md`;
202
+ }
203
+
204
+ /**
205
+ * Check if a filename uses underscore format (LEGACY)
206
+ * @deprecated Use isDashFormat instead
207
+ */
208
+ function isUnderscoreFormat(filename) {
209
+ return filename.startsWith('bmad_') && filename.includes('_');
210
+ }
211
+
212
+ /**
213
+ * Extract parts from an underscore-formatted filename (LEGACY)
214
+ * @deprecated Use parseDashName instead
215
+ */
216
+ function parseUnderscoreName(filename) {
217
+ const withoutExt = filename.replace('.md', '');
218
+ const parts = withoutExt.split('_');
219
+
220
+ if (parts.length < 2 || parts[0] !== 'bmad') {
221
+ return null;
222
+ }
223
+
224
+ const agentIndex = parts.indexOf('agent');
225
+
226
+ if (agentIndex !== -1) {
227
+ if (agentIndex === 1) {
228
+ return {
229
+ prefix: parts[0],
230
+ module: 'core',
231
+ type: 'agents',
232
+ name: parts.slice(agentIndex + 1).join('_'),
233
+ };
234
+ } else {
235
+ return {
236
+ prefix: parts[0],
237
+ module: parts[1],
238
+ type: 'agents',
239
+ name: parts.slice(agentIndex + 1).join('_'),
240
+ };
241
+ }
242
+ }
243
+
244
+ if (parts.length === 2) {
245
+ return {
246
+ prefix: parts[0],
247
+ module: 'core',
248
+ type: 'workflows',
249
+ name: parts[1],
250
+ };
251
+ }
252
+
253
+ return {
254
+ prefix: parts[0],
255
+ module: parts[1],
256
+ type: 'workflows',
257
+ name: parts.slice(2).join('_'),
258
+ };
259
+ }
260
+
261
+ // Backward compatibility aliases (colon format was same as underscore)
262
+ const toColonName = toUnderscoreName;
263
+ const toColonPath = toUnderscorePath;
264
+ const customAgentColonName = customAgentUnderscoreName;
265
+ const isColonFormat = isUnderscoreFormat;
266
+ const parseColonName = parseUnderscoreName;
267
+
268
+ module.exports = {
269
+ // New standard (dash-based)
270
+ toDashName,
271
+ toDashPath,
272
+ customAgentDashName,
273
+ isDashFormat,
274
+ parseDashName,
275
+
276
+ // Legacy (underscore-based) - kept for backward compatibility
277
+ toUnderscoreName,
278
+ toUnderscorePath,
279
+ customAgentUnderscoreName,
280
+ isUnderscoreFormat,
281
+ parseUnderscoreName,
282
+
283
+ // Backward compatibility aliases
284
+ toColonName,
285
+ toColonPath,
286
+ customAgentColonName,
287
+ isColonFormat,
288
+ parseColonName,
289
+
290
+ TYPE_SEGMENTS,
291
+ AGENT_SEGMENT,
292
+ };
@@ -0,0 +1,270 @@
1
+ const path = require('node:path');
2
+ const fs = require('fs-extra');
3
+ const csv = require('csv-parse/sync');
4
+ const chalk = require('chalk');
5
+ const { toColonName, toColonPath, toDashPath } = require('./path-utils');
6
+
7
+ /**
8
+ * Generates command files for standalone tasks and tools
9
+ */
10
+ class TaskToolCommandGenerator {
11
+ /**
12
+ * Generate task and tool commands from manifest CSVs
13
+ * @param {string} projectDir - Project directory
14
+ * @param {string} bmadDir - BMAD installation directory
15
+ * @param {string} baseCommandsDir - Optional base commands directory (defaults to .claude/commands/bmad)
16
+ */
17
+ async generateTaskToolCommands(projectDir, bmadDir, baseCommandsDir = null) {
18
+ const tasks = await this.loadTaskManifest(bmadDir);
19
+ const tools = await this.loadToolManifest(bmadDir);
20
+
21
+ // Filter to only standalone items
22
+ const standaloneTasks = tasks ? tasks.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
23
+ const standaloneTools = tools ? tools.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
24
+
25
+ // Base commands directory - use provided or default to Claude Code structure
26
+ const commandsDir = baseCommandsDir || path.join(projectDir, '.claude', 'commands', 'bmad');
27
+
28
+ let generatedCount = 0;
29
+
30
+ // Generate command files for tasks
31
+ for (const task of standaloneTasks) {
32
+ const moduleTasksDir = path.join(commandsDir, task.module, 'tasks');
33
+ await fs.ensureDir(moduleTasksDir);
34
+
35
+ const commandContent = this.generateCommandContent(task, 'task');
36
+ const commandPath = path.join(moduleTasksDir, `${task.name}.md`);
37
+
38
+ await fs.writeFile(commandPath, commandContent);
39
+ generatedCount++;
40
+ }
41
+
42
+ // Generate command files for tools
43
+ for (const tool of standaloneTools) {
44
+ const moduleToolsDir = path.join(commandsDir, tool.module, 'tools');
45
+ await fs.ensureDir(moduleToolsDir);
46
+
47
+ const commandContent = this.generateCommandContent(tool, 'tool');
48
+ const commandPath = path.join(moduleToolsDir, `${tool.name}.md`);
49
+
50
+ await fs.writeFile(commandPath, commandContent);
51
+ generatedCount++;
52
+ }
53
+
54
+ return {
55
+ generated: generatedCount,
56
+ tasks: standaloneTasks.length,
57
+ tools: standaloneTools.length,
58
+ };
59
+ }
60
+
61
+ /**
62
+ * Generate command content for a task or tool
63
+ */
64
+ generateCommandContent(item, type) {
65
+ const description = item.description || `Execute ${item.displayName || item.name}`;
66
+
67
+ // Convert path to use {project-root} placeholder
68
+ let itemPath = item.path;
69
+ if (itemPath && typeof itemPath === 'string' && itemPath.startsWith('bmad/')) {
70
+ itemPath = `{project-root}/${itemPath}`;
71
+ }
72
+
73
+ return `---
74
+ description: '${description.replaceAll("'", "''")}'
75
+ ---
76
+
77
+ # ${item.displayName || item.name}
78
+
79
+ Read the entire ${type} file at: ${itemPath}
80
+
81
+ Follow all instructions in the ${type} file exactly as written.
82
+ `;
83
+ }
84
+
85
+ /**
86
+ * Load task manifest CSV
87
+ */
88
+ async loadTaskManifest(bmadDir) {
89
+ const manifestPath = path.join(bmadDir, '_config', 'task-manifest.csv');
90
+
91
+ if (!(await fs.pathExists(manifestPath))) {
92
+ return null;
93
+ }
94
+
95
+ const csvContent = await fs.readFile(manifestPath, 'utf8');
96
+ return csv.parse(csvContent, {
97
+ columns: true,
98
+ skip_empty_lines: true,
99
+ });
100
+ }
101
+
102
+ /**
103
+ * Load tool manifest CSV
104
+ */
105
+ async loadToolManifest(bmadDir) {
106
+ const manifestPath = path.join(bmadDir, '_config', 'tool-manifest.csv');
107
+
108
+ if (!(await fs.pathExists(manifestPath))) {
109
+ return null;
110
+ }
111
+
112
+ const csvContent = await fs.readFile(manifestPath, 'utf8');
113
+ return csv.parse(csvContent, {
114
+ columns: true,
115
+ skip_empty_lines: true,
116
+ });
117
+ }
118
+
119
+ /**
120
+ * Generate task and tool commands using underscore format (Windows-compatible)
121
+ * Creates flat files like: bmad_bmm_bmad-help.md
122
+ *
123
+ * @param {string} projectDir - Project directory
124
+ * @param {string} bmadDir - BMAD installation directory
125
+ * @param {string} baseCommandsDir - Base commands directory for the IDE
126
+ * @returns {Object} Generation results
127
+ */
128
+ async generateColonTaskToolCommands(projectDir, bmadDir, baseCommandsDir) {
129
+ const tasks = await this.loadTaskManifest(bmadDir);
130
+ const tools = await this.loadToolManifest(bmadDir);
131
+
132
+ // Filter to only standalone items
133
+ const standaloneTasks = tasks ? tasks.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
134
+ const standaloneTools = tools ? tools.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
135
+
136
+ let generatedCount = 0;
137
+
138
+ // Generate command files for tasks
139
+ for (const task of standaloneTasks) {
140
+ const commandContent = this.generateCommandContent(task, 'task');
141
+ // Use underscore format: bmad_bmm_name.md
142
+ const flatName = toColonName(task.module, 'tasks', task.name);
143
+ const commandPath = path.join(baseCommandsDir, flatName);
144
+ await fs.ensureDir(path.dirname(commandPath));
145
+ await fs.writeFile(commandPath, commandContent);
146
+ generatedCount++;
147
+ }
148
+
149
+ // Generate command files for tools
150
+ for (const tool of standaloneTools) {
151
+ const commandContent = this.generateCommandContent(tool, 'tool');
152
+ // Use underscore format: bmad_bmm_name.md
153
+ const flatName = toColonName(tool.module, 'tools', tool.name);
154
+ const commandPath = path.join(baseCommandsDir, flatName);
155
+ await fs.ensureDir(path.dirname(commandPath));
156
+ await fs.writeFile(commandPath, commandContent);
157
+ generatedCount++;
158
+ }
159
+
160
+ return {
161
+ generated: generatedCount,
162
+ tasks: standaloneTasks.length,
163
+ tools: standaloneTools.length,
164
+ };
165
+ }
166
+
167
+ /**
168
+ * Generate task and tool commands using underscore format (Windows-compatible)
169
+ * Creates flat files like: bmad_bmm_bmad-help.md
170
+ *
171
+ * @param {string} projectDir - Project directory
172
+ * @param {string} bmadDir - BMAD installation directory
173
+ * @param {string} baseCommandsDir - Base commands directory for the IDE
174
+ * @returns {Object} Generation results
175
+ */
176
+ async generateDashTaskToolCommands(projectDir, bmadDir, baseCommandsDir) {
177
+ const tasks = await this.loadTaskManifest(bmadDir);
178
+ const tools = await this.loadToolManifest(bmadDir);
179
+
180
+ // Filter to only standalone items
181
+ const standaloneTasks = tasks ? tasks.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
182
+ const standaloneTools = tools ? tools.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
183
+
184
+ let generatedCount = 0;
185
+
186
+ // Generate command files for tasks
187
+ for (const task of standaloneTasks) {
188
+ const commandContent = this.generateCommandContent(task, 'task');
189
+ // Use underscore format: bmad_bmm_name.md
190
+ const flatName = toDashPath(`${task.module}/tasks/${task.name}.md`);
191
+ const commandPath = path.join(baseCommandsDir, flatName);
192
+ await fs.ensureDir(path.dirname(commandPath));
193
+ await fs.writeFile(commandPath, commandContent);
194
+ generatedCount++;
195
+ }
196
+
197
+ // Generate command files for tools
198
+ for (const tool of standaloneTools) {
199
+ const commandContent = this.generateCommandContent(tool, 'tool');
200
+ // Use underscore format: bmad_bmm_name.md
201
+ const flatName = toDashPath(`${tool.module}/tools/${tool.name}.md`);
202
+ const commandPath = path.join(baseCommandsDir, flatName);
203
+ await fs.ensureDir(path.dirname(commandPath));
204
+ await fs.writeFile(commandPath, commandContent);
205
+ generatedCount++;
206
+ }
207
+
208
+ return {
209
+ generated: generatedCount,
210
+ tasks: standaloneTasks.length,
211
+ tools: standaloneTools.length,
212
+ };
213
+ }
214
+
215
+ /**
216
+ * Write task/tool artifacts using underscore format (Windows-compatible)
217
+ * Creates flat files like: bmad_bmm_bmad-help.md
218
+ *
219
+ * @param {string} baseCommandsDir - Base commands directory for the IDE
220
+ * @param {Array} artifacts - Task/tool artifacts with relativePath
221
+ * @returns {number} Count of commands written
222
+ */
223
+ async writeColonArtifacts(baseCommandsDir, artifacts) {
224
+ let writtenCount = 0;
225
+
226
+ for (const artifact of artifacts) {
227
+ if (artifact.type === 'task' || artifact.type === 'tool') {
228
+ const commandContent = this.generateCommandContent(artifact, artifact.type);
229
+ // Use underscore format: bmad_module_name.md
230
+ const flatName = toColonPath(artifact.relativePath);
231
+ const commandPath = path.join(baseCommandsDir, flatName);
232
+ await fs.ensureDir(path.dirname(commandPath));
233
+ await fs.writeFile(commandPath, commandContent);
234
+ writtenCount++;
235
+ }
236
+ }
237
+
238
+ return writtenCount;
239
+ }
240
+
241
+ /**
242
+ * Write task/tool artifacts using dash format (NEW STANDARD)
243
+ * Creates flat files like: bmad-bmm-bmad-help.md
244
+ *
245
+ * Note: Tasks/tools do NOT have bmad-agent- prefix - only agents do.
246
+ *
247
+ * @param {string} baseCommandsDir - Base commands directory for the IDE
248
+ * @param {Array} artifacts - Task/tool artifacts with relativePath
249
+ * @returns {number} Count of commands written
250
+ */
251
+ async writeDashArtifacts(baseCommandsDir, artifacts) {
252
+ let writtenCount = 0;
253
+
254
+ for (const artifact of artifacts) {
255
+ if (artifact.type === 'task' || artifact.type === 'tool') {
256
+ const commandContent = this.generateCommandContent(artifact, artifact.type);
257
+ // Use dash format: bmad-module-name.md
258
+ const flatName = toDashPath(artifact.relativePath);
259
+ const commandPath = path.join(baseCommandsDir, flatName);
260
+ await fs.ensureDir(path.dirname(commandPath));
261
+ await fs.writeFile(commandPath, commandContent);
262
+ writtenCount++;
263
+ }
264
+ }
265
+
266
+ return writtenCount;
267
+ }
268
+ }
269
+
270
+ module.exports = { TaskToolCommandGenerator };