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,831 @@
1
+ # Contributing to BMAD Studio
2
+
3
+ Developer guide for contributing to BMAD Studio, the Electron desktop application for BMAD Method.
4
+
5
+ ## Quick Start
6
+
7
+ ### Prerequisites
8
+
9
+ - Node.js 20.0.0 or higher
10
+ - Git
11
+ - Code editor (VS Code recommended)
12
+
13
+ ### Setup
14
+
15
+ ```bash
16
+ # Clone repository
17
+ git clone https://github.com/bmad-code-org/BMAD-METHOD.git
18
+ cd BMAD-METHOD
19
+
20
+ # Install dependencies
21
+ npm install
22
+
23
+ # Start development environment
24
+ npm run electron:dev
25
+ ```
26
+
27
+ The app will launch with hot reload enabled. Changes to renderer code refresh automatically. Main process changes require restart.
28
+
29
+ ## Development Workflow
30
+
31
+ ### Branch Strategy
32
+
33
+ - `main` — Production-ready code
34
+ - `develop` — Integration branch for features
35
+ - `feature/*` — New features
36
+ - `fix/*` — Bug fixes
37
+ - `docs/*` — Documentation updates
38
+
39
+ ### Making Changes
40
+
41
+ 1. **Create feature branch**
42
+
43
+ ```bash
44
+ git checkout develop
45
+ git pull origin develop
46
+ git checkout -b feature/my-feature
47
+ ```
48
+
49
+ 2. **Make changes following code standards** (see below)
50
+
51
+ 3. **Test your changes**
52
+
53
+ ```bash
54
+ npm test # Run all tests
55
+ npm run test:coverage # Check coverage
56
+ npm run lint # Check code style
57
+ npm run format:check # Check formatting
58
+ ```
59
+
60
+ 4. **Commit with conventional commits**
61
+
62
+ ```bash
63
+ git add .
64
+ git commit -m "feat(workflow): add drag-and-drop reordering"
65
+ ```
66
+
67
+ 5. **Push and create pull request**
68
+
69
+ ```bash
70
+ git push origin feature/my-feature
71
+ ```
72
+
73
+ Then create PR on GitHub targeting `develop` branch.
74
+
75
+ ### Commit Message Format
76
+
77
+ Follow [Conventional Commits](https://www.conventionalcommits.org/):
78
+
79
+ ```
80
+ <type>(<scope>): <description>
81
+
82
+ [optional body]
83
+
84
+ [optional footer]
85
+ ```
86
+
87
+ **Types:**
88
+ - `feat` — New feature
89
+ - `fix` — Bug fix
90
+ - `docs` — Documentation only
91
+ - `style` — Code style (formatting, no logic change)
92
+ - `refactor` — Code refactoring
93
+ - `perf` — Performance improvement
94
+ - `test` — Adding/updating tests
95
+ - `chore` — Build process, dependencies
96
+
97
+ **Scopes:**
98
+ - `main` — Main process code
99
+ - `renderer` — Renderer process code
100
+ - `ipc` — IPC communication
101
+ - `services` — Core services
102
+ - `components` — React components
103
+ - `workflow` — Workflow system
104
+ - `token` — Token tracking
105
+ - `test` — Test infrastructure
106
+
107
+ **Examples:**
108
+
109
+ ```bash
110
+ feat(workflow): add Party Mode multi-agent coordination
111
+ fix(token): correct budget alert threshold calculation
112
+ docs(api): update IPC handler documentation
113
+ refactor(components): extract common TokenDisplay component
114
+ ```
115
+
116
+ ## Code Standards
117
+
118
+ ### TypeScript
119
+
120
+ #### Type Safety
121
+
122
+ Always use explicit types. Avoid `any` except when absolutely necessary.
123
+
124
+ **Good:**
125
+ ```typescript
126
+ interface WorkflowStep {
127
+ id: string;
128
+ name: string;
129
+ action: string;
130
+ params?: Record<string, unknown>;
131
+ }
132
+
133
+ function loadWorkflow(id: string): Promise<WorkflowDefinition> {
134
+ // implementation
135
+ }
136
+ ```
137
+
138
+ **Bad:**
139
+ ```typescript
140
+ function loadWorkflow(id: any): any {
141
+ // implementation
142
+ }
143
+ ```
144
+
145
+ #### Strict Mode
146
+
147
+ All TypeScript configs use strict mode:
148
+
149
+ ```json
150
+ {
151
+ "compilerOptions": {
152
+ "strict": true,
153
+ "noImplicitAny": true,
154
+ "strictNullChecks": true
155
+ }
156
+ }
157
+ ```
158
+
159
+ #### Naming Conventions
160
+
161
+ - **Interfaces/Types**: PascalCase (e.g., `WorkflowDefinition`)
162
+ - **Functions/Variables**: camelCase (e.g., `loadWorkflow`)
163
+ - **Components**: PascalCase (e.g., `ChatPanel`)
164
+ - **Constants**: SCREAMING_SNAKE_CASE (e.g., `MAX_TOKEN_BUDGET`)
165
+ - **Files**: kebab-case (e.g., `token-tracker.ts`)
166
+
167
+ ### React
168
+
169
+ #### Functional Components
170
+
171
+ Use functional components with hooks, not class components.
172
+
173
+ **Good:**
174
+ ```typescript
175
+ export function ChatPanel({ agentId }: ChatPanelProps) {
176
+ const [messages, setMessages] = useState<Message[]>([]);
177
+
178
+ useEffect(() => {
179
+ loadMessages(agentId);
180
+ }, [agentId]);
181
+
182
+ return (
183
+ <div className="chat-panel">
184
+ {/* content */}
185
+ </div>
186
+ );
187
+ }
188
+ ```
189
+
190
+ **Bad:**
191
+ ```typescript
192
+ class ChatPanel extends React.Component {
193
+ // Don't use class components
194
+ }
195
+ ```
196
+
197
+ #### Props Interface
198
+
199
+ Always define props interface before component:
200
+
201
+ ```typescript
202
+ interface ChatPanelProps {
203
+ agentId?: string;
204
+ onMessage?: (message: string) => void;
205
+ className?: string;
206
+ }
207
+
208
+ export function ChatPanel(props: ChatPanelProps) {
209
+ // implementation
210
+ }
211
+ ```
212
+
213
+ #### Hooks Rules
214
+
215
+ Follow React hooks rules:
216
+
217
+ 1. **Call hooks at top level** (not in loops/conditions)
218
+ 2. **Use dependency arrays correctly** in `useEffect`
219
+ 3. **Clean up side effects** in `useEffect` return
220
+ 4. **Extract custom hooks** for reusable logic
221
+
222
+ **Good:**
223
+ ```typescript
224
+ useEffect(() => {
225
+ const subscription = subscribeToMessages(onMessage);
226
+
227
+ return () => {
228
+ subscription.unsubscribe();
229
+ };
230
+ }, [onMessage]);
231
+ ```
232
+
233
+ #### Component Organization
234
+
235
+ Structure components consistently:
236
+
237
+ ```typescript
238
+ // 1. Imports
239
+ import { useState, useEffect } from 'react';
240
+ import type { WorkflowDefinition } from '@/types';
241
+
242
+ // 2. Types/Interfaces
243
+ interface MyComponentProps {
244
+ // props
245
+ }
246
+
247
+ // 3. Component
248
+ export function MyComponent({ prop1, prop2 }: MyComponentProps) {
249
+ // 4. Hooks
250
+ const [state, setState] = useState<string>('');
251
+
252
+ // 5. Effects
253
+ useEffect(() => {
254
+ // side effects
255
+ }, []);
256
+
257
+ // 6. Event handlers
258
+ const handleClick = () => {
259
+ // handler logic
260
+ };
261
+
262
+ // 7. Render helpers
263
+ const renderItem = (item: Item) => {
264
+ // render logic
265
+ };
266
+
267
+ // 8. Return JSX
268
+ return (
269
+ <div className="my-component">
270
+ {/* JSX */}
271
+ </div>
272
+ );
273
+ }
274
+ ```
275
+
276
+ ### Styling
277
+
278
+ #### TailwindCSS
279
+
280
+ Use TailwindCSS utility classes for all styling.
281
+
282
+ **Good:**
283
+ ```typescript
284
+ <div className="flex items-center justify-between p-4 bg-gray-100 dark:bg-gray-800">
285
+ <h2 className="text-xl font-bold">Title</h2>
286
+ </div>
287
+ ```
288
+
289
+ **Bad:**
290
+ ```typescript
291
+ <div style={{ display: 'flex', padding: '16px' }}>
292
+ <h2 style={{ fontSize: '20px' }}>Title</h2>
293
+ </div>
294
+ ```
295
+
296
+ #### Dark Mode
297
+
298
+ Always support dark mode with `dark:` prefix:
299
+
300
+ ```typescript
301
+ <div className="bg-white dark:bg-gray-900 text-black dark:text-white">
302
+ Content
303
+ </div>
304
+ ```
305
+
306
+ #### Custom Styles
307
+
308
+ For complex styling, create `.module.css` file:
309
+
310
+ ```typescript
311
+ // Sidebar.module.css
312
+ .sidebar {
313
+ @apply flex flex-col w-64 bg-white dark:bg-gray-900;
314
+ }
315
+
316
+ .sidebarCollapsed {
317
+ @apply w-16;
318
+ }
319
+
320
+ // Sidebar.tsx
321
+ import styles from './Sidebar.module.css';
322
+
323
+ export function Sidebar({ collapsed }: Props) {
324
+ return (
325
+ <div className={collapsed ? styles.sidebarCollapsed : styles.sidebar}>
326
+ {/* content */}
327
+ </div>
328
+ );
329
+ }
330
+ ```
331
+
332
+ ### IPC Communication
333
+
334
+ #### Handler Pattern
335
+
336
+ Create dedicated handler files in `electron/ipc/`:
337
+
338
+ ```typescript
339
+ // electron/ipc/my-handler.ts
340
+ import { ipcMain } from 'electron';
341
+
342
+ export function setupMyHandlers(): void {
343
+ ipcMain.handle('my:action', async (_event, data) => {
344
+ try {
345
+ // Validate input
346
+ if (!data || typeof data.param !== 'string') {
347
+ throw new Error('Invalid parameters');
348
+ }
349
+
350
+ // Perform action
351
+ const result = await doSomething(data.param);
352
+
353
+ return { success: true, result };
354
+ } catch (error) {
355
+ return {
356
+ success: false,
357
+ error: (error as Error).message
358
+ };
359
+ }
360
+ });
361
+ }
362
+ ```
363
+
364
+ Register in `main.ts`:
365
+
366
+ ```typescript
367
+ import { setupMyHandlers } from './ipc/my-handler';
368
+
369
+ function setupIpcHandlers(): void {
370
+ setupMyHandlers();
371
+ // other handlers...
372
+ }
373
+ ```
374
+
375
+ #### Preload Exposure
376
+
377
+ Expose APIs in `preload.ts`:
378
+
379
+ ```typescript
380
+ import { contextBridge, ipcRenderer } from 'electron';
381
+
382
+ contextBridge.exposeInMainWorld('electronAPI', {
383
+ my: {
384
+ action: (param: string) => ipcRenderer.invoke('my:action', { param })
385
+ }
386
+ });
387
+ ```
388
+
389
+ Add types in `renderer/types/electron-api.d.ts`:
390
+
391
+ ```typescript
392
+ interface ElectronAPI {
393
+ my: {
394
+ action: (param: string) => Promise<{ success: boolean; result?: any; error?: string }>;
395
+ };
396
+ }
397
+ ```
398
+
399
+ #### Security
400
+
401
+ - ✅ **Always validate input** in IPC handlers
402
+ - ✅ **Use `contextBridge.exposeInMainWorld`** in preload
403
+ - ✅ **Return structured responses** (`{ success, data?, error? }`)
404
+ - ❌ **Never pass functions** through IPC
405
+ - ❌ **Never use `nodeIntegration: true`**
406
+ - ❌ **Never disable `contextIsolation`**
407
+
408
+ ### Services
409
+
410
+ #### Service Pattern
411
+
412
+ Create services in `electron/services/`:
413
+
414
+ ```typescript
415
+ // electron/services/my-service.ts
416
+
417
+ interface MyServiceOptions {
418
+ option1: string;
419
+ option2?: number;
420
+ }
421
+
422
+ export class MyService {
423
+ private state: Map<string, any>;
424
+
425
+ constructor(private options: MyServiceOptions) {
426
+ this.state = new Map();
427
+ }
428
+
429
+ async doSomething(param: string): Promise<Result> {
430
+ // Validate
431
+ if (!param) {
432
+ throw new Error('Parameter required');
433
+ }
434
+
435
+ // Process
436
+ const result = await this.processInternal(param);
437
+
438
+ // Update state
439
+ this.state.set(param, result);
440
+
441
+ return result;
442
+ }
443
+
444
+ private async processInternal(param: string): Promise<Result> {
445
+ // Internal implementation
446
+ }
447
+ }
448
+
449
+ // Export singleton instance
450
+ export const myService = new MyService({
451
+ option1: 'default'
452
+ });
453
+ ```
454
+
455
+ #### Dependency Injection
456
+
457
+ Use constructor injection for dependencies:
458
+
459
+ ```typescript
460
+ export class WorkflowEngine {
461
+ constructor(
462
+ private tokenTracker: TokenTracker,
463
+ private storage: WorkflowStorage
464
+ ) {}
465
+
466
+ async execute(workflowId: string): Promise<Result> {
467
+ const workflow = await this.storage.load(workflowId);
468
+ const tokens = this.tokenTracker.getCurrentUsage();
469
+ // ...
470
+ }
471
+ }
472
+ ```
473
+
474
+ ### Testing
475
+
476
+ #### Unit Tests
477
+
478
+ Write unit tests for all services and utilities:
479
+
480
+ ```typescript
481
+ // token-tracker.test.ts
482
+ import { TokenTracker } from '../services/token-tracker';
483
+
484
+ describe('TokenTracker', () => {
485
+ let tracker: TokenTracker;
486
+
487
+ beforeEach(() => {
488
+ tracker = new TokenTracker();
489
+ });
490
+
491
+ afterEach(() => {
492
+ tracker.reset();
493
+ });
494
+
495
+ test('tracks token usage', async () => {
496
+ await tracker.track({
497
+ tokensUsed: 100,
498
+ mode: 'balanced'
499
+ });
500
+
501
+ expect(tracker.getCurrentUsage()).toBe(100);
502
+ });
503
+
504
+ test('calculates stats correctly', async () => {
505
+ await tracker.track({ tokensUsed: 100, mode: 'balanced' });
506
+ await tracker.track({ tokensUsed: 50, mode: 'ultra-save' });
507
+
508
+ const stats = await tracker.getStats('day');
509
+ expect(stats.totalTokens).toBe(150);
510
+ });
511
+ });
512
+ ```
513
+
514
+ #### Component Tests
515
+
516
+ Test React components with React Testing Library:
517
+
518
+ ```typescript
519
+ // ChatPanel.test.tsx
520
+ import { render, screen, fireEvent } from '@testing-library/react';
521
+ import { ChatPanel } from './ChatPanel';
522
+
523
+ describe('ChatPanel', () => {
524
+ test('renders messages', () => {
525
+ render(<ChatPanel agentId="pm" />);
526
+ expect(screen.getByRole('list')).toBeInTheDocument();
527
+ });
528
+
529
+ test('sends message on submit', async () => {
530
+ const onMessage = jest.fn();
531
+ render(<ChatPanel onMessage={onMessage} />);
532
+
533
+ const input = screen.getByPlaceholderText('Type message...');
534
+ fireEvent.change(input, { target: { value: 'Hello' } });
535
+
536
+ const button = screen.getByText('Send');
537
+ fireEvent.click(button);
538
+
539
+ expect(onMessage).toHaveBeenCalledWith('Hello');
540
+ });
541
+ });
542
+ ```
543
+
544
+ #### Test Coverage
545
+
546
+ Maintain >80% code coverage:
547
+
548
+ ```bash
549
+ npm run test:coverage
550
+ ```
551
+
552
+ Coverage reports in `coverage/` directory.
553
+
554
+ ### Documentation
555
+
556
+ #### Code Comments
557
+
558
+ Use JSDoc for functions and classes:
559
+
560
+ ```typescript
561
+ /**
562
+ * Load workflow definition from disk.
563
+ *
564
+ * @param id - Workflow identifier (e.g., 'create-prd')
565
+ * @returns Promise resolving to workflow definition
566
+ * @throws Error if workflow not found
567
+ *
568
+ * @example
569
+ * ```typescript
570
+ * const workflow = await loadWorkflow('create-prd');
571
+ * console.log(workflow.name);
572
+ * ```
573
+ */
574
+ export async function loadWorkflow(id: string): Promise<WorkflowDefinition> {
575
+ // implementation
576
+ }
577
+ ```
578
+
579
+ #### Inline Comments
580
+
581
+ Use inline comments for complex logic:
582
+
583
+ ```typescript
584
+ // Calculate token usage with mode multiplier
585
+ // Ultra-save mode: 0.6x tokens (40% reduction)
586
+ // Balanced mode: 1.0x tokens (baseline)
587
+ // Power mode: 1.2x tokens (20% increase for accuracy)
588
+ const adjustedTokens = baseTokens * MODE_MULTIPLIERS[mode];
589
+ ```
590
+
591
+ #### README Updates
592
+
593
+ Update relevant READMEs when adding features:
594
+
595
+ - Project README for user-facing features
596
+ - Component READMEs for new component libraries
597
+ - Service READMEs for new services
598
+
599
+ ## Performance Guidelines
600
+
601
+ ### Renderer Process
602
+
603
+ #### Virtualization
604
+
605
+ Use virtualized lists for large data sets:
606
+
607
+ ```typescript
608
+ import { FixedSizeList } from 'react-window';
609
+
610
+ function FileList({ files }: Props) {
611
+ const Row = ({ index, style }: any) => (
612
+ <div style={style}>
613
+ {files[index].name}
614
+ </div>
615
+ );
616
+
617
+ return (
618
+ <FixedSizeList
619
+ height={600}
620
+ itemCount={files.length}
621
+ itemSize={35}
622
+ >
623
+ {Row}
624
+ </FixedSizeList>
625
+ );
626
+ }
627
+ ```
628
+
629
+ #### Code Splitting
630
+
631
+ Use React.lazy for large components:
632
+
633
+ ```typescript
634
+ import { lazy, Suspense } from 'react';
635
+
636
+ const WorkflowEditor = lazy(() => import('./components/WorkflowEditor'));
637
+
638
+ function App() {
639
+ return (
640
+ <Suspense fallback={<LoadingSpinner />}>
641
+ <WorkflowEditor />
642
+ </Suspense>
643
+ );
644
+ }
645
+ ```
646
+
647
+ #### Memoization
648
+
649
+ Memoize expensive computations:
650
+
651
+ ```typescript
652
+ import { useMemo } from 'react';
653
+
654
+ function WorkflowStats({ workflow }: Props) {
655
+ const stats = useMemo(() => {
656
+ return calculateComplexStats(workflow);
657
+ }, [workflow]);
658
+
659
+ return <div>{stats.totalSteps}</div>;
660
+ }
661
+ ```
662
+
663
+ ### Main Process
664
+
665
+ #### Async Operations
666
+
667
+ Never block the main thread:
668
+
669
+ ```typescript
670
+ // Good: Async file operations
671
+ const content = await fs.readFile(path, 'utf-8');
672
+
673
+ // Bad: Sync operations
674
+ const content = fs.readFileSync(path, 'utf-8');
675
+ ```
676
+
677
+ #### Streaming
678
+
679
+ Stream large files instead of loading into memory:
680
+
681
+ ```typescript
682
+ import { createReadStream } from 'fs';
683
+
684
+ async function processLargeFile(path: string): Promise<void> {
685
+ const stream = createReadStream(path, { encoding: 'utf-8' });
686
+
687
+ for await (const chunk of stream) {
688
+ await processChunk(chunk);
689
+ }
690
+ }
691
+ ```
692
+
693
+ ## Debugging
694
+
695
+ ### Renderer Process
696
+
697
+ Use Chrome DevTools (auto-opens in development):
698
+
699
+ - **Console** — Log messages, errors
700
+ - **Sources** — Set breakpoints, step through code
701
+ - **React DevTools** — Inspect component tree
702
+
703
+ ### Main Process
704
+
705
+ Use VS Code debugger:
706
+
707
+ 1. Create `.vscode/launch.json`:
708
+
709
+ ```json
710
+ {
711
+ "version": "0.2.0",
712
+ "configurations": [
713
+ {
714
+ "name": "Electron Main",
715
+ "type": "node",
716
+ "request": "launch",
717
+ "runtimeExecutable": "npm",
718
+ "runtimeArgs": ["run", "electron:start"],
719
+ "port": 9229,
720
+ "skipFiles": ["<node_internals>/**"]
721
+ }
722
+ ]
723
+ }
724
+ ```
725
+
726
+ 2. Set breakpoints in `.ts` files
727
+ 3. Press F5 to start debugging
728
+
729
+ ### IPC Debugging
730
+
731
+ Log IPC calls for debugging:
732
+
733
+ ```typescript
734
+ // In preload.ts (temporary debugging)
735
+ contextBridge.exposeInMainWorld('electronAPI', {
736
+ workflow: {
737
+ load: (id: string) => {
738
+ console.log('[IPC] workflow:load', id);
739
+ return ipcRenderer.invoke('workflow:load', id);
740
+ }
741
+ }
742
+ });
743
+ ```
744
+
745
+ ## Common Tasks
746
+
747
+ ### Adding a New Component
748
+
749
+ 1. Create component file: `renderer/components/MyComponent.tsx`
750
+ 2. Define props interface
751
+ 3. Implement component with TypeScript and TailwindCSS
752
+ 4. Add tests: `renderer/components/MyComponent.test.tsx`
753
+ 5. Export from parent component or `App.tsx`
754
+ 6. Document in API reference if public API
755
+
756
+ ### Adding an IPC Handler
757
+
758
+ 1. Create handler: `electron/ipc/my-handler.ts`
759
+ 2. Export setup function: `setupMyHandlers()`
760
+ 3. Register in `electron/main.ts` → `setupIpcHandlers()`
761
+ 4. Expose in `electron/preload.ts`
762
+ 5. Add types in `renderer/types/electron-api.d.ts`
763
+ 6. Document in API reference
764
+
765
+ ### Adding a Service
766
+
767
+ 1. Create service: `electron/services/my-service.ts`
768
+ 2. Export class or functions with types
769
+ 3. Add unit tests: `test/services/my-service.test.ts`
770
+ 4. Use in IPC handlers or other services
771
+ 5. Document in API reference
772
+
773
+ ### Updating Dependencies
774
+
775
+ ```bash
776
+ # Check for updates
777
+ npm outdated
778
+
779
+ # Update specific package
780
+ npm update package-name
781
+
782
+ # Update all (carefully)
783
+ npm update
784
+
785
+ # Test thoroughly after updates
786
+ npm test
787
+ npm run electron:dev
788
+ ```
789
+
790
+ ## Pull Request Process
791
+
792
+ 1. **Ensure all tests pass**
793
+
794
+ ```bash
795
+ npm test
796
+ npm run lint
797
+ npm run format:check
798
+ ```
799
+
800
+ 2. **Update documentation** if needed
801
+
802
+ 3. **Create descriptive PR**
803
+
804
+ Title: Follow conventional commits format
805
+ Description: Explain what, why, and how
806
+
807
+ 4. **Request review** from maintainers
808
+
809
+ 5. **Address feedback** promptly
810
+
811
+ 6. **Squash commits** before merge (if requested)
812
+
813
+ ## Getting Help
814
+
815
+ - 💬 [Discord](https://discord.gg/gk8jAdXWmj) — Real-time help
816
+ - 📝 [GitHub Issues](https://github.com/bmad-code-org/BMAD-METHOD/issues) — Bug reports, features
817
+ - 💡 [Discussions](https://github.com/bmad-code-org/BMAD-METHOD/discussions) — Questions, ideas
818
+
819
+ ## Code of Conduct
820
+
821
+ Be respectful, inclusive, and collaborative. See [CODE_OF_CONDUCT.md](../../CODE_OF_CONDUCT.md) for details.
822
+
823
+ ## License
824
+
825
+ By contributing, you agree that your contributions will be licensed under the MIT License.
826
+
827
+ ## Next Steps
828
+
829
+ - [Architecture Guide](./architecture.md) — Understand system design
830
+ - [API Reference](./api-reference.md) — API documentation
831
+ - [User Guide](../user-guide/) — End-user documentation