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,165 +0,0 @@
1
- const fs = require('fs-extra');
2
- const path = require('node:path');
3
- const { getSourcePath } = require('./project-root');
4
-
5
- /**
6
- * Builds activation blocks from fragments based on agent profile
7
- */
8
- class ActivationBuilder {
9
- constructor() {
10
- this.agentComponents = getSourcePath('utility', 'agent-components');
11
- this.fragmentCache = new Map();
12
- }
13
-
14
- /**
15
- * Load a fragment file
16
- * @param {string} fragmentName - Name of fragment file (e.g., 'activation-init.txt')
17
- * @returns {string} Fragment content
18
- */
19
- async loadFragment(fragmentName) {
20
- // Check cache first
21
- if (this.fragmentCache.has(fragmentName)) {
22
- return this.fragmentCache.get(fragmentName);
23
- }
24
-
25
- const fragmentPath = path.join(this.agentComponents, fragmentName);
26
-
27
- if (!(await fs.pathExists(fragmentPath))) {
28
- throw new Error(`Fragment not found: ${fragmentName}`);
29
- }
30
-
31
- const content = await fs.readFile(fragmentPath, 'utf8');
32
- this.fragmentCache.set(fragmentName, content);
33
- return content;
34
- }
35
-
36
- /**
37
- * Build complete activation block based on agent profile
38
- * @param {Object} profile - Agent profile from AgentAnalyzer
39
- * @param {Object} metadata - Agent metadata (module, name, etc.)
40
- * @param {Array} agentSpecificActions - Optional agent-specific critical actions
41
- * @param {boolean} forWebBundle - Whether this is for a web bundle
42
- * @returns {string} Complete activation block XML
43
- */
44
- async buildActivation(profile, metadata = {}, agentSpecificActions = [], forWebBundle = false) {
45
- let activation = '<activation critical="MANDATORY">\n';
46
-
47
- // 1. Build sequential steps (use web-specific steps for web bundles)
48
- const steps = await this.buildSteps(metadata, agentSpecificActions, forWebBundle);
49
- activation += this.indent(steps, 2) + '\n';
50
-
51
- // 2. Build menu handlers section with dynamic handlers
52
- const menuHandlers = await this.loadFragment('menu-handlers.txt');
53
-
54
- // Build handlers (load only needed handlers)
55
- const handlers = await this.buildHandlers(profile);
56
-
57
- // Remove the extract line from the final output - it's just build metadata
58
- // The extract list tells us which attributes to look for during processing
59
- // but shouldn't appear in the final agent file
60
- const processedHandlers = menuHandlers
61
- .replace('<extract>{DYNAMIC_EXTRACT_LIST}</extract>\n', '') // Remove the entire extract line
62
- .replace('{DYNAMIC_HANDLERS}', handlers);
63
-
64
- activation += '\n' + this.indent(processedHandlers, 2) + '\n';
65
-
66
- const rules = await this.loadFragment('activation-rules.txt');
67
- activation += this.indent(rules, 2) + '\n';
68
-
69
- activation += '</activation>';
70
-
71
- return activation;
72
- }
73
-
74
- /**
75
- * Build handlers section based on profile
76
- * @param {Object} profile - Agent profile
77
- * @returns {string} Handlers XML
78
- */
79
- async buildHandlers(profile) {
80
- const handlerFragments = [];
81
-
82
- for (const attrType of profile.usedAttributes) {
83
- const fragmentName = `handler-${attrType}.txt`;
84
- try {
85
- const handler = await this.loadFragment(fragmentName);
86
- handlerFragments.push(handler);
87
- } catch {
88
- console.warn(`Warning: Handler fragment not found: ${fragmentName}`);
89
- }
90
- }
91
-
92
- return handlerFragments.join('\n');
93
- }
94
-
95
- /**
96
- * Build sequential activation steps
97
- * @param {Object} metadata - Agent metadata
98
- * @param {Array} agentSpecificActions - Optional agent-specific actions
99
- * @param {boolean} forWebBundle - Whether this is for a web bundle
100
- * @returns {string} Steps XML
101
- */
102
- async buildSteps(metadata = {}, agentSpecificActions = [], forWebBundle = false) {
103
- const stepsTemplate = await this.loadFragment('activation-steps.txt');
104
-
105
- // Extract basename from agent ID (e.g., "bmad/bmm/agents/pm.md" → "pm")
106
- const agentBasename = metadata.id ? metadata.id.split('/').pop().replace('.md', '') : metadata.name || 'agent';
107
-
108
- // Build agent-specific steps
109
- let agentStepsXml = '';
110
- let currentStepNum = 4; // Steps 1-3 are standard
111
-
112
- if (agentSpecificActions && agentSpecificActions.length > 0) {
113
- agentStepsXml = agentSpecificActions
114
- .map((action) => {
115
- const step = `<step n="${currentStepNum}">${action}</step>`;
116
- currentStepNum++;
117
- return step;
118
- })
119
- .join('\n');
120
- }
121
-
122
- // Calculate final step numbers
123
- const menuStep = currentStepNum;
124
- const helpStep = currentStepNum + 1;
125
- const haltStep = currentStepNum + 2;
126
- const inputStep = currentStepNum + 3;
127
- const executeStep = currentStepNum + 4;
128
-
129
- // Replace placeholders
130
- const processed = stepsTemplate
131
- .replace('{agent-file-basename}', agentBasename)
132
- .replace('{{module}}', metadata.module || 'core') // Fixed to use {{module}}
133
- .replace('{AGENT_SPECIFIC_STEPS}', agentStepsXml)
134
- .replace('{MENU_STEP}', menuStep.toString())
135
- .replace('{HELP_STEP}', helpStep.toString())
136
- .replace('{HALT_STEP}', haltStep.toString())
137
- .replace('{INPUT_STEP}', inputStep.toString())
138
- .replace('{EXECUTE_STEP}', executeStep.toString());
139
-
140
- return processed;
141
- }
142
-
143
- /**
144
- * Indent XML content
145
- * @param {string} content - Content to indent
146
- * @param {number} spaces - Number of spaces to indent
147
- * @returns {string} Indented content
148
- */
149
- indent(content, spaces) {
150
- const indentation = ' '.repeat(spaces);
151
- return content
152
- .split('\n')
153
- .map((line) => (line ? indentation + line : line))
154
- .join('\n');
155
- }
156
-
157
- /**
158
- * Clear fragment cache (useful for testing or hot reload)
159
- */
160
- clearCache() {
161
- this.fragmentCache.clear();
162
- }
163
- }
164
-
165
- module.exports = { ActivationBuilder };
@@ -1,516 +0,0 @@
1
- /**
2
- * BMAD Agent Compiler
3
- * Transforms agent YAML to compiled XML (.md) format
4
- * Uses the existing BMAD builder infrastructure for proper formatting
5
- */
6
-
7
- const yaml = require('yaml');
8
- const fs = require('node:fs');
9
- const path = require('node:path');
10
- const { processAgentYaml, extractInstallConfig, stripInstallConfig, getDefaultValues } = require('./template-engine');
11
- const { escapeXml } = require('../../../lib/xml-utils');
12
- const { ActivationBuilder } = require('../activation-builder');
13
- const { AgentAnalyzer } = require('../agent-analyzer');
14
-
15
- /**
16
- * Build frontmatter for agent
17
- * @param {Object} metadata - Agent metadata
18
- * @param {string} agentName - Final agent name
19
- * @returns {string} YAML frontmatter
20
- */
21
- function buildFrontmatter(metadata, agentName) {
22
- const nameFromFile = agentName.replaceAll('-', ' ');
23
- const description = metadata.title || 'BMAD Agent';
24
-
25
- return `---
26
- name: "${nameFromFile}"
27
- description: "${description}"
28
- ---
29
-
30
- You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
31
-
32
- `;
33
- }
34
-
35
- // buildSimpleActivation function removed - replaced by ActivationBuilder for proper fragment loading from src/utility/agent-components/
36
-
37
- /**
38
- * Build persona XML section
39
- * @param {Object} persona - Persona object
40
- * @returns {string} Persona XML
41
- */
42
- function buildPersonaXml(persona) {
43
- if (!persona) return '';
44
-
45
- let xml = ' <persona>\n';
46
-
47
- if (persona.role) {
48
- const roleText = persona.role.trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ');
49
- xml += ` <role>${escapeXml(roleText)}</role>\n`;
50
- }
51
-
52
- if (persona.identity) {
53
- const identityText = persona.identity.trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ');
54
- xml += ` <identity>${escapeXml(identityText)}</identity>\n`;
55
- }
56
-
57
- if (persona.communication_style) {
58
- const styleText = persona.communication_style.trim().replaceAll(/\n+/g, ' ').replaceAll(/\s+/g, ' ');
59
- xml += ` <communication_style>${escapeXml(styleText)}</communication_style>\n`;
60
- }
61
-
62
- if (persona.principles) {
63
- let principlesText;
64
- if (Array.isArray(persona.principles)) {
65
- principlesText = persona.principles.join(' ');
66
- } else {
67
- principlesText = persona.principles.trim().replaceAll(/\n+/g, ' ');
68
- }
69
- xml += ` <principles>${escapeXml(principlesText)}</principles>\n`;
70
- }
71
-
72
- xml += ' </persona>\n';
73
-
74
- return xml;
75
- }
76
-
77
- /**
78
- * Build prompts XML section
79
- * @param {Array} prompts - Prompts array
80
- * @returns {string} Prompts XML
81
- */
82
- function buildPromptsXml(prompts) {
83
- if (!prompts || prompts.length === 0) return '';
84
-
85
- let xml = ' <prompts>\n';
86
-
87
- for (const prompt of prompts) {
88
- xml += ` <prompt id="${prompt.id || ''}">\n`;
89
- xml += ` <content>\n`;
90
- // Don't escape prompt content - it's meant to be read as-is
91
- xml += `${prompt.content || ''}\n`;
92
- xml += ` </content>\n`;
93
- xml += ` </prompt>\n`;
94
- }
95
-
96
- xml += ' </prompts>\n';
97
-
98
- return xml;
99
- }
100
-
101
- /**
102
- * Build memories XML section
103
- * @param {Array} memories - Memories array
104
- * @returns {string} Memories XML
105
- */
106
- function buildMemoriesXml(memories) {
107
- if (!memories || memories.length === 0) return '';
108
-
109
- let xml = ' <memories>\n';
110
-
111
- for (const memory of memories) {
112
- xml += ` <memory>${escapeXml(String(memory))}</memory>\n`;
113
- }
114
-
115
- xml += ' </memories>\n';
116
-
117
- return xml;
118
- }
119
-
120
- /**
121
- * Build menu XML section
122
- * Supports both legacy and multi format menu items
123
- * Multi items display as a single menu item with nested handlers
124
- * @param {Array} menuItems - Menu items
125
- * @returns {string} Menu XML
126
- */
127
- function buildMenuXml(menuItems) {
128
- let xml = ' <menu>\n';
129
-
130
- // Always inject menu display option first
131
- xml += ` <item cmd="MH or fuzzy match on menu or help">[MH] Redisplay Menu Help</item>\n`;
132
- xml += ` <item cmd="CH or fuzzy match on chat">[CH] Chat with the Agent about anything</item>\n`;
133
-
134
- // Add user-defined menu items
135
- if (menuItems && menuItems.length > 0) {
136
- for (const item of menuItems) {
137
- // Handle multi format menu items with nested handlers
138
- if (item.multi && item.triggers && Array.isArray(item.triggers)) {
139
- xml += ` <item type="multi">${escapeXml(item.multi)}\n`;
140
- xml += buildNestedHandlers(item.triggers);
141
- xml += ` </item>\n`;
142
- }
143
- // Handle legacy format menu items
144
- else if (item.trigger) {
145
- let trigger = item.trigger || '';
146
-
147
- const attrs = [`cmd="${trigger}"`];
148
-
149
- // Add handler attributes
150
- if (item.exec) attrs.push(`exec="${item.exec}"`);
151
- if (item.tmpl) attrs.push(`tmpl="${item.tmpl}"`);
152
- if (item.data) attrs.push(`data="${item.data}"`);
153
- if (item.action) attrs.push(`action="${item.action}"`);
154
-
155
- xml += ` <item ${attrs.join(' ')}>${escapeXml(item.description || '')}</item>\n`;
156
- }
157
- }
158
- }
159
-
160
- xml += ` <item cmd="PM or fuzzy match on party-mode" exec="skill:bmad-party-mode">[PM] Start Party Mode</item>\n`;
161
- xml += ` <item cmd="DA or fuzzy match on exit, leave, goodbye or dismiss agent">[DA] Dismiss Agent</item>\n`;
162
-
163
- xml += ' </menu>\n';
164
-
165
- return xml;
166
- }
167
-
168
- /**
169
- * Build nested handlers for multi format menu items
170
- * @param {Array} triggers - Triggers array from multi format
171
- * @returns {string} Handler XML
172
- */
173
- function buildNestedHandlers(triggers) {
174
- let xml = '';
175
-
176
- for (const triggerGroup of triggers) {
177
- for (const [triggerName, execArray] of Object.entries(triggerGroup)) {
178
- // Build trigger with * prefix
179
- let trigger = triggerName.startsWith('*') ? triggerName : '*' + triggerName;
180
-
181
- // Extract the relevant execution data
182
- const execData = processExecArray(execArray);
183
-
184
- // For nested handlers in multi items, we use match attribute for fuzzy matching
185
- const attrs = [`match="${escapeXml(execData.description || '')}"`];
186
-
187
- // Add handler attributes based on exec data
188
- if (execData.route) attrs.push(`exec="${execData.route}"`);
189
- if (execData.action) attrs.push(`action="${execData.action}"`);
190
- if (execData.data) attrs.push(`data="${execData.data}"`);
191
- if (execData.tmpl) attrs.push(`tmpl="${execData.tmpl}"`);
192
- // Only add type if it's not 'exec' (exec is already implied by the exec attribute)
193
- if (execData.type && execData.type !== 'exec') attrs.push(`type="${execData.type}"`);
194
-
195
- xml += ` <handler ${attrs.join(' ')}></handler>\n`;
196
- }
197
- }
198
-
199
- return xml;
200
- }
201
-
202
- /**
203
- * Process the execution array from multi format triggers
204
- * Extracts relevant data for XML attributes
205
- * @param {Array} execArray - Array of execution objects
206
- * @returns {Object} Processed execution data
207
- */
208
- function processExecArray(execArray) {
209
- const result = {
210
- description: '',
211
- route: null,
212
- data: null,
213
- action: null,
214
- type: null,
215
- };
216
-
217
- if (!Array.isArray(execArray)) {
218
- return result;
219
- }
220
-
221
- for (const exec of execArray) {
222
- if (exec.input) {
223
- // Use input as description if no explicit description is provided
224
- result.description = exec.input;
225
- }
226
-
227
- if (exec.route) {
228
- result.route = exec.route;
229
- }
230
-
231
- if (exec.data !== null && exec.data !== undefined) {
232
- result.data = exec.data;
233
- }
234
-
235
- if (exec.action) {
236
- result.action = exec.action;
237
- }
238
-
239
- if (exec.type) {
240
- result.type = exec.type;
241
- }
242
- }
243
-
244
- return result;
245
- }
246
-
247
- /**
248
- * Compile agent YAML to proper XML format
249
- * @param {Object} agentYaml - Parsed and processed agent YAML
250
- * @param {string} agentName - Final agent name (for ID and frontmatter)
251
- * @param {string} targetPath - Target path for agent ID
252
- * @returns {Promise<string>} Compiled XML string with frontmatter
253
- */
254
- async function compileToXml(agentYaml, agentName = '', targetPath = '') {
255
- const agent = agentYaml.agent;
256
- const meta = agent.metadata;
257
-
258
- let xml = '';
259
-
260
- // Build frontmatter
261
- xml += buildFrontmatter(meta, agentName || meta.name || 'agent');
262
-
263
- // Start code fence
264
- xml += '```xml\n';
265
-
266
- // Agent opening tag
267
- const agentAttrs = [
268
- `id="${targetPath || meta.id || ''}"`,
269
- `name="${meta.name || ''}"`,
270
- `title="${meta.title || ''}"`,
271
- `icon="${meta.icon || '🤖'}"`,
272
- ];
273
- if (meta.capabilities) {
274
- agentAttrs.push(`capabilities="${escapeXml(meta.capabilities)}"`);
275
- }
276
-
277
- xml += `<agent ${agentAttrs.join(' ')}>\n`;
278
-
279
- // Activation block - use ActivationBuilder for proper fragment loading
280
- const activationBuilder = new ActivationBuilder();
281
- const analyzer = new AgentAnalyzer();
282
- const profile = analyzer.analyzeAgentObject(agentYaml);
283
- xml += await activationBuilder.buildActivation(
284
- profile,
285
- meta,
286
- agent.critical_actions || [],
287
- false, // forWebBundle - set to false for IDE deployment
288
- );
289
-
290
- // Persona section
291
- xml += buildPersonaXml(agent.persona);
292
-
293
- // Prompts section (if present)
294
- if (agent.prompts && agent.prompts.length > 0) {
295
- xml += buildPromptsXml(agent.prompts);
296
- }
297
-
298
- // Memories section (if present)
299
- if (agent.memories && agent.memories.length > 0) {
300
- xml += buildMemoriesXml(agent.memories);
301
- }
302
-
303
- // Menu section
304
- xml += buildMenuXml(agent.menu || []);
305
-
306
- // Closing agent tag
307
- xml += '</agent>\n';
308
-
309
- // Close code fence
310
- xml += '```\n';
311
-
312
- return xml;
313
- }
314
-
315
- /**
316
- * Full compilation pipeline
317
- * @param {string} yamlContent - Raw YAML string
318
- * @param {Object} answers - Answers from install_config questions (or defaults)
319
- * @param {string} agentName - Optional final agent name (user's custom persona name)
320
- * @param {string} targetPath - Optional target path for agent ID
321
- * @param {Object} options - Additional options including config
322
- * @returns {Promise<Object>} { xml: string, metadata: Object }
323
- */
324
- async function compileAgent(yamlContent, answers = {}, agentName = '', targetPath = '', options = {}) {
325
- // Parse YAML
326
- let agentYaml = yaml.parse(yamlContent);
327
-
328
- // Apply customization merges before template processing
329
- // Handle metadata overrides (like name)
330
- if (answers.metadata) {
331
- // Filter out empty values from metadata
332
- const filteredMetadata = filterCustomizationData(answers.metadata);
333
- if (Object.keys(filteredMetadata).length > 0) {
334
- agentYaml.agent.metadata = { ...agentYaml.agent.metadata, ...filteredMetadata };
335
- }
336
- // Remove from answers so it doesn't get processed as template variables
337
- const { metadata, ...templateAnswers } = answers;
338
- answers = templateAnswers;
339
- }
340
-
341
- // Handle other customization properties
342
- // These should be merged into the agent structure, not processed as template variables
343
- const customizationKeys = ['persona', 'critical_actions', 'memories', 'menu', 'prompts'];
344
- const customizations = {};
345
- const remainingAnswers = { ...answers };
346
-
347
- for (const key of customizationKeys) {
348
- if (answers[key]) {
349
- let filtered;
350
-
351
- // Handle different data types
352
- if (Array.isArray(answers[key])) {
353
- // For arrays, filter out empty/null/undefined values
354
- filtered = answers[key].filter((item) => item !== null && item !== undefined && item !== '');
355
- } else {
356
- // For objects, use filterCustomizationData
357
- filtered = filterCustomizationData(answers[key]);
358
- }
359
-
360
- // Check if we have valid content
361
- const hasContent = Array.isArray(filtered) ? filtered.length > 0 : Object.keys(filtered).length > 0;
362
-
363
- if (hasContent) {
364
- customizations[key] = filtered;
365
- }
366
- delete remainingAnswers[key];
367
- }
368
- }
369
-
370
- // Merge customizations into agentYaml
371
- if (Object.keys(customizations).length > 0) {
372
- // For persona: replace entire section
373
- if (customizations.persona) {
374
- agentYaml.agent.persona = customizations.persona;
375
- }
376
-
377
- // For critical_actions: append to existing or create new
378
- if (customizations.critical_actions) {
379
- const existing = agentYaml.agent.critical_actions || [];
380
- agentYaml.agent.critical_actions = [...existing, ...customizations.critical_actions];
381
- }
382
-
383
- // For memories: append to existing or create new
384
- if (customizations.memories) {
385
- const existing = agentYaml.agent.memories || [];
386
- agentYaml.agent.memories = [...existing, ...customizations.memories];
387
- }
388
-
389
- // For menu: append to existing or create new
390
- if (customizations.menu) {
391
- const existing = agentYaml.agent.menu || [];
392
- agentYaml.agent.menu = [...existing, ...customizations.menu];
393
- }
394
-
395
- // For prompts: append to existing or create new (by id)
396
- if (customizations.prompts) {
397
- const existing = agentYaml.agent.prompts || [];
398
- // Merge by id, with customizations taking precedence
399
- const mergedPrompts = [...existing];
400
- for (const customPrompt of customizations.prompts) {
401
- const existingIndex = mergedPrompts.findIndex((p) => p.id === customPrompt.id);
402
- if (existingIndex === -1) {
403
- mergedPrompts.push(customPrompt);
404
- } else {
405
- mergedPrompts[existingIndex] = customPrompt;
406
- }
407
- }
408
- agentYaml.agent.prompts = mergedPrompts;
409
- }
410
- }
411
-
412
- // Use remaining answers for template processing
413
- answers = remainingAnswers;
414
-
415
- // Extract install_config
416
- const installConfig = extractInstallConfig(agentYaml);
417
-
418
- // Merge defaults with provided answers
419
- let finalAnswers = answers;
420
- if (installConfig) {
421
- const defaults = getDefaultValues(installConfig);
422
- finalAnswers = { ...defaults, ...answers };
423
- }
424
-
425
- // Process templates with answers
426
- const processedYaml = processAgentYaml(agentYaml, finalAnswers);
427
-
428
- // Strip install_config from output
429
- const cleanYaml = stripInstallConfig(processedYaml);
430
-
431
- let xml = await compileToXml(cleanYaml, agentName, targetPath);
432
-
433
- // Ensure xml is a string before attempting replaceAll
434
- if (typeof xml !== 'string') {
435
- throw new TypeError('compileToXml did not return a string');
436
- }
437
-
438
- return {
439
- xml,
440
- metadata: cleanYaml.agent.metadata,
441
- processedYaml: cleanYaml,
442
- };
443
- }
444
-
445
- /**
446
- * Filter customization data to remove empty/null values
447
- * @param {Object} data - Raw customization data
448
- * @returns {Object} Filtered customization data
449
- */
450
- function filterCustomizationData(data) {
451
- const filtered = {};
452
-
453
- for (const [key, value] of Object.entries(data)) {
454
- if (value === null || value === undefined || value === '') {
455
- continue; // Skip null/undefined/empty values
456
- }
457
-
458
- if (Array.isArray(value)) {
459
- if (value.length > 0) {
460
- filtered[key] = value;
461
- }
462
- } else if (typeof value === 'object') {
463
- const nested = filterCustomizationData(value);
464
- if (Object.keys(nested).length > 0) {
465
- filtered[key] = nested;
466
- }
467
- } else {
468
- filtered[key] = value;
469
- }
470
- }
471
-
472
- return filtered;
473
- }
474
-
475
- /**
476
- * Compile agent file to .md
477
- * @param {string} yamlPath - Path to agent YAML file
478
- * @param {Object} options - { answers: {}, outputPath: string }
479
- * @returns {Object} Compilation result
480
- */
481
- function compileAgentFile(yamlPath, options = {}) {
482
- const yamlContent = fs.readFileSync(yamlPath, 'utf8');
483
- const result = compileAgent(yamlContent, options.answers || {});
484
-
485
- // Determine output path
486
- let outputPath = options.outputPath;
487
- if (!outputPath) {
488
- // Default: same directory, same name, .md extension
489
- const dir = path.dirname(yamlPath);
490
- const basename = path.basename(yamlPath, '.agent.yaml');
491
- outputPath = path.join(dir, `${basename}.md`);
492
- }
493
-
494
- // Write compiled XML
495
- fs.writeFileSync(outputPath, xml, 'utf8');
496
-
497
- return {
498
- ...result,
499
- xml,
500
- outputPath,
501
- sourcePath: yamlPath,
502
- };
503
- }
504
-
505
- module.exports = {
506
- compileToXml,
507
- compileAgent,
508
- compileAgentFile,
509
- escapeXml,
510
- buildFrontmatter,
511
- buildPersonaXml,
512
- buildPromptsXml,
513
- buildMemoriesXml,
514
- buildMenuXml,
515
- filterCustomizationData,
516
- };