bmad-method 6.0.0-alpha.21 → 6.0.0-alpha.23

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 (812) hide show
  1. package/.coderabbit.yaml +2 -2
  2. package/.github/workflows/docs.yaml +3 -12
  3. package/.vscode/settings.json +1 -0
  4. package/CHANGELOG.md +309 -0
  5. package/CNAME +1 -0
  6. package/CONTRIBUTING.md +9 -7
  7. package/README.md +41 -207
  8. package/docs/404.md +9 -0
  9. package/{src/modules/bmm/docs/images/README.md → docs/_README_WORKFLOW_DIAGRAMS.md} +4 -1
  10. package/docs/_STYLE_GUIDE.md +347 -0
  11. package/docs/_archive/getting-started-bmadv4.md +247 -0
  12. package/{website/src/pages → docs}/downloads.md +17 -26
  13. package/{src/modules/bmm/docs/quick-flow-solo-dev.md → docs/explanation/agents/barry-quick-flow.md} +18 -15
  14. package/docs/explanation/agents/index.md +28 -0
  15. package/docs/explanation/architecture/four-phases.md +126 -0
  16. package/docs/explanation/architecture/preventing-agent-conflicts.md +138 -0
  17. package/docs/explanation/architecture/why-solutioning-matters.md +91 -0
  18. package/docs/{custom-content.md → explanation/bmad-builder/custom-content-types.md} +19 -21
  19. package/docs/explanation/bmad-builder/index.md +66 -0
  20. package/docs/explanation/bmm/index.md +135 -0
  21. package/docs/explanation/core/index.md +18 -0
  22. package/docs/explanation/core-concepts/agent-roles.md +204 -0
  23. package/docs/explanation/core-concepts/index.md +40 -0
  24. package/docs/explanation/core-concepts/what-are-agents.md +96 -0
  25. package/docs/explanation/core-concepts/what-are-modules.md +79 -0
  26. package/docs/explanation/core-concepts/what-are-workflows.md +217 -0
  27. package/{src/modules/cis/docs → docs/explanation/creative-intelligence}/index.md +26 -54
  28. package/docs/explanation/faq/brownfield-faq.md +73 -0
  29. package/docs/explanation/faq/getting-started-faq.md +62 -0
  30. package/docs/explanation/faq/implementation-faq.md +52 -0
  31. package/docs/explanation/faq/index.md +16 -0
  32. package/docs/explanation/faq/levels-and-tracks-faq.md +52 -0
  33. package/docs/explanation/faq/planning-faq.md +41 -0
  34. package/docs/explanation/faq/tools-faq.md +253 -0
  35. package/docs/explanation/faq/workflows-faq.md +61 -0
  36. package/docs/explanation/features/advanced-elicitation.md +108 -0
  37. package/docs/explanation/features/brainstorming-techniques.md +103 -0
  38. package/{src/modules/bmm/docs → docs/explanation/features}/party-mode.md +11 -123
  39. package/docs/explanation/features/quick-flow.md +169 -0
  40. package/{src/modules/bmm/docs/test-architecture.md → docs/explanation/features/tea-overview.md} +160 -118
  41. package/docs/explanation/features/web-bundles.md +35 -0
  42. package/{src/modules/bmgd/docs/agents-guide.md → docs/explanation/game-dev/agents.md} +8 -5
  43. package/docs/explanation/game-dev/bmgd-vs-bmm.md +150 -0
  44. package/{src/modules/bmgd/docs/game-types-guide.md → docs/explanation/game-dev/game-types.md} +7 -4
  45. package/docs/explanation/game-dev/index.md +85 -0
  46. package/docs/explanation/philosophy/facilitation-over-generation.md +121 -0
  47. package/docs/explanation/philosophy/testing-as-engineering.md +119 -0
  48. package/docs/how-to/brownfield/add-feature-to-existing.md +91 -0
  49. package/docs/how-to/brownfield/document-existing-project.md +84 -0
  50. package/docs/how-to/brownfield/index.md +102 -0
  51. package/docs/how-to/brownfield/quick-fix-in-brownfield.md +94 -0
  52. package/docs/{agent-customization-guide.md → how-to/customization/customize-agents.md} +10 -10
  53. package/docs/how-to/customization/customize-workflows.md +33 -0
  54. package/docs/how-to/customization/index.md +27 -0
  55. package/docs/how-to/customization/shard-large-documents.md +125 -0
  56. package/docs/how-to/customization/vendor-workflows.md +45 -0
  57. package/docs/how-to/get-answers-about-bmad.md +98 -0
  58. package/docs/how-to/installation/index.md +15 -0
  59. package/docs/how-to/installation/install-bmad.md +138 -0
  60. package/docs/{custom-content-installation.md → how-to/installation/install-custom-modules.md} +17 -14
  61. package/docs/how-to/installation/upgrade-to-v6.md +147 -0
  62. package/{src/modules/bmgd/docs/troubleshooting.md → docs/how-to/troubleshooting/bmgd-troubleshooting.md} +7 -5
  63. package/{src/modules/bmgd/docs/quick-flow-guide.md → docs/how-to/workflows/bmgd-quick-flow.md} +8 -5
  64. package/docs/how-to/workflows/conduct-research.md +130 -0
  65. package/docs/how-to/workflows/create-architecture.md +147 -0
  66. package/docs/how-to/workflows/create-epics-and-stories.md +136 -0
  67. package/docs/how-to/workflows/create-prd.md +130 -0
  68. package/docs/how-to/workflows/create-product-brief.md +117 -0
  69. package/docs/how-to/workflows/create-story.md +119 -0
  70. package/docs/how-to/workflows/create-ux-design.md +117 -0
  71. package/docs/how-to/workflows/implement-story.md +127 -0
  72. package/docs/how-to/workflows/quick-spec.md +159 -0
  73. package/docs/how-to/workflows/run-brainstorming-session.md +94 -0
  74. package/docs/how-to/workflows/run-code-review.md +141 -0
  75. package/docs/how-to/workflows/run-implementation-readiness.md +162 -0
  76. package/docs/how-to/workflows/run-sprint-planning.md +111 -0
  77. package/docs/how-to/workflows/run-test-design.md +128 -0
  78. package/docs/how-to/workflows/setup-party-mode.md +117 -0
  79. package/docs/how-to/workflows/setup-test-framework.md +113 -0
  80. package/docs/index.md +33 -113
  81. package/{src/modules/bmm/docs/agents-guide.md → docs/reference/agents/index.md} +36 -39
  82. package/docs/reference/configuration/core-tasks.md +67 -0
  83. package/docs/reference/configuration/global-config.md +14 -0
  84. package/{src/modules/bmm/docs/glossary.md → docs/reference/glossary/index.md} +90 -24
  85. package/{src/modules/bmgd/docs/workflows-guide.md → docs/reference/workflows/bmgd-workflows.md} +11 -8
  86. package/docs/reference/workflows/core-workflows.md +33 -0
  87. package/docs/reference/workflows/document-project.md +74 -0
  88. package/docs/reference/workflows/index.md +16 -0
  89. package/docs/tutorials/advanced/create-custom-agent.md +171 -0
  90. package/docs/tutorials/getting-started/getting-started-bmadv6.md +246 -0
  91. package/docs/tutorials/getting-started/quick-start-bmgd.md +260 -0
  92. package/docs/tutorials/getting-started/workflow-overview.jpg +0 -0
  93. package/eslint.config.mjs +2 -2
  94. package/package.json +10 -10
  95. package/samples/sample-custom-modules/README.md +1 -1
  96. package/samples/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +1 -0
  97. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +0 -5
  98. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +1 -1
  99. package/samples/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +1 -1
  100. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +3 -3
  101. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +3 -3
  102. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +3 -3
  103. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +3 -3
  104. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +3 -3
  105. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +3 -3
  106. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +3 -3
  107. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +3 -3
  108. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +3 -3
  109. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +3 -3
  110. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +3 -3
  111. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +2 -2
  112. package/samples/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +1 -1
  113. package/samples/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +1 -0
  114. package/src/core/agents/bmad-master.agent.yaml +1 -0
  115. package/src/core/{tools → tasks}/shard-doc.xml +2 -2
  116. package/src/core/tasks/workflow.xml +1 -1
  117. package/src/core/{tasks/advanced-elicitation.xml → workflows/advanced-elicitation/workflow.xml} +3 -2
  118. package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +1 -0
  119. package/src/core/workflows/brainstorming/steps/step-01b-continue.md +1 -0
  120. package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +1 -0
  121. package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +1 -0
  122. package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +1 -0
  123. package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +1 -0
  124. package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +69 -9
  125. package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +1 -0
  126. package/src/core/workflows/brainstorming/workflow.md +8 -1
  127. package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +1 -0
  128. package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +1 -0
  129. package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +1 -0
  130. package/src/core/workflows/party-mode/workflow.md +1 -1
  131. package/src/modules/bmb/agents/agent-builder.agent.yaml +7 -2
  132. package/src/modules/bmb/agents/module-builder.agent.yaml +5 -8
  133. package/src/modules/bmb/agents/workflow-builder.agent.yaml +16 -7
  134. package/src/modules/bmb/workflows/agent/data/agent-compilation.md +273 -0
  135. package/src/modules/bmb/workflows/agent/data/agent-menu-patterns.md +233 -0
  136. package/src/modules/bmb/workflows/agent/data/agent-metadata.md +208 -0
  137. package/src/modules/bmb/workflows/{create-agent → agent}/data/brainstorm-context.md +3 -10
  138. package/src/modules/bmb/workflows/{create-agent → agent}/data/communication-presets.csv +1 -1
  139. package/src/modules/bmb/workflows/agent/data/critical-actions.md +120 -0
  140. package/src/modules/bmb/workflows/agent/data/expert-agent-architecture.md +236 -0
  141. package/src/modules/bmb/workflows/agent/data/expert-agent-validation.md +174 -0
  142. package/src/modules/bmb/workflows/agent/data/module-agent-validation.md +126 -0
  143. package/src/modules/bmb/workflows/agent/data/persona-properties.md +266 -0
  144. package/src/modules/bmb/workflows/agent/data/principles-crafting.md +292 -0
  145. package/src/modules/bmb/workflows/agent/data/reference/expert-examples/journal-keeper/journal-keeper-sidecar/entries/yy-mm-dd-entry-template.md +17 -0
  146. package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/expert-examples/journal-keeper/journal-keeper.agent.yaml +26 -25
  147. package/src/modules/bmb/workflows/agent/data/reference/module-examples/architect.agent.yaml +32 -0
  148. package/src/modules/bmb/workflows/agent/data/reference/module-examples/architect.md +68 -0
  149. package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/module-examples/security-engineer.agent.yaml +1 -0
  150. package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/module-examples/trend-analyst.agent.yaml +1 -0
  151. package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/simple-examples/commit-poet.agent.yaml +15 -14
  152. package/src/modules/bmb/workflows/agent/data/simple-agent-architecture.md +204 -0
  153. package/src/modules/bmb/workflows/agent/data/simple-agent-validation.md +133 -0
  154. package/src/modules/bmb/workflows/agent/data/understanding-agent-types.md +222 -0
  155. package/src/modules/bmb/workflows/{create-agent/steps → agent/steps-c}/step-01-brainstorm.md +9 -26
  156. package/src/modules/bmb/workflows/agent/steps-c/step-02-discovery.md +170 -0
  157. package/src/modules/bmb/workflows/agent/steps-c/step-03-type-metadata.md +296 -0
  158. package/src/modules/bmb/workflows/agent/steps-c/step-04-persona.md +212 -0
  159. package/src/modules/bmb/workflows/agent/steps-c/step-05-commands-menu.md +178 -0
  160. package/src/modules/bmb/workflows/agent/steps-c/step-06-activation.md +279 -0
  161. package/src/modules/bmb/workflows/agent/steps-c/step-07a-build-simple.md +187 -0
  162. package/src/modules/bmb/workflows/agent/steps-c/step-07b-build-expert.md +201 -0
  163. package/src/modules/bmb/workflows/agent/steps-c/step-07c-build-module.md +258 -0
  164. package/src/modules/bmb/workflows/agent/steps-c/step-08-celebrate.md +249 -0
  165. package/src/modules/bmb/workflows/agent/steps-e/e-01-load-existing.md +221 -0
  166. package/src/modules/bmb/workflows/agent/steps-e/e-02-discover-edits.md +193 -0
  167. package/src/modules/bmb/workflows/agent/steps-e/e-03-placeholder.md +1 -0
  168. package/src/modules/bmb/workflows/agent/steps-e/e-04-type-metadata.md +124 -0
  169. package/src/modules/bmb/workflows/agent/steps-e/e-05-persona.md +134 -0
  170. package/src/modules/bmb/workflows/agent/steps-e/e-06-commands-menu.md +122 -0
  171. package/src/modules/bmb/workflows/agent/steps-e/e-07-activation.md +125 -0
  172. package/src/modules/bmb/workflows/agent/steps-e/e-08a-edit-simple.md +137 -0
  173. package/src/modules/bmb/workflows/agent/steps-e/e-08b-edit-expert.md +119 -0
  174. package/src/modules/bmb/workflows/agent/steps-e/e-08c-edit-module.md +123 -0
  175. package/src/modules/bmb/workflows/agent/steps-e/e-09-celebrate.md +155 -0
  176. package/src/modules/bmb/workflows/agent/steps-v/v-01-load-review.md +136 -0
  177. package/src/modules/bmb/workflows/agent/steps-v/v-02a-validate-metadata.md +116 -0
  178. package/src/modules/bmb/workflows/agent/steps-v/v-02b-validate-persona.md +124 -0
  179. package/src/modules/bmb/workflows/agent/steps-v/v-02c-validate-menu.md +145 -0
  180. package/src/modules/bmb/workflows/agent/steps-v/v-02d-validate-structure.md +136 -0
  181. package/src/modules/bmb/workflows/agent/steps-v/v-02e-validate-sidecar.md +136 -0
  182. package/src/modules/bmb/workflows/agent/steps-v/v-03-summary.md +104 -0
  183. package/src/modules/bmb/workflows/agent/templates/agent-plan.template.md +5 -0
  184. package/src/modules/bmb/workflows/agent/templates/expert-agent-template/expert-agent-sidecar/instructions.md.template +20 -0
  185. package/src/modules/bmb/workflows/agent/templates/expert-agent-template/expert-agent-sidecar/memories.md.template +18 -0
  186. package/src/modules/bmb/workflows/agent/templates/expert-agent-template/expert-agent.template.md +77 -0
  187. package/src/modules/bmb/workflows/agent/templates/simple-agent.template.md +72 -0
  188. package/src/modules/bmb/workflows/agent/workflow.md +123 -0
  189. package/src/modules/bmb/workflows/module/data/agent-architecture.md +179 -0
  190. package/src/modules/bmb/workflows/module/data/agent-spec-template.md +79 -0
  191. package/src/modules/bmb/workflows/module/data/module-installer-standards.md +348 -0
  192. package/src/modules/bmb/workflows/module/data/module-standards.md +280 -0
  193. package/src/modules/bmb/workflows/module/data/module-yaml-conventions.md +392 -0
  194. package/src/modules/bmb/workflows/module/steps-b/step-01-welcome.md +147 -0
  195. package/src/modules/bmb/workflows/module/steps-b/step-02-spark.md +140 -0
  196. package/src/modules/bmb/workflows/module/steps-b/step-03-module-type.md +148 -0
  197. package/src/modules/bmb/workflows/module/steps-b/step-04-vision.md +82 -0
  198. package/src/modules/bmb/workflows/module/steps-b/step-05-identity.md +96 -0
  199. package/src/modules/bmb/workflows/module/steps-b/step-06-users.md +85 -0
  200. package/src/modules/bmb/workflows/module/steps-b/step-07-value.md +75 -0
  201. package/src/modules/bmb/workflows/module/steps-b/step-08-agents.md +96 -0
  202. package/src/modules/bmb/workflows/module/steps-b/step-09-workflows.md +82 -0
  203. package/src/modules/bmb/workflows/module/steps-b/step-10-tools.md +90 -0
  204. package/src/modules/bmb/workflows/module/steps-b/step-11-scenarios.md +83 -0
  205. package/src/modules/bmb/workflows/module/steps-b/step-12-creative.md +94 -0
  206. package/src/modules/bmb/workflows/module/steps-b/step-13-review.md +104 -0
  207. package/src/modules/bmb/workflows/module/steps-b/step-14-finalize.md +117 -0
  208. package/src/modules/bmb/workflows/module/steps-c/step-01-load-brief.md +178 -0
  209. package/src/modules/bmb/workflows/module/steps-c/step-01b-continue.md +83 -0
  210. package/src/modules/bmb/workflows/module/steps-c/step-02-structure.md +109 -0
  211. package/src/modules/bmb/workflows/module/steps-c/step-03-config.md +118 -0
  212. package/src/modules/bmb/workflows/module/steps-c/step-04-installer.md +160 -0
  213. package/src/modules/bmb/workflows/module/steps-c/step-05-agents.md +167 -0
  214. package/src/modules/bmb/workflows/module/steps-c/step-06-workflows.md +183 -0
  215. package/src/modules/bmb/workflows/module/steps-c/step-07-docs.md +402 -0
  216. package/src/modules/bmb/workflows/module/steps-c/step-08-complete.md +123 -0
  217. package/src/modules/bmb/workflows/module/steps-e/step-01-load-target.md +81 -0
  218. package/src/modules/bmb/workflows/module/steps-e/step-02-select-edit.md +77 -0
  219. package/src/modules/bmb/workflows/module/steps-e/step-03-apply-edit.md +77 -0
  220. package/src/modules/bmb/workflows/module/steps-e/step-04-review.md +80 -0
  221. package/src/modules/bmb/workflows/module/steps-e/step-05-confirm.md +75 -0
  222. package/src/modules/bmb/workflows/module/steps-v/step-01-load-target.md +96 -0
  223. package/src/modules/bmb/workflows/module/steps-v/step-02-file-structure.md +94 -0
  224. package/src/modules/bmb/workflows/module/steps-v/step-03-module-yaml.md +99 -0
  225. package/src/modules/bmb/workflows/module/steps-v/step-04-agent-specs.md +152 -0
  226. package/src/modules/bmb/workflows/module/steps-v/step-05-workflow-specs.md +152 -0
  227. package/src/modules/bmb/workflows/module/steps-v/step-06-documentation.md +143 -0
  228. package/src/modules/bmb/workflows/module/steps-v/step-07-installation.md +113 -0
  229. package/src/modules/bmb/workflows/module/steps-v/step-08-report.md +197 -0
  230. package/src/modules/bmb/workflows/module/templates/brief-template.md +154 -0
  231. package/src/modules/bmb/workflows/module/templates/workflow-spec-template.md +96 -0
  232. package/src/modules/bmb/workflows/module/workflow.md +100 -0
  233. package/src/modules/bmb/workflows/workflow/data/architecture.md +152 -0
  234. package/src/modules/bmb/{docs/workflows → workflows/workflow/data}/common-workflow-tools.csv +1 -1
  235. package/src/modules/bmb/workflows/workflow/data/csv-data-file-standards.md +81 -0
  236. package/src/modules/bmb/workflows/workflow/data/frontmatter-standards.md +225 -0
  237. package/src/modules/bmb/workflows/workflow/data/input-discovery-standards.md +269 -0
  238. package/src/modules/bmb/workflows/workflow/data/intent-vs-prescriptive-spectrum.md +50 -0
  239. package/src/modules/bmb/workflows/workflow/data/menu-handling-standards.md +167 -0
  240. package/src/modules/bmb/workflows/workflow/data/output-format-standards.md +188 -0
  241. package/src/modules/bmb/workflows/workflow/data/step-file-rules.md +235 -0
  242. package/src/modules/bmb/workflows/workflow/data/step-type-patterns.md +311 -0
  243. package/src/modules/bmb/workflows/workflow/data/subprocess-optimization-patterns.md +386 -0
  244. package/src/modules/bmb/workflows/workflow/data/trimodal-workflow-structure.md +209 -0
  245. package/src/modules/bmb/workflows/workflow/data/workflow-chaining-standards.md +271 -0
  246. package/src/modules/bmb/workflows/workflow/data/workflow-examples.md +276 -0
  247. package/src/modules/bmb/workflows/workflow/data/workflow-type-criteria.md +172 -0
  248. package/src/modules/bmb/workflows/workflow/steps-c/step-00-conversion.md +262 -0
  249. package/src/modules/bmb/workflows/workflow/steps-c/step-01-discovery.md +194 -0
  250. package/src/modules/bmb/workflows/workflow/steps-c/step-01b-continuation.md +3 -0
  251. package/src/modules/bmb/workflows/workflow/steps-c/step-02-classification.md +269 -0
  252. package/src/modules/bmb/workflows/workflow/steps-c/step-03-requirements.md +282 -0
  253. package/src/modules/bmb/workflows/workflow/steps-c/step-04-tools.md +281 -0
  254. package/src/modules/bmb/workflows/workflow/steps-c/step-05-plan-review.md +242 -0
  255. package/src/modules/bmb/workflows/{create-workflow/steps → workflow/steps-c}/step-06-design.md +96 -38
  256. package/src/modules/bmb/workflows/workflow/steps-c/step-07-foundation.md +238 -0
  257. package/src/modules/bmb/workflows/workflow/steps-c/step-08-build-step-01.md +377 -0
  258. package/src/modules/bmb/workflows/workflow/steps-c/step-09-build-next-step.md +350 -0
  259. package/src/modules/bmb/workflows/workflow/steps-c/step-10-confirmation.md +320 -0
  260. package/src/modules/bmb/workflows/workflow/steps-c/step-11-completion.md +191 -0
  261. package/src/modules/bmb/workflows/workflow/steps-e/step-e-01-assess-workflow.md +237 -0
  262. package/src/modules/bmb/workflows/workflow/steps-e/step-e-02-discover-edits.md +248 -0
  263. package/src/modules/bmb/workflows/workflow/steps-e/step-e-03-fix-validation.md +252 -0
  264. package/src/modules/bmb/workflows/workflow/steps-e/step-e-04-direct-edit.md +275 -0
  265. package/src/modules/bmb/workflows/workflow/steps-e/step-e-05-apply-edit.md +154 -0
  266. package/src/modules/bmb/workflows/workflow/steps-e/step-e-06-validate-after.md +190 -0
  267. package/src/modules/bmb/workflows/workflow/steps-e/step-e-07-complete.md +206 -0
  268. package/src/modules/bmb/workflows/workflow/steps-v/step-01-validate-max-mode.md +109 -0
  269. package/src/modules/bmb/workflows/workflow/steps-v/step-01-validate.md +221 -0
  270. package/src/modules/bmb/workflows/workflow/steps-v/step-01b-structure.md +152 -0
  271. package/src/modules/bmb/workflows/workflow/steps-v/step-02-frontmatter-validation.md +199 -0
  272. package/src/modules/bmb/workflows/workflow/steps-v/step-02b-path-violations.md +265 -0
  273. package/src/modules/bmb/workflows/workflow/steps-v/step-03-menu-validation.md +164 -0
  274. package/src/modules/bmb/workflows/workflow/steps-v/step-04-step-type-validation.md +211 -0
  275. package/src/modules/bmb/workflows/workflow/steps-v/step-05-output-format-validation.md +200 -0
  276. package/src/modules/bmb/workflows/workflow/steps-v/step-06-validation-design-check.md +195 -0
  277. package/src/modules/bmb/workflows/workflow/steps-v/step-07-instruction-style-check.md +209 -0
  278. package/src/modules/bmb/workflows/workflow/steps-v/step-08-collaborative-experience-check.md +199 -0
  279. package/src/modules/bmb/workflows/workflow/steps-v/step-08b-subprocess-optimization.md +179 -0
  280. package/src/modules/bmb/workflows/workflow/steps-v/step-09-cohesive-review.md +186 -0
  281. package/src/modules/bmb/workflows/workflow/steps-v/step-10-report-complete.md +154 -0
  282. package/src/modules/bmb/workflows/workflow/steps-v/step-11-plan-validation.md +237 -0
  283. package/src/modules/bmb/workflows/workflow/templates/minimal-output-template.md +11 -0
  284. package/src/modules/bmb/{docs/workflows → workflows/workflow}/templates/step-01-init-continuable-template.md +3 -3
  285. package/src/modules/bmb/{docs/workflows → workflows/workflow}/templates/step-1b-template.md +1 -1
  286. package/src/modules/bmb/{docs/workflows → workflows/workflow}/templates/step-template.md +15 -15
  287. package/src/modules/bmb/{docs/workflows → workflows/workflow}/templates/workflow-template.md +2 -4
  288. package/src/modules/bmb/workflows/workflow/workflow.md +109 -0
  289. package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -0
  290. package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -0
  291. package/src/modules/bmgd/agents/game-dev.agent.yaml +2 -1
  292. package/src/modules/bmgd/agents/game-qa.agent.yaml +2 -1
  293. package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +2 -1
  294. package/src/modules/bmgd/agents/game-solo-dev.agent.yaml +3 -2
  295. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
  296. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +5 -3
  297. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-02-context.md +4 -3
  298. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-03-ideation.md +52 -46
  299. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +2 -1
  300. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.md +5 -1
  301. package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +3 -3
  302. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01-init.md +4 -3
  303. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-01b-continue.md +2 -1
  304. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-02-vision.md +4 -3
  305. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-03-market.md +4 -3
  306. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-04-fundamentals.md +4 -3
  307. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-05-scope.md +4 -3
  308. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-06-references.md +4 -3
  309. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-07-content.md +4 -3
  310. package/src/modules/bmgd/workflows/1-preproduction/game-brief/steps/step-08-complete.md +2 -1
  311. package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.md +1 -0
  312. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01-init.md +4 -3
  313. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-01b-continue.md +2 -1
  314. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-02-context.md +4 -3
  315. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-03-platforms.md +4 -3
  316. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-04-vision.md +4 -3
  317. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-05-core-gameplay.md +4 -3
  318. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-06-mechanics.md +4 -3
  319. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-07-game-type.md +4 -3
  320. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-08-progression.md +4 -3
  321. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-09-levels.md +4 -3
  322. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-10-art-audio.md +4 -3
  323. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-11-technical.md +4 -3
  324. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-12-epics.md +4 -3
  325. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-13-metrics.md +4 -3
  326. package/src/modules/bmgd/workflows/2-design/gdd/steps/step-14-complete.md +2 -1
  327. package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
  328. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01-init.md +4 -3
  329. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-01b-continue.md +12 -11
  330. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-02-foundation.md +4 -3
  331. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-03-story.md +4 -3
  332. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-04-characters.md +4 -3
  333. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-05-world.md +4 -3
  334. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-06-dialogue.md +4 -3
  335. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-07-environmental.md +4 -3
  336. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-08-delivery.md +4 -3
  337. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-09-integration.md +4 -3
  338. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-10-production.md +4 -3
  339. package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +2 -1
  340. package/src/modules/bmgd/workflows/2-design/narrative/workflow.md +2 -1
  341. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01-init.md +4 -3
  342. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-01b-continue.md +10 -9
  343. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-02-context.md +4 -3
  344. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-03-starter.md +4 -3
  345. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-04-decisions.md +4 -3
  346. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-05-crosscutting.md +4 -3
  347. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-06-structure.md +6 -5
  348. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-07-patterns.md +4 -3
  349. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-08-validation.md +6 -5
  350. package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +2 -1
  351. package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.md +2 -1
  352. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +1 -0
  353. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +2 -1
  354. package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +1 -0
  355. package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +1 -0
  356. package/src/modules/bmgd/workflows/4-production/code-review/instructions.xml +1 -0
  357. package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +1 -1
  358. package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +1 -1
  359. package/src/modules/bmgd/workflows/4-production/create-story/checklist.md +2 -2
  360. package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +1 -1
  361. package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +1 -1
  362. package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +1 -1
  363. package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +2 -2
  364. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +1 -1
  365. package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +1 -1
  366. package/src/modules/bmgd/workflows/bmgd-quick-flow/{create-tech-spec → quick-spec}/workflow.yaml +3 -3
  367. package/src/modules/bmgd/workflows/workflow-status/paths/quickflow-brownfield.yaml +2 -2
  368. package/src/modules/bmm/agents/analyst.agent.yaml +3 -2
  369. package/src/modules/bmm/agents/architect.agent.yaml +3 -1
  370. package/src/modules/bmm/agents/dev.agent.yaml +4 -3
  371. package/src/modules/bmm/agents/pm.agent.yaml +16 -5
  372. package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +3 -2
  373. package/src/modules/bmm/agents/sm.agent.yaml +1 -0
  374. package/src/modules/bmm/agents/tea.agent.yaml +6 -3
  375. package/src/modules/bmm/agents/tech-writer.agent.yaml +1 -0
  376. package/src/modules/bmm/agents/ux-designer.agent.yaml +1 -0
  377. package/src/modules/bmm/module.yaml +1 -1
  378. package/src/modules/bmm/testarch/knowledge/api-request.md +155 -16
  379. package/src/modules/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
  380. package/src/modules/bmm/testarch/knowledge/auth-session.md +197 -1
  381. package/src/modules/bmm/testarch/knowledge/file-utils.md +257 -54
  382. package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +159 -9
  383. package/src/modules/bmm/testarch/knowledge/log.md +170 -35
  384. package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +228 -95
  385. package/src/modules/bmm/testarch/knowledge/network-recorder.md +314 -52
  386. package/src/modules/bmm/testarch/knowledge/overview.md +15 -12
  387. package/src/modules/bmm/testarch/knowledge/recurse.md +173 -48
  388. package/src/modules/bmm/testarch/tea-index.csv +19 -18
  389. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +4 -8
  390. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +1 -5
  391. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +3 -7
  392. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +3 -7
  393. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +3 -7
  394. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +3 -7
  395. package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +1 -5
  396. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +1 -0
  397. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +1 -0
  398. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +1 -0
  399. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +1 -0
  400. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +1 -0
  401. package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +1 -0
  402. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +1 -0
  403. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +1 -0
  404. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +1 -0
  405. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +1 -0
  406. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +1 -0
  407. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +1 -0
  408. package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +1 -0
  409. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +1 -0
  410. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +1 -0
  411. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +1 -0
  412. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +1 -0
  413. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +1 -0
  414. package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +1 -0
  415. package/src/modules/bmm/workflows/1-analysis/research/workflow.md +1 -1
  416. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +1 -0
  417. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +1 -0
  418. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +2 -1
  419. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +3 -2
  420. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +3 -2
  421. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +3 -2
  422. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +3 -2
  423. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +3 -2
  424. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +3 -2
  425. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +3 -2
  426. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +3 -2
  427. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +3 -2
  428. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +3 -2
  429. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +3 -2
  430. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +1 -0
  431. package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -1
  432. package/src/modules/bmm/workflows/2-plan-workflows/prd/data/prd-purpose.md +197 -0
  433. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-01-init.md +8 -13
  434. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-01b-continue.md +37 -49
  435. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-c/step-02-discovery.md +224 -0
  436. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-03-success.md +52 -115
  437. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-c/step-04-journeys.md +213 -0
  438. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-c/step-05-domain.md +207 -0
  439. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-06-innovation.md +45 -80
  440. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-07-project-type.md +39 -59
  441. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-08-scoping.md +45 -115
  442. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-09-functional.md +23 -61
  443. package/src/modules/bmm/workflows/2-plan-workflows/prd/{steps → steps-c}/step-10-nonfunctional.md +34 -85
  444. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-c/step-11-polish.md +217 -0
  445. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md +180 -0
  446. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01-discovery.md +247 -0
  447. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
  448. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-02-review.md +249 -0
  449. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-03-edit.md +253 -0
  450. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-04-complete.md +168 -0
  451. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-01-discovery.md +218 -0
  452. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
  453. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
  454. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
  455. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  456. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
  457. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
  458. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  459. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  460. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
  461. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
  462. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  463. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
  464. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md +232 -0
  465. package/src/modules/bmm/workflows/2-plan-workflows/prd/{prd-template.md → templates/prd-template.md} +0 -1
  466. package/src/modules/bmm/workflows/2-plan-workflows/prd/validation-report-prd-workflow.md +433 -0
  467. package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +97 -8
  468. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +3 -2
  469. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +3 -2
  470. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +3 -2
  471. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +3 -2
  472. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +3 -2
  473. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +2 -1
  474. package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +2 -1
  475. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +1 -1
  476. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +1 -0
  477. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +3 -2
  478. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +3 -2
  479. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +3 -2
  480. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +3 -2
  481. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +3 -2
  482. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +3 -2
  483. package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +1 -0
  484. package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +1 -0
  485. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +5 -4
  486. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +4 -3
  487. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +4 -3
  488. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +3 -2
  489. package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +1 -0
  490. package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +2 -0
  491. package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +9 -12
  492. package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +1 -1
  493. package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
  494. package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +2 -1
  495. package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +13 -12
  496. package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +2 -1
  497. package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +3 -3
  498. package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +11 -10
  499. package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
  500. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +7 -7
  501. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +2 -2
  502. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +2 -2
  503. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +2 -2
  504. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +3 -3
  505. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +1 -1
  506. package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +4 -3
  507. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
  508. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
  509. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
  510. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +173 -0
  511. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
  512. package/src/modules/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
  513. package/src/modules/bmm/workflows/document-project/checklist.md +2 -2
  514. package/src/modules/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +1 -1
  515. package/src/modules/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +1 -1
  516. package/src/modules/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +1 -1
  517. package/src/modules/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +1 -1
  518. package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +1 -0
  519. package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +2 -1
  520. package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +1 -0
  521. package/src/modules/bmm/workflows/generate-project-context/workflow.md +1 -0
  522. package/src/modules/bmm/workflows/testarch/test-design/instructions.md +2 -2
  523. package/src/modules/bmm/workflows/workflow-status/init/instructions.md +6 -6
  524. package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +2 -1
  525. package/src/modules/bmm/workflows/workflow-status/instructions.md +8 -8
  526. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +44 -63
  527. package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +44 -54
  528. package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +38 -41
  529. package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +26 -22
  530. package/src/modules/cis/agents/brainstorming-coach.agent.yaml +2 -1
  531. package/src/modules/cis/agents/creative-problem-solver.agent.yaml +1 -0
  532. package/src/modules/cis/agents/design-thinking-coach.agent.yaml +1 -0
  533. package/src/modules/cis/agents/innovation-strategist.agent.yaml +1 -0
  534. package/src/modules/cis/agents/presentation-master.agent.yaml +1 -0
  535. package/src/modules/cis/module.yaml +1 -0
  536. package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
  537. package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
  538. package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
  539. package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
  540. package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +1 -0
  541. package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +1 -0
  542. package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +1 -0
  543. package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +1 -0
  544. package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +1 -0
  545. package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +1 -0
  546. package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +1 -0
  547. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +1 -0
  548. package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +1 -0
  549. package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +1 -0
  550. package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +1 -0
  551. package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +1 -0
  552. package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +1 -0
  553. package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +1 -0
  554. package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +1 -0
  555. package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +1 -0
  556. package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +1 -0
  557. package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +1 -0
  558. package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +1 -0
  559. package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +1 -0
  560. package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +1 -0
  561. package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +1 -0
  562. package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +1 -0
  563. package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +1 -0
  564. package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +1 -0
  565. package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +1 -0
  566. package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +1 -0
  567. package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +1 -0
  568. package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +1 -0
  569. package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -0
  570. package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +1 -0
  571. package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +1 -0
  572. package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +1 -0
  573. package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +1 -0
  574. package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +1 -0
  575. package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +1 -0
  576. package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +1 -0
  577. package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +1 -0
  578. package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +1 -0
  579. package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +1 -0
  580. package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +1 -0
  581. package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +1 -0
  582. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +1 -0
  583. package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +1 -0
  584. package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +1 -0
  585. package/tools/build-docs.js +200 -271
  586. package/tools/cli/bmad-cli.js +18 -0
  587. package/tools/cli/commands/install.js +15 -13
  588. package/tools/cli/installers/install-messages.yaml +33 -27
  589. package/tools/cli/installers/lib/core/config-collector.js +11 -1
  590. package/tools/cli/installers/lib/core/detector.js +5 -115
  591. package/tools/cli/installers/lib/core/installer.js +48 -80
  592. package/tools/cli/installers/lib/core/manifest-generator.js +46 -2
  593. package/tools/cli/installers/lib/ide/antigravity.js +3 -3
  594. package/tools/cli/installers/lib/ide/claude-code.js +3 -3
  595. package/tools/cli/installers/lib/ide/codex.js +1 -1
  596. package/tools/cli/installers/lib/ide/cursor.js +57 -304
  597. package/tools/cli/installers/lib/ide/github-copilot.js +1 -1
  598. package/tools/cli/lib/agent/compiler.js +0 -4
  599. package/tools/cli/lib/ui.js +22 -1
  600. package/tools/docs/index.md +2 -0
  601. package/tools/fix-doc-links.js +288 -0
  602. package/tools/schema/agent.js +1 -0
  603. package/tools/validate-doc-links.js +363 -0
  604. package/website/README.md +76 -0
  605. package/website/astro.config.mjs +218 -0
  606. package/website/src/components/Banner.astro +59 -0
  607. package/website/src/components/Header.astro +121 -0
  608. package/website/src/components/MobileMenuFooter.astro +53 -0
  609. package/website/src/content/config.ts +6 -0
  610. package/website/src/lib/site-url.js +25 -0
  611. package/website/src/rehype-markdown-links.js +102 -0
  612. package/website/src/styles/custom.css +483 -0
  613. package/docs/document-sharding-guide.md +0 -449
  614. package/docs/getting-started/installation.md +0 -76
  615. package/docs/ide-info/auggie.md +0 -31
  616. package/docs/ide-info/claude-code.md +0 -25
  617. package/docs/ide-info/cline.md +0 -31
  618. package/docs/ide-info/codex.md +0 -21
  619. package/docs/ide-info/crush.md +0 -30
  620. package/docs/ide-info/cursor.md +0 -25
  621. package/docs/ide-info/gemini.md +0 -25
  622. package/docs/ide-info/github-copilot.md +0 -26
  623. package/docs/ide-info/iflow.md +0 -33
  624. package/docs/ide-info/index.md +0 -24
  625. package/docs/ide-info/kilo.md +0 -24
  626. package/docs/ide-info/opencode.md +0 -24
  627. package/docs/ide-info/qwen.md +0 -25
  628. package/docs/ide-info/roo.md +0 -27
  629. package/docs/ide-info/rovo-dev.md +0 -22
  630. package/docs/ide-info/trae.md +0 -25
  631. package/docs/ide-info/windsurf.md +0 -22
  632. package/docs/v4-to-v6-upgrade.md +0 -227
  633. package/docs/web-bundles-gemini-gpt-guide.md +0 -21
  634. package/src/core/tasks/validate-workflow.xml +0 -89
  635. package/src/modules/bmb/docs/agents/agent-compilation.md +0 -340
  636. package/src/modules/bmb/docs/agents/agent-menu-patterns.md +0 -523
  637. package/src/modules/bmb/docs/agents/expert-agent-architecture.md +0 -363
  638. package/src/modules/bmb/docs/agents/index.md +0 -55
  639. package/src/modules/bmb/docs/agents/kb.csv +0 -0
  640. package/src/modules/bmb/docs/agents/simple-agent-architecture.md +0 -257
  641. package/src/modules/bmb/docs/agents/understanding-agent-types.md +0 -184
  642. package/src/modules/bmb/docs/index.md +0 -247
  643. package/src/modules/bmb/docs/workflows/architecture.md +0 -220
  644. package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +0 -206
  645. package/src/modules/bmb/docs/workflows/index.md +0 -45
  646. package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +0 -220
  647. package/src/modules/bmb/docs/workflows/kb.csv +0 -0
  648. package/src/modules/bmb/docs/workflows/templates/step-file.md +0 -139
  649. package/src/modules/bmb/docs/workflows/templates/workflow.md +0 -58
  650. package/src/modules/bmb/docs/workflows/terms.md +0 -97
  651. package/src/modules/bmb/reference/README.md +0 -3
  652. package/src/modules/bmb/reference/agents/simple-examples/README.md +0 -223
  653. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +0 -18
  654. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +0 -16
  655. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +0 -28
  656. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +0 -176
  657. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +0 -120
  658. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +0 -164
  659. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +0 -153
  660. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +0 -182
  661. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +0 -167
  662. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +0 -194
  663. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +0 -25
  664. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +0 -68
  665. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +0 -29
  666. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +0 -47
  667. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +0 -37
  668. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +0 -18
  669. package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +0 -58
  670. package/src/modules/bmb/workflows/create-agent/data/agent-validation-checklist.md +0 -174
  671. package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +0 -29
  672. package/src/modules/bmb/workflows/create-agent/data/reference/README.md +0 -3
  673. package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +0 -242
  674. package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +0 -48
  675. package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +0 -223
  676. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +0 -18
  677. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +0 -16
  678. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +0 -28
  679. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +0 -177
  680. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +0 -150
  681. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +0 -164
  682. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +0 -152
  683. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +0 -182
  684. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +0 -167
  685. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +0 -194
  686. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +0 -25
  687. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +0 -68
  688. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +0 -29
  689. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +0 -47
  690. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +0 -37
  691. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +0 -18
  692. package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +0 -58
  693. package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +0 -305
  694. package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +0 -206
  695. package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +0 -260
  696. package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +0 -237
  697. package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +0 -232
  698. package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +0 -186
  699. package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +0 -234
  700. package/src/modules/bmb/workflows/create-agent/steps/step-08-celebrate.md +0 -218
  701. package/src/modules/bmb/workflows/create-agent/templates/agent-plan.template.md +0 -3
  702. package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +0 -364
  703. package/src/modules/bmb/workflows/create-agent/templates/simple-agent.template.md +0 -257
  704. package/src/modules/bmb/workflows/create-agent/workflow.md +0 -58
  705. package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +0 -155
  706. package/src/modules/bmb/workflows/create-module/steps/step-01b-continue.md +0 -169
  707. package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +0 -217
  708. package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +0 -267
  709. package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +0 -228
  710. package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +0 -233
  711. package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +0 -296
  712. package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +0 -228
  713. package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +0 -186
  714. package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +0 -309
  715. package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +0 -337
  716. package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +0 -335
  717. package/src/modules/bmb/workflows/create-module/templates/agent.template.md +0 -313
  718. package/src/modules/bmb/workflows/create-module/templates/installer.template.js +0 -47
  719. package/src/modules/bmb/workflows/create-module/templates/module-plan.template.md +0 -5
  720. package/src/modules/bmb/workflows/create-module/templates/module.template.yaml +0 -53
  721. package/src/modules/bmb/workflows/create-module/templates/workflow-plan-template.md +0 -23
  722. package/src/modules/bmb/workflows/create-module/validation.md +0 -126
  723. package/src/modules/bmb/workflows/create-module/workflow.md +0 -55
  724. package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +0 -157
  725. package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +0 -211
  726. package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +0 -250
  727. package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +0 -216
  728. package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +0 -289
  729. package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +0 -308
  730. package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +0 -284
  731. package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +0 -187
  732. package/src/modules/bmb/workflows/create-workflow/workflow.md +0 -58
  733. package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +0 -134
  734. package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +0 -202
  735. package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +0 -157
  736. package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +0 -150
  737. package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +0 -150
  738. package/src/modules/bmb/workflows/edit-agent/workflow.md +0 -58
  739. package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +0 -217
  740. package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +0 -253
  741. package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +0 -217
  742. package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +0 -193
  743. package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +0 -245
  744. package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +0 -75
  745. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +0 -68
  746. package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +0 -40
  747. package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +0 -51
  748. package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +0 -56
  749. package/src/modules/bmb/workflows/edit-workflow/workflow.md +0 -58
  750. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +0 -152
  751. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +0 -243
  752. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +0 -274
  753. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +0 -295
  754. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +0 -264
  755. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +0 -360
  756. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +0 -258
  757. package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +0 -301
  758. package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +0 -140
  759. package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +0 -58
  760. package/src/modules/bmb/workflows-legacy/edit-module/README.md +0 -171
  761. package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +0 -163
  762. package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +0 -340
  763. package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +0 -34
  764. package/src/modules/bmb/workflows-legacy/module-brief/README.md +0 -264
  765. package/src/modules/bmb/workflows-legacy/module-brief/checklist.md +0 -116
  766. package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +0 -268
  767. package/src/modules/bmb/workflows-legacy/module-brief/template.md +0 -275
  768. package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +0 -36
  769. package/src/modules/bmgd/docs/glossary.md +0 -294
  770. package/src/modules/bmgd/docs/index.md +0 -180
  771. package/src/modules/bmgd/docs/quick-start.md +0 -250
  772. package/src/modules/bmm/README.md +0 -127
  773. package/src/modules/bmm/docs/bmad-quick-flow.md +0 -506
  774. package/src/modules/bmm/docs/brownfield-guide.md +0 -748
  775. package/src/modules/bmm/docs/enterprise-agentic-development.md +0 -686
  776. package/src/modules/bmm/docs/faq.md +0 -542
  777. package/src/modules/bmm/docs/index.md +0 -168
  778. package/src/modules/bmm/docs/quick-spec-flow.md +0 -638
  779. package/src/modules/bmm/docs/quick-start.md +0 -366
  780. package/src/modules/bmm/docs/scale-adaptive-system.md +0 -618
  781. package/src/modules/bmm/docs/troubleshooting.md +0 -661
  782. package/src/modules/bmm/docs/workflow-architecture-reference.md +0 -366
  783. package/src/modules/bmm/docs/workflow-document-project-reference.md +0 -489
  784. package/src/modules/bmm/docs/workflows-analysis.md +0 -266
  785. package/src/modules/bmm/docs/workflows-implementation.md +0 -210
  786. package/src/modules/bmm/docs/workflows-planning.md +0 -451
  787. package/src/modules/bmm/docs/workflows-solutioning.md +0 -509
  788. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +0 -420
  789. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +0 -290
  790. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +0 -270
  791. package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +0 -185
  792. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +0 -115
  793. package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +0 -28
  794. package/website/css/custom.css +0 -52
  795. package/website/docusaurus.config.js +0 -179
  796. package/website/sidebars.js +0 -157
  797. package/website/src/pages/index.js +0 -50
  798. /package/{src/modules/bmm/docs → docs/tutorials/getting-started}/images/workflow-method-greenfield.excalidraw +0 -0
  799. /package/{src/modules/bmm/docs → docs/tutorials/getting-started}/images/workflow-method-greenfield.svg +0 -0
  800. /package/{src/modules/bmgd/docs → docs/tutorials/getting-started/images}/workflow-overview.jpg +0 -0
  801. /package/src/core/{tasks/advanced-elicitation-methods.csv → workflows/advanced-elicitation/methods.csv} +0 -0
  802. /package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +0 -0
  803. /package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +0 -0
  804. /package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +0 -0
  805. /package/src/modules/bmb/workflows/{create-agent/data/reference/agents → agent/data/reference}/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +0 -0
  806. /package/src/modules/bmgd/workflows/bmgd-quick-flow/{create-tech-spec → quick-spec}/instructions.md +0 -0
  807. /package/src/modules/bmm/workflows/2-plan-workflows/prd/{domain-complexity.csv → data/domain-complexity.csv} +0 -0
  808. /package/src/modules/bmm/workflows/2-plan-workflows/prd/{project-types.csv → data/project-types.csv} +0 -0
  809. /package/{docs → tools/docs}/BUNDLE_DISTRIBUTION_SETUP.md +0 -0
  810. /package/website/{static → public}/favicon.ico +0 -0
  811. /package/website/{static → public}/img/logo.svg +0 -0
  812. /package/website/{static → public}/robots.txt +0 -0
