bmad-method 6.2.1-next.9 → 6.2.2

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 (400) hide show
  1. package/AGENTS.md +1 -0
  2. package/README_CN.md +23 -36
  3. package/package.json +4 -6
  4. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-analyst/bmad-skill-manifest.yaml +1 -2
  5. package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/bmad-skill-manifest.yaml +1 -2
  6. package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/SKILL.md +2 -3
  7. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/SKILL.md +1 -1
  8. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/SKILL.md +1 -1
  9. package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/SKILL.md +1 -1
  10. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-pm/bmad-skill-manifest.yaml +1 -2
  11. package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-ux-designer/bmad-skill-manifest.yaml +1 -2
  12. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +1 -1
  13. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +1 -1
  14. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +1 -1
  15. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +1 -1
  16. package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +1 -1
  17. package/src/{bmm/agents → bmm-skills/3-solutioning}/bmad-agent-architect/bmad-skill-manifest.yaml +1 -2
  18. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-dev/bmad-skill-manifest.yaml +1 -2
  19. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-qa/bmad-skill-manifest.yaml +1 -2
  20. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-quick-flow-solo-dev/SKILL.md +1 -3
  21. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +1 -2
  22. package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-sm/bmad-skill-manifest.yaml +1 -2
  23. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/steps/step-01-gather-context.md +3 -2
  24. package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-02-review.md +34 -0
  25. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/steps/step-03-triage.md +7 -8
  26. package/src/bmm-skills/4-implementation/bmad-code-review/steps/step-04-present.md +129 -0
  27. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/workflow.md +1 -0
  28. package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/workflow.md +4 -4
  29. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/SKILL.md +1 -1
  30. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/tech-spec-template.md → bmm-skills/4-implementation/bmad-quick-dev/spec-template.md} +0 -2
  31. 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 +22 -8
  32. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-02-plan.md +3 -3
  33. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-03-implement.md +6 -0
  34. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-05-present.md +8 -6
  35. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-oneshot.md +2 -2
  36. package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/workflow.md +3 -3
  37. package/src/bmm-skills/module-help.csv +30 -0
  38. package/src/{core/skills/bmad-advanced-elicitation/workflow.md → core-skills/bmad-advanced-elicitation/SKILL.md} +3 -1
  39. package/src/{core/skills/bmad-editorial-review-prose/workflow.md → core-skills/bmad-editorial-review-prose/SKILL.md} +5 -0
  40. package/src/{core/skills/bmad-editorial-review-structure/workflow.md → core-skills/bmad-editorial-review-structure/SKILL.md} +5 -0
  41. package/src/core-skills/bmad-help/SKILL.md +73 -0
  42. package/src/{core/skills/bmad-index-docs/workflow.md → core-skills/bmad-index-docs/SKILL.md} +5 -0
  43. package/src/{core/skills/bmad-review-adversarial-general/workflow.md → core-skills/bmad-review-adversarial-general/SKILL.md} +5 -0
  44. package/src/{core/skills/bmad-review-edge-case-hunter/workflow.md → core-skills/bmad-review-edge-case-hunter/SKILL.md} +5 -0
  45. package/src/{core/skills/bmad-shard-doc/workflow.md → core-skills/bmad-shard-doc/SKILL.md} +5 -0
  46. package/src/core-skills/module-help.csv +11 -0
  47. package/tools/bmad-npx-wrapper.js +2 -2
  48. package/tools/cli/commands/install.js +1 -8
  49. package/tools/cli/external-official-modules.yaml +1 -1
  50. package/tools/cli/installers/lib/core/config-collector.js +110 -23
  51. package/tools/cli/installers/lib/core/dependency-resolver.js +11 -11
  52. package/tools/cli/installers/lib/core/installer.js +4 -214
  53. package/tools/cli/installers/lib/core/manifest-generator.js +122 -833
  54. package/tools/cli/installers/lib/core/manifest.js +2 -2
  55. package/tools/cli/installers/lib/custom/handler.js +1 -247
  56. package/tools/cli/installers/lib/ide/_base-ide.js +0 -16
  57. package/tools/cli/installers/lib/ide/_config-driven.js +13 -168
  58. package/tools/cli/installers/lib/ide/manager.js +2 -7
  59. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +0 -1
  60. package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +27 -0
  61. package/tools/cli/installers/lib/ide/shared/skill-manifest.js +1 -19
  62. package/tools/cli/installers/lib/modules/manager.js +12 -459
  63. package/tools/cli/lib/project-root.js +5 -5
  64. package/tools/cli/lib/ui.js +0 -19
  65. package/tools/skill-validator.md +52 -22
  66. package/tools/validate-skills.js +736 -0
  67. package/src/bmm/data/project-context-template.md +0 -26
  68. package/src/bmm/module-help.csv +0 -32
  69. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md +0 -6
  70. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml +0 -1
  71. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md +0 -10
  72. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md +0 -170
  73. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md +0 -158
  74. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md +0 -193
  75. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md +0 -196
  76. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md +0 -199
  77. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md +0 -213
  78. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md +0 -159
  79. package/src/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md +0 -55
  80. package/src/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml +0 -1
  81. package/src/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml +0 -1
  82. package/src/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml +0 -1
  83. package/src/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml +0 -1
  84. package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +0 -182
  85. package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +0 -237
  86. package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +0 -249
  87. package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +0 -259
  88. package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +0 -177
  89. package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +0 -476
  90. package/src/bmm/workflows/1-analysis/research/research.template.md +0 -29
  91. package/src/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml +0 -1
  92. package/src/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml +0 -1
  93. package/src/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml +0 -1
  94. package/src/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml +0 -1
  95. package/src/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml +0 -1
  96. package/src/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml +0 -1
  97. package/src/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml +0 -1
  98. package/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md +0 -41
  99. package/src/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md +0 -38
  100. package/src/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml +0 -1
  101. package/src/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml +0 -1
  102. package/src/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml +0 -1
  103. package/src/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml +0 -1
  104. package/src/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml +0 -1
  105. package/src/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml +0 -1
  106. package/src/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml +0 -1
  107. package/src/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml +0 -1
  108. package/src/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml +0 -1
  109. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md +0 -6
  110. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml +0 -1
  111. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md +0 -169
  112. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md +0 -114
  113. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md +0 -107
  114. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md +0 -107
  115. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md +0 -94
  116. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md +0 -144
  117. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md +0 -38
  118. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/bmad-skill-manifest.yaml +0 -1
  119. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md +0 -6
  120. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml +0 -1
  121. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md +0 -185
  122. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md +0 -140
  123. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md +0 -123
  124. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md +0 -195
  125. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md +0 -74
  126. package/src/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md +0 -73
  127. package/src/core/module-help.csv +0 -11
  128. package/src/core/skills/bmad-advanced-elicitation/SKILL.md +0 -6
  129. package/src/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml +0 -1
  130. package/src/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml +0 -1
  131. package/src/core/skills/bmad-distillator/bmad-skill-manifest.yaml +0 -15
  132. package/src/core/skills/bmad-editorial-review-prose/SKILL.md +0 -6
  133. package/src/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml +0 -1
  134. package/src/core/skills/bmad-editorial-review-structure/SKILL.md +0 -6
  135. package/src/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml +0 -1
  136. package/src/core/skills/bmad-help/SKILL.md +0 -6
  137. package/src/core/skills/bmad-help/bmad-skill-manifest.yaml +0 -1
  138. package/src/core/skills/bmad-help/workflow.md +0 -88
  139. package/src/core/skills/bmad-index-docs/SKILL.md +0 -6
  140. package/src/core/skills/bmad-index-docs/bmad-skill-manifest.yaml +0 -1
  141. package/src/core/skills/bmad-init/bmad-skill-manifest.yaml +0 -1
  142. package/src/core/skills/bmad-party-mode/bmad-skill-manifest.yaml +0 -1
  143. package/src/core/skills/bmad-review-adversarial-general/SKILL.md +0 -6
  144. package/src/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml +0 -1
  145. package/src/core/skills/bmad-review-edge-case-hunter/SKILL.md +0 -6
  146. package/src/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml +0 -1
  147. package/src/core/skills/bmad-shard-doc/SKILL.md +0 -6
  148. package/src/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml +0 -1
  149. package/src/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml +0 -1
  150. package/src/utility/agent-components/activation-rules.txt +0 -6
  151. package/src/utility/agent-components/activation-steps.txt +0 -14
  152. package/src/utility/agent-components/agent-command-header.md +0 -1
  153. package/src/utility/agent-components/agent.customize.template.yaml +0 -41
  154. package/src/utility/agent-components/handler-action.txt +0 -4
  155. package/src/utility/agent-components/handler-data.txt +0 -5
  156. package/src/utility/agent-components/handler-exec.txt +0 -6
  157. package/src/utility/agent-components/handler-multi.txt +0 -13
  158. package/src/utility/agent-components/handler-tmpl.txt +0 -5
  159. package/src/utility/agent-components/menu-handlers.txt +0 -6
  160. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +0 -368
  161. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +0 -179
  162. package/tools/cli/lib/activation-builder.js +0 -165
  163. package/tools/cli/lib/agent/compiler.js +0 -516
  164. package/tools/cli/lib/agent/installer.js +0 -680
  165. package/tools/cli/lib/agent/template-engine.js +0 -152
  166. package/tools/cli/lib/agent-analyzer.js +0 -97
  167. package/tools/cli/lib/agent-party-generator.js +0 -194
  168. package/tools/cli/lib/xml-handler.js +0 -177
  169. package/tools/cli/lib/xml-to-markdown.js +0 -82
  170. package/tools/cli/lib/yaml-xml-builder.js +0 -570
  171. package/tools/schema/agent.js +0 -489
  172. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-analyst/SKILL.md +0 -0
  173. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/SKILL.md +0 -0
  174. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/explain-concept.md +0 -0
  175. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/mermaid-gen.md +0 -0
  176. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/validate-doc.md +0 -0
  177. /package/src/{bmm/agents → bmm-skills/1-analysis}/bmad-agent-tech-writer/write-document.md +0 -0
  178. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/SKILL.md +0 -0
  179. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/checklist.md +0 -0
  180. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/documentation-requirements.csv +0 -0
  181. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/instructions.md +0 -0
  182. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/deep-dive-template.md +0 -0
  183. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/index-template.md +0 -0
  184. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/project-overview-template.md +0 -0
  185. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/project-scan-report-schema.json +0 -0
  186. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/templates/source-tree-template.md +0 -0
  187. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflow.md +0 -0
  188. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/deep-dive-instructions.md +0 -0
  189. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/deep-dive-workflow.md +0 -0
  190. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/full-scan-instructions.md +0 -0
  191. /package/src/{bmm/workflows → bmm-skills/1-analysis}/bmad-document-project/workflows/full-scan-workflow.md +0 -0
  192. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/artifact-analyzer.md +0 -0
  193. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/opportunity-reviewer.md +0 -0
  194. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/skeptic-reviewer.md +0 -0
  195. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/agents/web-researcher.md +0 -0
  196. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/bmad-manifest.json +0 -0
  197. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/contextual-discovery.md +0 -0
  198. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/draft-and-review.md +0 -0
  199. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/finalize.md +0 -0
  200. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/prompts/guided-elicitation.md +0 -0
  201. /package/src/{bmm/workflows/1-analysis/bmad-product-brief-preview → bmm-skills/1-analysis/bmad-product-brief}/resources/brief-template.md +0 -0
  202. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +0 -0
  203. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -0
  204. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -0
  205. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -0
  206. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -0
  207. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -0
  208. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/research.template.md +0 -0
  209. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-domain-research/workflow.md +0 -0
  210. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/research.template.md +0 -0
  211. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-01-init.md +0 -0
  212. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +0 -0
  213. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +0 -0
  214. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +0 -0
  215. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +0 -0
  216. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +0 -0
  217. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-market-research/workflow.md +0 -0
  218. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/research.template.md +0 -0
  219. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +0 -0
  220. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -0
  221. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -0
  222. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -0
  223. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -0
  224. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -0
  225. /package/src/{bmm/workflows → bmm-skills}/1-analysis/research/bmad-technical-research/workflow.md +0 -0
  226. /package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-pm/SKILL.md +0 -0
  227. /package/src/{bmm/agents → bmm-skills/2-plan-workflows}/bmad-agent-ux-designer/SKILL.md +0 -0
  228. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/SKILL.md +0 -0
  229. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/domain-complexity.csv +0 -0
  230. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/prd-purpose.md +0 -0
  231. /package/src/{bmm/workflows/2-plan-workflows/bmad-validate-prd → bmm-skills/2-plan-workflows/bmad-create-prd}/data/project-types.csv +0 -0
  232. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-01-init.md +0 -0
  233. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-01b-continue.md +0 -0
  234. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02-discovery.md +0 -0
  235. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02b-vision.md +0 -0
  236. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -0
  237. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-03-success.md +0 -0
  238. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-04-journeys.md +0 -0
  239. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-05-domain.md +0 -0
  240. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-06-innovation.md +0 -0
  241. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-07-project-type.md +0 -0
  242. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-08-scoping.md +0 -0
  243. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-09-functional.md +0 -0
  244. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -0
  245. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-11-polish.md +0 -0
  246. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/steps-c/step-12-complete.md +0 -0
  247. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/templates/prd-template.md +0 -0
  248. /package/src/{core/tasks → bmm-skills/2-plan-workflows}/bmad-create-prd/workflow.md +0 -0
  249. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/SKILL.md +0 -0
  250. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md +0 -0
  251. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md +0 -0
  252. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md +0 -0
  253. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md +0 -0
  254. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -0
  255. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md +0 -0
  256. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md +0 -0
  257. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -0
  258. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -0
  259. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md +0 -0
  260. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -0
  261. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -0
  262. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -0
  263. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -0
  264. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md +0 -0
  265. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/ux-design-template.md +0 -0
  266. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-create-ux-design/workflow.md +0 -0
  267. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/SKILL.md +0 -0
  268. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-edit-prd/workflow.md +0 -0
  269. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/SKILL.md +0 -0
  270. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/domain-complexity.csv +0 -0
  271. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/prd-purpose.md +0 -0
  272. /package/src/{bmm/workflows/2-plan-workflows/create-prd → bmm-skills/2-plan-workflows/bmad-validate-prd}/data/project-types.csv +0 -0
  273. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -0
  274. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -0
  275. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -0
  276. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -0
  277. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  278. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  279. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  280. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  281. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  282. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  283. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -0
  284. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  285. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  286. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -0
  287. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/bmad-validate-prd/workflow.md +0 -0
  288. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/domain-complexity.csv +0 -0
  289. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/prd-purpose.md +0 -0
  290. /package/src/{core/tasks/bmad-create-prd → bmm-skills/2-plan-workflows/create-prd}/data/project-types.csv +0 -0
  291. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +0 -0
  292. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +0 -0
  293. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +0 -0
  294. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +0 -0
  295. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -0
  296. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +0 -0
  297. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +0 -0
  298. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -0
  299. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -0
  300. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +0 -0
  301. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +0 -0
  302. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -0
  303. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +0 -0
  304. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +0 -0
  305. /package/src/{bmm/workflows → bmm-skills}/2-plan-workflows/create-prd/workflow-validate-prd.md +0 -0
  306. /package/src/{bmm/agents → bmm-skills/3-solutioning}/bmad-agent-architect/SKILL.md +0 -0
  307. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/SKILL.md +0 -0
  308. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -0
  309. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -0
  310. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -0
  311. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  312. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  313. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -0
  314. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  315. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-check-implementation-readiness/workflow.md +0 -0
  316. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/SKILL.md +0 -0
  317. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/architecture-decision-template.md +0 -0
  318. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/data/domain-complexity.csv +0 -0
  319. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/data/project-types.csv +0 -0
  320. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-01-init.md +0 -0
  321. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md +0 -0
  322. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-02-context.md +0 -0
  323. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-03-starter.md +0 -0
  324. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md +0 -0
  325. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md +0 -0
  326. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-06-structure.md +0 -0
  327. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-07-validation.md +0 -0
  328. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +0 -0
  329. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-architecture/workflow.md +0 -0
  330. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/SKILL.md +0 -0
  331. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  332. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -0
  333. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  334. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -0
  335. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md +0 -0
  336. /package/src/{bmm/workflows → bmm-skills}/3-solutioning/bmad-create-epics-and-stories/workflow.md +0 -0
  337. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/SKILL.md +0 -0
  338. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/project-context-template.md +0 -0
  339. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-01-discover.md +0 -0
  340. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-02-generate.md +0 -0
  341. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/steps/step-03-complete.md +0 -0
  342. /package/src/{bmm/workflows → bmm-skills/3-solutioning}/bmad-generate-project-context/workflow.md +0 -0
  343. /package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-dev/SKILL.md +0 -0
  344. /package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-qa/SKILL.md +0 -0
  345. /package/src/{bmm/agents → bmm-skills/4-implementation}/bmad-agent-sm/SKILL.md +0 -0
  346. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-code-review/SKILL.md +0 -0
  347. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/SKILL.md +0 -0
  348. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-correct-course/checklist.md +0 -0
  349. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/SKILL.md +0 -0
  350. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/checklist.md +0 -0
  351. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/discover-inputs.md +0 -0
  352. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/template.md +0 -0
  353. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-create-story/workflow.md +0 -0
  354. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/SKILL.md +0 -0
  355. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/checklist.md +0 -0
  356. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-dev-story/workflow.md +0 -0
  357. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/SKILL.md +0 -0
  358. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/checklist.md +0 -0
  359. /package/src/{bmm/workflows → bmm-skills/4-implementation}/bmad-qa-generate-e2e-tests/workflow.md +0 -0
  360. /package/src/{bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview → bmm-skills/4-implementation/bmad-quick-dev}/step-04-review.md +0 -0
  361. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-retrospective/SKILL.md +0 -0
  362. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-retrospective/workflow.md +0 -0
  363. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/SKILL.md +0 -0
  364. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/checklist.md +0 -0
  365. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +0 -0
  366. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-planning/workflow.md +0 -0
  367. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-status/SKILL.md +0 -0
  368. /package/src/{bmm/workflows → bmm-skills}/4-implementation/bmad-sprint-status/workflow.md +0 -0
  369. /package/src/{bmm → bmm-skills}/module.yaml +0 -0
  370. /package/src/{core/skills → core-skills}/bmad-advanced-elicitation/methods.csv +0 -0
  371. /package/src/{core/skills → core-skills}/bmad-brainstorming/SKILL.md +0 -0
  372. /package/src/{core/skills → core-skills}/bmad-brainstorming/brain-methods.csv +0 -0
  373. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-01-session-setup.md +0 -0
  374. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-01b-continue.md +0 -0
  375. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02a-user-selected.md +0 -0
  376. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -0
  377. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02c-random-selection.md +0 -0
  378. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -0
  379. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-03-technique-execution.md +0 -0
  380. /package/src/{core/skills → core-skills}/bmad-brainstorming/steps/step-04-idea-organization.md +0 -0
  381. /package/src/{core/skills → core-skills}/bmad-brainstorming/template.md +0 -0
  382. /package/src/{core/skills → core-skills}/bmad-brainstorming/workflow.md +0 -0
  383. /package/src/{core/skills → core-skills}/bmad-distillator/SKILL.md +0 -0
  384. /package/src/{core/skills → core-skills}/bmad-distillator/agents/distillate-compressor.md +0 -0
  385. /package/src/{core/skills → core-skills}/bmad-distillator/agents/round-trip-reconstructor.md +0 -0
  386. /package/src/{core/skills → core-skills}/bmad-distillator/resources/compression-rules.md +0 -0
  387. /package/src/{core/skills → core-skills}/bmad-distillator/resources/distillate-format-reference.md +0 -0
  388. /package/src/{core/skills → core-skills}/bmad-distillator/resources/splitting-strategy.md +0 -0
  389. /package/src/{core/skills → core-skills}/bmad-distillator/scripts/analyze_sources.py +0 -0
  390. /package/src/{core/skills → core-skills}/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -0
  391. /package/src/{core/skills → core-skills}/bmad-init/SKILL.md +0 -0
  392. /package/src/{core/skills → core-skills}/bmad-init/resources/core-module.yaml +0 -0
  393. /package/src/{core/skills → core-skills}/bmad-init/scripts/bmad_init.py +0 -0
  394. /package/src/{core/skills → core-skills}/bmad-init/scripts/tests/test_bmad_init.py +0 -0
  395. /package/src/{core/skills → core-skills}/bmad-party-mode/SKILL.md +0 -0
  396. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-01-agent-loading.md +0 -0
  397. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -0
  398. /package/src/{core/skills → core-skills}/bmad-party-mode/steps/step-03-graceful-exit.md +0 -0
  399. /package/src/{core/skills → core-skills}/bmad-party-mode/workflow.md +0 -0
  400. /package/src/{core → core-skills}/module.yaml +0 -0
