bmad-enhanced 1.3.8 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (671) hide show
  1. package/README.md +115 -131
  2. package/_bmad/_config/agent-manifest.csv +23 -0
  3. package/_bmad/_config/agents/bmb-agent-builder.customize.yaml +41 -0
  4. package/_bmad/_config/agents/bmb-module-builder.customize.yaml +41 -0
  5. package/_bmad/_config/agents/bmb-workflow-builder.customize.yaml +41 -0
  6. package/_bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
  7. package/_bmad/_config/agents/bmm-architect.customize.yaml +41 -0
  8. package/_bmad/_config/agents/bmm-dev.customize.yaml +41 -0
  9. package/_bmad/_config/agents/bmm-pm.customize.yaml +41 -0
  10. package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
  11. package/_bmad/_config/agents/bmm-quinn.customize.yaml +41 -0
  12. package/_bmad/_config/agents/bmm-sm.customize.yaml +41 -0
  13. package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
  14. package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
  15. package/_bmad/_config/agents/cis-brainstorming-coach.customize.yaml +41 -0
  16. package/_bmad/_config/agents/cis-creative-problem-solver.customize.yaml +41 -0
  17. package/_bmad/_config/agents/cis-design-thinking-coach.customize.yaml +41 -0
  18. package/_bmad/_config/agents/cis-innovation-strategist.customize.yaml +41 -0
  19. package/_bmad/_config/agents/cis-presentation-master.customize.yaml +41 -0
  20. package/_bmad/_config/agents/cis-storyteller.customize.yaml +41 -0
  21. package/_bmad/_config/agents/core-bmad-master.customize.yaml +41 -0
  22. package/_bmad/_config/agents/tea-tea.customize.yaml +41 -0
  23. package/_bmad/_config/bmad-help.csv +66 -0
  24. package/_bmad/_config/files-manifest.csv +602 -0
  25. package/_bmad/_config/manifest.yaml +42 -0
  26. package/_bmad/_config/task-manifest.csv +9 -0
  27. package/_bmad/_config/tool-manifest.csv +1 -0
  28. package/_bmad/_config/workflow-manifest.csv +41 -0
  29. package/_bmad/_memory/config.yaml +11 -0
  30. package/_bmad/_memory/storyteller-sidecar/stories-told.md +7 -0
  31. package/_bmad/_memory/storyteller-sidecar/story-preferences.md +7 -0
  32. package/_bmad/bmb/agents/agent-builder.md +59 -0
  33. package/_bmad/bmb/agents/module-builder.md +60 -0
  34. package/_bmad/bmb/agents/workflow-builder.md +61 -0
  35. package/_bmad/bmb/config.yaml +12 -0
  36. package/_bmad/bmb/module-help.csv +13 -0
  37. package/_bmad/bmb/workflows/agent/data/agent-compilation.md +273 -0
  38. package/_bmad/bmb/workflows/agent/data/agent-menu-patterns.md +233 -0
  39. package/_bmad/bmb/workflows/agent/data/agent-metadata.md +208 -0
  40. package/_bmad/bmb/workflows/agent/data/brainstorm-context.md +146 -0
  41. package/_bmad/bmb/workflows/agent/data/communication-presets.csv +61 -0
  42. package/_bmad/bmb/workflows/agent/data/critical-actions.md +120 -0
  43. package/_bmad/bmb/workflows/agent/data/expert-agent-architecture.md +236 -0
  44. package/_bmad/bmb/workflows/agent/data/expert-agent-validation.md +174 -0
  45. package/_bmad/bmb/workflows/agent/data/module-agent-validation.md +126 -0
  46. package/_bmad/bmb/workflows/agent/data/persona-properties.md +266 -0
  47. package/_bmad/bmb/workflows/agent/data/principles-crafting.md +292 -0
  48. package/_bmad/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -0
  49. package/_bmad/bmb/workflows/agent/data/simple-agent-architecture.md +204 -0
  50. package/_bmad/bmb/workflows/agent/data/simple-agent-validation.md +133 -0
  51. package/_bmad/bmb/workflows/agent/data/understanding-agent-types.md +222 -0
  52. package/_bmad/bmb/workflows/agent/steps-c/step-01-brainstorm.md +128 -0
  53. package/_bmad/bmb/workflows/agent/steps-c/step-02-discovery.md +170 -0
  54. package/_bmad/bmb/workflows/agent/steps-c/step-03-type-metadata.md +296 -0
  55. package/_bmad/bmb/workflows/agent/steps-c/step-04-persona.md +212 -0
  56. package/_bmad/bmb/workflows/agent/steps-c/step-05-commands-menu.md +178 -0
  57. package/_bmad/bmb/workflows/agent/steps-c/step-06-activation.md +279 -0
  58. package/_bmad/bmb/workflows/agent/steps-c/step-07a-build-simple.md +187 -0
  59. package/_bmad/bmb/workflows/agent/steps-c/step-07b-build-expert.md +201 -0
  60. package/_bmad/bmb/workflows/agent/steps-c/step-07c-build-module.md +258 -0
  61. package/_bmad/bmb/workflows/agent/steps-c/step-08-celebrate.md +249 -0
  62. package/_bmad/bmb/workflows/agent/steps-e/e-01-load-existing.md +221 -0
  63. package/_bmad/bmb/workflows/agent/steps-e/e-02-discover-edits.md +193 -0
  64. package/_bmad/bmb/workflows/agent/steps-e/e-03-placeholder.md +1 -0
  65. package/_bmad/bmb/workflows/agent/steps-e/e-04-type-metadata.md +124 -0
  66. package/_bmad/bmb/workflows/agent/steps-e/e-05-persona.md +134 -0
  67. package/_bmad/bmb/workflows/agent/steps-e/e-06-commands-menu.md +122 -0
  68. package/_bmad/bmb/workflows/agent/steps-e/e-07-activation.md +125 -0
  69. package/_bmad/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +137 -0
  70. package/_bmad/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +119 -0
  71. package/_bmad/bmb/workflows/agent/steps-e/e-08c-edit-module.md +123 -0
  72. package/_bmad/bmb/workflows/agent/steps-e/e-09-celebrate.md +155 -0
  73. package/_bmad/bmb/workflows/agent/steps-v/v-01-load-review.md +136 -0
  74. package/_bmad/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +116 -0
  75. package/_bmad/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +124 -0
  76. package/_bmad/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +145 -0
  77. package/_bmad/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +136 -0
  78. package/_bmad/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +136 -0
  79. package/_bmad/bmb/workflows/agent/steps-v/v-03-summary.md +104 -0
  80. package/_bmad/bmb/workflows/agent/templates/agent-plan.template.md +5 -0
  81. package/_bmad/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +77 -0
  82. package/_bmad/bmb/workflows/agent/templates/simple-agent.template.md +72 -0
  83. package/_bmad/bmb/workflows/agent/workflow.md +123 -0
  84. package/_bmad/bmb/workflows/module/data/agent-architecture.md +179 -0
  85. package/_bmad/bmb/workflows/module/data/agent-spec-template.md +79 -0
  86. package/_bmad/bmb/workflows/module/data/module-installer-standards.md +348 -0
  87. package/_bmad/bmb/workflows/module/data/module-standards.md +280 -0
  88. package/_bmad/bmb/workflows/module/data/module-yaml-conventions.md +392 -0
  89. package/_bmad/bmb/workflows/module/steps-b/step-01-welcome.md +147 -0
  90. package/_bmad/bmb/workflows/module/steps-b/step-02-spark.md +140 -0
  91. package/_bmad/bmb/workflows/module/steps-b/step-03-module-type.md +148 -0
  92. package/_bmad/bmb/workflows/module/steps-b/step-04-vision.md +82 -0
  93. package/_bmad/bmb/workflows/module/steps-b/step-05-identity.md +96 -0
  94. package/_bmad/bmb/workflows/module/steps-b/step-06-users.md +85 -0
  95. package/_bmad/bmb/workflows/module/steps-b/step-07-value.md +75 -0
  96. package/_bmad/bmb/workflows/module/steps-b/step-08-agents.md +96 -0
  97. package/_bmad/bmb/workflows/module/steps-b/step-09-workflows.md +82 -0
  98. package/_bmad/bmb/workflows/module/steps-b/step-10-tools.md +90 -0
  99. package/_bmad/bmb/workflows/module/steps-b/step-11-scenarios.md +83 -0
  100. package/_bmad/bmb/workflows/module/steps-b/step-12-creative.md +94 -0
  101. package/_bmad/bmb/workflows/module/steps-b/step-13-review.md +104 -0
  102. package/_bmad/bmb/workflows/module/steps-b/step-14-finalize.md +117 -0
  103. package/_bmad/bmb/workflows/module/steps-c/step-01-load-brief.md +178 -0
  104. package/_bmad/bmb/workflows/module/steps-c/step-01b-continue.md +83 -0
  105. package/_bmad/bmb/workflows/module/steps-c/step-02-structure.md +109 -0
  106. package/_bmad/bmb/workflows/module/steps-c/step-03-config.md +118 -0
  107. package/_bmad/bmb/workflows/module/steps-c/step-04-installer.md +160 -0
  108. package/_bmad/bmb/workflows/module/steps-c/step-05-agents.md +167 -0
  109. package/_bmad/bmb/workflows/module/steps-c/step-06-workflows.md +183 -0
  110. package/_bmad/bmb/workflows/module/steps-c/step-07-docs.md +402 -0
  111. package/_bmad/bmb/workflows/module/steps-c/step-08-complete.md +123 -0
  112. package/_bmad/bmb/workflows/module/steps-e/step-01-load-target.md +81 -0
  113. package/_bmad/bmb/workflows/module/steps-e/step-02-select-edit.md +77 -0
  114. package/_bmad/bmb/workflows/module/steps-e/step-03-apply-edit.md +77 -0
  115. package/_bmad/bmb/workflows/module/steps-e/step-04-review.md +80 -0
  116. package/_bmad/bmb/workflows/module/steps-e/step-05-confirm.md +75 -0
  117. package/_bmad/bmb/workflows/module/steps-v/step-01-load-target.md +96 -0
  118. package/_bmad/bmb/workflows/module/steps-v/step-02-file-structure.md +94 -0
  119. package/_bmad/bmb/workflows/module/steps-v/step-03-module-yaml.md +99 -0
  120. package/_bmad/bmb/workflows/module/steps-v/step-04-agent-specs.md +152 -0
  121. package/_bmad/bmb/workflows/module/steps-v/step-05-workflow-specs.md +152 -0
  122. package/_bmad/bmb/workflows/module/steps-v/step-06-documentation.md +143 -0
  123. package/_bmad/bmb/workflows/module/steps-v/step-07-installation.md +113 -0
  124. package/_bmad/bmb/workflows/module/steps-v/step-08-report.md +197 -0
  125. package/_bmad/bmb/workflows/module/templates/brief-template.md +154 -0
  126. package/_bmad/bmb/workflows/module/templates/workflow-spec-template.md +96 -0
  127. package/_bmad/bmb/workflows/module/workflow.md +100 -0
  128. package/_bmad/bmb/workflows/workflow/data/architecture.md +152 -0
  129. package/_bmad/bmb/workflows/workflow/data/common-workflow-tools.csv +19 -0
  130. package/_bmad/bmb/workflows/workflow/data/csv-data-file-standards.md +81 -0
  131. package/_bmad/bmb/workflows/workflow/data/frontmatter-standards.md +225 -0
  132. package/_bmad/bmb/workflows/workflow/data/input-discovery-standards.md +269 -0
  133. package/_bmad/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +50 -0
  134. package/_bmad/bmb/workflows/workflow/data/menu-handling-standards.md +167 -0
  135. package/_bmad/bmb/workflows/workflow/data/output-format-standards.md +188 -0
  136. package/_bmad/bmb/workflows/workflow/data/step-file-rules.md +235 -0
  137. package/_bmad/bmb/workflows/workflow/data/step-type-patterns.md +311 -0
  138. package/_bmad/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +386 -0
  139. package/_bmad/bmb/workflows/workflow/data/trimodal-workflow-structure.md +209 -0
  140. package/_bmad/bmb/workflows/workflow/data/workflow-chaining-standards.md +271 -0
  141. package/_bmad/bmb/workflows/workflow/data/workflow-examples.md +276 -0
  142. package/_bmad/bmb/workflows/workflow/data/workflow-type-criteria.md +172 -0
  143. package/_bmad/bmb/workflows/workflow/steps-c/step-00-conversion.md +262 -0
  144. package/_bmad/bmb/workflows/workflow/steps-c/step-01-discovery.md +194 -0
  145. package/_bmad/bmb/workflows/workflow/steps-c/step-01b-continuation.md +3 -0
  146. package/_bmad/bmb/workflows/workflow/steps-c/step-02-classification.md +269 -0
  147. package/_bmad/bmb/workflows/workflow/steps-c/step-03-requirements.md +282 -0
  148. package/_bmad/bmb/workflows/workflow/steps-c/step-04-tools.md +281 -0
  149. package/_bmad/bmb/workflows/workflow/steps-c/step-05-plan-review.md +242 -0
  150. package/_bmad/bmb/workflows/workflow/steps-c/step-06-design.md +329 -0
  151. package/_bmad/bmb/workflows/workflow/steps-c/step-07-foundation.md +238 -0
  152. package/_bmad/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +377 -0
  153. package/_bmad/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +350 -0
  154. package/_bmad/bmb/workflows/workflow/steps-c/step-10-confirmation.md +320 -0
  155. package/_bmad/bmb/workflows/workflow/steps-c/step-11-completion.md +191 -0
  156. package/_bmad/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +237 -0
  157. package/_bmad/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +248 -0
  158. package/_bmad/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +252 -0
  159. package/_bmad/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +275 -0
  160. package/_bmad/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +154 -0
  161. package/_bmad/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +190 -0
  162. package/_bmad/bmb/workflows/workflow/steps-e/step-e-07-complete.md +206 -0
  163. package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +109 -0
  164. package/_bmad/bmb/workflows/workflow/steps-v/step-01-validate.md +221 -0
  165. package/_bmad/bmb/workflows/workflow/steps-v/step-01b-structure.md +152 -0
  166. package/_bmad/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +199 -0
  167. package/_bmad/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +265 -0
  168. package/_bmad/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +164 -0
  169. package/_bmad/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +211 -0
  170. package/_bmad/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +200 -0
  171. package/_bmad/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +195 -0
  172. package/_bmad/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +209 -0
  173. package/_bmad/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +199 -0
  174. package/_bmad/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +179 -0
  175. package/_bmad/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +186 -0
  176. package/_bmad/bmb/workflows/workflow/steps-v/step-10-report-complete.md +154 -0
  177. package/_bmad/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +237 -0
  178. package/_bmad/bmb/workflows/workflow/templates/minimal-output-template.md +11 -0
  179. package/_bmad/bmb/workflows/workflow/templates/step-01-init-continuable-template.md +241 -0
  180. package/_bmad/bmb/workflows/workflow/templates/step-1b-template.md +223 -0
  181. package/_bmad/bmb/workflows/workflow/templates/step-template.md +290 -0
  182. package/_bmad/bmb/workflows/workflow/templates/workflow-template.md +102 -0
  183. package/_bmad/bmb/workflows/workflow/workflow.md +109 -0
  184. package/_bmad/bmm/agents/analyst.md +76 -0
  185. package/_bmad/bmm/agents/architect.md +58 -0
  186. package/_bmad/bmm/agents/dev.md +69 -0
  187. package/_bmad/bmm/agents/pm.md +72 -0
  188. package/_bmad/bmm/agents/qa.md +92 -0
  189. package/_bmad/bmm/agents/quick-flow-solo-dev.md +69 -0
  190. package/_bmad/bmm/agents/sm.md +70 -0
  191. package/_bmad/bmm/agents/tech-writer/tech-writer.md +70 -0
  192. package/_bmad/bmm/agents/ux-designer.md +57 -0
  193. package/_bmad/bmm/config.yaml +16 -0
  194. package/_bmad/bmm/data/project-context-template.md +26 -0
  195. package/_bmad/bmm/module-help.csv +32 -0
  196. package/_bmad/bmm/teams/default-party.csv +20 -0
  197. package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
  198. package/_bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
  199. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
  200. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
  201. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
  202. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
  203. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
  204. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
  205. package/_bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
  206. package/_bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
  207. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
  208. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
  209. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
  210. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
  211. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
  212. package/_bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
  213. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  214. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  215. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
  216. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  217. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  218. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  219. package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
  220. package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
  221. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
  222. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
  223. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
  224. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
  225. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
  226. package/_bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
  227. package/_bmad/bmm/workflows/1-analysis/research/workflow.md +173 -0
  228. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +13 -0
  229. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  230. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  231. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
  232. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +153 -0
  233. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
  234. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
  235. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
  236. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
  237. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
  238. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
  239. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
  240. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
  241. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
  242. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
  243. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
  244. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
  245. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  246. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
  247. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
  248. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
  249. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +218 -0
  250. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  251. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  252. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  253. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  254. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  255. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  256. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  257. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  258. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  259. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  260. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  261. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  262. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
  263. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
  264. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md +433 -0
  265. package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow.md +150 -0
  266. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
  267. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
  268. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
  269. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
  270. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
  271. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
  272. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
  273. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
  274. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
  275. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
  276. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
  277. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
  278. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
  279. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
  280. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
  281. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
  282. package/_bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
  283. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
  284. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
  285. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
  286. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
  287. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
  288. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
  289. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
  290. package/_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
  291. package/_bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
  292. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
  293. package/_bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
  294. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
  295. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
  296. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
  297. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
  298. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
  299. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
  300. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
  301. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
  302. package/_bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
  303. package/_bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
  304. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
  305. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
  306. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
  307. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
  308. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
  309. package/_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
  310. package/_bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
  311. package/_bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
  312. package/_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +50 -0
  313. package/_bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
  314. package/_bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
  315. package/_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +58 -0
  316. package/_bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
  317. package/_bmad/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
  318. package/_bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
  319. package/_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +59 -0
  320. package/_bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
  321. package/_bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
  322. package/_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +25 -0
  323. package/_bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
  324. package/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +57 -0
  325. package/_bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
  326. package/_bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
  327. package/_bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
  328. package/_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +53 -0
  329. package/_bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
  330. package/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +35 -0
  331. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +176 -0
  332. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
  333. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
  334. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
  335. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
  336. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +149 -0
  337. package/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
  338. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +192 -0
  339. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +145 -0
  340. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  341. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +201 -0
  342. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  343. package/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  344. package/_bmad/bmm/workflows/document-project/checklist.md +245 -0
  345. package/_bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
  346. package/_bmad/bmm/workflows/document-project/instructions.md +221 -0
  347. package/_bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
  348. package/_bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
  349. package/_bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
  350. package/_bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
  351. package/_bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
  352. package/_bmad/bmm/workflows/document-project/workflow.yaml +28 -0
  353. package/_bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
  354. package/_bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
  355. package/_bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
  356. package/_bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
  357. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
  358. package/_bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
  359. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
  360. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
  361. package/_bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +26 -0
  362. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
  363. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
  364. package/_bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +26 -0
  365. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
  366. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
  367. package/_bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +26 -0
  368. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
  369. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
  370. package/_bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +26 -0
  371. package/_bmad/bmm/workflows/qa/automate/checklist.md +33 -0
  372. package/_bmad/bmm/workflows/qa/automate/instructions.md +110 -0
  373. package/_bmad/bmm/workflows/qa/automate/workflow.yaml +47 -0
  374. package/_bmad/cis/agents/brainstorming-coach.md +61 -0
  375. package/_bmad/cis/agents/creative-problem-solver.md +61 -0
  376. package/_bmad/cis/agents/design-thinking-coach.md +61 -0
  377. package/_bmad/cis/agents/innovation-strategist.md +61 -0
  378. package/_bmad/cis/agents/presentation-master.md +67 -0
  379. package/_bmad/cis/agents/storyteller/storyteller.md +58 -0
  380. package/_bmad/cis/config.yaml +12 -0
  381. package/_bmad/cis/module-help.csv +6 -0
  382. package/_bmad/cis/teams/creative-squad.yaml +7 -0
  383. package/_bmad/cis/teams/default-party.csv +12 -0
  384. package/_bmad/cis/workflows/README.md +139 -0
  385. package/_bmad/cis/workflows/design-thinking/README.md +56 -0
  386. package/_bmad/cis/workflows/design-thinking/design-methods.csv +31 -0
  387. package/_bmad/cis/workflows/design-thinking/instructions.md +202 -0
  388. package/_bmad/cis/workflows/design-thinking/template.md +111 -0
  389. package/_bmad/cis/workflows/design-thinking/workflow.yaml +27 -0
  390. package/_bmad/cis/workflows/innovation-strategy/README.md +56 -0
  391. package/_bmad/cis/workflows/innovation-strategy/innovation-frameworks.csv +31 -0
  392. package/_bmad/cis/workflows/innovation-strategy/instructions.md +276 -0
  393. package/_bmad/cis/workflows/innovation-strategy/template.md +189 -0
  394. package/_bmad/cis/workflows/innovation-strategy/workflow.yaml +27 -0
  395. package/_bmad/cis/workflows/problem-solving/README.md +56 -0
  396. package/_bmad/cis/workflows/problem-solving/instructions.md +252 -0
  397. package/_bmad/cis/workflows/problem-solving/solving-methods.csv +31 -0
  398. package/_bmad/cis/workflows/problem-solving/template.md +165 -0
  399. package/_bmad/cis/workflows/problem-solving/workflow.yaml +27 -0
  400. package/_bmad/cis/workflows/storytelling/README.md +58 -0
  401. package/_bmad/cis/workflows/storytelling/instructions.md +293 -0
  402. package/_bmad/cis/workflows/storytelling/story-types.csv +26 -0
  403. package/_bmad/cis/workflows/storytelling/template.md +113 -0
  404. package/_bmad/cis/workflows/storytelling/workflow.yaml +27 -0
  405. package/_bmad/core/agents/bmad-master.md +56 -0
  406. package/_bmad/core/config.yaml +9 -0
  407. package/_bmad/core/module-help.csv +9 -0
  408. package/_bmad/core/resources/excalidraw/README.md +160 -0
  409. package/_bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -0
  410. package/_bmad/core/resources/excalidraw/library-loader.md +50 -0
  411. package/_bmad/core/resources/excalidraw/validate-json-instructions.md +79 -0
  412. package/_bmad/core/tasks/editorial-review-prose.xml +100 -0
  413. package/_bmad/core/tasks/editorial-review-structure.xml +209 -0
  414. package/_bmad/core/tasks/help.md +62 -0
  415. package/_bmad/core/tasks/index-docs.xml +65 -0
  416. package/_bmad/core/tasks/review-adversarial-general.xml +48 -0
  417. package/_bmad/core/tasks/shard-doc.xml +109 -0
  418. package/_bmad/core/tasks/workflow.xml +235 -0
  419. package/_bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
  420. package/_bmad/core/workflows/advanced-elicitation/workflow.xml +117 -0
  421. package/_bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
  422. package/_bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
  423. package/_bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
  424. package/_bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
  425. package/_bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
  426. package/_bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
  427. package/_bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
  428. package/_bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
  429. package/_bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
  430. package/_bmad/core/workflows/brainstorming/template.md +15 -0
  431. package/_bmad/core/workflows/brainstorming/workflow.md +58 -0
  432. package/_bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
  433. package/_bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
  434. package/_bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
  435. package/_bmad/core/workflows/party-mode/workflow.md +194 -0
  436. package/_bmad/tea/agents/tea.md +71 -0
  437. package/_bmad/tea/config.yaml +19 -0
  438. package/_bmad/tea/module-help.csv +10 -0
  439. package/_bmad/tea/teams/default-party.csv +2 -0
  440. package/_bmad/tea/testarch/knowledge/adr-quality-readiness-checklist.md +377 -0
  441. package/_bmad/tea/testarch/knowledge/api-request.md +442 -0
  442. package/_bmad/tea/testarch/knowledge/api-testing-patterns.md +851 -0
  443. package/_bmad/tea/testarch/knowledge/auth-session.md +548 -0
  444. package/_bmad/tea/testarch/knowledge/burn-in.md +273 -0
  445. package/_bmad/tea/testarch/knowledge/ci-burn-in.md +675 -0
  446. package/_bmad/tea/testarch/knowledge/component-tdd.md +486 -0
  447. package/_bmad/tea/testarch/knowledge/contract-testing.md +957 -0
  448. package/_bmad/tea/testarch/knowledge/data-factories.md +500 -0
  449. package/_bmad/tea/testarch/knowledge/email-auth.md +721 -0
  450. package/_bmad/tea/testarch/knowledge/error-handling.md +725 -0
  451. package/_bmad/tea/testarch/knowledge/feature-flags.md +750 -0
  452. package/_bmad/tea/testarch/knowledge/file-utils.md +456 -0
  453. package/_bmad/tea/testarch/knowledge/fixture-architecture.md +401 -0
  454. package/_bmad/tea/testarch/knowledge/fixtures-composition.md +382 -0
  455. package/_bmad/tea/testarch/knowledge/intercept-network-call.md +426 -0
  456. package/_bmad/tea/testarch/knowledge/log.md +426 -0
  457. package/_bmad/tea/testarch/knowledge/network-error-monitor.md +401 -0
  458. package/_bmad/tea/testarch/knowledge/network-first.md +486 -0
  459. package/_bmad/tea/testarch/knowledge/network-recorder.md +527 -0
  460. package/_bmad/tea/testarch/knowledge/nfr-criteria.md +670 -0
  461. package/_bmad/tea/testarch/knowledge/overview.md +286 -0
  462. package/_bmad/tea/testarch/knowledge/playwright-config.md +730 -0
  463. package/_bmad/tea/testarch/knowledge/probability-impact.md +601 -0
  464. package/_bmad/tea/testarch/knowledge/recurse.md +421 -0
  465. package/_bmad/tea/testarch/knowledge/risk-governance.md +615 -0
  466. package/_bmad/tea/testarch/knowledge/selective-testing.md +732 -0
  467. package/_bmad/tea/testarch/knowledge/selector-resilience.md +527 -0
  468. package/_bmad/tea/testarch/knowledge/test-healing-patterns.md +644 -0
  469. package/_bmad/tea/testarch/knowledge/test-levels-framework.md +473 -0
  470. package/_bmad/tea/testarch/knowledge/test-priorities-matrix.md +373 -0
  471. package/_bmad/tea/testarch/knowledge/test-quality.md +664 -0
  472. package/_bmad/tea/testarch/knowledge/timing-debugging.md +372 -0
  473. package/_bmad/tea/testarch/knowledge/visual-debugging.md +524 -0
  474. package/_bmad/tea/testarch/tea-index.csv +35 -0
  475. package/_bmad/tea/workflows/testarch/README.md +74 -0
  476. package/_bmad/tea/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
  477. package/_bmad/tea/workflows/testarch/atdd/checklist.md +374 -0
  478. package/_bmad/tea/workflows/testarch/atdd/instructions.md +38 -0
  479. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-01-preflight-and-context.md +110 -0
  480. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-02-generation-mode.md +79 -0
  481. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-03-test-strategy.md +76 -0
  482. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04-generate-tests.md +228 -0
  483. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04a-subprocess-api-failing.md +215 -0
  484. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04b-subprocess-e2e-failing.md +212 -0
  485. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-04c-aggregate.md +329 -0
  486. package/_bmad/tea/workflows/testarch/atdd/steps-c/step-05-validate-and-complete.md +68 -0
  487. package/_bmad/tea/workflows/testarch/atdd/steps-e/step-01-assess.md +65 -0
  488. package/_bmad/tea/workflows/testarch/atdd/steps-e/step-02-apply-edit.md +60 -0
  489. package/_bmad/tea/workflows/testarch/atdd/steps-v/step-01-validate.md +67 -0
  490. package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-095021.md +73 -0
  491. package/_bmad/tea/workflows/testarch/atdd/validation-report-20260127-102401.md +116 -0
  492. package/_bmad/tea/workflows/testarch/atdd/workflow-plan.md +21 -0
  493. package/_bmad/tea/workflows/testarch/atdd/workflow.md +39 -0
  494. package/_bmad/tea/workflows/testarch/atdd/workflow.yaml +45 -0
  495. package/_bmad/tea/workflows/testarch/automate/checklist.md +582 -0
  496. package/_bmad/tea/workflows/testarch/automate/instructions.md +43 -0
  497. package/_bmad/tea/workflows/testarch/automate/steps-c/step-01-preflight-and-context.md +127 -0
  498. package/_bmad/tea/workflows/testarch/automate/steps-c/step-02-identify-targets.md +95 -0
  499. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03-generate-tests.md +199 -0
  500. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03a-subprocess-api.md +183 -0
  501. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03b-subprocess-e2e.md +181 -0
  502. package/_bmad/tea/workflows/testarch/automate/steps-c/step-03c-aggregate.md +300 -0
  503. package/_bmad/tea/workflows/testarch/automate/steps-c/step-04-validate-and-summarize.md +69 -0
  504. package/_bmad/tea/workflows/testarch/automate/steps-e/step-01-assess.md +65 -0
  505. package/_bmad/tea/workflows/testarch/automate/steps-e/step-02-apply-edit.md +60 -0
  506. package/_bmad/tea/workflows/testarch/automate/steps-v/step-01-validate.md +67 -0
  507. package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-095021.md +72 -0
  508. package/_bmad/tea/workflows/testarch/automate/validation-report-20260127-102401.md +114 -0
  509. package/_bmad/tea/workflows/testarch/automate/workflow-plan.md +20 -0
  510. package/_bmad/tea/workflows/testarch/automate/workflow.md +39 -0
  511. package/_bmad/tea/workflows/testarch/automate/workflow.yaml +52 -0
  512. package/_bmad/tea/workflows/testarch/ci/checklist.md +247 -0
  513. package/_bmad/tea/workflows/testarch/ci/github-actions-template.yaml +198 -0
  514. package/_bmad/tea/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
  515. package/_bmad/tea/workflows/testarch/ci/instructions.md +38 -0
  516. package/_bmad/tea/workflows/testarch/ci/steps-c/step-01-preflight.md +92 -0
  517. package/_bmad/tea/workflows/testarch/ci/steps-c/step-02-generate-pipeline.md +82 -0
  518. package/_bmad/tea/workflows/testarch/ci/steps-c/step-03-configure-quality-gates.md +75 -0
  519. package/_bmad/tea/workflows/testarch/ci/steps-c/step-04-validate-and-summary.md +67 -0
  520. package/_bmad/tea/workflows/testarch/ci/steps-e/step-01-assess.md +65 -0
  521. package/_bmad/tea/workflows/testarch/ci/steps-e/step-02-apply-edit.md +60 -0
  522. package/_bmad/tea/workflows/testarch/ci/steps-v/step-01-validate.md +67 -0
  523. package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-095021.md +72 -0
  524. package/_bmad/tea/workflows/testarch/ci/validation-report-20260127-102401.md +114 -0
  525. package/_bmad/tea/workflows/testarch/ci/workflow-plan.md +20 -0
  526. package/_bmad/tea/workflows/testarch/ci/workflow.md +39 -0
  527. package/_bmad/tea/workflows/testarch/ci/workflow.yaml +45 -0
  528. package/_bmad/tea/workflows/testarch/framework/checklist.md +320 -0
  529. package/_bmad/tea/workflows/testarch/framework/instructions.md +38 -0
  530. package/_bmad/tea/workflows/testarch/framework/steps-c/step-01-preflight.md +75 -0
  531. package/_bmad/tea/workflows/testarch/framework/steps-c/step-02-select-framework.md +73 -0
  532. package/_bmad/tea/workflows/testarch/framework/steps-c/step-03-scaffold-framework.md +120 -0
  533. package/_bmad/tea/workflows/testarch/framework/steps-c/step-04-docs-and-scripts.md +70 -0
  534. package/_bmad/tea/workflows/testarch/framework/steps-c/step-05-validate-and-summary.md +68 -0
  535. package/_bmad/tea/workflows/testarch/framework/steps-e/step-01-assess.md +65 -0
  536. package/_bmad/tea/workflows/testarch/framework/steps-e/step-02-apply-edit.md +60 -0
  537. package/_bmad/tea/workflows/testarch/framework/steps-v/step-01-validate.md +67 -0
  538. package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-095021.md +73 -0
  539. package/_bmad/tea/workflows/testarch/framework/validation-report-20260127-102401.md +116 -0
  540. package/_bmad/tea/workflows/testarch/framework/workflow-plan.md +22 -0
  541. package/_bmad/tea/workflows/testarch/framework/workflow.md +39 -0
  542. package/_bmad/tea/workflows/testarch/framework/workflow.yaml +47 -0
  543. package/_bmad/tea/workflows/testarch/nfr-assess/checklist.md +407 -0
  544. package/_bmad/tea/workflows/testarch/nfr-assess/instructions.md +36 -0
  545. package/_bmad/tea/workflows/testarch/nfr-assess/nfr-report-template.md +462 -0
  546. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-01-load-context.md +85 -0
  547. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-02-define-thresholds.md +82 -0
  548. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-03-gather-evidence.md +64 -0
  549. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04-evaluate-and-score.md +140 -0
  550. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04a-subprocess-security.md +138 -0
  551. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04b-subprocess-performance.md +84 -0
  552. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04c-subprocess-reliability.md +85 -0
  553. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04d-subprocess-scalability.md +88 -0
  554. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-04e-aggregate-nfr.md +219 -0
  555. package/_bmad/tea/workflows/testarch/nfr-assess/steps-c/step-05-generate-report.md +71 -0
  556. package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-01-assess.md +65 -0
  557. package/_bmad/tea/workflows/testarch/nfr-assess/steps-e/step-02-apply-edit.md +60 -0
  558. package/_bmad/tea/workflows/testarch/nfr-assess/steps-v/step-01-validate.md +67 -0
  559. package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-095021.md +73 -0
  560. package/_bmad/tea/workflows/testarch/nfr-assess/validation-report-20260127-102401.md +116 -0
  561. package/_bmad/tea/workflows/testarch/nfr-assess/workflow-plan.md +19 -0
  562. package/_bmad/tea/workflows/testarch/nfr-assess/workflow.md +39 -0
  563. package/_bmad/tea/workflows/testarch/nfr-assess/workflow.yaml +47 -0
  564. package/_bmad/tea/workflows/testarch/teach-me-testing/checklist.md +197 -0
  565. package/_bmad/tea/workflows/testarch/teach-me-testing/data/curriculum.yaml +129 -0
  566. package/_bmad/tea/workflows/testarch/teach-me-testing/data/quiz-questions.yaml +206 -0
  567. package/_bmad/tea/workflows/testarch/teach-me-testing/data/role-paths.yaml +136 -0
  568. package/_bmad/tea/workflows/testarch/teach-me-testing/data/session-content-map.yaml +204 -0
  569. package/_bmad/tea/workflows/testarch/teach-me-testing/data/tea-resources-index.yaml +359 -0
  570. package/_bmad/tea/workflows/testarch/teach-me-testing/instructions.md +130 -0
  571. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01-init.md +235 -0
  572. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-01b-continue.md +147 -0
  573. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-02-assess.md +258 -0
  574. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-03-session-menu.md +219 -0
  575. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-01.md +460 -0
  576. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-02.md +465 -0
  577. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-03.md +301 -0
  578. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-04.md +234 -0
  579. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-05.md +234 -0
  580. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-06.md +209 -0
  581. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-04-session-07.md +212 -0
  582. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-c/step-05-completion.md +339 -0
  583. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-01-assess-workflow.md +141 -0
  584. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-e/step-e-02-apply-edits.md +122 -0
  585. package/_bmad/tea/workflows/testarch/teach-me-testing/steps-v/step-v-01-validate.md +263 -0
  586. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/certificate-template.md +86 -0
  587. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/progress-template.yaml +95 -0
  588. package/_bmad/tea/workflows/testarch/teach-me-testing/templates/session-notes-template.md +83 -0
  589. package/_bmad/tea/workflows/testarch/teach-me-testing/workflow-plan-teach-me-testing.md +950 -0
  590. package/_bmad/tea/workflows/testarch/teach-me-testing/workflow.md +90 -0
  591. package/_bmad/tea/workflows/testarch/test-design/checklist.md +410 -0
  592. package/_bmad/tea/workflows/testarch/test-design/instructions.md +52 -0
  593. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-01-detect-mode.md +109 -0
  594. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-02-load-context.md +127 -0
  595. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-03-risk-and-testability.md +85 -0
  596. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-04-coverage-plan.md +98 -0
  597. package/_bmad/tea/workflows/testarch/test-design/steps-c/step-05-generate-output.md +97 -0
  598. package/_bmad/tea/workflows/testarch/test-design/steps-e/step-01-assess.md +65 -0
  599. package/_bmad/tea/workflows/testarch/test-design/steps-e/step-02-apply-edit.md +60 -0
  600. package/_bmad/tea/workflows/testarch/test-design/steps-v/step-01-validate.md +67 -0
  601. package/_bmad/tea/workflows/testarch/test-design/test-design-architecture-template.md +222 -0
  602. package/_bmad/tea/workflows/testarch/test-design/test-design-qa-template.md +296 -0
  603. package/_bmad/tea/workflows/testarch/test-design/test-design-template.md +294 -0
  604. package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-095021.md +73 -0
  605. package/_bmad/tea/workflows/testarch/test-design/validation-report-20260127-102401.md +116 -0
  606. package/_bmad/tea/workflows/testarch/test-design/workflow-plan.md +22 -0
  607. package/_bmad/tea/workflows/testarch/test-design/workflow.md +39 -0
  608. package/_bmad/tea/workflows/testarch/test-design/workflow.yaml +69 -0
  609. package/_bmad/tea/workflows/testarch/test-review/checklist.md +472 -0
  610. package/_bmad/tea/workflows/testarch/test-review/instructions.md +36 -0
  611. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-01-load-context.md +101 -0
  612. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-02-discover-tests.md +69 -0
  613. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03-quality-evaluation.md +184 -0
  614. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03a-subprocess-determinism.md +214 -0
  615. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03b-subprocess-isolation.md +125 -0
  616. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03c-subprocess-maintainability.md +102 -0
  617. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03d-subprocess-coverage.md +111 -0
  618. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03e-subprocess-performance.md +117 -0
  619. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-03f-aggregate-scores.md +246 -0
  620. package/_bmad/tea/workflows/testarch/test-review/steps-c/step-04-generate-report.md +72 -0
  621. package/_bmad/tea/workflows/testarch/test-review/steps-e/step-01-assess.md +65 -0
  622. package/_bmad/tea/workflows/testarch/test-review/steps-e/step-02-apply-edit.md +60 -0
  623. package/_bmad/tea/workflows/testarch/test-review/steps-v/step-01-validate.md +67 -0
  624. package/_bmad/tea/workflows/testarch/test-review/test-review-template.md +390 -0
  625. package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-095021.md +72 -0
  626. package/_bmad/tea/workflows/testarch/test-review/validation-report-20260127-102401.md +114 -0
  627. package/_bmad/tea/workflows/testarch/test-review/workflow-plan.md +18 -0
  628. package/_bmad/tea/workflows/testarch/test-review/workflow.md +39 -0
  629. package/_bmad/tea/workflows/testarch/test-review/workflow.yaml +46 -0
  630. package/_bmad/tea/workflows/testarch/trace/checklist.md +642 -0
  631. package/_bmad/tea/workflows/testarch/trace/instructions.md +36 -0
  632. package/_bmad/tea/workflows/testarch/trace/steps-c/step-01-load-context.md +80 -0
  633. package/_bmad/tea/workflows/testarch/trace/steps-c/step-02-discover-tests.md +69 -0
  634. package/_bmad/tea/workflows/testarch/trace/steps-c/step-03-map-criteria.md +65 -0
  635. package/_bmad/tea/workflows/testarch/trace/steps-c/step-04-analyze-gaps.md +244 -0
  636. package/_bmad/tea/workflows/testarch/trace/steps-c/step-05-gate-decision.md +232 -0
  637. package/_bmad/tea/workflows/testarch/trace/steps-e/step-01-assess.md +65 -0
  638. package/_bmad/tea/workflows/testarch/trace/steps-e/step-02-apply-edit.md +60 -0
  639. package/_bmad/tea/workflows/testarch/trace/steps-v/step-01-validate.md +67 -0
  640. package/_bmad/tea/workflows/testarch/trace/trace-template.md +675 -0
  641. package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-095021.md +73 -0
  642. package/_bmad/tea/workflows/testarch/trace/validation-report-20260127-102401.md +116 -0
  643. package/_bmad/tea/workflows/testarch/trace/workflow-plan.md +21 -0
  644. package/_bmad/tea/workflows/testarch/trace/workflow.md +39 -0
  645. package/_bmad/tea/workflows/testarch/trace/workflow.yaml +55 -0
  646. package/index.js +37 -58
  647. package/package.json +25 -4
  648. package/scripts/bmad-doctor.js +324 -0
  649. package/scripts/install-all-agents.js +55 -207
  650. package/scripts/install-emma.js +17 -14
  651. package/scripts/install-wade.js +17 -14
  652. package/scripts/postinstall.js +10 -7
  653. package/scripts/update/bmad-migrate.js +58 -5
  654. package/scripts/update/bmad-update.js +18 -8
  655. package/scripts/update/bmad-version.js +21 -7
  656. package/scripts/update/lib/backup-manager.js +22 -58
  657. package/scripts/update/lib/config-merger.js +4 -39
  658. package/scripts/update/lib/migration-runner.js +78 -114
  659. package/scripts/update/lib/refresh-installation.js +132 -0
  660. package/scripts/update/lib/utils.js +96 -0
  661. package/scripts/update/lib/validator.js +31 -151
  662. package/scripts/update/lib/version-detector.js +36 -41
  663. package/scripts/update/migrations/1.0.x-to-1.3.0.js +41 -222
  664. package/scripts/update/migrations/1.1.x-to-1.3.0.js +7 -188
  665. package/scripts/update/migrations/1.2.x-to-1.3.0.js +7 -188
  666. package/scripts/update/migrations/registry.js +27 -53
  667. package/_bmad-output/design-artifacts/EMMA-USER-GUIDE.md +0 -710
  668. package/_bmad-output/design-artifacts/WADE-USER-GUIDE.md +0 -1191
  669. package/_bmad-output/vortex-artifacts/EMMA-USER-GUIDE.md +0 -450
  670. package/_bmad-output/vortex-artifacts/WADE-USER-GUIDE.md +0 -471
  671. package/create-github-release.sh +0 -19
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  const fs = require('fs-extra');
4
- const path = require('path');
5
4
  const yaml = require('js-yaml');
