bmad-method 6.2.1-next.3 → 6.2.1-next.30

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 (405) hide show
  1. package/AGENTS.md +1 -0
  2. package/package.json +4 -6
  3. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-analyst/SKILL.md +15 -17
  4. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-analyst/bmad-skill-manifest.yaml +2 -3
  5. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/SKILL.md +13 -16
  6. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/bmad-skill-manifest.yaml +2 -3
  7. package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/SKILL.md +2 -3
  8. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/SKILL.md +1 -1
  9. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/SKILL.md +1 -1
  10. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/SKILL.md +1 -1
  11. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-pm/SKILL.md +14 -16
  12. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-pm/bmad-skill-manifest.yaml +2 -3
  13. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-ux-designer/SKILL.md +9 -16
  14. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-ux-designer/bmad-skill-manifest.yaml +2 -3
  15. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +1 -1
  16. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +1 -1
  17. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +1 -1
  18. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +1 -1
  19. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +1 -1
  20. package/src/{bmm/agents → bmm-skills/3-solutioning}/bmad-agent-architect/SKILL.md +10 -16
  21. package/src/{bmm/agents → bmm-skills/3-solutioning}/bmad-agent-architect/bmad-skill-manifest.yaml +2 -3
  22. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-dev/SKILL.md +10 -16
  23. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-dev/bmad-skill-manifest.yaml +2 -3
  24. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-qa/SKILL.md +9 -16
  25. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-qa/bmad-skill-manifest.yaml +2 -3
  26. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-quick-flow-solo-dev/SKILL.md +10 -16
  27. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +2 -3
  28. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-sm/SKILL.md +12 -16
  29. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-sm/bmad-skill-manifest.yaml +2 -3
  30. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/steps/step-01-gather-context.md +3 -2
  31. package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-02-review.md +34 -0
  32. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/steps/step-03-triage.md +7 -8
  33. package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-04-present.md +129 -0
  34. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/workflow.md +1 -0
  35. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/SKILL.md +1 -1
  36. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-01-clarify-and-route.md +12 -13
  37. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-02-plan.md +1 -1
  38. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-03-implement.md +3 -3
  39. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-04-review.md +5 -6
  40. package/src/bmm-skills/4-implementation/bmad-quick-dev/step-05-present.md +63 -0
  41. package/src/bmm-skills/4-implementation/bmad-quick-dev/step-oneshot.md +49 -0
  42. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/workflow.md +2 -2
  43. package/src/{bmm → bmm-skills}/module-help.csv +3 -5
  44. package/src/{core/skills/bmad-advanced-elicitation/workflow.md → core-skills/bmad-advanced-elicitation/SKILL.md} +3 -1
  45. package/src/{core/skills/bmad-editorial-review-prose/workflow.md → core-skills/bmad-editorial-review-prose/SKILL.md} +5 -0
  46. package/src/{core/skills/bmad-editorial-review-structure/workflow.md → core-skills/bmad-editorial-review-structure/SKILL.md} +5 -0
  47. package/src/{core/skills/bmad-help/workflow.md → core-skills/bmad-help/SKILL.md} +5 -1
  48. package/src/{core/skills/bmad-index-docs/workflow.md → core-skills/bmad-index-docs/SKILL.md} +5 -0
  49. package/src/{core/skills/bmad-review-adversarial-general/workflow.md → core-skills/bmad-review-adversarial-general/SKILL.md} +5 -0
  50. package/src/{core/skills/bmad-review-edge-case-hunter/workflow.md → core-skills/bmad-review-edge-case-hunter/SKILL.md} +5 -0
  51. package/src/{core/skills/bmad-shard-doc/workflow.md → core-skills/bmad-shard-doc/SKILL.md} +5 -0
  52. package/tools/cli/commands/install.js +1 -8
  53. package/tools/cli/installers/lib/core/dependency-resolver.js +11 -11
  54. package/tools/cli/installers/lib/core/installer.js +4 -214
  55. package/tools/cli/installers/lib/core/manifest-generator.js +62 -723
  56. package/tools/cli/installers/lib/core/manifest.js +2 -2
  57. package/tools/cli/installers/lib/custom/handler.js +1 -247
  58. package/tools/cli/installers/lib/ide/_base-ide.js +0 -16
  59. package/tools/cli/installers/lib/ide/_config-driven.js +13 -168
  60. package/tools/cli/installers/lib/ide/manager.js +2 -7
  61. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +0 -1
  62. package/tools/cli/installers/lib/ide/shared/skill-manifest.js +1 -19
  63. package/tools/cli/installers/lib/modules/manager.js +12 -459
  64. package/tools/cli/lib/project-root.js +5 -5
  65. package/tools/cli/lib/ui.js +0 -19
  66. package/tools/skill-validator.md +52 -22
  67. package/tools/validate-skills.js +736 -0
  68. package/src/bmm/agents/bmad-agent-analyst/bmad-manifest.json +0 -44
  69. package/src/bmm/agents/bmad-agent-architect/bmad-manifest.json +0 -20
  70. package/src/bmm/agents/bmad-agent-dev/bmad-manifest.json +0 -20
  71. package/src/bmm/agents/bmad-agent-pm/bmad-manifest.json +0 -44
  72. package/src/bmm/agents/bmad-agent-qa/bmad-manifest.json +0 -14
  73. package/src/bmm/agents/bmad-agent-quick-flow-solo-dev/bmad-manifest.json +0 -32
  74. package/src/bmm/agents/bmad-agent-sm/bmad-manifest.json +0 -32
  75. package/src/bmm/agents/bmad-agent-tech-writer/bmad-manifest.json +0 -38
  76. package/src/bmm/agents/bmad-agent-ux-designer/bmad-manifest.json +0 -14
  77. package/src/bmm/agents/bmad-skill-manifest.yaml +0 -39
  78. package/src/bmm/data/project-context-template.md +0 -26
  79. package/src/bmm/teams/default-party.csv +0 -20
  80. package/src/bmm/teams/team-fullstack.yaml +0 -12
  81. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md +0 -6
  82. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml +0 -1
  83. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md +0 -10
  84. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md +0 -170
  85. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md +0 -158
  86. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md +0 -193
  87. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md +0 -196
  88. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md +0 -199
  89. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md +0 -213
  90. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md +0 -159
  91. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md +0 -55
  92. package/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml +0 -1
  93. package/src/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml +0 -1
  94. package/src/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml +0 -1
  95. package/src/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml +0 -1
  96. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +0 -182
  97. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +0 -237
  98. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +0 -249
  99. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +0 -259
  100. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +0 -177
  101. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +0 -476
  102. package/src/bmm/workflows/1-analysis/research/research.template.md +0 -29
  103. package/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml +0 -1
  104. package/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml +0 -1
  105. package/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml +0 -1
  106. package/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml +0 -1
  107. package/src/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml +0 -1
  108. package/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml +0 -1
  109. package/src/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml +0 -1
  110. package/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md +0 -41
  111. package/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md +0 -38
  112. package/src/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml +0 -1
  113. package/src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml +0 -1
  114. package/src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml +0 -1
  115. package/src/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml +0 -1
  116. package/src/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml +0 -1
  117. package/src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml +0 -1
  118. package/src/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml +0 -1
  119. package/src/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml +0 -1
  120. package/src/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml +0 -1
  121. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md +0 -6
  122. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml +0 -1
  123. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md +0 -169
  124. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md +0 -114
  125. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md +0 -107
  126. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md +0 -107
  127. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md +0 -94
  128. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md +0 -144
  129. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md +0 -38
  130. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/bmad-skill-manifest.yaml +0 -1
  131. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/step-05-present.md +0 -17
  132. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md +0 -6
  133. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml +0 -1
  134. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md +0 -185
  135. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md +0 -140
  136. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md +0 -123
  137. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md +0 -195
  138. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md +0 -74
  139. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md +0 -73
  140. package/src/core/skills/bmad-advanced-elicitation/SKILL.md +0 -6
  141. package/src/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml +0 -1
  142. package/src/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml +0 -1
  143. package/src/core/skills/bmad-distillator/bmad-skill-manifest.yaml +0 -15
  144. package/src/core/skills/bmad-editorial-review-prose/SKILL.md +0 -6
  145. package/src/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml +0 -1
  146. package/src/core/skills/bmad-editorial-review-structure/SKILL.md +0 -6
  147. package/src/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml +0 -1
  148. package/src/core/skills/bmad-help/SKILL.md +0 -6
  149. package/src/core/skills/bmad-help/bmad-skill-manifest.yaml +0 -1
  150. package/src/core/skills/bmad-index-docs/SKILL.md +0 -6
  151. package/src/core/skills/bmad-index-docs/bmad-skill-manifest.yaml +0 -1
  152. package/src/core/skills/bmad-init/bmad-skill-manifest.yaml +0 -1
  153. package/src/core/skills/bmad-party-mode/bmad-skill-manifest.yaml +0 -1
  154. package/src/core/skills/bmad-review-adversarial-general/SKILL.md +0 -6
  155. package/src/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml +0 -1
  156. package/src/core/skills/bmad-review-edge-case-hunter/SKILL.md +0 -6
  157. package/src/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml +0 -1
  158. package/src/core/skills/bmad-shard-doc/SKILL.md +0 -6
  159. package/src/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml +0 -1
  160. package/src/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml +0 -1
  161. package/src/utility/agent-components/activation-rules.txt +0 -6
  162. package/src/utility/agent-components/activation-steps.txt +0 -14
  163. package/src/utility/agent-components/agent-command-header.md +0 -1
  164. package/src/utility/agent-components/agent.customize.template.yaml +0 -41
  165. package/src/utility/agent-components/handler-action.txt +0 -4
  166. package/src/utility/agent-components/handler-data.txt +0 -5
  167. package/src/utility/agent-components/handler-exec.txt +0 -6
  168. package/src/utility/agent-components/handler-multi.txt +0 -13
  169. package/src/utility/agent-components/handler-tmpl.txt +0 -5
  170. package/src/utility/agent-components/menu-handlers.txt +0 -6
  171. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +0 -368
  172. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +0 -179
  173. package/tools/cli/lib/activation-builder.js +0 -165
  174. package/tools/cli/lib/agent/compiler.js +0 -516
  175. package/tools/cli/lib/agent/installer.js +0 -680
  176. package/tools/cli/lib/agent/template-engine.js +0 -152
  177. package/tools/cli/lib/agent-analyzer.js +0 -97
  178. package/tools/cli/lib/agent-party-generator.js +0 -194
  179. package/tools/cli/lib/xml-handler.js +0 -177
  180. package/tools/cli/lib/xml-to-markdown.js +0 -82
  181. package/tools/cli/lib/yaml-xml-builder.js +0 -570
  182. package/tools/schema/agent.js +0 -489
  183. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/explain-concept.md +0 -0
  184. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/mermaid-gen.md +0 -0
  185. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/validate-doc.md +0 -0
  186. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/write-document.md +0 -0
  187. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/SKILL.md +0 -0
  188. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/checklist.md +0 -0
  189. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/documentation-requirements.csv +0 -0
  190. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/instructions.md +0 -0
  191. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/deep-dive-template.md +0 -0
  192. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/index-template.md +0 -0
  193. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/project-overview-template.md +0 -0
  194. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/project-scan-report-schema.json +0 -0
  195. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/source-tree-template.md +0 -0
  196. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflow.md +0 -0
  197. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/deep-dive-instructions.md +0 -0
  198. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/deep-dive-workflow.md +0 -0
  199. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/full-scan-instructions.md +0 -0
  200. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/full-scan-workflow.md +0 -0
  201. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/artifact-analyzer.md +0 -0
  202. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/opportunity-reviewer.md +0 -0
  203. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/skeptic-reviewer.md +0 -0
  204. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/web-researcher.md +0 -0
  205. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/bmad-manifest.json +0 -0
  206. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/contextual-discovery.md +0 -0
  207. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/draft-and-review.md +0 -0
  208. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/finalize.md +0 -0
  209. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/guided-elicitation.md +0 -0
  210. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/resources/brief-template.md +0 -0
  211. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +0 -0
  212. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -0
  213. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -0
  214. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -0
  215. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -0
  216. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -0
  217. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/research.template.md +0 -0
  218. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/workflow.md +0 -0
  219. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/research.template.md +0 -0
  220. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-01-init.md +0 -0
  221. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +0 -0
  222. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +0 -0
  223. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +0 -0
  224. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +0 -0
  225. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +0 -0
  226. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/workflow.md +0 -0
  227. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/research.template.md +0 -0
  228. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +0 -0
  229. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -0
  230. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -0
  231. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -0
  232. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -0
  233. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -0
  234. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/workflow.md +0 -0
  235. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/SKILL.md +0 -0
  236. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/domain-complexity.csv +0 -0
  237. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/prd-purpose.md +0 -0
  238. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/project-types.csv +0 -0
  239. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-01-init.md +0 -0
  240. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-01b-continue.md +0 -0
  241. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02-discovery.md +0 -0
  242. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02b-vision.md +0 -0
  243. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -0
  244. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-03-success.md +0 -0
  245. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-04-journeys.md +0 -0
  246. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-05-domain.md +0 -0
  247. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-06-innovation.md +0 -0
  248. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-07-project-type.md +0 -0
  249. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-08-scoping.md +0 -0
  250. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-09-functional.md +0 -0
  251. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -0
  252. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-11-polish.md +0 -0
  253. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-12-complete.md +0 -0
  254. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/templates/prd-template.md +0 -0
  255. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/workflow.md +0 -0
  256. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/SKILL.md +0 -0
  257. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md +0 -0
  258. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md +0 -0
  259. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md +0 -0
  260. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md +0 -0
  261. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -0
  262. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md +0 -0
  263. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md +0 -0
  264. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -0
  265. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -0
  266. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md +0 -0
  267. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -0
  268. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -0
  269. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -0
  270. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -0
  271. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md +0 -0
  272. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/ux-design-template.md +0 -0
  273. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/workflow.md +0 -0
  274. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/SKILL.md +0 -0
  275. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/workflow.md +0 -0
  276. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/SKILL.md +0 -0
  277. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/domain-complexity.csv +0 -0
  278. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/prd-purpose.md +0 -0
  279. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/project-types.csv +0 -0
  280. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -0
  281. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -0
  282. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -0
  283. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -0
  284. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  285. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  286. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  287. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  288. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  289. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  290. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -0
  291. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  292. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  293. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -0
  294. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/workflow.md +0 -0
  295. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/domain-complexity.csv +0 -0
  296. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/prd-purpose.md +0 -0
  297. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/project-types.csv +0 -0
  298. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +0 -0
  299. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +0 -0
  300. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +0 -0
  301. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +0 -0
  302. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  303. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  304. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  305. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  306. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  307. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  308. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +0 -0
  309. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  310. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  311. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +0 -0
  312. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/workflow-validate-prd.md +0 -0
  313. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/SKILL.md +0 -0
  314. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -0
  315. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -0
  316. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -0
  317. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  318. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  319. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -0
  320. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  321. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/workflow.md +0 -0
  322. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/SKILL.md +0 -0
  323. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/architecture-decision-template.md +0 -0
  324. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/data/domain-complexity.csv +0 -0
  325. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/data/project-types.csv +0 -0
  326. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-01-init.md +0 -0
  327. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md +0 -0
  328. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-02-context.md +0 -0
  329. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-03-starter.md +0 -0
  330. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md +0 -0
  331. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md +0 -0
  332. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-06-structure.md +0 -0
  333. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-07-validation.md +0 -0
  334. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +0 -0
  335. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/workflow.md +0 -0
  336. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/SKILL.md +0 -0
  337. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  338. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  339. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  340. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -0
  341. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  342. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/workflow.md +0 -0
  343. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/SKILL.md +0 -0
  344. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/project-context-template.md +0 -0
  345. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-01-discover.md +0 -0
  346. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-02-generate.md +0 -0
  347. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-03-complete.md +0 -0
  348. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/workflow.md +0 -0
  349. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/SKILL.md +0 -0
  350. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/SKILL.md +0 -0
  351. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/checklist.md +0 -0
  352. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/workflow.md +0 -0
  353. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/SKILL.md +0 -0
  354. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/checklist.md +0 -0
  355. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/discover-inputs.md +0 -0
  356. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/template.md +0 -0
  357. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/workflow.md +0 -0
  358. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/SKILL.md +0 -0
  359. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/checklist.md +0 -0
  360. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/workflow.md +0 -0
  361. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/SKILL.md +0 -0
  362. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  363. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/workflow.md +0 -0
  364. /package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/tech-spec-template.md +0 -0
  365. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-retrospective/SKILL.md +0 -0
  366. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-retrospective/workflow.md +0 -0
  367. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/SKILL.md +0 -0
  368. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/checklist.md +0 -0
  369. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +0 -0
  370. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/workflow.md +0 -0
  371. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-status/SKILL.md +0 -0
  372. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-status/workflow.md +0 -0
  373. /package/src/{bmm → bmm-skills}/module.yaml +0 -0
  374. /package/src/{core/skills → core-skills}/bmad-advanced-elicitation/methods.csv +0 -0
  375. /package/src/{core/skills → core-skills}/bmad-brainstorming/SKILL.md +0 -0
  376. /package/src/{core/skills → core-skills}/bmad-brainstorming/brain-methods.csv +0 -0
  377. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-01-session-setup.md +0 -0
  378. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-01b-continue.md +0 -0
  379. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02a-user-selected.md +0 -0
  380. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -0
  381. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02c-random-selection.md +0 -0
  382. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -0
  383. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-03-technique-execution.md +0 -0
  384. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-04-idea-organization.md +0 -0
  385. /package/src/{core/skills → core-skills}/bmad-brainstorming/template.md +0 -0
  386. /package/src/{core/skills → core-skills}/bmad-brainstorming/workflow.md +0 -0
  387. /package/src/{core/skills → core-skills}/bmad-distillator/SKILL.md +0 -0
  388. /package/src/{core/skills → core-skills}/bmad-distillator/agents/distillate-compressor.md +0 -0
  389. /package/src/{core/skills → core-skills}/bmad-distillator/agents/round-trip-reconstructor.md +0 -0
  390. /package/src/{core/skills → core-skills}/bmad-distillator/resources/compression-rules.md +0 -0
  391. /package/src/{core/skills → core-skills}/bmad-distillator/resources/distillate-format-reference.md +0 -0
  392. /package/src/{core/skills → core-skills}/bmad-distillator/resources/splitting-strategy.md +0 -0
  393. /package/src/{core/skills → core-skills}/bmad-distillator/scripts/analyze_sources.py +0 -0
  394. /package/src/{core/skills → core-skills}/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -0
  395. /package/src/{core/skills → core-skills}/bmad-init/SKILL.md +0 -0
  396. /package/src/{core/skills → core-skills}/bmad-init/resources/core-module.yaml +0 -0
  397. /package/src/{core/skills → core-skills}/bmad-init/scripts/bmad_init.py +0 -0
  398. /package/src/{core/skills → core-skills}/bmad-init/scripts/tests/test_bmad_init.py +0 -0
  399. /package/src/{core/skills → core-skills}/bmad-party-mode/SKILL.md +0 -0
  400. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-01-agent-loading.md +0 -0
  401. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -0
  402. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-03-graceful-exit.md +0 -0
  403. /package/src/{core/skills → core-skills}/bmad-party-mode/workflow.md +0 -0
  404. /package/src/{core → core-skills}/module-help.csv +0 -0
  405. /package/src/{core → core-skills}/module.yaml +0 -0