@@ -0,0 +1,288 @@
1
+ /**
2
+ * Fix Documentation Links
3
+ *
4
+ * Converts relative markdown links to repo-relative paths with .md extension.
5
+ * This ensures links work both in GitHub and on the Astro/Starlight site
6
+ * (the rehype plugin transforms /docs/path/file.md → /path/file/ at build time).
7
+ *
8
+ * - ./file.md → /docs/current/path/file.md
9
+ * - ../other/file.md → /docs/resolved/path/file.md
10
+ * - /path/file/ → /docs/path/file.md (or /docs/path/file/index.md if it's a directory)
11
+ *
12
+ * Usage:
13
+ * node tools/fix-doc-links.js # Dry run (shows what would change)
14
+ * node tools/fix-doc-links.js --write # Actually write changes
15
+ */
16
+
17
+ const fs = require('node:fs');
18
+ const path = require('node:path');
19
+
20
+ const DOCS_ROOT = path.resolve(__dirname, '../docs');
21
+ const DRY_RUN = !process.argv.includes('--write');
22
+
23
+ // Regex to match markdown links:
24
+ // - [text](path.md) or [text](path.md#anchor) - existing .md links
25
+ // - [text](/path/to/page/) or [text](/path/to/page/#anchor) - site-relative links to convert
26
+ const MARKDOWN_LINK_REGEX = /\[([^\]]*)\]\(([^)]+(?:\.md|\/))(?:#[^)]*)?(?:\?[^)]*)?\)/g;
27
+ // Simpler approach: match all markdown links and filter in the handler
28
+ const ALL_MARKDOWN_LINKS_REGEX = /\[([^\]]*)\]\(([^)]+)\)/g;
29
+
30
+ /**
31
+ * Get all markdown files in docs directory, excluding _* directories/files
32
+ */
33
+ function getMarkdownFiles(dir) {
34
+ const files = [];
35
+
36
+ function walk(currentDir) {
37
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
38
+
39
+ for (const entry of entries) {
40
+ const fullPath = path.join(currentDir, entry.name);
41
+
42
+ // Skip underscore-prefixed entries
43
+ if (entry.name.startsWith('_')) {
44
+ continue;
45
+ }
46
+
47
+ if (entry.isDirectory()) {
48
+ walk(fullPath);
49
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
50
+ files.push(fullPath);
51
+ }
52
+ }
53
+ }
54
+
55
+ walk(dir);
56
+ return files;
57
+ }
58
+
59
+ /**
60
+ * Convert a markdown link href to repo-relative path with .md extension
61
+ *
62
+ * @param {string} href - The original href (e.g., "./file.md", "/path/to/page/", "/path/to/page/#anchor")
63
+ * @param {string} currentFilePath - Absolute path to the file containing this link
64
+ * @returns {string|null} - Repo-relative path (e.g., "/docs/path/to/file.md"), or null if shouldn't be converted
65
+ */
66
+ function convertToRepoRelative(href, currentFilePath) {
67
+ // Skip external links
68
+ if (href.includes('://') || href.startsWith('mailto:') || href.startsWith('tel:')) {
69
+ return null;
70
+ }
71
+
72
+ // Skip anchor-only links
73
+ if (href.startsWith('#')) {
74
+ return null;
75
+ }
76
+
77
+ // Extract anchor and query string if present
78
+ let anchor = '';
79
+ let query = '';
80
+ let pathPortion = href;
81
+
82
+ const hashIndex = href.indexOf('#');
83
+ const queryIndex = href.indexOf('?');
84
+
85
+ if (hashIndex !== -1 || queryIndex !== -1) {
86
+ const firstDelimiter = Math.min(hashIndex === -1 ? Infinity : hashIndex, queryIndex === -1 ? Infinity : queryIndex);
87
+ pathPortion = href.slice(0, Math.max(0, firstDelimiter));
88
+
89
+ const suffix = href.slice(Math.max(0, firstDelimiter));
90
+ const anchorInSuffix = suffix.indexOf('#');
91
+
92
+ if (suffix.startsWith('?')) {
93
+ if (anchorInSuffix === -1) {
94
+ query = suffix;
95
+ } else {
96
+ query = suffix.slice(0, Math.max(0, anchorInSuffix));
97
+ anchor = suffix.slice(Math.max(0, anchorInSuffix));
98
+ }
99
+ } else {
100
+ anchor = suffix;
101
+ }
102
+ }
103
+
104
+ // Skip non-documentation links (images, external assets, etc.)
105
+ const ext = path.extname(pathPortion).toLowerCase();
106
+ if (
107
+ ext &&
108
+ ext !== '.md' &&
109
+ !['.md'].includes(ext) && // Has an extension that's not .md - skip unless it's a trailing slash path
110
+ !pathPortion.endsWith('/')
111
+ ) {
112
+ return null;
113
+ }
114
+
115
+ // Check if original path ends with / (directory reference) BEFORE path.join normalizes it
116
+ const isDirectoryPath = pathPortion.endsWith('/');
117
+
118
+ let absolutePath;
119
+
120
+ if (pathPortion.startsWith('/docs/')) {
121
+ // Already repo-relative with /docs/ prefix
122
+ absolutePath = path.join(path.dirname(DOCS_ROOT), pathPortion);
123
+ } else if (pathPortion.startsWith('/')) {
124
+ // Site-relative (e.g., /tutorials/getting-started/) - resolve from docs root
125
+ absolutePath = path.join(DOCS_ROOT, pathPortion);
126
+ } else {
127
+ // Relative path (./, ../, or bare filename) - resolve from current file's directory
128
+ const currentDir = path.dirname(currentFilePath);
129
+ absolutePath = path.resolve(currentDir, pathPortion);
130
+ }
131
+
132
+ // Convert to repo-relative path (with /docs/ prefix)
133
+ let repoRelative = '/docs/' + path.relative(DOCS_ROOT, absolutePath);
134
+
135
+ // Normalize path separators for Windows
136
+ repoRelative = repoRelative.split(path.sep).join('/');
137
+
138
+ // If original path was a directory reference (ended with /), check for index.md or file.md
139
+ if (isDirectoryPath) {
140
+ const relativeDir = repoRelative.slice(6); // Remove '/docs/'
141
+
142
+ // Handle root path case (relativeDir is empty or just '.')
143
+ const normalizedDir = relativeDir === '' || relativeDir === '.' ? '' : relativeDir;
144
+ const indexPath = path.join(DOCS_ROOT, normalizedDir, 'index.md');
145
+ const filePath = normalizedDir ? path.join(DOCS_ROOT, normalizedDir + '.md') : null;
146
+
147
+ if (fs.existsSync(indexPath)) {
148
+ // Avoid double slash when repoRelative is '/docs/' (root case)
149
+ repoRelative = repoRelative.endsWith('/') ? repoRelative + 'index.md' : repoRelative + '/index.md';
150
+ } else if (filePath && fs.existsSync(filePath)) {
151
+ repoRelative = repoRelative + '.md';
152
+ } else {
153
+ // Neither exists - default to index.md and let validation catch it
154
+ repoRelative = repoRelative.endsWith('/') ? repoRelative + 'index.md' : repoRelative + '/index.md';
155
+ }
156
+ } else if (!repoRelative.endsWith('.md')) {
157
+ // Path doesn't end with .md - add .md
158
+ repoRelative = repoRelative + '.md';
159
+ }
160
+
161
+ return repoRelative + query + anchor;
162
+ }
163
+
164
+ /**
165
+ * Process a single markdown file, skipping links inside fenced code blocks
166
+ *
167
+ * @param {string} filePath - Absolute path to the file
168
+ * @returns {Object} - { changed: boolean, original: string, updated: string, changes: Array }
169
+ */
170
+ function processFile(filePath) {
171
+ const original = fs.readFileSync(filePath, 'utf-8');
172
+ const changes = [];
173
+
174
+ // Extract fenced code blocks and replace with placeholders
175
+ const codeBlocks = [];
176
+ const CODE_PLACEHOLDER = '\u0000CODE_BLOCK_';
177
+
178
+ let contentWithPlaceholders = original.replaceAll(/```[\s\S]*?```/g, (match) => {
179
+ const index = codeBlocks.length;
180
+ codeBlocks.push(match);
181
+ return `${CODE_PLACEHOLDER}${index}\u0000`;
182
+ });
183
+
184
+ // Process links only in non-code-block content
185
+ contentWithPlaceholders = contentWithPlaceholders.replaceAll(ALL_MARKDOWN_LINKS_REGEX, (match, linkText, href) => {
186
+ const newHref = convertToRepoRelative(href, filePath);
187
+
188
+ // Skip if conversion returned null (external link, anchor, etc.)
189
+ if (newHref === null) {
190
+ return match;
191
+ }
192
+
193
+ // Only record as change if actually different
194
+ if (newHref !== href) {
195
+ changes.push({ from: href, to: newHref });
196
+ return `[${linkText}](${newHref})`;
197
+ }
198
+
199
+ return match;
200
+ });
201
+
202
+ // Restore code blocks
203
+ const updated = contentWithPlaceholders.replaceAll(
204
+ new RegExp(`${CODE_PLACEHOLDER}(\\d+)\u0000`, 'g'),
205
+ (match, index) => codeBlocks[parseInt(index, 10)],
206
+ );
207
+
208
+ return {
209
+ changed: changes.length > 0,
210
+ original,
211
+ updated,
212
+ changes,
213
+ };
214
+ }
215
+
216
+ /**
217
+ * Validate that a repo-relative link points to an existing file
218
+ */
219
+ function validateLink(repoRelativePath) {
220
+ // Strip anchor/query
221
+ const checkPath = repoRelativePath.split('#')[0].split('?')[0];
222
+
223
+ // Remove /docs/ prefix to get path relative to DOCS_ROOT
224
+ const relativePath = checkPath.startsWith('/docs/') ? checkPath.slice(6) : checkPath.slice(1);
225
+
226
+ return fs.existsSync(path.join(DOCS_ROOT, relativePath));
227
+ }
228
+
229
+ // Main execution
230
+ console.log(`\nScanning docs in: ${DOCS_ROOT}`);
231
+ console.log(`Mode: ${DRY_RUN ? 'DRY RUN (use --write to apply changes)' : 'WRITE MODE'}\n`);
232
+
233
+ const files = getMarkdownFiles(DOCS_ROOT);
234
+ console.log(`Found ${files.length} markdown files (excluding _* paths)\n`);
235
+
236
+ let totalChanges = 0;
237
+ let filesChanged = 0;
238
+ const brokenLinks = [];
239
+
240
+ for (const filePath of files) {
241
+ const relativePath = path.relative(DOCS_ROOT, filePath);
242
+ const result = processFile(filePath);
243
+
244
+ if (result.changed) {
245
+ filesChanged++;
246
+ totalChanges += result.changes.length;
247
+
248
+ console.log(`\n${relativePath}`);
249
+ for (const change of result.changes) {
250
+ const isValid = validateLink(change.to);
251
+ const status = isValid ? ' ' : '! ';
252
+
253
+ console.log(`${status} ${change.from}`);
254
+ console.log(` -> ${change.to}`);
255
+
256
+ if (!isValid) {
257
+ brokenLinks.push({
258
+ file: relativePath,
259
+ link: change.to,
260
+ original: change.from,
261
+ });
262
+ }
263
+ }
264
+
265
+ if (!DRY_RUN) {
266
+ fs.writeFileSync(filePath, result.updated, 'utf-8');
267
+ }
268
+ }
269
+ }
270
+
271
+ console.log(`\n${'─'.repeat(60)}`);
272
+ console.log(`\nSummary:`);
273
+ console.log(` Files scanned: ${files.length}`);
274
+ console.log(` Files with changes: ${filesChanged}`);
275
+ console.log(` Total link updates: ${totalChanges}`);
276
+
277
+ if (brokenLinks.length > 0) {
278
+ console.log(`\n! Potential broken links (${brokenLinks.length}):`);
279
+ for (const bl of brokenLinks) {
280
+ console.log(` ${bl.file}: ${bl.link}`);
281
+ }
282
+ }
283
+
284
+ if (DRY_RUN && totalChanges > 0) {
285
+ console.log(`\nRun with --write to apply these changes`);
286
+ }
287
+
288
+ console.log('');
@@ -229,6 +229,7 @@ function buildMetadataSchema(expectedModule) {
229
229
  title: createNonEmptyString('agent.metadata.title'),
230
230
  icon: createNonEmptyString('agent.metadata.icon'),
231
231
  module: createNonEmptyString('agent.metadata.module').optional(),
232
+ hasSidecar: z.boolean(),
232
233
  };