6
5
 
7
6
  /**
@@ -24,7 +23,7 @@ async function mergeConfig(currentConfigPath, newVersion, updates = {}) {
24
23
  try {
25
24
  const currentContent = fs.readFileSync(currentConfigPath, 'utf8');
26
25
  current = yaml.load(currentContent);
27
- } catch (error) {
26
+ } catch (_error) {
28
27
  console.warn('Warning: Could not parse current config.yaml, using defaults');
29
28
  current = {};
30
29
  }
@@ -80,7 +79,7 @@ function extractUserPreferences(config) {
80
79
  prefs.output_folder = config.output_folder;
81
80
  }
82
81
 
83
- if (config.hasOwnProperty('party_mode_enabled')) {
82
+ if (Object.prototype.hasOwnProperty.call(config, 'party_mode_enabled')) {
84
83
  prefs.party_mode_enabled = config.party_mode_enabled;
85
84
  }
86
85
 
@@ -111,7 +110,7 @@ function validateConfig(config) {
111
110
  ];
112
111
 
113
112
  for (const field of requiredFields) {
114
- if (!config.hasOwnProperty(field)) {
113
+ if (!Object.prototype.hasOwnProperty.call(config, field)) {
115
114
  errors.push(`Missing required field: ${field}`);
116
115
  }
117
116
  }
@@ -189,44 +188,10 @@ function addMigrationHistory(config, fromVersion, toVersion, migrationsApplied)
189
188
  return config;
190
189
  }
191
190
 
192
- /**
193
- * Get default config template for a version
194
- * @param {string} version - Version to generate template for
195
- * @returns {object} Default config template
196
- */
197
- function getDefaultConfig(version) {
198
- return {
199
- submodule_name: '_vortex',
200
- description: 'Contextualize and Externalize streams - Strategic framing and validated learning',
201
- module: 'bme',
202
- version,
203
- output_folder: '{project-root}/_bmad-output/vortex-artifacts',
204
- user_name: '{user}',
205
- communication_language: 'en',
206
- agents: [
207
- 'contextualization-expert',
208
- 'lean-experiments-specialist'
209
- ],
210
- workflows: [
211
- 'lean-persona',
212
- 'product-vision',
213
- 'contextualize-scope',
214
- 'mvp',
215
- 'lean-experiment',
216
- 'proof-of-concept',
217
- 'proof-of-value'
218
- ],
219
- party_mode_enabled: true,
220
- core_module: 'bme',
221
- migration_history: []
222
- };
223
- }
224
-
225
191
  module.exports = {
226
192
  mergeConfig,
227
193
  extractUserPreferences,
228
194
  validateConfig,
229
195
  writeConfig,
230
- addMigrationHistory,
231
- getDefaultConfig
196
+ addMigrationHistory
232
197
  };