@@ -16,15 +16,12 @@ const {
16
16
  const packageJson = require('../../../../../package.json');
17
17
 
18
18
  /**
19
- * Generates manifest files for installed workflows, agents, and tasks
19
+ * Generates manifest files for installed skills and agents
20
20
  */
21
21
  class ManifestGenerator {
22
22
  constructor() {
23
- this.workflows = [];
24
23
  this.skills = [];
25
24
  this.agents = [];
26
- this.tasks = [];
27
- this.tools = [];
28
25
  this.modules = [];
29
26
  this.files = [];
30
27
  this.selectedIdes = [];
@@ -85,10 +82,6 @@ class ManifestGenerator {
85
82
  this.modules = allModules;
86
83
  this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
87
84
 
88
- // For CSV manifests, we need to include ALL modules that are installed
89
- // preservedModules controls which modules stay as-is in the CSV (don't get rescanned)
90
- // But all modules should be included in the final manifest
91
- this.preservedModules = allModules; // Include ALL modules (including custom)
92
85
  this.bmadDir = bmadDir;
93
86
  this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '_bmad' or 'bmad')
94
87
  this.allInstalledFiles = installedFiles;
@@ -111,44 +104,30 @@ class ManifestGenerator {
111
104
  // Collect skills first (populates skillClaimedDirs before legacy collectors run)
112
105
  await this.collectSkills();
113
106
 
114
- // Collect workflow data
115
- await this.collectWorkflows(selectedModules);
116
-
117
107
  // Collect agent data - use updatedModules which includes all installed modules
118
108
  await this.collectAgents(this.updatedModules);
119
109
 
120
- // Collect task data
121
- await this.collectTasks(this.updatedModules);
122
-
123
- // Collect tool data
124
- await this.collectTools(this.updatedModules);
125
-
126
110
  // Write manifest files and collect their paths
127
111
  const manifestFiles = [
128
112
  await this.writeMainManifest(cfgDir),
129
- await this.writeWorkflowManifest(cfgDir),
130
113
  await this.writeSkillManifest(cfgDir),
131
114
  await this.writeAgentManifest(cfgDir),
132
- await this.writeTaskManifest(cfgDir),
133
- await this.writeToolManifest(cfgDir),
134
115
  await this.writeFilesManifest(cfgDir),
135
116
  ];
136
117
 
137
118
  return {
138
119
  skills: this.skills.length,
139
- workflows: this.workflows.length,
140
120
  agents: this.agents.length,
141
- tasks: this.tasks.length,
142
- tools: this.tools.length,
143
121
  files: this.files.length,
144
122
  manifestFiles: manifestFiles,
145
123
  };
146
124
  }
147
125
 
148
126
  /**
149
- * Recursively walk a module directory tree, collecting skill directories.
150
- * A skill directory is one that contains both a bmad-skill-manifest.yaml with
151
- * type: skill AND a SKILL.md file with name/description frontmatter.
127
+ * Recursively walk a module directory tree, collecting native SKILL.md entrypoints.
128
+ * A directory is discovered as a skill when it contains a SKILL.md file with
129
+ * valid name/description frontmatter (name must match directory name).
130
+ * Manifest YAML is loaded only when present — for install_to_bmad and agent metadata.
152
131
  * Populates this.skills[] and this.skillClaimedDirs (Set of absolute paths).
153
132
  */
154
133
  async collectSkills() {
@@ -169,76 +148,55 @@ class ManifestGenerator {
169
148
  return;
170
149
  }
171
150
 
172
- // Check this directory for skill manifest
173
- const manifest = await this.loadSkillManifest(dir);
174
-
175
- // Determine if this directory is a skill (type: skill in manifest)
151
+ // SKILL.md with valid frontmatter is the primary discovery gate
176
152
  const skillFile = 'SKILL.md';
177
- const artifactType = this.getArtifactType(manifest, skillFile);
178
-
179
- if (artifactType === 'skill' || artifactType === 'agent') {
180
- const skillMdPath = path.join(dir, 'SKILL.md');
181
- const dirName = path.basename(dir);
182
-
183
- // Validate and parse SKILL.md
184
- const skillMeta = await this.parseSkillMd(skillMdPath, dir, dirName, debug);
185
-
186
- if (skillMeta) {
187
- // Build path relative from module root (points to SKILL.md — the permanent entrypoint)
188
- const relativePath = path.relative(modulePath, dir).split(path.sep).join('/');
189
- const installPath = relativePath
190
- ? `${this.bmadFolderName}/${moduleName}/${relativePath}/${skillFile}`
191
- : `${this.bmadFolderName}/${moduleName}/${skillFile}`;
192
-
193
- // Skills derive canonicalId from directory name — never from manifest
194
- // (agent-type skills legitimately use canonicalId for agent-manifest mapping, so skip warning)
195
- if (manifest && manifest.__single && manifest.__single.canonicalId && artifactType !== 'agent') {
196
- console.warn(
197
- `Warning: Skill manifest at ${dir}/bmad-skill-manifest.yaml contains canonicalId — this field is ignored for skills (directory name is the canonical ID)`,
198
- );
199
- }
200
- const canonicalId = dirName;
201
-
202
- this.skills.push({
203
- name: skillMeta.name,
204
- description: this.cleanForCSV(skillMeta.description),
205
- module: moduleName,
206
- path: installPath,
207
- canonicalId,
208
- install_to_bmad: this.getInstallToBmad(manifest, skillFile),
209
- });
210
-
211
- // Add to files list
212
- this.files.push({
213
- type: 'skill',
214
- name: skillMeta.name,
215
- module: moduleName,
216
- path: installPath,
217
- });
218
-
219
- this.skillClaimedDirs.add(dir);
220
-
221
- if (debug) {
222
- console.log(`[DEBUG] collectSkills: claimed skill "${skillMeta.name}" as ${canonicalId} at ${dir}`);
223
- }
153
+ const skillMdPath = path.join(dir, skillFile);
154
+ const dirName = path.basename(dir);
155
+
156
+ const skillMeta = await this.parseSkillMd(skillMdPath, dir, dirName, debug);
157
+
158
+ if (skillMeta) {
159
+ // Load manifest when present (for install_to_bmad and agent metadata)
160
+ const manifest = await this.loadSkillManifest(dir);
161
+ const artifactType = this.getArtifactType(manifest, skillFile);
162
+
163
+ // Build path relative from module root (points to SKILL.md — the permanent entrypoint)
164
+ const relativePath = path.relative(modulePath, dir).split(path.sep).join('/');
165
+ const installPath = relativePath
166
+ ? `${this.bmadFolderName}/${moduleName}/${relativePath}/${skillFile}`
167
+ : `${this.bmadFolderName}/${moduleName}/${skillFile}`;
168
+
169
+ // Native SKILL.md entrypoints derive canonicalId from directory name.
170
+ // Agent entrypoints may keep canonicalId metadata for compatibility, so
171
+ // only warn for non-agent SKILL.md directories.
172
+ if (manifest && manifest.__single && manifest.__single.canonicalId && artifactType !== 'agent') {
173
+ console.warn(
174
+ `Warning: Native entrypoint manifest at ${dir}/bmad-skill-manifest.yaml contains canonicalId — this field is ignored for SKILL.md directories (directory name is the canonical ID)`,
175
+ );
224
176
  }
225
- }
177
+ const canonicalId = dirName;
226
178
 
227
- // Warn if manifest says type:skill but directory was not claimed
228
- if (manifest && !this.skillClaimedDirs.has(dir)) {
229
- let hasSkillType = false;
230
- if (manifest.__single) {
231
- hasSkillType = manifest.__single.type === 'skill' || manifest.__single.type === 'agent';
232
- } else {
233
- for (const key of Object.keys(manifest)) {
234
- if (manifest[key]?.type === 'skill' || manifest[key]?.type === 'agent') {
235
- hasSkillType = true;
236
- break;
237
- }
238
- }
239
- }
240
- if (hasSkillType && debug) {
241
- console.log(`[DEBUG] collectSkills: dir has type:skill manifest but failed validation: ${dir}`);
179
+ this.skills.push({
180
+ name: skillMeta.name,
181
+ description: this.cleanForCSV(skillMeta.description),
182
+ module: moduleName,
183
+ path: installPath,
184
+ canonicalId,
185
+ install_to_bmad: this.getInstallToBmad(manifest, skillFile),
186
+ });
187
+
188
+ // Add to files list
189
+ this.files.push({
190
+ type: 'skill',
191
+ name: skillMeta.name,
192
+ module: moduleName,
193
+ path: installPath,
194
+ });
195
+
196
+ this.skillClaimedDirs.add(dir);
197
+
198
+ if (debug) {
199
+ console.log(`[DEBUG] collectSkills: claimed skill "${skillMeta.name}" as ${canonicalId} at ${dir}`);
242
200
  }
243
201
  }
244
202
 
@@ -309,153 +267,6 @@ class ManifestGenerator {
309
267
  }
310
268
  }
311
269
 
312
- /**
313
- * Collect all workflows from core and selected modules
314
- * Scans the INSTALLED bmad directory, not the source
315
- */
316
- async collectWorkflows(selectedModules) {
317
- this.workflows = [];
318
-
319
- // Use updatedModules which already includes deduplicated 'core' + selectedModules
320
- for (const moduleName of this.updatedModules) {
321
- const modulePath = path.join(this.bmadDir, moduleName);
322
-
323
- if (await fs.pathExists(modulePath)) {
324
- const moduleWorkflows = await this.getWorkflowsFromPath(modulePath, moduleName);
325
- this.workflows.push(...moduleWorkflows);
326
-
327
- // Also scan tasks/ for type:skill entries (skills can live anywhere)
328
- const tasksSkills = await this.getWorkflowsFromPath(modulePath, moduleName, 'tasks');
329
- this.workflows.push(...tasksSkills);
330
- }
331
- }
332
- }
333
-
334
- /**
335
- * Recursively find and parse workflow.md files
336
- */
337
- async getWorkflowsFromPath(basePath, moduleName, subDir = 'workflows') {
338
- const workflows = [];
339
- const workflowsPath = path.join(basePath, subDir);
340
- const debug = process.env.BMAD_DEBUG_MANIFEST === 'true';
341
-
342
- if (debug) {
343
- console.log(`[DEBUG] Scanning workflows in: ${workflowsPath}`);
344
- }
345
-
346
- if (!(await fs.pathExists(workflowsPath))) {
347
- if (debug) {
348
- console.log(`[DEBUG] Workflows path does not exist: ${workflowsPath}`);
349
- }
350
- return workflows;
351
- }
352
-
353
- // Recursively find workflow.md files
354
- const findWorkflows = async (dir, relativePath = '') => {
355
- // Skip directories already claimed as skills
356
- if (this.skillClaimedDirs && this.skillClaimedDirs.has(dir)) return;
357
-
358
- const entries = await fs.readdir(dir, { withFileTypes: true });
359
- // Load skill manifest for this directory (if present)
360
- const skillManifest = await this.loadSkillManifest(dir);
361
-
362
- for (const entry of entries) {
363
- const fullPath = path.join(dir, entry.name);
364
-
365
- if (entry.isDirectory()) {
366
- // Skip directories claimed by collectSkills
367
- if (this.skillClaimedDirs && this.skillClaimedDirs.has(fullPath)) continue;
368
- // Recurse into subdirectories
369
- const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
370
- await findWorkflows(fullPath, newRelativePath);
371
- } else if (entry.name === 'workflow.md' || (entry.name.startsWith('workflow-') && entry.name.endsWith('.md'))) {
372
- // Parse workflow file (both YAML and MD formats)
373
- if (debug) {
374
- console.log(`[DEBUG] Found workflow file: ${fullPath}`);
375
- }
376
- try {
377
- // Read and normalize line endings (fix Windows CRLF issues)
378
- const rawContent = await fs.readFile(fullPath, 'utf8');
379
- const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
380
-
381
- // Parse MD workflow with YAML frontmatter
382
- const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
383
- if (!frontmatterMatch) {
384
- if (debug) {
385
- console.log(`[DEBUG] Skipped (no frontmatter): ${fullPath}`);
386
- }
387
- continue; // Skip MD files without frontmatter
388
- }
389
- const workflow = yaml.parse(frontmatterMatch[1]);
390
-
391
- if (debug) {
392
- console.log(`[DEBUG] Parsed: name="${workflow.name}", description=${workflow.description ? 'OK' : 'MISSING'}`);
393
- }
394
-
395
- // Skip template workflows (those with placeholder values)
396
- if (workflow.name && workflow.name.includes('{') && workflow.name.includes('}')) {
397
- if (debug) {
398
- console.log(`[DEBUG] Skipped (template placeholder): ${workflow.name}`);
399
- }
400
- continue;
401
- }
402
-
403
- // Skip workflows marked as non-standalone (reference/example workflows)
404
- if (workflow.standalone === false) {
405
- if (debug) {
406
- console.log(`[DEBUG] Skipped (standalone=false): ${workflow.name}`);
407
- }
408
- continue;
409
- }
410
-
411
- if (workflow.name && workflow.description) {
412
- // Build relative path for installation
413
- const installPath =
414
- moduleName === 'core'
415
- ? `${this.bmadFolderName}/core/${subDir}/${relativePath}/${entry.name}`
416
- : `${this.bmadFolderName}/${moduleName}/${subDir}/${relativePath}/${entry.name}`;
417
-
418
- // Workflows with standalone: false are filtered out above
419
- workflows.push({
420
- name: workflow.name,
421
- description: this.cleanForCSV(workflow.description),
422
- module: moduleName,
423
- path: installPath,
424
- canonicalId: this.getCanonicalId(skillManifest, entry.name),
425
- });
426
-
427
- // Add to files list
428
- this.files.push({
429
- type: 'workflow',
430
- name: workflow.name,
431
- module: moduleName,
432
- path: installPath,
433
- });
434
-
435
- if (debug) {
436
- console.log(`[DEBUG] ✓ Added workflow: ${workflow.name} (${moduleName})`);
437
- }
438
- } else {
439
- if (debug) {
440
- console.log(`[DEBUG] Skipped (missing name or description): ${fullPath}`);
441
- }
442
- }
443
- } catch (error) {
444
- await prompts.log.warn(`Failed to parse workflow at ${fullPath}: ${error.message}`);
445
- }
446
- }
447
- }
448
- };
449
-
450
- await findWorkflows(workflowsPath);
451
-
452
- if (debug) {
453
- console.log(`[DEBUG] Total workflows found in ${moduleName}: ${workflows.length}`);
454
- }
455
-
456
- return workflows;
457
- }
458
-
459
270
  /**
460
271
  * Collect all agents from core and selected modules
461
272
  * Scans the INSTALLED bmad directory, not the source
@@ -490,7 +301,7 @@ class ManifestGenerator {
490
301
 
491
302
  /**
492
303
  * Get agents from a directory recursively
493
- * Only includes compiled .md files (not .agent.yaml source files)
304
+ * Only includes .md files with agent content
494
305
  */
495
306
  async getAgentsFromDir(dirPath, moduleName, relativePath = '') {
496
307
  // Skip directories claimed by collectSkills
@@ -547,7 +358,7 @@ class ManifestGenerator {
547
358
  const newRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
548
359
  const subDirAgents = await this.getAgentsFromDir(fullPath, moduleName, newRelativePath);
549
360
  agents.push(...subDirAgents);
550
- } else if (entry.name.endsWith('.md') && !entry.name.endsWith('.agent.yaml') && entry.name.toLowerCase() !== 'readme.md') {
361
+ } else if (entry.name.endsWith('.md') && entry.name.toLowerCase() !== 'readme.md') {
551
362
  const content = await fs.readFile(fullPath, 'utf8');
552
363
 
553
364
  // Skip files that don't contain <agent> tag (e.g., README files)
@@ -609,212 +420,6 @@ class ManifestGenerator {
609
420
  return agents;
610
421
  }
611
422
 
612
- /**
613
- * Collect all tasks from core and selected modules
614
- * Scans the INSTALLED bmad directory, not the source
615
- */
616
- async collectTasks(selectedModules) {
617
- this.tasks = [];
618
-
619
- // Use updatedModules which already includes deduplicated 'core' + selectedModules
620
- for (const moduleName of this.updatedModules) {
621
- const tasksPath = path.join(this.bmadDir, moduleName, 'tasks');
622
-
623
- if (await fs.pathExists(tasksPath)) {
624
- const moduleTasks = await this.getTasksFromDir(tasksPath, moduleName);
625
- this.tasks.push(...moduleTasks);
626
- }
627
- }
628
- }
629
-
630
- /**
631
- * Get tasks from a directory
632
- */
633
- async getTasksFromDir(dirPath, moduleName) {
634
- // Skip directories claimed by collectSkills
635
- if (this.skillClaimedDirs && this.skillClaimedDirs.has(dirPath)) return [];
636
- const tasks = [];
637
- const files = await fs.readdir(dirPath);
638
- // Load skill manifest for this directory (if present)
639
- const skillManifest = await this.loadSkillManifest(dirPath);
640
-
641
- for (const file of files) {
642
- // Check for both .xml and .md files
643
- if (file.endsWith('.xml') || file.endsWith('.md')) {
644
- const filePath = path.join(dirPath, file);
645
- const content = await fs.readFile(filePath, 'utf8');
646
-
647
- // Skip internal/engine files (not user-facing tasks)
648
- if (content.includes('internal="true"')) {
649
- continue;
650
- }
651
-
652
- let name = file.replace(/\.(xml|md)$/, '');
653
- let displayName = name;
654
- let description = '';
655
- let standalone = false;
656
-
657
- if (file.endsWith('.md')) {
658
- // Parse YAML frontmatter for .md tasks
659
- const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
660
- if (frontmatterMatch) {
661
- try {
662
- const frontmatter = yaml.parse(frontmatterMatch[1]);
663
- name = frontmatter.name || name;
664
- displayName = frontmatter.displayName || frontmatter.name || name;
665
- description = this.cleanForCSV(frontmatter.description || '');
666
- // Tasks are standalone by default unless explicitly false (internal=true is already filtered above)
667
- standalone = frontmatter.standalone !== false && frontmatter.standalone !== 'false';
668
- } catch {
669
- // If YAML parsing fails, use defaults
670
- standalone = true; // Default to standalone
671
- }
672
- } else {
673
- standalone = true; // No frontmatter means standalone
674
- }
675
- } else {
676
- // For .xml tasks, extract from tag attributes
677
- const nameMatch = content.match(/name="([^"]+)"/);
678
- displayName = nameMatch ? nameMatch[1] : name;
679
-
680
- const descMatch = content.match(/description="([^"]+)"/);
681
- const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
682
- description = this.cleanForCSV(descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '');
683
-
684
- const standaloneFalseMatch = content.match(/<task[^>]+standalone="false"/);
685
- standalone = !standaloneFalseMatch;
686
- }
687
-
688
- // Build relative path for installation
689
- const installPath =
690
- moduleName === 'core' ? `${this.bmadFolderName}/core/tasks/${file}` : `${this.bmadFolderName}/${moduleName}/tasks/${file}`;
691
-
692
- tasks.push({
693
- name: name,
694
- displayName: displayName,
695
- description: description,
696
- module: moduleName,
697
- path: installPath,
698
- standalone: standalone,
699
- canonicalId: this.getCanonicalId(skillManifest, file),
700
- });
701
-
702
- // Add to files list
703
- this.files.push({
704
- type: 'task',
705
- name: name,
706
- module: moduleName,
707
- path: installPath,
708
- });
709
- }
710
- }
711
-
712
- return tasks;
713
- }
714
-
715
- /**
716
- * Collect all tools from core and selected modules
717
- * Scans the INSTALLED bmad directory, not the source
718
- */
719
- async collectTools(selectedModules) {
720
- this.tools = [];
721
-
722
- // Use updatedModules which already includes deduplicated 'core' + selectedModules
723
- for (const moduleName of this.updatedModules) {
724
- const toolsPath = path.join(this.bmadDir, moduleName, 'tools');
725
-
726
- if (await fs.pathExists(toolsPath)) {
727
- const moduleTools = await this.getToolsFromDir(toolsPath, moduleName);
728
- this.tools.push(...moduleTools);
729
- }
730
- }
731
- }
732
-
733
- /**
734
- * Get tools from a directory
735
- */
736
- async getToolsFromDir(dirPath, moduleName) {
737
- // Skip directories claimed by collectSkills
738
- if (this.skillClaimedDirs && this.skillClaimedDirs.has(dirPath)) return [];
739
- const tools = [];
740
- const files = await fs.readdir(dirPath);
741
- // Load skill manifest for this directory (if present)
742
- const skillManifest = await this.loadSkillManifest(dirPath);
743
-
744
- for (const file of files) {
745
- // Check for both .xml and .md files
746
- if (file.endsWith('.xml') || file.endsWith('.md')) {
747
- const filePath = path.join(dirPath, file);
748
- const content = await fs.readFile(filePath, 'utf8');
749
-
750
- // Skip internal tools (same as tasks)
751
- if (content.includes('internal="true"')) {
752
- continue;
753
- }
754
-
755
- let name = file.replace(/\.(xml|md)$/, '');
756
- let displayName = name;
757
- let description = '';
758
- let standalone = false;
759
-
760
- if (file.endsWith('.md')) {
761
- // Parse YAML frontmatter for .md tools
762
- const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
763
- if (frontmatterMatch) {
764
- try {
765
- const frontmatter = yaml.parse(frontmatterMatch[1]);
766
- name = frontmatter.name || name;
767
- displayName = frontmatter.displayName || frontmatter.name || name;
768
- description = this.cleanForCSV(frontmatter.description || '');
769
- // Tools are standalone by default unless explicitly false (internal=true is already filtered above)
770
- standalone = frontmatter.standalone !== false && frontmatter.standalone !== 'false';
771
- } catch {
772
- // If YAML parsing fails, use defaults
773
- standalone = true; // Default to standalone
774
- }
775
- } else {
776
- standalone = true; // No frontmatter means standalone
777
- }
778
- } else {
779
- // For .xml tools, extract from tag attributes
780
- const nameMatch = content.match(/name="([^"]+)"/);
781
- displayName = nameMatch ? nameMatch[1] : name;
782
-
783
- const descMatch = content.match(/description="([^"]+)"/);
784
- const objMatch = content.match(/<objective>([^<]+)<\/objective>/);
785
- description = this.cleanForCSV(descMatch ? descMatch[1] : objMatch ? objMatch[1].trim() : '');
786
-
787
- const standaloneFalseMatch = content.match(/<tool[^>]+standalone="false"/);
788
- standalone = !standaloneFalseMatch;
789
- }
790
-
791
- // Build relative path for installation
792
- const installPath =
793
- moduleName === 'core' ? `${this.bmadFolderName}/core/tools/${file}` : `${this.bmadFolderName}/${moduleName}/tools/${file}`;
794
-
795
- tools.push({
796
- name: name,
797
- displayName: displayName,
798
- description: description,
799
- module: moduleName,
800
- path: installPath,
801
- standalone: standalone,
802
- canonicalId: this.getCanonicalId(skillManifest, file),
803
- });
804
-
805
- // Add to files list
806
- this.files.push({
807
- type: 'tool',
808
- name: name,
809
- module: moduleName,
810
- path: installPath,
811
- });
812
- }
813
- }
814
-
815
- return tools;
816
- }
817
-
818
423
  /**
819
424
  * Write main manifest as YAML with installation info only
820
425
  * Fetches fresh version info for all modules
@@ -900,131 +505,6 @@ class ManifestGenerator {
900
505
  return manifestPath;
901
506
  }
902
507
 
903
- /**
904
- * Read existing CSV and preserve rows for modules NOT being updated
905
- * @param {string} csvPath - Path to existing CSV file
906
- * @param {number} moduleColumnIndex - Which column contains the module name (0-indexed)
907
- * @param {Array<string>} expectedColumns - Expected column names in order
908
- * @param {Object} defaultValues - Default values for missing columns
909
- * @returns {Array} Preserved CSV rows (without header), upgraded to match expected columns
910
- */
911
- async getPreservedCsvRows(csvPath, moduleColumnIndex, expectedColumns, defaultValues = {}) {
912
- if (!(await fs.pathExists(csvPath)) || this.preservedModules.length === 0) {
913
- return [];
914
- }
915
-
916
- try {
917
- const content = await fs.readFile(csvPath, 'utf8');
918
- const lines = content.trim().split('\n');
919
-
920
- if (lines.length < 2) {
921
- return []; // No data rows
922
- }
923
-
924
- // Parse header to understand old schema
925
- const header = lines[0];
926
- const headerColumns = header.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
927
- const oldColumns = headerColumns.map((c) => c.replaceAll(/^"|"$/g, ''));
928
-
929
- // Skip header row for data
930
- const dataRows = lines.slice(1);
931
- const preservedRows = [];
932
-
933
- for (const row of dataRows) {
934
- // Simple CSV parsing (handles quoted values)
935
- const columns = row.match(/(".*?"|[^",\s]+)(?=\s*,|\s*$)/g) || [];
936
- const cleanColumns = columns.map((c) => c.replaceAll(/^"|"$/g, ''));
937
-
938
- const moduleValue = cleanColumns[moduleColumnIndex];
939
-
940
- // Keep this row if it belongs to a preserved module
941
- if (this.preservedModules.includes(moduleValue)) {
942
- // Upgrade row to match expected schema
943
- const upgradedRow = this.upgradeRowToSchema(cleanColumns, oldColumns, expectedColumns, defaultValues);
944
- preservedRows.push(upgradedRow);
945
- }
946
- }
947
-
948
- return preservedRows;
949
- } catch (error) {
950
- await prompts.log.warn(`Failed to read existing CSV ${csvPath}: ${error.message}`);
951
- return [];
952
- }
953
- }
954
-
955
- /**
956
- * Upgrade a CSV row from old schema to new schema
957
- * @param {Array<string>} rowValues - Values from old row
958
- * @param {Array<string>} oldColumns - Old column names
959
- * @param {Array<string>} newColumns - New column names
960
- * @param {Object} defaultValues - Default values for missing columns
961
- * @returns {string} Upgraded CSV row
962
- */
963
- upgradeRowToSchema(rowValues, oldColumns, newColumns, defaultValues) {
964
- const upgradedValues = [];
965
-
966
- for (const newCol of newColumns) {
967
- const oldIndex = oldColumns.indexOf(newCol);
968
-
969
- if (oldIndex !== -1 && oldIndex < rowValues.length) {
970
- // Column exists in old schema, use its value
971
- upgradedValues.push(rowValues[oldIndex]);
972
- } else if (defaultValues[newCol] === undefined) {
973
- // Column missing, no default provided
974
- upgradedValues.push('');
975
- } else {
976
- // Column missing, use default value
977
- upgradedValues.push(defaultValues[newCol]);
978
- }
979
- }
980
-
981
- // Properly quote values and join
982
- return upgradedValues.map((v) => `"${v}"`).join(',');
983
- }
984
-
985
- /**
986
- * Write workflow manifest CSV
987
- * @returns {string} Path to the manifest file
988
- */
989
- async writeWorkflowManifest(cfgDir) {
990
- const csvPath = path.join(cfgDir, 'workflow-manifest.csv');
991
- const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
992
-
993
- // Create CSV header - standalone column removed, canonicalId added as optional column
994
- let csv = 'name,description,module,path,canonicalId\n';
995
-
996
- // Build workflows map from discovered workflows only
997
- // Old entries are NOT preserved - the manifest reflects what actually exists on disk
998
- const allWorkflows = new Map();
999
-
1000
- // Only add workflows that were actually discovered in this scan
1001
- for (const workflow of this.workflows) {
1002
- const key = `${workflow.module}:${workflow.name}`;
1003
- allWorkflows.set(key, {
1004
- name: workflow.name,
1005
- description: workflow.description,
1006
- module: workflow.module,
1007
- path: workflow.path,
1008
- canonicalId: workflow.canonicalId || '',
1009
- });
1010
- }
1011
-
1012
- // Write all workflows
1013
- for (const [, value] of allWorkflows) {
1014
- const row = [
1015
- escapeCsv(value.name),
1016
- escapeCsv(value.description),
1017
- escapeCsv(value.module),
1018
- escapeCsv(value.path),
1019
- escapeCsv(value.canonicalId),
1020
- ].join(',');
1021
- csv += row + '\n';
1022
- }
1023
-
1024
- await fs.writeFile(csvPath, csv);
1025
- return csvPath;
1026
- }
1027
-
1028
508
  /**
1029
509
  * Write skill manifest CSV
1030
510
  * @returns {string} Path to the manifest file
@@ -1125,134 +605,6 @@ class ManifestGenerator {
1125
605
  return csvPath;
1126
606
  }
1127
607
 
1128
- /**
1129
- * Write task manifest CSV
1130
- * @returns {string} Path to the manifest file
1131
- */
1132
- async writeTaskManifest(cfgDir) {
1133
- const csvPath = path.join(cfgDir, 'task-manifest.csv');
1134
- const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
1135
-
1136
- // Read existing manifest to preserve entries
1137
- const existingEntries = new Map();
1138
- if (await fs.pathExists(csvPath)) {
1139
- const content = await fs.readFile(csvPath, 'utf8');
1140
- const records = csv.parse(content, {
1141
- columns: true,
1142
- skip_empty_lines: true,
1143
- });
1144
- for (const record of records) {
1145
- existingEntries.set(`${record.module}:${record.name}`, record);
1146
- }
1147
- }
1148
-
1149
- // Create CSV header with standalone and canonicalId columns
1150
- let csvContent = 'name,displayName,description,module,path,standalone,canonicalId\n';
1151
-
1152
- // Combine existing and new tasks
1153
- const allTasks = new Map();
1154
-
1155
- // Add existing entries
1156
- for (const [key, value] of existingEntries) {
1157
- allTasks.set(key, value);
1158
- }
1159
-
1160
- // Add/update new tasks
1161
- for (const task of this.tasks) {
1162
- const key = `${task.module}:${task.name}`;
1163
- allTasks.set(key, {
1164
- name: task.name,
1165
- displayName: task.displayName,
1166
- description: task.description,
1167
- module: task.module,
1168
- path: task.path,
1169
- standalone: task.standalone,
1170
- canonicalId: task.canonicalId || '',
1171
- });
1172
- }
1173
-
1174
- // Write all tasks
1175
- for (const [, record] of allTasks) {
1176
- const row = [
1177
- escapeCsv(record.name),
1178
- escapeCsv(record.displayName),
1179
- escapeCsv(record.description),
1180
- escapeCsv(record.module),
1181
- escapeCsv(record.path),
1182
- escapeCsv(record.standalone),
1183
- escapeCsv(record.canonicalId),
1184
- ].join(',');
1185
- csvContent += row + '\n';
1186
- }
1187
-
1188
- await fs.writeFile(csvPath, csvContent);
1189
- return csvPath;
1190
- }
1191
-
1192
- /**
1193
- * Write tool manifest CSV
1194
- * @returns {string} Path to the manifest file
1195
- */
1196
- async writeToolManifest(cfgDir) {
1197
- const csvPath = path.join(cfgDir, 'tool-manifest.csv');
1198
- const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
1199
-
1200
- // Read existing manifest to preserve entries
1201
- const existingEntries = new Map();
1202
- if (await fs.pathExists(csvPath)) {
1203
- const content = await fs.readFile(csvPath, 'utf8');
1204
- const records = csv.parse(content, {
1205
- columns: true,
1206
- skip_empty_lines: true,
1207
- });
1208
- for (const record of records) {
1209
- existingEntries.set(`${record.module}:${record.name}`, record);
1210
- }
1211
- }
1212
-
1213
- // Create CSV header with standalone and canonicalId columns
1214
- let csvContent = 'name,displayName,description,module,path,standalone,canonicalId\n';
1215
-
1216
- // Combine existing and new tools
1217
- const allTools = new Map();
1218
-
1219
- // Add existing entries
1220
- for (const [key, value] of existingEntries) {
1221
- allTools.set(key, value);
1222
- }
1223
-
1224
- // Add/update new tools
1225
- for (const tool of this.tools) {
1226
- const key = `${tool.module}:${tool.name}`;
1227
- allTools.set(key, {
1228
- name: tool.name,
1229
- displayName: tool.displayName,
1230
- description: tool.description,
1231
- module: tool.module,
1232
- path: tool.path,
1233
- standalone: tool.standalone,
1234
- canonicalId: tool.canonicalId || '',
1235
- });
1236
- }
1237
-
1238
- // Write all tools
1239
- for (const [, record] of allTools) {
1240
- const row = [
1241
- escapeCsv(record.name),
1242
- escapeCsv(record.displayName),
1243
- escapeCsv(record.description),
1244
- escapeCsv(record.module),
1245
- escapeCsv(record.path),
1246
- escapeCsv(record.standalone),
1247
- escapeCsv(record.canonicalId),
1248
- ].join(',');
1249
- csvContent += row + '\n';
1250
- }
1251
-
1252
- await fs.writeFile(csvPath, csvContent);
1253
- return csvPath;
1254
- }
1255
-
1256
608
  /**
1257
609
  * Write files manifest CSV
1258
610
  */
@@ -1352,21 +704,12 @@ class ManifestGenerator {
1352
704
  continue;
1353
705
  }
1354
706
 
1355
- // Check if this looks like a module (has agents, workflows, or tasks directory)
707
+ // Check if this looks like a module (has agents directory or skill manifests)
1356
708
  const modulePath = path.join(bmadDir, entry.name);
1357
709
  const hasAgents = await fs.pathExists(path.join(modulePath, 'agents'));
1358
- const hasWorkflows = await fs.pathExists(path.join(modulePath, 'workflows'));
1359
- const hasTasks = await fs.pathExists(path.join(modulePath, 'tasks'));
1360
- const hasTools = await fs.pathExists(path.join(modulePath, 'tools'));
1361
-
1362
- // Check for skill-only modules: recursive scan for bmad-skill-manifest.yaml with type: skill
1363
- let hasSkills = false;
1364
- if (!hasAgents && !hasWorkflows && !hasTasks && !hasTools) {
1365
- hasSkills = await this._hasSkillManifestRecursive(modulePath);
1366
- }
710
+ const hasSkills = await this._hasSkillMdRecursive(modulePath);
1367
711
 
1368
- // If it has any of these directories or skill manifests, it's likely a module
1369
- if (hasAgents || hasWorkflows || hasTasks || hasTools || hasSkills) {
712
+ if (hasAgents || hasSkills) {
1370
713
  modules.push(entry.name);
1371
714
  }
1372
715
  }
@@ -1378,12 +721,12 @@ class ManifestGenerator {
1378
721
  }
1379
722
 
1380
723
  /**
1381
- * Recursively check if a directory tree contains a bmad-skill-manifest.yaml with type: skill.
724
+ * Recursively check if a directory tree contains a SKILL.md file.
1382
725
  * Skips directories starting with . or _.
1383
726
  * @param {string} dir - Directory to search
1384
- * @returns {boolean} True if a skill manifest is found
727
+ * @returns {boolean} True if a SKILL.md is found
1385
728
  */
1386
- async _hasSkillManifestRecursive(dir) {
729
+ async _hasSkillMdRecursive(dir) {
1387
730
  let entries;
1388
731
  try {
1389
732
  entries = await fs.readdir(dir, { withFileTypes: true });
@@ -1391,18 +734,14 @@ class ManifestGenerator {
1391
734
  return false;
1392
735
  }
1393
736
 
1394
- // Check for manifest in this directory
1395
- const manifest = await this.loadSkillManifest(dir);
1396
- if (manifest) {
1397
- const type = this.getArtifactType(manifest, 'workflow.md');
1398
- if (type === 'skill') return true;
1399
- }
737
+ // Check for SKILL.md in this directory
738
+ if (entries.some((e) => !e.isDirectory() && e.name === 'SKILL.md')) return true;
1400
739
 
1401
740
  // Recurse into subdirectories
1402
741
  for (const entry of entries) {
1403
742
  if (!entry.isDirectory()) continue;
1404
743
  if (entry.name.startsWith('.') || entry.name.startsWith('_')) continue;
1405
- if (await this._hasSkillManifestRecursive(path.join(dir, entry.name))) return true;
744
+ if (await this._hasSkillMdRecursive(path.join(dir, entry.name))) return true;
1406
745
  }
1407
746
 
1408
747
  return false;