@@ -1,152 +0,0 @@
1
- /**
2
- * Template Engine for BMAD Agent Install Configuration
3
- * Processes {{variable}}, {{#if}}, {{#unless}}, and {{/if}} blocks
4
- */
5
-
6
- /**
7
- * Process all template syntax in a string
8
- * @param {string} content - Content with template syntax
9
- * @param {Object} variables - Key-value pairs from install_config answers
10
- * @returns {string} Processed content
11
- */
12
- function processTemplate(content, variables = {}) {
13
- let result = content;
14
-
15
- // Process conditionals first (they may contain variables)
16
- result = processConditionals(result, variables);
17
-
18
- // Then process simple variable replacements
19
- result = processVariables(result, variables);
20
-
21
- // Clean up any empty lines left by removed conditionals
22
- result = cleanupEmptyLines(result);
23
-
24
- return result;
25
- }
26
-
27
- /**
28
- * Process {{#if}}, {{#unless}}, {{/if}}, {{/unless}} blocks
29
- */
30
- function processConditionals(content, variables) {
31
- let result = content;
32
-
33
- // Process {{#if variable == "value"}} blocks
34
- // Handle both regular quotes and JSON-escaped quotes (\")
35
- const ifEqualsPattern = /\{\{#if\s+(\w+)\s*==\s*\\?"([^"\\]+)\\?"\s*\}\}([\s\S]*?)\{\{\/if\}\}/g;
36
- result = result.replaceAll(ifEqualsPattern, (match, varName, value, block) => {
37
- return variables[varName] === value ? block : '';
38
- });
39
-
40
- // Process {{#if variable}} blocks (boolean or truthy check)
41
- const ifBoolPattern = /\{\{#if\s+(\w+)\s*\}\}([\s\S]*?)\{\{\/if\}\}/g;
42
- result = result.replaceAll(ifBoolPattern, (match, varName, block) => {
43
- const val = variables[varName];
44
- // Treat as truthy: true, non-empty string, non-zero number
45
- const isTruthy = val === true || (typeof val === 'string' && val.length > 0) || (typeof val === 'number' && val !== 0);
46
- return isTruthy ? block : '';
47
- });
48
-
49
- // Process {{#unless variable}} blocks (inverse of if)
50
- const unlessPattern = /\{\{#unless\s+(\w+)\s*\}\}([\s\S]*?)\{\{\/unless\}\}/g;
51
- result = result.replaceAll(unlessPattern, (match, varName, block) => {
52
- const val = variables[varName];
53
- const isFalsy = val === false || val === '' || val === null || val === undefined || val === 0;
54
- return isFalsy ? block : '';
55
- });
56
-
57
- return result;
58
- }
59
-
60
- /**
61
- * Process {{variable}} replacements
62
- */
63
- function processVariables(content, variables) {
64
- let result = content;
65
-
66
- // Replace {{variable}} with value
67
- const varPattern = /\{\{(\w+)\}\}/g;
68
- result = result.replaceAll(varPattern, (match, varName) => {
69
- if (Object.hasOwn(variables, varName)) {
70
- return String(variables[varName]);
71
- }
72
- // If variable not found, leave as-is (might be runtime variable like {user_name})
73
- return match;
74
- });
75
-
76
- return result;
77
- }
78
-
79
- /**
80
- * Clean up excessive empty lines left after removing conditional blocks
81
- */
82
- function cleanupEmptyLines(content) {
83
- // Replace 3+ consecutive newlines with 2
84
- return content.replaceAll(/\n{3,}/g, '\n\n');
85
- }
86
-
87
- /**
88
- * Extract install_config from agent YAML object
89
- * @param {Object} agentYaml - Parsed agent YAML
90
- * @returns {Object|null} install_config section or null
91
- */
92
- function extractInstallConfig(agentYaml) {
93
- return agentYaml?.agent?.install_config || null;
94
- }
95
-
96
- /**
97
- * Remove install_config from agent YAML (after processing)
98
- * @param {Object} agentYaml - Parsed agent YAML
99
- * @returns {Object} Agent YAML without install_config
100
- */
101
- function stripInstallConfig(agentYaml) {
102
- const result = structuredClone(agentYaml);
103
- if (result.agent) {
104
- delete result.agent.install_config;
105
- }
106
- return result;
107
- }
108
-
109
- /**
110
- * Process entire agent YAML object with template variables
111
- * @param {Object} agentYaml - Parsed agent YAML
112
- * @param {Object} variables - Answers from install_config questions
113
- * @returns {Object} Processed agent YAML
114
- */
115
- function processAgentYaml(agentYaml, variables) {
116
- // Convert to JSON string, process templates, parse back
117
- const jsonString = JSON.stringify(agentYaml, null, 2);
118
- const processed = processTemplate(jsonString, variables);
119
- return JSON.parse(processed);
120
- }
121
-
122
- /**
123
- * Get default values from install_config questions
124
- * @param {Object} installConfig - install_config section
125
- * @returns {Object} Default values keyed by variable name
126
- */
127
- function getDefaultValues(installConfig) {
128
- const defaults = {};
129
-
130
- if (!installConfig?.questions) {
131
- return defaults;
132
- }
133
-
134
- for (const question of installConfig.questions) {
135
- if (question.var && question.default !== undefined) {
136
- defaults[question.var] = question.default;
137
- }
138
- }
139
-
140
- return defaults;
141
- }
142
-
143
- module.exports = {
144
- processTemplate,
145
- processConditionals,
146
- processVariables,
147
- extractInstallConfig,
148
- stripInstallConfig,
149
- processAgentYaml,
150
- getDefaultValues,
151
- cleanupEmptyLines,
152
- };
@@ -1,97 +0,0 @@
1
- const yaml = require('yaml');
2
- const fs = require('fs-extra');
3
-
4
- /**
5
- * Analyzes agent YAML files to detect which handlers are needed
6
- */
7
- class AgentAnalyzer {
8
- /**
9
- * Analyze an agent YAML structure to determine which handlers it needs
10
- * @param {Object} agentYaml - Parsed agent YAML object
11
- * @returns {Object} Profile of needed handlers
12
- */
13
- analyzeAgentObject(agentYaml) {
14
- const profile = {
15
- usedAttributes: new Set(),
16
- hasPrompts: false,
17
- menuItems: [],
18
- };
19
-
20
- // Check if agent has prompts section
21
- if (agentYaml.agent && agentYaml.agent.prompts) {
22
- profile.hasPrompts = true;
23
- }
24
-
25
- // Analyze menu items (support both 'menu' and legacy 'commands')
26
- const menuItems = agentYaml.agent?.menu || agentYaml.agent?.commands || [];
27
-
28
- for (const item of menuItems) {
29
- // Track the menu item
30
- profile.menuItems.push(item);
31
-
32
- // Check for multi format items
33
- if (item.multi && item.triggers) {
34
- profile.usedAttributes.add('multi');
35
-
36
- // Also check attributes in nested handlers
37
- for (const triggerGroup of item.triggers) {
38
- for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
39
- if (Array.isArray(execArray)) {
40
- for (const exec of execArray) {
41
- if (exec.route) {
42
- profile.usedAttributes.add('exec');
43
- }
44
- if (exec.action) profile.usedAttributes.add('action');
45
- if (exec.type && ['exec', 'action'].includes(exec.type)) {
46
- profile.usedAttributes.add(exec.type);
47
- }
48
- }
49
- }
50
- }
51
- }
52
- } else {
53
- // Check for each possible attribute in legacy items
54
- if (item.exec) {
55
- profile.usedAttributes.add('exec');
56
- }
57
- if (item.tmpl) {
58
- profile.usedAttributes.add('tmpl');
59
- }
60
- if (item.data) {
61
- profile.usedAttributes.add('data');
62
- }
63
- if (item.action) {
64
- profile.usedAttributes.add('action');
65
- }
66
- }
67
- }
68
-
69
- // Convert Set to Array for easier use
70
- profile.usedAttributes = [...profile.usedAttributes];
71
-
72
- return profile;
73
- }
74
-
75
- /**
76
- * Analyze an agent YAML file
77
- * @param {string} filePath - Path to agent YAML file
78
- * @returns {Object} Profile of needed handlers
79
- */
80
- async analyzeAgentFile(filePath) {
81
- const content = await fs.readFile(filePath, 'utf8');
82
- const agentYaml = yaml.parse(content);
83
- return this.analyzeAgentObject(agentYaml);
84
- }
85
-
86
- /**
87
- * Check if an agent needs a specific handler
88
- * @param {Object} profile - Agent profile from analyze
89
- * @param {string} handlerType - Handler type to check
90
- * @returns {boolean} True if handler is needed
91
- */
92
- needsHandler(profile, handlerType) {
93
- return profile.usedAttributes.includes(handlerType);
94
- }
95
- }
96
-
97
- module.exports = { AgentAnalyzer };
@@ -1,194 +0,0 @@
1
- const path = require('node:path');
2
- const fs = require('fs-extra');
3
- const { escapeXml } = require('../../lib/xml-utils');
4
-
5
- const AgentPartyGenerator = {
6
- /**
7
- * Generate agent-manifest.csv content
8
- * @param {Array} agentDetails - Array of agent details
9
- * @param {Object} options - Generation options
10
- * @returns {string} XML content
11
- */
12
- generateAgentParty(agentDetails, options = {}) {
13
- const { forWeb = false } = options;
14
-
15
- // Group agents by module
16
- const agentsByModule = {
17
- bmm: [],
18
- cis: [],
19
- core: [],
20
- custom: [],
21
- };
22
-
23
- for (const agent of agentDetails) {
24
- const moduleKey = agentsByModule[agent.module] ? agent.module : 'custom';
25
- agentsByModule[moduleKey].push(agent);
26
- }
27
-
28
- // Build XML content
29
- let xmlContent = `<!-- Powered by BMAD-CORE™ -->
30
- <!-- Agent Manifest - Generated during BMAD ${forWeb ? 'bundling' : 'installation'} -->
31
- <!-- This file contains a summary of all ${forWeb ? 'bundled' : 'installed'} agents for quick reference -->
32
- <manifest id="bmad/_config/agent-manifest.csv" version="1.0" generated="${new Date().toISOString()}">
33
- <description>
34
- Complete roster of ${forWeb ? 'bundled' : 'installed'} BMAD agents with summarized personas for efficient multi-agent orchestration.
35
- Used by party-mode and other multi-agent coordination features.
36
- </description>
37
- `;
38
-
39
- // Add agents by module
40
- for (const [module, agents] of Object.entries(agentsByModule)) {
41
- if (agents.length === 0) continue;
42
-
43
- const moduleTitle =
44
- module === 'bmm' ? 'BMM Module' : module === 'cis' ? 'CIS Module' : module === 'core' ? 'Core Module' : 'Custom Module';
45
-
46
- xmlContent += `\n <!-- ${moduleTitle} Agents -->\n`;
47
-
48
- for (const agent of agents) {
49
- xmlContent += ` <agent id="${agent.id}" name="${agent.name}" title="${agent.title || ''}" icon="${agent.icon || ''}">
50
- <persona>
51
- <role>${escapeXml(agent.role || '')}</role>
52
- <identity>${escapeXml(agent.identity || '')}</identity>
53
- <communication_style>${escapeXml(agent.communicationStyle || '')}</communication_style>
54
- <principles>${agent.principles || ''}</principles>
55
- </persona>
56
- </agent>\n`;
57
- }
58
- }
59
-
60
- // Add statistics
61
- const totalAgents = agentDetails.length;
62
- const moduleList = Object.keys(agentsByModule)
63
- .filter((m) => agentsByModule[m].length > 0)
64
- .join(', ');
65
-
66
- xmlContent += `\n <statistics>
67
- <total_agents>${totalAgents}</total_agents>
68
- <modules>${moduleList}</modules>
69
- <last_updated>${new Date().toISOString()}</last_updated>
70
- </statistics>
71
- </manifest>`;
72
-
73
- return xmlContent;
74
- },
75
-
76
- /**
77
- * Extract agent details from XML content
78
- * @param {string} content - Full agent file content (markdown with XML)
79
- * @param {string} moduleName - Module name
80
- * @param {string} agentName - Agent name
81
- * @returns {Object} Agent details
82
- */
83
- extractAgentDetails(content, moduleName, agentName) {
84
- try {
85
- // Extract agent XML block
86
- const agentMatch = content.match(/<agent[^>]*>([\s\S]*?)<\/agent>/);
87
- if (!agentMatch) return null;
88
-
89
- const agentXml = agentMatch[0];
90
-
91
- // Extract attributes from opening tag
92
- const nameMatch = agentXml.match(/name="([^"]*)"/);
93
- const titleMatch = agentXml.match(/title="([^"]*)"/);
94
- const iconMatch = agentXml.match(/icon="([^"]*)"/);
95
-
96
- // Extract persona elements - now we just copy them as-is
97
- const roleMatch = agentXml.match(/<role>([\s\S]*?)<\/role>/);
98
- const identityMatch = agentXml.match(/<identity>([\s\S]*?)<\/identity>/);
99
- const styleMatch = agentXml.match(/<communication_style>([\s\S]*?)<\/communication_style>/);
100
- const principlesMatch = agentXml.match(/<principles>([\s\S]*?)<\/principles>/);
101
-
102
- return {
103
- id: `bmad/${moduleName}/agents/${agentName}.md`,
104
- name: nameMatch ? nameMatch[1] : agentName,
105
- title: titleMatch ? titleMatch[1] : 'Agent',
106
- icon: iconMatch ? iconMatch[1] : '🤖',
107
- module: moduleName,
108
- role: roleMatch ? roleMatch[1].trim() : '',
109
- identity: identityMatch ? identityMatch[1].trim() : '',
110
- communicationStyle: styleMatch ? styleMatch[1].trim() : '',
111
- principles: principlesMatch ? principlesMatch[1].trim() : '',
112
- };
113
- } catch (error) {
114
- console.error(`Error extracting details for agent ${agentName}:`, error);
115
- return null;
116
- }
117
- },
118
-
119
- /**
120
- * Extract attribute from XML tag
121
- */
122
- extractAttribute(xml, tagName, attrName) {
123
- const regex = new RegExp(`<${tagName}[^>]*\\s${attrName}="([^"]*)"`, 'i');
124
- const match = xml.match(regex);
125
- return match ? match[1] : '';
126
- },
127
-
128
- /**
129
- * Apply config overrides to agent details
130
- * @param {Object} details - Original agent details
131
- * @param {string} configContent - Config file content
132
- * @returns {Object} Agent details with overrides applied
133
- */
134
- applyConfigOverrides(details, configContent) {
135
- try {
136
- // Extract agent-config XML block
137
- const configMatch = configContent.match(/<agent-config>([\s\S]*?)<\/agent-config>/);
138
- if (!configMatch) return details;
139
-
140
- const configXml = configMatch[0];
141
-
142
- // Extract override values
143
- const nameMatch = configXml.match(/<name>([\s\S]*?)<\/name>/);
144
- const titleMatch = configXml.match(/<title>([\s\S]*?)<\/title>/);
145
- const roleMatch = configXml.match(/<role>([\s\S]*?)<\/role>/);
146
- const identityMatch = configXml.match(/<identity>([\s\S]*?)<\/identity>/);
147
- const styleMatch = configXml.match(/<communication_style>([\s\S]*?)<\/communication_style>/);
148
- const principlesMatch = configXml.match(/<principles>([\s\S]*?)<\/principles>/);
149
-
150
- // Apply overrides only if values are non-empty
151
- if (nameMatch && nameMatch[1].trim()) {
152
- details.name = nameMatch[1].trim();
153
- }
154
-
155
- if (titleMatch && titleMatch[1].trim()) {
156
- details.title = titleMatch[1].trim();
157
- }
158
-
159
- if (roleMatch && roleMatch[1].trim()) {
160
- details.role = roleMatch[1].trim();
161
- }
162
-
163
- if (identityMatch && identityMatch[1].trim()) {
164
- details.identity = identityMatch[1].trim();
165
- }
166
-
167
- if (styleMatch && styleMatch[1].trim()) {
168
- details.communicationStyle = styleMatch[1].trim();
169
- }
170
-
171
- if (principlesMatch && principlesMatch[1].trim()) {
172
- // Principles are now just copied as-is (narrative paragraph)
173
- details.principles = principlesMatch[1].trim();
174
- }
175
-
176
- return details;
177
- } catch (error) {
178
- console.error(`Error applying config overrides:`, error);
179
- return details;
180
- }
181
- },
182
-
183
- /**
184
- * Write agent-manifest.csv to file
185
- */
186
- async writeAgentParty(filePath, agentDetails, options = {}) {
187
- const content = this.generateAgentParty(agentDetails, options);
188
- await fs.ensureDir(path.dirname(filePath));
189
- await fs.writeFile(filePath, content, 'utf8');
190
- return content;
191
- },
192
- };
193
-
194
- module.exports = { AgentPartyGenerator };
@@ -1,177 +0,0 @@
1
- const xml2js = require('xml2js');
2
- const fs = require('fs-extra');
3
- const path = require('node:path');
4
- const { getProjectRoot, getSourcePath } = require('./project-root');
5
- const { YamlXmlBuilder } = require('./yaml-xml-builder');
6
-
7
- /**
8
- * XML utility functions for BMAD installer
9
- * Now supports both legacy XML agents and new YAML-based agents
10
- */
11
- class XmlHandler {
12
- constructor() {
13
- this.parser = new xml2js.Parser({
14
- preserveChildrenOrder: true,
15
- explicitChildren: true,
16
- explicitArray: false,
17
- trim: false,
18
- normalizeTags: false,
19
- attrkey: '$',
20
- charkey: '_',
21
- });
22
-
23
- this.builder = new xml2js.Builder({
24
- renderOpts: {
25
- pretty: true,
26
- indent: ' ',
27
- newline: '\n',
28
- },
29
- xmldec: {
30
- version: '1.0',
31
- encoding: 'utf8',
32
- standalone: false,
33
- },
34
- headless: true, // Don't add XML declaration
35
- attrkey: '$',
36
- charkey: '_',
37
- });
38
-
39
- this.yamlBuilder = new YamlXmlBuilder();
40
- }
41
-
42
- /**
43
- * Load and parse the activation template
44
- * @returns {Object} Parsed activation block
45
- */
46
- async loadActivationTemplate() {
47
- console.error('Failed to load activation template:', error);
48
- }
49
-
50
- /**
51
- * Inject activation block into agent XML content
52
- * @param {string} agentContent - The agent file content
53
- * @param {Object} metadata - Metadata containing module and name
54
- * @returns {string} Modified content with activation block
55
- */
56
- async injectActivation(agentContent, metadata = {}) {
57
- try {
58
- // Check if already has activation
59
- if (agentContent.includes('<activation')) {
60
- return agentContent;
61
- }
62
-
63
- // Extract the XML portion from markdown if needed
64
- let xmlContent = agentContent;
65
- let beforeXml = '';
66
- let afterXml = '';
67
-
68
- const xmlBlockMatch = agentContent.match(/([\s\S]*?)```xml\n([\s\S]*?)\n```([\s\S]*)/);
69
- if (xmlBlockMatch) {
70
- beforeXml = xmlBlockMatch[1] + '```xml\n';
71
- xmlContent = xmlBlockMatch[2];
72
- afterXml = '\n```' + xmlBlockMatch[3];
73
- }
74
-
75
- // Parse the agent XML
76
- const parsed = await this.parser.parseStringPromise(xmlContent);
77
-
78
- // Get the activation template
79
- const activationBlock = await this.loadActivationTemplate();
80
- if (!activationBlock) {
81
- console.warn('Could not load activation template');
82
- return agentContent;
83
- }
84
-
85
- // Find the agent node
86
- if (
87
- parsed.agent && // Insert activation as the first child
88
- !parsed.agent.activation
89
- ) {
90
- // Ensure proper structure
91
- if (!parsed.agent.$$) {
92
- parsed.agent.$$ = [];
93
- }
94
-
95
- // Create the activation node with proper structure
96
- const activationNode = {
97
- '#name': 'activation',
98
- $: { critical: '1' },
99
- $$: activationBlock.$$,
100
- };
101
-
102
- // Insert at the beginning
103
- parsed.agent.$$.unshift(activationNode);
104
- }
105
-
106
- // Convert back to XML
107
- let modifiedXml = this.builder.buildObject(parsed);
108
-
109
- // Fix indentation - xml2js doesn't maintain our exact formatting
110
- // Add 2-space base indentation to match our style
111
- const lines = modifiedXml.split('\n');
112
- const indentedLines = lines.map((line) => {
113
- if (line.trim() === '') return line;
114
- if (line.startsWith('<agent')) return line; // Keep agent at column 0
115
- return ' ' + line; // Indent everything else
116
- });
117
- modifiedXml = indentedLines.join('\n');
118
-
119
- // Reconstruct the full content
120
- return beforeXml + modifiedXml + afterXml;
121
- } catch (error) {
122
- console.error('Error injecting activation:', error);
123
- return agentContent;
124
- }
125
- }
126
-
127
- /**
128
- * TODO: DELETE THIS METHOD
129
- */
130
- injectActivationSimple(agentContent, metadata = {}) {
131
- console.error('Error in simple injection:', error);
132
- }
133
-
134
- /**
135
- * Build agent from YAML source
136
- * @param {string} yamlPath - Path to .agent.yaml file
137
- * @param {string} customizePath - Path to .customize.yaml file (optional)
138
- * @param {Object} metadata - Build metadata
139
- * @returns {string} Generated XML content
140
- */
141
- async buildFromYaml(yamlPath, customizePath = null, metadata = {}) {
142
- try {
143
- // Use YamlXmlBuilder to convert YAML to XML
144
- const mergedAgent = await this.yamlBuilder.loadAndMergeAgent(yamlPath, customizePath);
145
-
146
- // Build metadata
147
- const buildMetadata = {
148
- sourceFile: path.basename(yamlPath),
149
- sourceHash: await this.yamlBuilder.calculateFileHash(yamlPath),
150
- customizeFile: customizePath ? path.basename(customizePath) : null,
151
- customizeHash: customizePath ? await this.yamlBuilder.calculateFileHash(customizePath) : null,
152
- builderVersion: '1.0.0',
153
- includeMetadata: metadata.includeMetadata !== false,
154
- forWebBundle: metadata.forWebBundle || false, // Pass through forWebBundle flag
155
- };
156
-
157
- // Convert to XML
158
- const xml = await this.yamlBuilder.convertToXml(mergedAgent, buildMetadata);
159
-
160
- return xml;
161
- } catch (error) {
162
- console.error('Error building agent from YAML:', error);
163
- throw error;
164
- }
165
- }
166
-
167
- /**
168
- * Check if a path is a YAML agent file
169
- * @param {string} filePath - Path to check
170
- * @returns {boolean} True if it's a YAML agent file
171
- */
172
- isYamlAgent(filePath) {
173
- return filePath.endsWith('.agent.yaml');
174
- }
175
- }
176
-
177
- module.exports = { XmlHandler };
@@ -1,82 +0,0 @@
1
- const fs = require('node:fs');
2
- const path = require('node:path');
3
-
4
- function convertXmlToMarkdown(xmlFilePath) {
5
- if (!xmlFilePath.endsWith('.xml')) {
6
- throw new Error('Input file must be an XML file');
7
- }
8
-
9
- const xmlContent = fs.readFileSync(xmlFilePath, 'utf8');
10
-
11
- const basename = path.basename(xmlFilePath, '.xml');
12
- const dirname = path.dirname(xmlFilePath);
13
- const mdFilePath = path.join(dirname, `${basename}.md`);
14
-
15
- // Extract version and name/title from root element attributes
16
- let title = basename;
17
- let version = '';
18
-
19
- // Match the root element and its attributes
20
- const rootMatch = xmlContent.match(
21
- /<[^>\s]+[^>]*?\sv="([^"]+)"[^>]*?(?:\sname="([^"]+)")?|<[^>\s]+[^>]*?(?:\sname="([^"]+)")?[^>]*?\sv="([^"]+)"/,
22
- );
23
-
24
- if (rootMatch) {
25
- // Handle both v="x" name="y" and name="y" v="x" orders
26
- version = rootMatch[1] || rootMatch[4] || '';
27
- const nameAttr = rootMatch[2] || rootMatch[3] || '';
28
-
29
- if (nameAttr) {
30
- title = nameAttr;
31
- } else {
32
- // Try to find name in a <name> element if not in attributes
33
- const nameElementMatch = xmlContent.match(/<name>([^<]+)<\/name>/);
34
- if (nameElementMatch) {
35
- title = nameElementMatch[1];
36
- }
37
- }
38
- }
39
-
40
- const heading = version ? `# ${title} v${version}` : `# ${title}`;
41
-
42
- const markdownContent = `${heading}
43
-
44
- \`\`\`xml
45
- ${xmlContent}
46
- \`\`\`
47
- `;
48
-
49
- fs.writeFileSync(mdFilePath, markdownContent, 'utf8');
50
-
51
- return mdFilePath;
52
- }
53
-
54
- function main() {
55
- const args = process.argv.slice(2);
56
-
57
- if (args.length === 0) {
58
- console.error('Usage: node xml-to-markdown.js <xml-file-path>');
59
- process.exit(1);
60
- }
61
-
62
- const xmlFilePath = path.resolve(args[0]);
63
-
64
- if (!fs.existsSync(xmlFilePath)) {
65
- console.error(`Error: File not found: ${xmlFilePath}`);
66
- process.exit(1);
67
- }
68
-
69
- try {
70
- const mdFilePath = convertXmlToMarkdown(xmlFilePath);
71
- console.log(`Successfully converted: ${xmlFilePath} -> ${mdFilePath}`);
72
- } catch (error) {
73
- console.error(`Error converting file: ${error.message}`);
74
- process.exit(1);
75
- }
76
- }
77
-
78
- if (require.main === module) {
79
- main();
80
- }
81
-
82
- module.exports = { convertXmlToMarkdown };