233
234
 
234
235
  return z.object(schemaShape).strict();
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Documentation Link Validator
3
+ *
4
+ * Validates site-relative links in markdown files and attempts to fix broken ones.
5
+ *
6
+ * What it checks:
7
+ * - All site-relative links (starting with /) point to existing .md files
8
+ * - Anchor links (#section) point to valid headings
9
+ *
10
+ * What it fixes:
11
+ * - Broken links where the target file can be found elsewhere in /docs
12
+ *
13
+ * Usage:
14
+ * node tools/validate-doc-links.js # Dry run (validate and show issues)
15
+ * node tools/validate-doc-links.js --write # Fix auto-fixable issues
16
+ */
17
+
18
+ const fs = require('node:fs');
19
+ const path = require('node:path');
20
+
21
+ const DOCS_ROOT = path.resolve(__dirname, '../docs');
22
+ const DRY_RUN = !process.argv.includes('--write');
23
+
24
+ // Regex to match markdown links with site-relative paths
25
+ const LINK_REGEX = /\[([^\]]*)\]\((\/[^)]+)\)/g;
26
+
27
+ // File extensions that are static assets, not markdown docs
28
+ const STATIC_ASSET_EXTENSIONS = ['.zip', '.txt', '.pdf', '.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico'];
29
+
30
+ // Regex to extract headings for anchor validation
31
+ const HEADING_PATTERN = /^#{1,6}\s+(.+)$/gm;
32
+
33
+ /**
34
+ * Get all markdown files in docs directory, excluding _* directories/files
35
+ */
36
+ function getMarkdownFiles(dir) {
37
+ const files = [];
38
+
39
+ function walk(currentDir) {
40
+ const entries = fs.readdirSync(currentDir, { withFileTypes: true });
41
+
42
+ for (const entry of entries) {
43
+ const fullPath = path.join(currentDir, entry.name);
44
+
45
+ if (entry.name.startsWith('_')) {
46
+ continue;
47
+ }
48
+
49
+ if (entry.isDirectory()) {
50
+ walk(fullPath);
51
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
52
+ files.push(fullPath);
53
+ }
54
+ }
55
+ }
56
+
57
+ walk(dir);
58
+ return files;
59
+ }
60
+
61
+ /**
62
+ * Strip fenced code blocks from content
63
+ */
64
+ function stripCodeBlocks(content) {
65
+ return content.replaceAll(/```[\s\S]*?```/g, '');
66
+ }
67
+
68
+ /**
69
+ * Convert a heading to its anchor slug
70
+ */
71
+ function headingToAnchor(heading) {
72
+ return heading
73
+ .toLowerCase()
74
+ .replaceAll(/[\u{1F300}-\u{1F9FF}]/gu, '') // Remove emojis
75
+ .replaceAll(/[^\w\s-]/g, '') // Remove special chars
76
+ .replaceAll(/\s+/g, '-') // Spaces to hyphens
77
+ .replaceAll(/-+/g, '-') // Collapse hyphens
78
+ .replaceAll(/^-+|-+$/g, ''); // Trim hyphens
79
+ }
80
+
81
+ /**
82
+ * Extract anchor slugs from a markdown file
83
+ */
84
+ function extractAnchors(content) {
85
+ const anchors = new Set();
86
+ let match;
87
+
88
+ HEADING_PATTERN.lastIndex = 0;
89
+ while ((match = HEADING_PATTERN.exec(content)) !== null) {
90
+ const headingText = match[1]
91
+ .trim()
92
+ .replaceAll(/`[^`]+`/g, '')
93
+ .replaceAll(/\*\*([^*]+)\*\*/g, '$1')
94
+ .replaceAll(/\*([^*]+)\*/g, '$1')
95
+ .replaceAll(/\[([^\]]+)\]\([^)]+\)/g, '$1')
96
+ .trim();
97
+ anchors.add(headingToAnchor(headingText));
98
+ }
99
+
100
+ return anchors;
101
+ }
102
+
103
+ /**
104
+ * Resolve a site-relative link to a file path
105
+ * /docs/how-to/installation/install-bmad.md -> docs/how-to/installation/install-bmad.md
106
+ * /how-to/installation/install-bmad/ -> docs/how-to/installation/install-bmad.md or .../index.md
107
+ */
108
+ function resolveLink(siteRelativePath) {
109
+ // Strip anchor and query
110
+ let checkPath = siteRelativePath.split('#')[0].split('?')[0];
111
+
112
+ // Strip /docs/ prefix if present (repo-relative links)
113
+ if (checkPath.startsWith('/docs/')) {
114
+ checkPath = checkPath.slice(5); // Remove '/docs' but keep leading '/'
115
+ }
116
+
117
+ if (checkPath.endsWith('/')) {
118
+ // Could be file.md or directory/index.md
119
+ const asFile = path.join(DOCS_ROOT, checkPath.slice(0, -1) + '.md');
120
+ const asIndex = path.join(DOCS_ROOT, checkPath, 'index.md');
121
+
122
+ if (fs.existsSync(asFile)) return asFile;
123
+ if (fs.existsSync(asIndex)) return asIndex;
124
+ return null;
125
+ }
126
+
127
+ // Direct path (e.g., /path/file.md)
128
+ const direct = path.join(DOCS_ROOT, checkPath);
129
+ if (fs.existsSync(direct)) return direct;
130
+
131
+ // Try with .md extension
132
+ const withMd = direct + '.md';
133
+ if (fs.existsSync(withMd)) return withMd;
134
+
135
+ return null;
136
+ }
137
+
138
+ /**
139
+ * Search for a file with directory context
140
+ */
141
+ function findFileWithContext(brokenPath) {
142
+ // Extract filename and parent directory from the broken path
143
+ // e.g., /tutorials/getting-started/foo/ -> parent: getting-started, file: foo.md
144
+ const cleanPath = brokenPath.replace(/\/$/, '').replace(/^\//, '');
145
+ const parts = cleanPath.split('/');
146
+ const fileName = parts.at(-1) + '.md';
147
+ const parentDir = parts.length > 1 ? parts.at(-2) : null;
148
+
149
+ const allFiles = getMarkdownFiles(DOCS_ROOT);
150
+ const matches = [];
151
+
152
+ for (const file of allFiles) {
153
+ const fileBaseName = path.basename(file);
154
+ const fileParentDir = path.basename(path.dirname(file));
155
+
156
+ // Exact filename match with parent directory context
157
+ if (fileBaseName === fileName) {
158
+ if (parentDir && fileParentDir === parentDir) {
159
+ // Strong match: both filename and parent dir match
160
+ return [file];
161
+ }
162
+ matches.push(file);
163
+ }
164
+
165
+ // Also check for index.md in a matching directory
166
+ if (fileBaseName === 'index.md' && fileParentDir === fileName.replace('.md', '')) {
167
+ matches.push(file);
168
+ }
169
+ }
170
+
171
+ return matches;
172
+ }
173
+
174
+ /**
175
+ * Convert absolute file path to site-relative URL
176
+ */
177
+ function fileToSiteRelative(filePath) {
178
+ let relative = '/' + path.relative(DOCS_ROOT, filePath);
179
+ relative = relative.split(path.sep).join('/');
180
+
181
+ if (relative.endsWith('/index.md')) {
182
+ return relative.replace(/\/index\.md$/, '/');
183
+ }
184
+ return relative.replace(/\.md$/, '/');
185
+ }
186
+
187
+ /**
188
+ * Process a single file and find issues
189
+ */
190
+ function processFile(filePath) {
191
+ const content = fs.readFileSync(filePath, 'utf-8');
192
+ const strippedContent = stripCodeBlocks(content);
193
+ const issues = [];
194
+
195
+ let match;
196
+ LINK_REGEX.lastIndex = 0;
197
+
198
+ while ((match = LINK_REGEX.exec(strippedContent)) !== null) {
199
+ const linkText = match[1];
200
+ const href = match[2];
201
+
202
+ // Extract path and anchor
203
+ const hashIndex = href.indexOf('#');
204
+ const linkPath = hashIndex === -1 ? href : href.slice(0, hashIndex);
205
+ const anchor = hashIndex === -1 ? null : href.slice(hashIndex + 1);
206
+
207
+ // Skip static asset links (zip, txt, images, etc.)
208
+ const linkLower = linkPath.toLowerCase();
209
+ if (STATIC_ASSET_EXTENSIONS.some((ext) => linkLower.endsWith(ext))) {
210
+ continue;
211
+ }
212
+
213
+ // Validate the link target exists
214
+ const targetFile = resolveLink(linkPath);
215
+
216
+ if (!targetFile) {
217
+ // Link is broken - try to find the file
218
+ const candidates = findFileWithContext(linkPath);
219
+
220
+ const issue = {
221
+ type: 'broken-link',
222
+ linkText,
223
+ href,
224
+ linkPath,
225
+ fullMatch: match[0],
226
+ };
227
+
228
+ if (candidates.length === 1) {
229
+ issue.status = 'auto-fixable';
230
+ issue.suggestedFix = fileToSiteRelative(candidates[0]) + (anchor ? '#' + anchor : '');
231
+ issue.foundAt = path.relative(DOCS_ROOT, candidates[0]);
232
+ } else if (candidates.length > 1) {
233
+ issue.status = 'needs-review';
234
+ issue.candidates = candidates.map((c) => path.relative(DOCS_ROOT, c));
235
+ } else {
236
+ issue.status = 'manual-check';
237
+ }
238
+
239
+ issues.push(issue);
240
+ continue;
241
+ }
242
+
243
+ // Validate anchor if present
244
+ if (anchor) {
245
+ const targetContent = fs.readFileSync(targetFile, 'utf-8');
246
+ const anchors = extractAnchors(targetContent);
247
+
248
+ if (!anchors.has(anchor)) {
249
+ issues.push({
250
+ type: 'broken-anchor',
251
+ linkText,
252
+ href,
253
+ anchor,
254
+ status: 'manual-check',
255
+ message: `Anchor "#${anchor}" not found`,
256
+ });
257
+ }
258
+ }
259
+ }
260
+
261
+ return { content, issues };
262
+ }
263
+
264
+ /**
265
+ * Apply fixes to file content
266
+ */
267
+ function applyFixes(content, issues) {
268
+ let updated = content;
269
+
270
+ for (const issue of issues) {
271
+ if (issue.status === 'auto-fixable' && issue.suggestedFix) {
272
+ const oldLink = `[${issue.linkText}](${issue.href})`;
273
+ const newLink = `[${issue.linkText}](${issue.suggestedFix})`;
274
+ updated = updated.replace(oldLink, newLink);
275
+ }
276
+ }
277
+
278
+ return updated;
279
+ }
280
+
281
+ // Main execution
282
+ console.log(`\nValidating docs in: ${DOCS_ROOT}`);
283
+ console.log(`Mode: ${DRY_RUN ? 'DRY RUN (use --write to fix)' : 'WRITE MODE'}\n`);
284
+
285
+ const files = getMarkdownFiles(DOCS_ROOT);
286
+ console.log(`Found ${files.length} markdown files\n`);
287
+
288
+ let totalIssues = 0;
289
+ let autoFixable = 0;
290
+ let needsReview = 0;
291
+ let manualCheck = 0;
292
+ let filesWithIssues = 0;
293
+
294
+ const allIssues = [];
295
+
296
+ for (const filePath of files) {
297
+ const relativePath = path.relative(DOCS_ROOT, filePath);
298
+ const { content, issues } = processFile(filePath);
299
+
300
+ if (issues.length > 0) {
301
+ filesWithIssues++;
302
+ totalIssues += issues.length;
303
+
304
+ console.log(`\n${relativePath}`);
305
+
306
+ for (const issue of issues) {
307
+ if (issue.status === 'auto-fixable') {
308
+ autoFixable++;
309
+ console.log(` [FIX] ${issue.href}`);
310
+ console.log(` -> ${issue.suggestedFix}`);
311
+ } else if (issue.status === 'needs-review') {
312
+ needsReview++;
313
+ console.log(` [REVIEW] ${issue.href}`);
314
+ console.log(` Multiple matches found:`);
315
+ for (const candidate of issue.candidates) {
316
+ console.log(` - ${candidate}`);
317
+ }
318
+ } else if (issue.type === 'broken-anchor') {
319
+ manualCheck++;
320
+ console.log(` [MANUAL] ${issue.href}`);
321
+ console.log(` ${issue.message}`);
322
+ } else {
323
+ manualCheck++;
324
+ console.log(` [MANUAL] ${issue.href}`);
325
+ console.log(` File not found anywhere - may need to remove link`);
326
+ }
327
+
328
+ allIssues.push({ file: relativePath, ...issue });
329
+ }
330
+
331
+ // Apply fixes if not dry run
332
+ if (!DRY_RUN) {
333
+ const fixableIssues = issues.filter((i) => i.status === 'auto-fixable');
334
+ if (fixableIssues.length > 0) {
335
+ const updated = applyFixes(content, fixableIssues);
336
+ fs.writeFileSync(filePath, updated, 'utf-8');
337
+ }
338
+ }
339
+ }
340
+ }
341
+
342
+ console.log(`\n${'─'.repeat(60)}`);
343
+ console.log(`\nSummary:`);
344
+ console.log(` Files scanned: ${files.length}`);
345
+ console.log(` Files with issues: ${filesWithIssues}`);
346
+ console.log(` Total issues: ${totalIssues}`);
347
+
348
+ if (totalIssues > 0) {
349
+ console.log(`\n Breakdown:`);
350
+ console.log(` Auto-fixable: ${autoFixable}`);
351
+ console.log(` Needs review: ${needsReview}`);
352
+ console.log(` Manual check: ${manualCheck}`);
353
+ }
354
+
355
+ if (totalIssues === 0) {
356
+ console.log(`\n All links valid!`);
357
+ } else if (DRY_RUN && autoFixable > 0) {
358
+ console.log(`\nRun with --write to auto-fix ${autoFixable} issue(s)`);
359
+ }
360
+
361
+ console.log('');
362
+
363
+ process.exit(totalIssues > 0 ? 1 : 0);