@@ -3,26 +3,34 @@
3
3
  const fs = require('fs-extra');
4
4
  const path = require('path');
5
5
  const chalk = require('chalk');
6
+ const yaml = require('js-yaml');
7
+ const { findProjectRoot, getPackageVersion } = require('./utils');
6
8
  const backupManager = require('./backup-manager');
7
- const versionDetector = require('./version-detector');
8
9
  const configMerger = require('./config-merger');
9
10
  const validator = require('./validator');
11
+ const { refreshInstallation } = require('./refresh-installation');
10
12
  const registry = require('../migrations/registry');
11
13
 
12
14
  /**
13
15
  * Migration Runner for BMAD-Enhanced
14
- * Core orchestration: executes migrations, handles backups, manages rollback
16
+ * Core orchestration: executes migration deltas, refreshes installation, handles backups and rollback.
15
17
  */
16
18
 
17
19
  /**
18
- * Run migrations from current version to target version
19
- * @param {string} fromVersion - Current version
20
- * @param {string} toVersion - Target version
20
+ * Run migrations from current version to the current package version.
21
+ * @param {string} fromVersion - Current installed version
21
22
  * @param {object} options - Options { dryRun, verbose }
22
23
  * @returns {Promise<object>} Migration result
23
24
  */
24
- async function runMigrations(fromVersion, toVersion, options = {}) {
25
+ async function runMigrations(fromVersion, options = {}) {
25
26
  const { dryRun = false, verbose = false } = options;
27
+ const toVersion = getPackageVersion();
28
+
29
+ // Resolve project root
30
+ const projectRoot = findProjectRoot();
31
+ if (!projectRoot) {
32
+ throw new Error('Not in a BMAD project. Could not find _bmad/ directory.');
33
+ }
26
34
 
27
35
  console.log('');
28
36
  if (dryRun) {
@@ -31,8 +39,8 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
31
39
  console.log('');
32
40
  }
33
41
 
34
- // 1. Get applicable migrations
35
- const migrations = registry.getMigrationsFor(fromVersion, toVersion);
42
+ // 1. Get applicable migration deltas
43
+ const migrations = registry.getMigrationsFor(fromVersion);
36
44
 
37
45
  if (migrations.length === 0) {
38
46
  console.log(chalk.yellow('No migrations needed'));
@@ -52,7 +60,7 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
52
60
  }
53
61
 
54
62
  // 2. Acquire migration lock
55
- await acquireMigrationLock();
63
+ await acquireMigrationLock(projectRoot);
56
64
 
57
65
  let backupMetadata = null;
58
66
  const results = [];
@@ -60,20 +68,18 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
60
68
  try {
61
69
  // 3. Create backup
62
70
  console.log(chalk.cyan('[1/5] Creating backup...'));
63
- const userDataCount = await backupManager.countUserDataFiles();
64
- backupMetadata = await backupManager.createBackup(fromVersion);
65
- backupMetadata.userDataCount = userDataCount;
71
+ backupMetadata = await backupManager.createBackup(fromVersion, projectRoot);
66
72
  console.log(chalk.green(`✓ Backup created: ${path.basename(backupMetadata.backup_dir)}`));
67
73
  console.log('');
68
74
 
69
- // 4. Execute migrations sequentially
70
- console.log(chalk.cyan('[2/5] Running migrations...'));
75
+ // 4. Execute migration deltas sequentially
76
+ console.log(chalk.cyan('[2/5] Running migration deltas...'));
71
77
  for (let i = 0; i < migrations.length; i++) {
72
78
  const migration = migrations[i];
73
79
  console.log(chalk.cyan(`\nMigration ${i + 1}/${migrations.length}: ${migration.name}`));
74
80
 
75
81
  try {
76
- const changes = await executeMigration(migration, { verbose });
82
+ const changes = await executeMigration(migration, projectRoot, { verbose });
77
83
  results.push({
78
84
  name: migration.name,
79
85
  success: true,
@@ -87,20 +93,30 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
87
93
  }
88
94
  }
89
95
  console.log('');
90
- console.log(chalk.green('✓ All migrations completed'));
96
+ console.log(chalk.green('✓ All migration deltas completed'));
91
97
  console.log('');
92
98
 
93
- // 5. Update configuration and migration history
94
- console.log(chalk.cyan('[3/5] Updating configuration...'));
95
- await updateMigrationHistory(fromVersion, toVersion, results);
99
+ // 5. Refresh installation (copy latest files from package)
100
+ console.log(chalk.cyan('[3/5] Refreshing installation files...'));
101
+ const refreshChanges = await refreshInstallation(projectRoot);
102
+ results.push({
103
+ name: 'refresh-installation',
104
+ success: true,
105
+ changes: refreshChanges
106
+ });
107
+ console.log(chalk.green('✓ Installation refreshed'));
108
+ console.log('');
109
+
110
+ // 6. Update migration history in config.yaml
111
+ console.log(chalk.cyan('[4/5] Updating configuration...'));
112
+ await updateMigrationHistory(projectRoot, fromVersion, toVersion, results);
96
113
  console.log(chalk.green('✓ Migration history updated'));
97
114
  console.log('');
98
115
 
99
- // 6. Validate installation
100
- console.log(chalk.cyan('[4/5] Validating installation...'));
101
- const validationResult = await validator.validateInstallation(backupMetadata);
116
+ // 7. Validate installation
117
+ console.log(chalk.cyan('[5/5] Validating installation...'));
118
+ const validationResult = await validator.validateInstallation(backupMetadata, projectRoot);
102
119
 
103
- // Display validation results
104
120
  validationResult.checks.forEach(check => {
105
121
  if (check.passed) {
106
122
  console.log(chalk.green(` ✓ ${check.name}`));
@@ -123,21 +139,17 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
123
139
  console.log(chalk.green('✓ Installation validated'));
124
140
  console.log('');
125
141
 
126
- // 7. Cleanup old backups
127
- console.log(chalk.cyan('[5/5] Cleanup...'));
128
- const deletedCount = await backupManager.cleanupOldBackups(5);
142
+ // 8. Cleanup old backups
143
+ const deletedCount = await backupManager.cleanupOldBackups(5, projectRoot);
129
144
  if (deletedCount > 0) {
130
145
  console.log(chalk.green(`✓ Cleaned up ${deletedCount} old backup(s)`));
131
- } else {
132
- console.log(chalk.green('✓ No old backups to clean up'));
133
146
  }
134
- console.log('');
135
147
 
136
148
  // Release lock
137
- await releaseMigrationLock();
149
+ await releaseMigrationLock(projectRoot);
138
150
 
139
151
  // Create migration log
140
- await createMigrationLog(fromVersion, toVersion, results, backupMetadata);
152
+ await createMigrationLog(projectRoot, fromVersion, toVersion, results, backupMetadata);
141
153
 
142
154
  return {
143
155
  success: true,
@@ -158,7 +170,7 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
158
170
  if (backupMetadata) {
159
171
  console.log(chalk.yellow('Restoring from backup...'));
160
172
  try {
161
- await backupManager.restoreBackup(backupMetadata);
173
+ await backupManager.restoreBackup(backupMetadata, projectRoot);
162
174
  console.log(chalk.green('✓ Installation restored from backup'));
163
175
  console.log('');
164
176
  } catch (restoreError) {
@@ -171,10 +183,10 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
171
183
  }
172
184
 
173
185
  // Release lock
174
- await releaseMigrationLock();
186
+ await releaseMigrationLock(projectRoot);
175
187
 
176
188
  // Create error log
177
- await createErrorLog(fromVersion, toVersion, error, backupMetadata);
189
+ await createErrorLog(projectRoot, fromVersion, toVersion, error, backupMetadata);
178
190
 
179
191
  throw error;
180
192
  }
@@ -182,8 +194,6 @@ async function runMigrations(fromVersion, toVersion, options = {}) {
182
194
 
183
195
  /**
184
196
  * Preview migrations without applying
185
- * @param {Array} migrations - Migrations to preview
186
- * @returns {Promise<object>} Preview result
187
197
  */
188
198
  async function previewMigrations(migrations) {
189
199
  const previews = [];
@@ -199,40 +209,35 @@ async function previewMigrations(migrations) {
199
209
  preview.actions.forEach(action => {
200
210
  console.log(chalk.gray(` - ${action}`));
201
211
  });
202
-
203
- previews.push({
204
- name: migration.name,
205
- preview
206
- });
212
+ previews.push({ name: migration.name, preview });
207
213
  }
208
214
  }
209
215
 
216
+ console.log('');
217
+ console.log(chalk.white('After deltas, installation will be refreshed:'));
218
+ console.log(chalk.gray(' - Refresh agent files'));
219
+ console.log(chalk.gray(' - Refresh 7 workflow directories'));
220
+ console.log(chalk.gray(' - Update config.yaml (preserving user preferences)'));
221
+ console.log(chalk.gray(' - Update user guides (with .bak backup)'));
210
222
  console.log('');
211
223
  console.log(chalk.green('To apply these changes, run:'));
212
224
  console.log(chalk.cyan(' npx bmad-update'));
213
225
  console.log('');
214
226
 
215
- return {
216
- success: true,
217
- dryRun: true,
218
- previews
219
- };
227
+ return { success: true, dryRun: true, previews };
220
228
  }
221
229
 
222
230
  /**
223
- * Execute a single migration
224
- * @param {object} migration - Migration to execute
225
- * @param {object} options - Options { verbose }
226
- * @returns {Promise<Array<string>>} Changes made
231
+ * Execute a single migration delta
227
232
  */
228
- async function executeMigration(migration, options = {}) {
233
+ async function executeMigration(migration, projectRoot, options = {}) {
229
234
  const { verbose = false } = options;
230
235
 
231
236
  if (!migration.module || !migration.module.apply) {
232
237
  throw new Error(`Migration ${migration.name} has no apply function`);
233
238
  }
234
239
 
235
- const changes = await migration.module.apply();
240
+ const changes = await migration.module.apply(projectRoot);
236
241
 
237
242
  if (verbose) {
238
243
  changes.forEach(change => {
@@ -245,45 +250,35 @@ async function executeMigration(migration, options = {}) {
245
250
 
246
251
  /**
247
252
  * Update migration history in config.yaml
248
- * @param {string} fromVersion - Version migrated from
249
- * @param {string} toVersion - Version migrated to
250
- * @param {Array} results - Migration results
251
253
  */
252
- async function updateMigrationHistory(fromVersion, toVersion, results) {
253
- const configPath = path.join(process.cwd(), '_bmad/bme/_vortex/config.yaml');
254
+ async function updateMigrationHistory(projectRoot, fromVersion, toVersion, results) {
255
+ const configPath = path.join(projectRoot, '_bmad/bme/_vortex/config.yaml');
254
256
 
255
257
  if (!fs.existsSync(configPath)) {
256
- throw new Error('config.yaml not found');
258
+ throw new Error('config.yaml not found after refresh');
257
259
  }
258
260
 
259
261
  const configContent = fs.readFileSync(configPath, 'utf8');
260
- const yaml = require('js-yaml');
261
262
  const config = yaml.load(configContent);
262
263
 
263
- // Add migration history entry
264
- const migrationsApplied = results.map(r => r.name);
264
+ const migrationsApplied = results
265
+ .filter(r => r.name !== 'refresh-installation')
266
+ .map(r => r.name);
267
+
265
268
  const updatedConfig = configMerger.addMigrationHistory(
266
- config,
267
- fromVersion,
268
- toVersion,
269
- migrationsApplied
269
+ config, fromVersion, toVersion, migrationsApplied
270
270
  );
271
271
 
272
- // Write config
273
272
  await configMerger.writeConfig(configPath, updatedConfig);
274
273
  }
275
274
 
276
- /**
277
- * Acquire migration lock to prevent concurrent migrations
278
- */
279
- async function acquireMigrationLock() {
280
- const lockFile = path.join(process.cwd(), '_bmad-output/.migration-lock');
275
+ async function acquireMigrationLock(projectRoot) {
276
+ const lockFile = path.join(projectRoot, '_bmad-output/.migration-lock');
281
277
 
282
278
  if (fs.existsSync(lockFile)) {
283
279
  const lock = await fs.readJson(lockFile);
284
280
  const age = Date.now() - lock.timestamp;
285
281
 
286
- // Stale lock (older than 5 minutes)
287
282
  if (age > 5 * 60 * 1000) {
288
283
  console.log(chalk.yellow('Removing stale migration lock'));
289
284
  await fs.remove(lockFile);
@@ -292,39 +287,22 @@ async function acquireMigrationLock() {
292
287
  }
293
288
  }
294
289
 
295
- // Create lock
296
- await fs.ensureDir(path.join(process.cwd(), '_bmad-output'));
297
- await fs.writeJson(lockFile, {
298
- timestamp: Date.now(),
299
- pid: process.pid
300
- });
290
+ await fs.ensureDir(path.join(projectRoot, '_bmad-output'));
291
+ await fs.writeJson(lockFile, { timestamp: Date.now(), pid: process.pid });
301
292
  }
302
293
 
303
- /**
304
- * Release migration lock
305
- */
306
- async function releaseMigrationLock() {
307
- const lockFile = path.join(process.cwd(), '_bmad-output/.migration-lock');
308
-
294
+ async function releaseMigrationLock(projectRoot) {
295
+ const lockFile = path.join(projectRoot, '_bmad-output/.migration-lock');
309
296
  if (fs.existsSync(lockFile)) {
310
297
  await fs.remove(lockFile);
311
298
  }
312
299
  }
313
300
 
314
- /**
315
- * Create migration log
316
- * @param {string} fromVersion - Version migrated from
317
- * @param {string} toVersion - Version migrated to
318
- * @param {Array} results - Migration results
319
- * @param {object} backupMetadata - Backup metadata
320
- */
321
- async function createMigrationLog(fromVersion, toVersion, results, backupMetadata) {
322
- const logsDir = path.join(process.cwd(), '_bmad-output/.logs');
301
+ async function createMigrationLog(projectRoot, fromVersion, toVersion, results, backupMetadata) {
302
+ const logsDir = path.join(projectRoot, '_bmad-output/.logs');
323
303
  await fs.ensureDir(logsDir);
324
304
 
325
- const timestamp = Date.now();
326
- const logFile = path.join(logsDir, `migration-${timestamp}.log`);
327
-
305
+ const logFile = path.join(logsDir, `migration-${Date.now()}.log`);
328
306
  const logContent = [
329
307
  `BMAD-Enhanced Migration Log`,
330
308
  `Date: ${new Date().toISOString()}`,
@@ -345,20 +323,11 @@ async function createMigrationLog(fromVersion, toVersion, results, backupMetadat
345
323
  await fs.writeFile(logFile, logContent, 'utf8');
346
324
  }
347
325
 
348
- /**
349
- * Create error log
350
- * @param {string} fromVersion - Version migrated from
351
- * @param {string} toVersion - Version migrated to
352
- * @param {Error} error - Error that occurred
353
- * @param {object} backupMetadata - Backup metadata (if exists)
354
- */
355
- async function createErrorLog(fromVersion, toVersion, error, backupMetadata) {
356
- const logsDir = path.join(process.cwd(), '_bmad-output/.logs');
326
+ async function createErrorLog(projectRoot, fromVersion, toVersion, error, backupMetadata) {
327
+ const logsDir = path.join(projectRoot, '_bmad-output/.logs');
357
328
  await fs.ensureDir(logsDir);
358
329
 
359
- const timestamp = Date.now();
360
- const logFile = path.join(logsDir, `migration-error-${timestamp}.log`);
361
-
330
+ const logFile = path.join(logsDir, `migration-error-${Date.now()}.log`);
362
331
  const logContent = [
363
332
  `BMAD-Enhanced Migration Error Log`,
364
333
  `Date: ${new Date().toISOString()}`,
@@ -373,18 +342,13 @@ async function createErrorLog(fromVersion, toVersion, error, backupMetadata) {
373
342
  backupMetadata ? `Backup: ${backupMetadata.backup_dir}` : 'No backup created',
374
343
  backupMetadata ? 'Status: ROLLED BACK' : 'Status: FAILED (no backup)',
375
344
  '',
376
- 'Please report this issue at: https://github.com/amalik/BMAD-Enhanced/issues',
377
- 'Include this log file when reporting.'
345
+ 'Please report this issue at: https://github.com/amalik/BMAD-Enhanced/issues'
378
346
  ].join('\n');
379
347
 
380
348
  await fs.writeFile(logFile, logContent, 'utf8');
381
-
382
349
  console.log(chalk.gray(`Migration log: ${logFile}`));
383
350
  }
384
351
 
385
- /**
386
- * Custom error for migration failures
387
- */
388
352
  class MigrationError extends Error {
389
353
  constructor(migrationName, originalError) {
390
354
  super(`Migration ${migrationName} failed: ${originalError.message}`);
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+ const { getPackageVersion } = require('./utils');
6
+ const configMerger = require('./config-merger');
7
+
8
+ /**
9
+ * Refresh Installation for BMAD-Enhanced
10
+ *
11
+ * Copies latest agent files, workflows, config, and user guides from the
12
+ * package to the project. Called ONCE after all migration deltas have run,
13
+ * or directly by the install script.
14
+ */
15
+
16
+ const AGENT_FILES = [
17
+ 'contextualization-expert.md',
18
+ 'lean-experiments-specialist.md'
19
+ ];
20
+
21
+ const WORKFLOWS = [
22
+ 'lean-persona',
23
+ 'product-vision',
24
+ 'contextualize-scope',
25
+ 'mvp',
26
+ 'lean-experiment',
27
+ 'proof-of-concept',
28
+ 'proof-of-value'
29
+ ];
30
+
31
+ const USER_GUIDES = [
32
+ 'EMMA-USER-GUIDE.md',
33
+ 'WADE-USER-GUIDE.md'
34
+ ];
35
+
36
+ /**
37
+ * Refresh all installation files from the package to the project.
38
+ *
39
+ * @param {string} projectRoot - Absolute path to project root
40
+ * @param {object} options
41
+ * @param {boolean} options.backupGuides - Create .bak of user guides before overwriting (default: true)
42
+ * @param {boolean} options.verbose - Log each action (default: true)
43
+ * @returns {Promise<Array<string>>} List of changes made
44
+ */
45
+ async function refreshInstallation(projectRoot, options = {}) {
46
+ const { backupGuides = true, verbose = true } = options;
47
+ const changes = [];
48
+ const packageRoot = path.join(__dirname, '..', '..', '..');
49
+ const packageVortex = path.join(packageRoot, '_bmad', 'bme', '_vortex');
50
+ const targetVortex = path.join(projectRoot, '_bmad', 'bme', '_vortex');
51
+ const version = getPackageVersion();
52
+
53
+ // 1. Copy agent files
54
+ const agentsSource = path.join(packageVortex, 'agents');
55
+ const agentsTarget = path.join(targetVortex, 'agents');
56
+ await fs.ensureDir(agentsTarget);
57
+
58
+ for (const file of AGENT_FILES) {
59
+ const src = path.join(agentsSource, file);
60
+ if (fs.existsSync(src)) {
61
+ await fs.copy(src, path.join(agentsTarget, file), { overwrite: true });
62
+ changes.push(`Refreshed agent: ${file}`);
63
+ if (verbose) console.log(` Refreshed agent: ${file}`);
64
+ }
65
+ }
66
+
67
+ // Remove deprecated agent files if still present
68
+ const deprecatedAgents = ['empathy-mapper.md', 'wireframe-designer.md'];
69
+ for (const file of deprecatedAgents) {
70
+ const agentPath = path.join(agentsTarget, file);
71
+ if (fs.existsSync(agentPath)) {
72
+ await fs.remove(agentPath);
73
+ changes.push(`Removed deprecated agent: ${file}`);
74
+ if (verbose) console.log(` Removed deprecated agent: ${file}`);
75
+ }
76
+ }
77
+
78
+ // 2. Copy workflow directories
79
+ const workflowsSource = path.join(packageVortex, 'workflows');
80
+ const workflowsTarget = path.join(targetVortex, 'workflows');
81
+ await fs.ensureDir(workflowsTarget);
82
+
83
+ for (const wf of WORKFLOWS) {
84
+ const src = path.join(workflowsSource, wf);
85
+ if (fs.existsSync(src)) {
86
+ await fs.copy(src, path.join(workflowsTarget, wf), { overwrite: true });
87
+ changes.push(`Refreshed workflow: ${wf}`);
88
+ if (verbose) console.log(` Refreshed workflow: ${wf}`);
89
+ }
90
+ }
91
+
92
+ // 3. Update config.yaml (merge, preserving user prefs)
93
+ const configPath = path.join(targetVortex, 'config.yaml');
94
+ await fs.ensureDir(path.dirname(configPath));
95
+
96
+ const updates = {
97
+ agents: ['contextualization-expert', 'lean-experiments-specialist'],
98
+ workflows: WORKFLOWS
99
+ };
100
+
101
+ const merged = await configMerger.mergeConfig(configPath, version, updates);
102
+ await configMerger.writeConfig(configPath, merged);
103
+ changes.push(`Updated config.yaml to v${version}`);
104
+ if (verbose) console.log(` Updated config.yaml to v${version}`);
105
+
106
+ // 4. Copy user guides (with optional backup)
107
+ const guidesSource = path.join(packageRoot, '_bmad-output', 'vortex-artifacts');
108
+ const guidesTarget = path.join(projectRoot, '_bmad-output', 'vortex-artifacts');
109
+ await fs.ensureDir(guidesTarget);
110
+
111
+ for (const guide of USER_GUIDES) {
112
+ const src = path.join(guidesSource, guide);
113
+ const dest = path.join(guidesTarget, guide);
114
+
115
+ if (fs.existsSync(src)) {
116
+ // Backup existing guide before overwriting
117
+ if (backupGuides && fs.existsSync(dest)) {
118
+ await fs.copy(dest, dest + '.bak', { overwrite: true });
119
+ changes.push(`Backed up ${guide} → ${guide}.bak`);
120
+ if (verbose) console.log(` Backed up ${guide} → ${guide}.bak`);
121
+ }
122
+
123
+ await fs.copy(src, dest, { overwrite: true });
124
+ changes.push(`Refreshed guide: ${guide}`);
125
+ if (verbose) console.log(` Refreshed guide: ${guide}`);
126
+ }
127
+ }
128
+
129
+ return changes;
130
+ }
131
+
132
+ module.exports = { refreshInstallation };
@@ -0,0 +1,96 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs-extra');
4
+ const path = require('path');
5
+
6
+ /**
7
+ * Shared utilities for the BMAD-Enhanced update system.
8
+ * Single source of truth for version, comparison, project detection.
9
+ */
10
+
11
+ /**
12
+ * Get the package version at runtime from package.json.
13
+ * This is the SINGLE SOURCE OF TRUTH for version - never hardcode versions elsewhere.
14
+ * @returns {string} e.g. "1.3.8"
15
+ */
16
+ function getPackageVersion() {
17
+ const pkg = require('../../../package.json');
18
+ return pkg.version;
19
+ }
20
+
21
+ /**
22
+ * Compare two semantic version strings.
23
+ * @param {string} v1
24
+ * @param {string} v2
25
+ * @returns {number} -1 if v1 < v2, 0 if equal, 1 if v1 > v2
26
+ */
27
+ function compareVersions(v1, v2) {
28
+ const parts1 = v1.split('.').map(Number);
29
+ const parts2 = v2.split('.').map(Number);
30
+
31
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
32
+ const p1 = parts1[i] || 0;
33
+ const p2 = parts2[i] || 0;
34
+ if (p1 < p2) return -1;
35
+ if (p1 > p2) return 1;
36
+ }
37
+
38
+ return 0;
39
+ }
40
+
41
+ /**
42
+ * Count user data files in _bmad-output/ (excluding .backups, .logs).
43
+ * @param {string} projectRoot - Absolute path to project root
44
+ * @returns {Promise<number>}
45
+ */
46
+ async function countUserDataFiles(projectRoot) {
47
+ const outputDir = path.join(projectRoot, '_bmad-output');
48
+
49
+ if (!fs.existsSync(outputDir)) {
50
+ return 0;
51
+ }
52
+
53
+ let count = 0;
54
+
55
+ async function walk(dir) {
56
+ const entries = await fs.readdir(dir, { withFileTypes: true });
57
+ for (const entry of entries) {
58
+ if (entry.name === '.backups' || entry.name === '.logs') continue;
59
+ const full = path.join(dir, entry.name);
60
+ if (entry.isDirectory()) {
61
+ await walk(full);
62
+ } else if (entry.isFile()) {
63
+ count++;
64
+ }
65
+ }
66
+ }
67
+
68
+ await walk(outputDir);
69
+ return count;
70
+ }
71
+
72
+ /**
73
+ * Find the project root by walking up from cwd looking for _bmad/ directory.
74
+ * @returns {string|null} Absolute path to project root, or null if not found
75
+ */
76
+ function findProjectRoot() {
77
+ let dir = process.cwd();
78
+ const root = path.parse(dir).root;
79
+
80
+ while (true) {
81
+ if (fs.existsSync(path.join(dir, '_bmad'))) {
82
+ return dir;
83
+ }
84
+ if (dir === root) break;
85
+ dir = path.dirname(dir);
86
+ }
87
+
88
+ return null;
89
+ }
90
+
91
+ module.exports = {
92
+ getPackageVersion,
93
+ compareVersions,
94
+ countUserDataFiles,
95
+ findProjectRoot
96
+ };