ma-agents 3.4.8 → 3.5.0

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 (762) hide show
  1. package/AiAudit.md +7 -0
  2. package/README.md +78 -29
  3. package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +237 -0
  4. package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +339 -0
  5. package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +348 -0
  6. package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +383 -0
  7. package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +348 -0
  8. package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +385 -0
  9. package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +362 -0
  10. package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +477 -0
  11. package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +377 -0
  12. package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +301 -0
  13. package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +508 -0
  14. package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +455 -0
  15. package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +325 -0
  16. package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +403 -0
  17. package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +344 -0
  18. package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +279 -0
  19. package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +173 -0
  20. package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +129 -0
  21. package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +274 -0
  22. package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +186 -0
  23. package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +144 -0
  24. package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +132 -0
  25. package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +119 -0
  26. package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +162 -0
  27. package/_bmad-output/implementation-artifacts/deferred-work.md +9 -0
  28. package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +200 -0
  29. package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +172 -0
  30. package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +102 -0
  31. package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +119 -0
  32. package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +132 -0
  33. package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +111 -0
  34. package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +126 -0
  35. package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +137 -0
  36. package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +127 -0
  37. package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +129 -0
  38. package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +179 -0
  39. package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +138 -0
  40. package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +150 -0
  41. package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +128 -0
  42. package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +118 -0
  43. package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +132 -0
  44. package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +174 -0
  45. package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +183 -0
  46. package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +252 -0
  47. package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +232 -0
  48. package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +163 -0
  49. package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +133 -0
  50. package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +172 -0
  51. package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +342 -0
  52. package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +223 -0
  53. package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +180 -0
  54. package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +136 -0
  55. package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +137 -0
  56. package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +79 -0
  57. package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +110 -0
  58. package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +116 -0
  59. package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +109 -0
  60. package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +97 -0
  61. package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +125 -0
  62. package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +322 -0
  63. package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +264 -0
  64. package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +208 -0
  65. package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +209 -0
  66. package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +221 -0
  67. package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +273 -0
  68. package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +235 -0
  69. package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +285 -0
  70. package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +188 -0
  71. package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +211 -0
  72. package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +189 -0
  73. package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +184 -0
  74. package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +178 -0
  75. package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +136 -0
  76. package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +141 -0
  77. package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +145 -0
  78. package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +188 -0
  79. package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +219 -0
  80. package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +234 -0
  81. package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +274 -0
  82. package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +173 -0
  83. package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +131 -0
  84. package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +124 -0
  85. package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +187 -0
  86. package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +102 -0
  87. package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +126 -0
  88. package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +101 -0
  89. package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +73 -0
  90. package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +91 -0
  91. package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +113 -0
  92. package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +90 -0
  93. package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +53 -0
  94. package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +287 -0
  95. package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +49 -0
  96. package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +230 -0
  97. package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +37 -0
  98. package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +140 -0
  99. package/_bmad-output/implementation-artifacts/sprint-status.yaml +83 -0
  100. package/_bmad-output/methodology/BMAD_AI_Development_Training.pptx +0 -0
  101. package/_bmad-output/methodology/version.json +7 -0
  102. package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +508 -0
  103. package/_bmad-output/planning-artifacts/architecture.md +1619 -0
  104. package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +295 -0
  105. package/_bmad-output/planning-artifacts/epics.md +3287 -0
  106. package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +290 -0
  107. package/_bmad-output/planning-artifacts/prd.md +684 -0
  108. package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +214 -0
  109. package/_bmad-output/planning-artifacts/sprint-status-schema.md +506 -0
  110. package/_bmad-output/project-context.md +47 -0
  111. package/bin/cli.js +5 -4
  112. package/lib/agents.js +16 -1
  113. package/lib/bmad-extension/module-help.csv +27 -22
  114. package/lib/bmad-extension/skills/add-sprint/SKILL.md +120 -152
  115. package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +170 -116
  116. package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-dev-story}/bmad-skill-manifest.yaml +1 -1
  117. package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/checklist.md +13 -13
  118. package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/workflow.md +103 -44
  119. package/lib/bmad-extension/skills/bmad-ma-agent-mil498/SKILL.md +2 -1
  120. package/lib/bmad-extension/skills/bmad-sprint-planning/SKILL.md +6 -0
  121. package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/bmad-sprint-planning}/bmad-skill-manifest.yaml +1 -1
  122. package/lib/bmad-extension/skills/bmad-sprint-planning/checklist.md +74 -0
  123. package/lib/bmad-extension/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
  124. package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +372 -0
  125. package/lib/bmad-extension/skills/bmad-sprint-status/SKILL.md +6 -0
  126. package/{.opencode/skills/cleanup-done → lib/bmad-extension/skills/bmad-sprint-status}/bmad-skill-manifest.yaml +1 -1
  127. package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +434 -0
  128. package/lib/bmad-extension/skills/cleanup-done/SKILL.md +154 -98
  129. package/lib/bmad-extension/skills/close-sprint/SKILL.md +379 -0
  130. package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/close-sprint}/bmad-skill-manifest.yaml +1 -1
  131. package/lib/bmad-extension/skills/create-bug-story/SKILL.md +7 -75
  132. package/lib/bmad-extension/skills/generate-backlog/SKILL.md +152 -140
  133. package/lib/bmad-extension/skills/mil498-requirement-quality/SKILL.md +105 -0
  134. package/lib/bmad-extension/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
  135. package/lib/bmad-extension/skills/mil498-ssdd/prompts/05-validate.md +4 -0
  136. package/lib/bmad-extension/skills/modify-sprint/SKILL.md +224 -235
  137. package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +157 -135
  138. package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +125 -104
  139. package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +153 -239
  140. package/lib/bmad-extension/workflows/add-sprint/workflow.md +119 -155
  141. package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +233 -3
  142. package/lib/bmad-extension/workflows/modify-sprint/workflow.md +228 -181
  143. package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +164 -0
  144. package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +165 -3
  145. package/mil498/README.md +4 -0
  146. package/out.txt +0 -0
  147. package/package.json +1 -1
  148. package/skills/add-sprint/SKILL.md +165 -0
  149. package/skills/add-sprint/skill.json +7 -0
  150. package/skills/add-to-sprint/SKILL.md +231 -0
  151. package/skills/add-to-sprint/skill.json +7 -0
  152. package/skills/bmad-sprint-planning/SKILL.md +321 -0
  153. package/skills/bmad-sprint-planning/skill.json +7 -0
  154. package/skills/bmad-sprint-status/SKILL.md +273 -0
  155. package/skills/bmad-sprint-status/skill.json +7 -0
  156. package/skills/cleanup-done/SKILL.md +203 -0
  157. package/skills/cleanup-done/skill.json +7 -0
  158. package/skills/close-sprint/SKILL.md +370 -0
  159. package/skills/close-sprint/skill.json +7 -0
  160. package/skills/generate-backlog/SKILL.md +178 -0
  161. package/skills/generate-backlog/skill.json +7 -0
  162. package/skills/modify-sprint/SKILL.md +302 -0
  163. package/skills/modify-sprint/skill.json +7 -0
  164. package/skills/prioritize-backlog/SKILL.md +203 -0
  165. package/skills/prioritize-backlog/skill.json +7 -0
  166. package/skills/remove-from-sprint/SKILL.md +174 -0
  167. package/skills/remove-from-sprint/skill.json +7 -0
  168. package/skills/sprint-status-view/SKILL.md +173 -0
  169. package/skills/sprint-status-view/skill.json +7 -0
  170. package/skills/story-status-lookup/SKILL.md +21 -6
  171. package/skills/story-status-lookup/skill.json +2 -2
  172. package/test/extension-module-restructure.test.js +12 -11
  173. package/test/migration-validation.test.js +10 -10
  174. package/.opencode/skills/.ma-agents.json +0 -122
  175. package/.opencode/skills/MANIFEST.yaml +0 -126
  176. package/.opencode/skills/add-sprint/SKILL.md +0 -207
  177. package/.opencode/skills/add-to-sprint/SKILL.md +0 -189
  178. package/.opencode/skills/bmad-advanced-elicitation/SKILL.md +0 -137
  179. package/.opencode/skills/bmad-advanced-elicitation/methods.csv +0 -51
  180. package/.opencode/skills/bmad-agent-analyst/SKILL.md +0 -56
  181. package/.opencode/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -11
  182. package/.opencode/skills/bmad-agent-architect/SKILL.md +0 -52
  183. package/.opencode/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
  184. package/.opencode/skills/bmad-agent-dev/SKILL.md +0 -62
  185. package/.opencode/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
  186. package/.opencode/skills/bmad-agent-pm/SKILL.md +0 -57
  187. package/.opencode/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
  188. package/.opencode/skills/bmad-agent-qa/SKILL.md +0 -59
  189. package/.opencode/skills/bmad-agent-qa/bmad-skill-manifest.yaml +0 -11
  190. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/SKILL.md +0 -51
  191. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +0 -11
  192. package/.opencode/skills/bmad-agent-sm/SKILL.md +0 -53
  193. package/.opencode/skills/bmad-agent-sm/bmad-skill-manifest.yaml +0 -11
  194. package/.opencode/skills/bmad-agent-tech-writer/SKILL.md +0 -55
  195. package/.opencode/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  196. package/.opencode/skills/bmad-agent-tech-writer/explain-concept.md +0 -20
  197. package/.opencode/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  198. package/.opencode/skills/bmad-agent-tech-writer/validate-doc.md +0 -19
  199. package/.opencode/skills/bmad-agent-tech-writer/write-document.md +0 -20
  200. package/.opencode/skills/bmad-agent-ux-designer/SKILL.md +0 -53
  201. package/.opencode/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
  202. package/.opencode/skills/bmad-brainstorming/SKILL.md +0 -6
  203. package/.opencode/skills/bmad-brainstorming/brain-methods.csv +0 -62
  204. package/.opencode/skills/bmad-brainstorming/steps/step-01-session-setup.md +0 -214
  205. package/.opencode/skills/bmad-brainstorming/steps/step-01b-continue.md +0 -124
  206. package/.opencode/skills/bmad-brainstorming/steps/step-02a-user-selected.md +0 -229
  207. package/.opencode/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -239
  208. package/.opencode/skills/bmad-brainstorming/steps/step-02c-random-selection.md +0 -211
  209. package/.opencode/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -266
  210. package/.opencode/skills/bmad-brainstorming/steps/step-03-technique-execution.md +0 -401
  211. package/.opencode/skills/bmad-brainstorming/steps/step-04-idea-organization.md +0 -305
  212. package/.opencode/skills/bmad-brainstorming/template.md +0 -15
  213. package/.opencode/skills/bmad-brainstorming/workflow.md +0 -53
  214. package/.opencode/skills/bmad-check-implementation-readiness/SKILL.md +0 -6
  215. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
  216. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
  217. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
  218. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
  219. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
  220. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -126
  221. package/.opencode/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
  222. package/.opencode/skills/bmad-check-implementation-readiness/workflow.md +0 -49
  223. package/.opencode/skills/bmad-cis-design-thinking/SKILL.md +0 -6
  224. package/.opencode/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
  225. package/.opencode/skills/bmad-cis-design-thinking/design-methods.csv +0 -31
  226. package/.opencode/skills/bmad-cis-design-thinking/template.md +0 -111
  227. package/.opencode/skills/bmad-cis-design-thinking/workflow.md +0 -242
  228. package/.opencode/skills/bmad-cis-innovation-strategy/SKILL.md +0 -6
  229. package/.opencode/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
  230. package/.opencode/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +0 -31
  231. package/.opencode/skills/bmad-cis-innovation-strategy/template.md +0 -189
  232. package/.opencode/skills/bmad-cis-innovation-strategy/workflow.md +0 -315
  233. package/.opencode/skills/bmad-cis-problem-solving/SKILL.md +0 -6
  234. package/.opencode/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
  235. package/.opencode/skills/bmad-cis-problem-solving/solving-methods.csv +0 -31
  236. package/.opencode/skills/bmad-cis-problem-solving/template.md +0 -165
  237. package/.opencode/skills/bmad-cis-problem-solving/workflow.md +0 -291
  238. package/.opencode/skills/bmad-cis-storytelling/SKILL.md +0 -6
  239. package/.opencode/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
  240. package/.opencode/skills/bmad-cis-storytelling/story-types.csv +0 -26
  241. package/.opencode/skills/bmad-cis-storytelling/template.md +0 -113
  242. package/.opencode/skills/bmad-cis-storytelling/workflow.md +0 -321
  243. package/.opencode/skills/bmad-code-review/SKILL.md +0 -6
  244. package/.opencode/skills/bmad-code-review/steps/step-01-gather-context.md +0 -62
  245. package/.opencode/skills/bmad-code-review/steps/step-02-review.md +0 -34
  246. package/.opencode/skills/bmad-code-review/steps/step-03-triage.md +0 -49
  247. package/.opencode/skills/bmad-code-review/steps/step-04-present.md +0 -129
  248. package/.opencode/skills/bmad-code-review/workflow.md +0 -55
  249. package/.opencode/skills/bmad-correct-course/SKILL.md +0 -6
  250. package/.opencode/skills/bmad-correct-course/checklist.md +0 -288
  251. package/.opencode/skills/bmad-correct-course/workflow.md +0 -267
  252. package/.opencode/skills/bmad-create-architecture/SKILL.md +0 -6
  253. package/.opencode/skills/bmad-create-architecture/architecture-decision-template.md +0 -12
  254. package/.opencode/skills/bmad-create-architecture/data/domain-complexity.csv +0 -13
  255. package/.opencode/skills/bmad-create-architecture/data/project-types.csv +0 -7
  256. package/.opencode/skills/bmad-create-architecture/steps/step-01-init.md +0 -153
  257. package/.opencode/skills/bmad-create-architecture/steps/step-01b-continue.md +0 -173
  258. package/.opencode/skills/bmad-create-architecture/steps/step-02-context.md +0 -224
  259. package/.opencode/skills/bmad-create-architecture/steps/step-03-starter.md +0 -329
  260. package/.opencode/skills/bmad-create-architecture/steps/step-04-decisions.md +0 -318
  261. package/.opencode/skills/bmad-create-architecture/steps/step-05-patterns.md +0 -359
  262. package/.opencode/skills/bmad-create-architecture/steps/step-06-structure.md +0 -379
  263. package/.opencode/skills/bmad-create-architecture/steps/step-07-validation.md +0 -359
  264. package/.opencode/skills/bmad-create-architecture/steps/step-08-complete.md +0 -76
  265. package/.opencode/skills/bmad-create-architecture/workflow.md +0 -38
  266. package/.opencode/skills/bmad-create-epics-and-stories/SKILL.md +0 -6
  267. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -255
  268. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -212
  269. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -255
  270. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -131
  271. package/.opencode/skills/bmad-create-epics-and-stories/templates/epics-template.md +0 -61
  272. package/.opencode/skills/bmad-create-epics-and-stories/workflow.md +0 -53
  273. package/.opencode/skills/bmad-create-prd/SKILL.md +0 -6
  274. package/.opencode/skills/bmad-create-prd/data/domain-complexity.csv +0 -15
  275. package/.opencode/skills/bmad-create-prd/data/prd-purpose.md +0 -197
  276. package/.opencode/skills/bmad-create-prd/data/project-types.csv +0 -11
  277. package/.opencode/skills/bmad-create-prd/steps-c/step-01-init.md +0 -178
  278. package/.opencode/skills/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
  279. package/.opencode/skills/bmad-create-prd/steps-c/step-02-discovery.md +0 -208
  280. package/.opencode/skills/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
  281. package/.opencode/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  282. package/.opencode/skills/bmad-create-prd/steps-c/step-03-success.md +0 -214
  283. package/.opencode/skills/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
  284. package/.opencode/skills/bmad-create-prd/steps-c/step-05-domain.md +0 -194
  285. package/.opencode/skills/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
  286. package/.opencode/skills/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
  287. package/.opencode/skills/bmad-create-prd/steps-c/step-08-scoping.md +0 -216
  288. package/.opencode/skills/bmad-create-prd/steps-c/step-09-functional.md +0 -219
  289. package/.opencode/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  290. package/.opencode/skills/bmad-create-prd/steps-c/step-11-polish.md +0 -221
  291. package/.opencode/skills/bmad-create-prd/steps-c/step-12-complete.md +0 -115
  292. package/.opencode/skills/bmad-create-prd/templates/prd-template.md +0 -10
  293. package/.opencode/skills/bmad-create-prd/workflow.md +0 -62
  294. package/.opencode/skills/bmad-create-story/SKILL.md +0 -6
  295. package/.opencode/skills/bmad-create-story/checklist.md +0 -357
  296. package/.opencode/skills/bmad-create-story/discover-inputs.md +0 -88
  297. package/.opencode/skills/bmad-create-story/template.md +0 -49
  298. package/.opencode/skills/bmad-create-story/workflow.md +0 -380
  299. package/.opencode/skills/bmad-create-ux-design/SKILL.md +0 -6
  300. package/.opencode/skills/bmad-create-ux-design/steps/step-01-init.md +0 -135
  301. package/.opencode/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -127
  302. package/.opencode/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -190
  303. package/.opencode/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -217
  304. package/.opencode/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -220
  305. package/.opencode/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -235
  306. package/.opencode/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -253
  307. package/.opencode/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -255
  308. package/.opencode/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -225
  309. package/.opencode/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -225
  310. package/.opencode/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -242
  311. package/.opencode/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -249
  312. package/.opencode/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -238
  313. package/.opencode/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
  314. package/.opencode/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -171
  315. package/.opencode/skills/bmad-create-ux-design/ux-design-template.md +0 -13
  316. package/.opencode/skills/bmad-create-ux-design/workflow.md +0 -36
  317. package/.opencode/skills/bmad-distillator/SKILL.md +0 -178
  318. package/.opencode/skills/bmad-distillator/agents/distillate-compressor.md +0 -116
  319. package/.opencode/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -68
  320. package/.opencode/skills/bmad-distillator/resources/compression-rules.md +0 -51
  321. package/.opencode/skills/bmad-distillator/resources/distillate-format-reference.md +0 -227
  322. package/.opencode/skills/bmad-distillator/resources/splitting-strategy.md +0 -78
  323. package/.opencode/skills/bmad-distillator/scripts/analyze_sources.py +0 -300
  324. package/.opencode/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -204
  325. package/.opencode/skills/bmad-document-project/SKILL.md +0 -6
  326. package/.opencode/skills/bmad-document-project/checklist.md +0 -245
  327. package/.opencode/skills/bmad-document-project/documentation-requirements.csv +0 -12
  328. package/.opencode/skills/bmad-document-project/instructions.md +0 -128
  329. package/.opencode/skills/bmad-document-project/templates/deep-dive-template.md +0 -345
  330. package/.opencode/skills/bmad-document-project/templates/index-template.md +0 -169
  331. package/.opencode/skills/bmad-document-project/templates/project-overview-template.md +0 -103
  332. package/.opencode/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -160
  333. package/.opencode/skills/bmad-document-project/templates/source-tree-template.md +0 -135
  334. package/.opencode/skills/bmad-document-project/workflow.md +0 -27
  335. package/.opencode/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -299
  336. package/.opencode/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
  337. package/.opencode/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -1107
  338. package/.opencode/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -34
  339. package/.opencode/skills/bmad-domain-research/SKILL.md +0 -6
  340. package/.opencode/skills/bmad-domain-research/domain-steps/step-01-init.md +0 -137
  341. package/.opencode/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
  342. package/.opencode/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
  343. package/.opencode/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
  344. package/.opencode/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
  345. package/.opencode/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -444
  346. package/.opencode/skills/bmad-domain-research/research.template.md +0 -29
  347. package/.opencode/skills/bmad-domain-research/workflow.md +0 -49
  348. package/.opencode/skills/bmad-edit-prd/SKILL.md +0 -6
  349. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  350. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  351. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  352. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  353. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
  354. package/.opencode/skills/bmad-edit-prd/workflow.md +0 -63
  355. package/.opencode/skills/bmad-editorial-review-prose/SKILL.md +0 -86
  356. package/.opencode/skills/bmad-editorial-review-structure/SKILL.md +0 -179
  357. package/.opencode/skills/bmad-generate-project-context/SKILL.md +0 -6
  358. package/.opencode/skills/bmad-generate-project-context/project-context-template.md +0 -21
  359. package/.opencode/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -186
  360. package/.opencode/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -321
  361. package/.opencode/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -278
  362. package/.opencode/skills/bmad-generate-project-context/workflow.md +0 -43
  363. package/.opencode/skills/bmad-help/SKILL.md +0 -73
  364. package/.opencode/skills/bmad-index-docs/SKILL.md +0 -66
  365. package/.opencode/skills/bmad-init/SKILL.md +0 -100
  366. package/.opencode/skills/bmad-init/resources/core-module.yaml +0 -25
  367. package/.opencode/skills/bmad-init/scripts/bmad_init.py +0 -593
  368. package/.opencode/skills/bmad-init/scripts/tests/test_bmad_init.py +0 -329
  369. package/.opencode/skills/bmad-ma-agent-cyber/SKILL.md +0 -49
  370. package/.opencode/skills/bmad-ma-agent-cyber/bmad-skill-manifest.yaml +0 -11
  371. package/.opencode/skills/bmad-ma-agent-devops/SKILL.md +0 -49
  372. package/.opencode/skills/bmad-ma-agent-devops/bmad-skill-manifest.yaml +0 -11
  373. package/.opencode/skills/bmad-ma-agent-mil498/SKILL.md +0 -53
  374. package/.opencode/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +0 -11
  375. package/.opencode/skills/bmad-ma-agent-ml/.gitkeep +0 -0
  376. package/.opencode/skills/bmad-ma-agent-ml/SKILL.md +0 -59
  377. package/.opencode/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +0 -11
  378. package/.opencode/skills/bmad-ma-agent-sre/.gitkeep +0 -0
  379. package/.opencode/skills/bmad-ma-agent-sre/SKILL.md +0 -49
  380. package/.opencode/skills/bmad-ma-agent-sre/bmad-skill-manifest.yaml +0 -11
  381. package/.opencode/skills/bmad-market-research/SKILL.md +0 -6
  382. package/.opencode/skills/bmad-market-research/research.template.md +0 -29
  383. package/.opencode/skills/bmad-market-research/steps/step-01-init.md +0 -184
  384. package/.opencode/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
  385. package/.opencode/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
  386. package/.opencode/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
  387. package/.opencode/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
  388. package/.opencode/skills/bmad-market-research/steps/step-06-research-completion.md +0 -478
  389. package/.opencode/skills/bmad-market-research/workflow.md +0 -49
  390. package/.opencode/skills/bmad-party-mode/SKILL.md +0 -6
  391. package/.opencode/skills/bmad-party-mode/steps/step-01-agent-loading.md +0 -138
  392. package/.opencode/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -187
  393. package/.opencode/skills/bmad-party-mode/steps/step-03-graceful-exit.md +0 -167
  394. package/.opencode/skills/bmad-party-mode/workflow.md +0 -190
  395. package/.opencode/skills/bmad-product-brief/SKILL.md +0 -87
  396. package/.opencode/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -60
  397. package/.opencode/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
  398. package/.opencode/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
  399. package/.opencode/skills/bmad-product-brief/agents/web-researcher.md +0 -49
  400. package/.opencode/skills/bmad-product-brief/bmad-manifest.json +0 -17
  401. package/.opencode/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -57
  402. package/.opencode/skills/bmad-product-brief/prompts/draft-and-review.md +0 -86
  403. package/.opencode/skills/bmad-product-brief/prompts/finalize.md +0 -75
  404. package/.opencode/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -70
  405. package/.opencode/skills/bmad-product-brief/resources/brief-template.md +0 -60
  406. package/.opencode/skills/bmad-qa-generate-e2e-tests/SKILL.md +0 -6
  407. package/.opencode/skills/bmad-qa-generate-e2e-tests/checklist.md +0 -33
  408. package/.opencode/skills/bmad-qa-generate-e2e-tests/workflow.md +0 -136
  409. package/.opencode/skills/bmad-quick-dev/SKILL.md +0 -6
  410. package/.opencode/skills/bmad-quick-dev/spec-template.md +0 -88
  411. package/.opencode/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -64
  412. package/.opencode/skills/bmad-quick-dev/step-02-plan.md +0 -35
  413. package/.opencode/skills/bmad-quick-dev/step-03-implement.md +0 -37
  414. package/.opencode/skills/bmad-quick-dev/step-04-review.md +0 -49
  415. package/.opencode/skills/bmad-quick-dev/step-05-present.md +0 -63
  416. package/.opencode/skills/bmad-quick-dev/step-oneshot.md +0 -49
  417. package/.opencode/skills/bmad-quick-dev/workflow.md +0 -79
  418. package/.opencode/skills/bmad-retrospective/SKILL.md +0 -6
  419. package/.opencode/skills/bmad-retrospective/workflow.md +0 -1479
  420. package/.opencode/skills/bmad-review-adversarial-general/SKILL.md +0 -37
  421. package/.opencode/skills/bmad-review-edge-case-hunter/SKILL.md +0 -67
  422. package/.opencode/skills/bmad-shard-doc/SKILL.md +0 -105
  423. package/.opencode/skills/bmad-sprint-planning/SKILL.md +0 -6
  424. package/.opencode/skills/bmad-sprint-planning/checklist.md +0 -33
  425. package/.opencode/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -56
  426. package/.opencode/skills/bmad-sprint-planning/workflow.md +0 -263
  427. package/.opencode/skills/bmad-sprint-status/SKILL.md +0 -6
  428. package/.opencode/skills/bmad-sprint-status/workflow.md +0 -261
  429. package/.opencode/skills/bmad-technical-research/SKILL.md +0 -6
  430. package/.opencode/skills/bmad-technical-research/research.template.md +0 -29
  431. package/.opencode/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -137
  432. package/.opencode/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
  433. package/.opencode/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
  434. package/.opencode/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
  435. package/.opencode/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
  436. package/.opencode/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -487
  437. package/.opencode/skills/bmad-technical-research/workflow.md +0 -50
  438. package/.opencode/skills/bmad-validate-prd/SKILL.md +0 -6
  439. package/.opencode/skills/bmad-validate-prd/data/domain-complexity.csv +0 -15
  440. package/.opencode/skills/bmad-validate-prd/data/prd-purpose.md +0 -197
  441. package/.opencode/skills/bmad-validate-prd/data/project-types.csv +0 -11
  442. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  443. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  444. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  445. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  446. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  447. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  448. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  449. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  450. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  451. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  452. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  453. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  454. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  455. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -229
  456. package/.opencode/skills/bmad-validate-prd/workflow.md +0 -62
  457. package/.opencode/skills/cleanup-done/.gitkeep +0 -0
  458. package/.opencode/skills/cleanup-done/SKILL.md +0 -159
  459. package/.opencode/skills/create-bug-story/.gitkeep +0 -0
  460. package/.opencode/skills/create-bug-story/SKILL.md +0 -263
  461. package/.opencode/skills/cyber-generate-certs/.gitkeep +0 -0
  462. package/.opencode/skills/cyber-generate-certs/SKILL.md +0 -27
  463. package/.opencode/skills/cyber-generate-certs/bmad-skill-manifest.yaml +0 -3
  464. package/.opencode/skills/cyber-immunity-estimation/.gitkeep +0 -0
  465. package/.opencode/skills/cyber-immunity-estimation/SKILL.md +0 -29
  466. package/.opencode/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +0 -3
  467. package/.opencode/skills/cyber-security-audit/.gitkeep +0 -0
  468. package/.opencode/skills/cyber-security-audit/SKILL.md +0 -27
  469. package/.opencode/skills/cyber-security-audit/bmad-skill-manifest.yaml +0 -3
  470. package/.opencode/skills/cyber-vault-secrets/.gitkeep +0 -0
  471. package/.opencode/skills/cyber-vault-secrets/SKILL.md +0 -28
  472. package/.opencode/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +0 -3
  473. package/.opencode/skills/cyber-verify-docker-users/.gitkeep +0 -0
  474. package/.opencode/skills/cyber-verify-docker-users/SKILL.md +0 -23
  475. package/.opencode/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +0 -3
  476. package/.opencode/skills/cyber-verify-image-signature/.gitkeep +0 -0
  477. package/.opencode/skills/cyber-verify-image-signature/SKILL.md +0 -22
  478. package/.opencode/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +0 -3
  479. package/.opencode/skills/cyber-vulnerability-scan/.gitkeep +0 -0
  480. package/.opencode/skills/cyber-vulnerability-scan/SKILL.md +0 -28
  481. package/.opencode/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +0 -3
  482. package/.opencode/skills/devops-configure-infrastructure/.gitkeep +0 -0
  483. package/.opencode/skills/devops-configure-infrastructure/SKILL.md +0 -27
  484. package/.opencode/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +0 -3
  485. package/.opencode/skills/devops-disconnected-deployment/.gitkeep +0 -0
  486. package/.opencode/skills/devops-disconnected-deployment/SKILL.md +0 -27
  487. package/.opencode/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +0 -3
  488. package/.opencode/skills/devops-docker-compose-setup/.gitkeep +0 -0
  489. package/.opencode/skills/devops-docker-compose-setup/SKILL.md +0 -26
  490. package/.opencode/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +0 -3
  491. package/.opencode/skills/devops-manage-helm/.gitkeep +0 -0
  492. package/.opencode/skills/devops-manage-helm/SKILL.md +0 -28
  493. package/.opencode/skills/devops-manage-helm/bmad-skill-manifest.yaml +0 -3
  494. package/.opencode/skills/devops-sign-docker-image/.gitkeep +0 -0
  495. package/.opencode/skills/devops-sign-docker-image/SKILL.md +0 -24
  496. package/.opencode/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +0 -3
  497. package/.opencode/skills/generate-backlog/.gitkeep +0 -0
  498. package/.opencode/skills/generate-backlog/SKILL.md +0 -183
  499. package/.opencode/skills/generate-backlog/bmad-skill-manifest.yaml +0 -3
  500. package/.opencode/skills/git-workflow-skill/SKILL.md +0 -194
  501. package/.opencode/skills/git-workflow-skill/hooks/commit-msg +0 -61
  502. package/.opencode/skills/git-workflow-skill/hooks/pre-commit +0 -38
  503. package/.opencode/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  504. package/.opencode/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  505. package/.opencode/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  506. package/.opencode/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  507. package/.opencode/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  508. package/.opencode/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  509. package/.opencode/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  510. package/.opencode/skills/js-ts-security-skill/SKILL.md +0 -64
  511. package/.opencode/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  512. package/.opencode/skills/logging-best-practices/SKILL.md +0 -50
  513. package/.opencode/skills/logging-best-practices/examples/cpp.md +0 -36
  514. package/.opencode/skills/logging-best-practices/examples/csharp.md +0 -49
  515. package/.opencode/skills/logging-best-practices/examples/javascript.md +0 -77
  516. package/.opencode/skills/logging-best-practices/examples/python.md +0 -57
  517. package/.opencode/skills/logging-best-practices/references/logging-standards.md +0 -29
  518. package/.opencode/skills/mil498-ocd/.gitkeep +0 -0
  519. package/.opencode/skills/mil498-ocd/SKILL.md +0 -30
  520. package/.opencode/skills/mil498-ocd/bmad-skill-manifest.yaml +0 -5
  521. package/.opencode/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +0 -26
  522. package/.opencode/skills/mil498-ocd/prompts/02-load-template.md +0 -10
  523. package/.opencode/skills/mil498-ocd/prompts/03-generate-document.md +0 -90
  524. package/.opencode/skills/mil498-ocd/prompts/04-validate.md +0 -14
  525. package/.opencode/skills/mil498-ocd/prompts/05-review.md +0 -15
  526. package/.opencode/skills/mil498-ocd/prompts/06-save.md +0 -15
  527. package/.opencode/skills/mil498-sdd/.gitkeep +0 -0
  528. package/.opencode/skills/mil498-sdd/SKILL.md +0 -30
  529. package/.opencode/skills/mil498-sdd/bmad-skill-manifest.yaml +0 -5
  530. package/.opencode/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +0 -50
  531. package/.opencode/skills/mil498-sdd/prompts/02-load-template.md +0 -10
  532. package/.opencode/skills/mil498-sdd/prompts/03-generate-document.md +0 -98
  533. package/.opencode/skills/mil498-sdd/prompts/04-validate.md +0 -16
  534. package/.opencode/skills/mil498-sdd/prompts/05-review.md +0 -15
  535. package/.opencode/skills/mil498-sdd/prompts/06-save.md +0 -19
  536. package/.opencode/skills/mil498-sdd/template.md +0 -163
  537. package/.opencode/skills/mil498-sdp/.gitkeep +0 -0
  538. package/.opencode/skills/mil498-sdp/SKILL.md +0 -30
  539. package/.opencode/skills/mil498-sdp/bmad-skill-manifest.yaml +0 -5
  540. package/.opencode/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +0 -32
  541. package/.opencode/skills/mil498-sdp/prompts/02-load-template.md +0 -10
  542. package/.opencode/skills/mil498-sdp/prompts/03-generate-document.md +0 -187
  543. package/.opencode/skills/mil498-sdp/prompts/04-validate.md +0 -13
  544. package/.opencode/skills/mil498-sdp/prompts/05-review.md +0 -15
  545. package/.opencode/skills/mil498-sdp/prompts/06-save.md +0 -14
  546. package/.opencode/skills/mil498-srs/.gitkeep +0 -0
  547. package/.opencode/skills/mil498-srs/SKILL.md +0 -30
  548. package/.opencode/skills/mil498-srs/bmad-skill-manifest.yaml +0 -5
  549. package/.opencode/skills/mil498-srs/prompts/01-discover-project-artifacts.md +0 -42
  550. package/.opencode/skills/mil498-srs/prompts/02-load-template.md +0 -10
  551. package/.opencode/skills/mil498-srs/prompts/03-generate-document.md +0 -100
  552. package/.opencode/skills/mil498-srs/prompts/04-validate.md +0 -16
  553. package/.opencode/skills/mil498-srs/prompts/05-review.md +0 -15
  554. package/.opencode/skills/mil498-srs/prompts/06-save.md +0 -18
  555. package/.opencode/skills/mil498-ssdd/.gitkeep +0 -0
  556. package/.opencode/skills/mil498-ssdd/SKILL.md +0 -32
  557. package/.opencode/skills/mil498-ssdd/bmad-skill-manifest.yaml +0 -5
  558. package/.opencode/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +0 -32
  559. package/.opencode/skills/mil498-ssdd/prompts/02-load-template.md +0 -10
  560. package/.opencode/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +0 -43
  561. package/.opencode/skills/mil498-ssdd/prompts/04-generate-document.md +0 -96
  562. package/.opencode/skills/mil498-ssdd/prompts/05-validate.md +0 -14
  563. package/.opencode/skills/mil498-ssdd/prompts/06-review.md +0 -16
  564. package/.opencode/skills/mil498-ssdd/prompts/07-save.md +0 -16
  565. package/.opencode/skills/mil498-sss/.gitkeep +0 -0
  566. package/.opencode/skills/mil498-sss/SKILL.md +0 -31
  567. package/.opencode/skills/mil498-sss/bmad-skill-manifest.yaml +0 -5
  568. package/.opencode/skills/mil498-sss/prompts/01-discover-project-artifacts.md +0 -31
  569. package/.opencode/skills/mil498-sss/prompts/02-load-template.md +0 -10
  570. package/.opencode/skills/mil498-sss/prompts/03-generate-document.md +0 -108
  571. package/.opencode/skills/mil498-sss/prompts/04-validate.md +0 -16
  572. package/.opencode/skills/mil498-sss/prompts/05-review.md +0 -15
  573. package/.opencode/skills/mil498-sss/prompts/06-save.md +0 -15
  574. package/.opencode/skills/mil498-std/.gitkeep +0 -0
  575. package/.opencode/skills/mil498-std/SKILL.md +0 -30
  576. package/.opencode/skills/mil498-std/bmad-skill-manifest.yaml +0 -5
  577. package/.opencode/skills/mil498-std/prompts/01-discover-project-artifacts.md +0 -42
  578. package/.opencode/skills/mil498-std/prompts/02-load-template.md +0 -10
  579. package/.opencode/skills/mil498-std/prompts/03-generate-document.md +0 -117
  580. package/.opencode/skills/mil498-std/prompts/04-validate.md +0 -15
  581. package/.opencode/skills/mil498-std/prompts/05-review.md +0 -15
  582. package/.opencode/skills/mil498-std/prompts/06-save.md +0 -15
  583. package/.opencode/skills/ml-advise/.gitkeep +0 -0
  584. package/.opencode/skills/ml-advise/SKILL.md +0 -76
  585. package/.opencode/skills/ml-advise/bmad-skill-manifest.yaml +0 -3
  586. package/.opencode/skills/ml-advise/skill.json +0 -7
  587. package/.opencode/skills/ml-analysis/.gitkeep +0 -0
  588. package/.opencode/skills/ml-analysis/SKILL.md +0 -60
  589. package/.opencode/skills/ml-analysis/bmad-skill-manifest.yaml +0 -3
  590. package/.opencode/skills/ml-analysis/skill.json +0 -7
  591. package/.opencode/skills/ml-architecture/.gitkeep +0 -0
  592. package/.opencode/skills/ml-architecture/SKILL.md +0 -55
  593. package/.opencode/skills/ml-architecture/bmad-skill-manifest.yaml +0 -3
  594. package/.opencode/skills/ml-architecture/skill.json +0 -7
  595. package/.opencode/skills/ml-detailed-design/.gitkeep +0 -0
  596. package/.opencode/skills/ml-detailed-design/SKILL.md +0 -67
  597. package/.opencode/skills/ml-detailed-design/bmad-skill-manifest.yaml +0 -3
  598. package/.opencode/skills/ml-detailed-design/skill.json +0 -7
  599. package/.opencode/skills/ml-eda/.gitkeep +0 -0
  600. package/.opencode/skills/ml-eda/SKILL.md +0 -56
  601. package/.opencode/skills/ml-eda/bmad-skill-manifest.yaml +0 -3
  602. package/.opencode/skills/ml-eda/scripts/baseline_classifier.py +0 -522
  603. package/.opencode/skills/ml-eda/scripts/class_weights_calculator.py +0 -295
  604. package/.opencode/skills/ml-eda/scripts/clustering_explorer.py +0 -383
  605. package/.opencode/skills/ml-eda/scripts/eda_analyzer.py +0 -654
  606. package/.opencode/skills/ml-eda/skill.json +0 -7
  607. package/.opencode/skills/ml-experiment/.gitkeep +0 -0
  608. package/.opencode/skills/ml-experiment/SKILL.md +0 -74
  609. package/.opencode/skills/ml-experiment/assets/advanced_trainer_configs.py +0 -430
  610. package/.opencode/skills/ml-experiment/assets/quick_trainer_setup.py +0 -233
  611. package/.opencode/skills/ml-experiment/assets/template_datamodule.py +0 -219
  612. package/.opencode/skills/ml-experiment/assets/template_gnn_module.py +0 -341
  613. package/.opencode/skills/ml-experiment/assets/template_lightning_module.py +0 -158
  614. package/.opencode/skills/ml-experiment/bmad-skill-manifest.yaml +0 -3
  615. package/.opencode/skills/ml-experiment/skill.json +0 -7
  616. package/.opencode/skills/ml-hparam/.gitkeep +0 -0
  617. package/.opencode/skills/ml-hparam/SKILL.md +0 -81
  618. package/.opencode/skills/ml-hparam/bmad-skill-manifest.yaml +0 -3
  619. package/.opencode/skills/ml-hparam/skill.json +0 -7
  620. package/.opencode/skills/ml-ideation/.gitkeep +0 -0
  621. package/.opencode/skills/ml-ideation/SKILL.md +0 -50
  622. package/.opencode/skills/ml-ideation/bmad-skill-manifest.yaml +0 -3
  623. package/.opencode/skills/ml-ideation/scripts/validate_ml_prd.py +0 -287
  624. package/.opencode/skills/ml-ideation/skill.json +0 -7
  625. package/.opencode/skills/ml-infra/.gitkeep +0 -0
  626. package/.opencode/skills/ml-infra/SKILL.md +0 -58
  627. package/.opencode/skills/ml-infra/bmad-skill-manifest.yaml +0 -3
  628. package/.opencode/skills/ml-infra/skill.json +0 -7
  629. package/.opencode/skills/ml-retrospective/.gitkeep +0 -0
  630. package/.opencode/skills/ml-retrospective/SKILL.md +0 -63
  631. package/.opencode/skills/ml-retrospective/bmad-skill-manifest.yaml +0 -3
  632. package/.opencode/skills/ml-retrospective/skill.json +0 -7
  633. package/.opencode/skills/ml-revision/.gitkeep +0 -0
  634. package/.opencode/skills/ml-revision/SKILL.md +0 -82
  635. package/.opencode/skills/ml-revision/bmad-skill-manifest.yaml +0 -3
  636. package/.opencode/skills/ml-revision/skill.json +0 -7
  637. package/.opencode/skills/ml-techspec/.gitkeep +0 -0
  638. package/.opencode/skills/ml-techspec/SKILL.md +0 -80
  639. package/.opencode/skills/ml-techspec/bmad-skill-manifest.yaml +0 -3
  640. package/.opencode/skills/ml-techspec/skill.json +0 -7
  641. package/.opencode/skills/modify-sprint/.gitkeep +0 -0
  642. package/.opencode/skills/modify-sprint/SKILL.md +0 -322
  643. package/.opencode/skills/modify-sprint/bmad-skill-manifest.yaml +0 -3
  644. package/.opencode/skills/open-presentation/SKILL.md +0 -35
  645. package/.opencode/skills/opentelemetry-best-practices/SKILL.md +0 -34
  646. package/.opencode/skills/opentelemetry-best-practices/examples/go.md +0 -32
  647. package/.opencode/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  648. package/.opencode/skills/opentelemetry-best-practices/examples/python.md +0 -37
  649. package/.opencode/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  650. package/.opencode/skills/prioritize-backlog/.gitkeep +0 -0
  651. package/.opencode/skills/prioritize-backlog/SKILL.md +0 -195
  652. package/.opencode/skills/prioritize-backlog/bmad-skill-manifest.yaml +0 -3
  653. package/.opencode/skills/project-context-expansion/.gitkeep +0 -0
  654. package/.opencode/skills/project-context-expansion/SKILL.md +0 -238
  655. package/.opencode/skills/project-context-expansion/bmad-skill-manifest.yaml +0 -3
  656. package/.opencode/skills/python-best-practices/SKILL.md +0 -385
  657. package/.opencode/skills/python-dependency-mgmt/SKILL.md +0 -42
  658. package/.opencode/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  659. package/.opencode/skills/python-security-skill/SKILL.md +0 -56
  660. package/.opencode/skills/python-security-skill/examples/security.md +0 -56
  661. package/.opencode/skills/remove-from-sprint/.gitkeep +0 -0
  662. package/.opencode/skills/remove-from-sprint/SKILL.md +0 -163
  663. package/.opencode/skills/remove-from-sprint/bmad-skill-manifest.yaml +0 -3
  664. package/.opencode/skills/self-signed-cert/SKILL.md +0 -42
  665. package/.opencode/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  666. package/.opencode/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  667. package/.opencode/skills/skill-creator/SKILL.md +0 -196
  668. package/.opencode/skills/skill-creator/references/output-patterns.md +0 -82
  669. package/.opencode/skills/skill-creator/references/workflows.md +0 -28
  670. package/.opencode/skills/skill-creator/scripts/init_skill.py +0 -208
  671. package/.opencode/skills/skill-creator/scripts/package_skill.py +0 -99
  672. package/.opencode/skills/skill-creator/scripts/quick_validate.py +0 -113
  673. package/.opencode/skills/sprint-status-view/.gitkeep +0 -0
  674. package/.opencode/skills/sprint-status-view/SKILL.md +0 -263
  675. package/.opencode/skills/sprint-status-view/bmad-skill-manifest.yaml +0 -3
  676. package/.opencode/skills/sre-check-deployment-status/.gitkeep +0 -0
  677. package/.opencode/skills/sre-check-deployment-status/SKILL.md +0 -32
  678. package/.opencode/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +0 -3
  679. package/.opencode/skills/sre-check-secrets/.gitkeep +0 -0
  680. package/.opencode/skills/sre-check-secrets/SKILL.md +0 -23
  681. package/.opencode/skills/sre-check-secrets/bmad-skill-manifest.yaml +0 -3
  682. package/.opencode/skills/sre-check-system-status/.gitkeep +0 -0
  683. package/.opencode/skills/sre-check-system-status/SKILL.md +0 -27
  684. package/.opencode/skills/sre-check-system-status/bmad-skill-manifest.yaml +0 -3
  685. package/.opencode/skills/sre-day-2-ops/.gitkeep +0 -0
  686. package/.opencode/skills/sre-day-2-ops/SKILL.md +0 -26
  687. package/.opencode/skills/sre-day-2-ops/bmad-skill-manifest.yaml +0 -3
  688. package/.opencode/skills/sre-deployment-strategies/.gitkeep +0 -0
  689. package/.opencode/skills/sre-deployment-strategies/SKILL.md +0 -28
  690. package/.opencode/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +0 -3
  691. package/.opencode/skills/sre-fix-deployments/.gitkeep +0 -0
  692. package/.opencode/skills/sre-fix-deployments/SKILL.md +0 -25
  693. package/.opencode/skills/sre-fix-deployments/bmad-skill-manifest.yaml +0 -3
  694. package/.opencode/skills/sre-gitops-status/.gitkeep +0 -0
  695. package/.opencode/skills/sre-gitops-status/SKILL.md +0 -25
  696. package/.opencode/skills/sre-gitops-status/bmad-skill-manifest.yaml +0 -3
  697. package/.opencode/skills/story-status-lookup/SKILL.md +0 -78
  698. package/.opencode/skills/test-accompanied-development/SKILL.md +0 -50
  699. package/.opencode/skills/test-generator/SKILL.md +0 -65
  700. package/.opencode/skills/vercel-react-best-practices/SKILL.md +0 -109
  701. package/.opencode/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  702. package/.opencode/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  703. package/.roo/rules/00-ma-agents.md +0 -13
  704. package/.roo/skills/.ma-agents.json +0 -122
  705. package/.roo/skills/MANIFEST.yaml +0 -126
  706. package/.roo/skills/git-workflow-skill/SKILL.md +0 -194
  707. package/.roo/skills/git-workflow-skill/hooks/commit-msg +0 -61
  708. package/.roo/skills/git-workflow-skill/hooks/pre-commit +0 -38
  709. package/.roo/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  710. package/.roo/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  711. package/.roo/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  712. package/.roo/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  713. package/.roo/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  714. package/.roo/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  715. package/.roo/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  716. package/.roo/skills/js-ts-security-skill/SKILL.md +0 -64
  717. package/.roo/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  718. package/.roo/skills/logging-best-practices/SKILL.md +0 -50
  719. package/.roo/skills/logging-best-practices/examples/cpp.md +0 -36
  720. package/.roo/skills/logging-best-practices/examples/csharp.md +0 -49
  721. package/.roo/skills/logging-best-practices/examples/javascript.md +0 -77
  722. package/.roo/skills/logging-best-practices/examples/python.md +0 -57
  723. package/.roo/skills/logging-best-practices/references/logging-standards.md +0 -29
  724. package/.roo/skills/open-presentation/SKILL.md +0 -35
  725. package/.roo/skills/opentelemetry-best-practices/SKILL.md +0 -34
  726. package/.roo/skills/opentelemetry-best-practices/examples/go.md +0 -32
  727. package/.roo/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  728. package/.roo/skills/opentelemetry-best-practices/examples/python.md +0 -37
  729. package/.roo/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  730. package/.roo/skills/python-best-practices/SKILL.md +0 -385
  731. package/.roo/skills/python-dependency-mgmt/SKILL.md +0 -42
  732. package/.roo/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  733. package/.roo/skills/python-security-skill/SKILL.md +0 -56
  734. package/.roo/skills/python-security-skill/examples/security.md +0 -56
  735. package/.roo/skills/self-signed-cert/SKILL.md +0 -42
  736. package/.roo/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  737. package/.roo/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  738. package/.roo/skills/skill-creator/SKILL.md +0 -196
  739. package/.roo/skills/skill-creator/references/output-patterns.md +0 -82
  740. package/.roo/skills/skill-creator/references/workflows.md +0 -28
  741. package/.roo/skills/skill-creator/scripts/init_skill.py +0 -208
  742. package/.roo/skills/skill-creator/scripts/package_skill.py +0 -99
  743. package/.roo/skills/skill-creator/scripts/quick_validate.py +0 -113
  744. package/.roo/skills/story-status-lookup/SKILL.md +0 -78
  745. package/.roo/skills/test-accompanied-development/SKILL.md +0 -50
  746. package/.roo/skills/test-generator/SKILL.md +0 -65
  747. package/.roo/skills/vercel-react-best-practices/SKILL.md +0 -109
  748. package/.roo/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  749. package/.roo/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  750. package/opencode.json +0 -5
  751. /package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/bmad-dev-story}/.gitkeep +0 -0
  752. /package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/SKILL.md +0 -0
  753. /package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-sprint-planning}/.gitkeep +0 -0
  754. /package/{.opencode/skills/bmad-ma-agent-cyber → lib/bmad-extension/skills/bmad-sprint-status}/.gitkeep +0 -0
  755. /package/{.opencode/skills/bmad-ma-agent-devops → lib/bmad-extension/skills/close-sprint}/.gitkeep +0 -0
  756. /package/{.opencode/skills/bmad-ma-agent-mil498 → lib/bmad-extension/skills/mil498-requirement-quality}/.gitkeep +0 -0
  757. /package/{.opencode/skills/mil498-ocd/template.md → mil498/OCD.md} +0 -0
  758. /package/{.opencode/skills/mil498-sdp/template.md → mil498/SDP.md} +0 -0
  759. /package/{.opencode/skills/mil498-srs/template.md → mil498/SRS.md} +0 -0
  760. /package/{.opencode/skills/mil498-ssdd/template.md → mil498/SSDD.md} +0 -0
  761. /package/{.opencode/skills/mil498-sss/template.md → mil498/SSS.md} +0 -0
  762. /package/{.opencode/skills/mil498-std/template.md → mil498/STD.md} +0 -0
@@ -0,0 +1,223 @@
1
+ # Story 16.1: Repository Layout Wizard
2
+
3
+ Status: review
4
+
5
+ <!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
6
+
7
+ ## Story
8
+
9
+ As a **Chief Architect**,
10
+ I want the installer to ask where the knowledgebase and sprint management are managed during installation,
11
+ So that the project layout is configured correctly for multi-repo environments.
12
+
13
+ ## Acceptance Criteria
14
+
15
+ 1. When the user runs `npx ma-agents install`, the wizard asks "Where is your knowledgebase managed?" with options: Current repository (default), Local path, Remote git repository (FR111)
16
+ 2. The wizard asks "Where is your sprint management managed?" with the same options (FR112)
17
+ 3. When the user selects "Remote git repository", the wizard asks for the git URL and local destination path for cloning. If the destination already exists and is a directory, it displays its contents summary and asks the user to confirm. If it exists but is a file, it warns and re-prompts (FR113)
18
+ 4. When the user selects "Remote git repository" and the destination does not exist, it clones the repository to that path using `execFileSync` (not `execSync`) to prevent command injection (FR114)
19
+ 5. When the user selects "Local path", the wizard validates the path exists and is a directory. If it does not exist, it alerts the user and asks to confirm or correct. If confirmed, logs a warning that the path must exist before agents run (FR115)
20
+ 6. When the user selects "Current repository" for both concerns, no additional configuration is needed — single-repo mode preserved (FR116)
21
+ 7. In `--yes` flag (CI/CD mode), the wizard checks env vars `MA_KNOWLEDGEBASE_PATH` and `MA_SPRINT_PATH`. If set, uses those paths (mode=local). If not set, defaults to "Current repository" (mode=same). Multi-repo is configurable headlessly via env vars (FR127 integration)
22
+ 8. Git clone uses `execFileSync('git', ['clone', gitUrl, destPath])` with `{ timeout: 120000, env: { ...process.env, GIT_TERMINAL_PROMPT: '0' } }` for space-safety, injection prevention, and hang protection
23
+ 9. Empty/whitespace-only inputs for git URL or destination path are rejected with re-prompt
24
+ 10. If a clone fails, any partially-created destination directory is cleaned up before offering retry. If user skips, the concern falls back to `same` mode with a warning logged
25
+
26
+ ## Tasks / Subtasks
27
+
28
+ - [x] Task 1: Add `collectRepoLayout()` function to `bin/cli.js` (AC: #1, #2, #6, #7)
29
+ - [x] 1.1 Create `collectRepoLayout(flags)` async function in `bin/cli.js`
30
+ - [x] 1.2 Implement the knowledgebase prompt using `prompts` library (type: `'select'`, choices as `{ title, value }` objects — matching existing wizard patterns)
31
+ - [x] 1.3 Implement the sprint management prompt with same choices
32
+ - [x] 1.4 Return layout object: `{ knowledgebase: { mode, path, gitUrl? }, sprintManagement: { mode, path, gitUrl? } }`
33
+ - [x] 1.5 When mode is `same`, set `path: '.'`
34
+ - [x] 1.6 In `--yes` mode: check `process.env.MA_KNOWLEDGEBASE_PATH` and `process.env.MA_SPRINT_PATH`. If set, use `{ mode: 'local', path: path.resolve(envValue) }`. If not set, use `{ mode: 'same', path: '.' }`
35
+ - [x] 1.7 If both concerns resolve to the same external path, log info: "Both concerns point to same external repository"
36
+
37
+ - [x] Task 2: Implement "Local path" flow (AC: #5, #9)
38
+ - [x] 2.1 Prompt user for local path string; reject empty/whitespace-only input with re-prompt
39
+ - [x] 2.2 Resolve to absolute path via `path.resolve(process.cwd(), localPath)`
40
+ - [x] 2.3 Check `fs.existsSync(resolved)`: if exists, verify `fs.statSync(resolved).isDirectory()` — if it's a file, warn and re-prompt
41
+ - [x] 2.4 If path does not exist: display warning with `chalk.yellow()`, ask user to confirm or provide corrected path
42
+ - [x] 2.5 If confirmed non-existent: store resolved path, log warning that path must exist before agents run
43
+ - [x] 2.6 If not confirmed, re-prompt for the path (loop)
44
+ - [x] 2.7 Warn if resolved path is inside the current repo (`resolved.startsWith(process.cwd())`) — nested repos cause git confusion
45
+
46
+ - [x] Task 3: Implement "Remote git repository" flow (AC: #3, #4, #8, #9, #10)
47
+ - [x] 3.1 Prompt user for git URL string; reject empty/whitespace-only input with re-prompt
48
+ - [x] 3.2 Prompt user for local destination path; reject empty/whitespace-only input with re-prompt
49
+ - [x] 3.3 Resolve destination to absolute path via `path.resolve()`
50
+ - [x] 3.4 If destination exists and is a file (not directory): warn with `chalk.red()` and re-prompt
51
+ - [x] 3.5 If destination exists and is a directory: display summary with `chalk.blue()` (file count, whether it's a git repo), ask user to confirm using existing directory
52
+ - [x] 3.6 If destination does not exist: run `execFileSync('git', ['clone', gitUrl, destPath], { timeout: 120000, env: { ...process.env, GIT_TERMINAL_PROMPT: '0' } })` — prevents injection, hangs, and SSH key prompts
53
+ - [x] 3.7 On clone failure: if `destPath` was created by the failed clone (didn't exist before), remove it (`fs.rmSync(destPath, { recursive: true, force: true })`). Then offer retry or skip
54
+ - [x] 3.8 If user skips after failure: fall back to `{ mode: 'same', path: '.' }`, log warning with `chalk.yellow('Falling back to current repository for {concern}')`
55
+ - [x] 3.9 Warn if destination resolves inside current repo
56
+
57
+ - [x] Task 4: Integrate into wizard flow (AC: #1-#10)
58
+ - [x] 4.1 Call `collectRepoLayout(flags)` in `installWizard()` AFTER agent selection (after ~line 333) and BEFORE scope selection (~line 336)
59
+ - [x] 4.2 Pass the returned layout object forward to the installation pipeline context
60
+ - [x] 4.3 Store layout in the installation context so subsequent steps (config write, project-context) can access it
61
+ - [x] 4.4 Verify `--yes` mode without env vars bypasses all repo layout prompts (defaults to same)
62
+ - [x] 4.5 Verify `--yes` mode with env vars creates local-mode layout without prompts
63
+
64
+ - [x] Task 5: Write unit tests (AC: #1-#10)
65
+ - [x] 5.1 Test `collectRepoLayout()` with `--yes` flag returns both as `same` mode
66
+ - [x] 5.2 Test `collectRepoLayout()` with `--yes` + env vars returns local mode with resolved paths
67
+ - [x] 5.3 Test local path validation: existing dir accepted, existing file rejected, non-existent warned
68
+ - [x] 5.4 Test remote flow: `execFileSync` called with correct args array (not string interpolation)
69
+ - [x] 5.5 Test clone failure: partial directory cleanup, skip fallback to same mode
70
+ - [x] 5.6 Test empty/whitespace input rejection for URL and path
71
+ - [x] 5.7 Test nested-repo warning when path is inside cwd
72
+
73
+ ## Dev Notes
74
+
75
+ ### Architecture Decision P2-10
76
+
77
+ This story implements the installation wizard portion of architecture decision P2-10 (Multi-Repository Project Layout). The wizard goes in `bin/cli.js` as a new section AFTER the agent selection prompts.
78
+
79
+ ### CRITICAL: Correct Prompt Library
80
+
81
+ The codebase uses the `prompts` npm package, NOT `inquirer`. See `bin/cli.js` line 3: `const prompts = require('prompts');`. Key syntax differences:
82
+ - List/select prompts use `type: 'select'` (not `'list'`)
83
+ - Choices use `{ title: 'Display text', value: 'value' }` (not `{ name, value }`)
84
+ - Import: `const prompts = require('prompts');`
85
+
86
+ ### Code Pattern Reference (Corrected)
87
+
88
+ ```javascript
89
+ // In bin/cli.js — new wizard section after agent selection
90
+ async function collectRepoLayout(flags) {
91
+ // CI/CD mode: check env vars first, then default
92
+ if (flags.yes) {
93
+ const kbPath = process.env.MA_KNOWLEDGEBASE_PATH;
94
+ const sprintPath = process.env.MA_SPRINT_PATH;
95
+ return {
96
+ knowledgebase: kbPath
97
+ ? { mode: 'local', path: path.resolve(kbPath) }
98
+ : { mode: 'same', path: '.' },
99
+ sprintManagement: sprintPath
100
+ ? { mode: 'local', path: path.resolve(sprintPath) }
101
+ : { mode: 'same', path: '.' },
102
+ };
103
+ }
104
+
105
+ const layout = { knowledgebase: null, sprintManagement: null };
106
+ for (const concern of ['knowledgebase', 'sprintManagement']) {
107
+ const { mode } = await prompts({
108
+ type: 'select',
109
+ name: 'mode',
110
+ message: `Where is your ${concern} managed?`,
111
+ choices: [
112
+ { title: 'Current repository (default)', value: 'same' },
113
+ { title: 'Local path', value: 'local' },
114
+ { title: 'Remote git repository', value: 'remote' },
115
+ ]
116
+ });
117
+ // ... mode-specific handling
118
+ }
119
+ return layout;
120
+ }
121
+ ```
122
+
123
+ ### SECURITY: Command Injection Prevention
124
+
125
+ **NEVER** use `execSync()` with string interpolation for git clone. The git URL is user-provided and could contain shell metacharacters. Use `execFileSync` which passes arguments as an array, bypassing shell interpretation:
126
+
127
+ ```javascript
128
+ // WRONG — command injection via URL
129
+ execSync(`git clone "${gitUrl}" "${destPath}"`);
130
+
131
+ // CORRECT — arguments passed as array, no shell
132
+ const { execFileSync } = require('child_process');
133
+ execFileSync('git', ['clone', gitUrl, destPath], {
134
+ timeout: 120000,
135
+ env: { ...process.env, GIT_TERMINAL_PROMPT: '0' },
136
+ stdio: 'inherit'
137
+ });
138
+ ```
139
+
140
+ ### Clone Failure Cleanup
141
+
142
+ If a clone fails partway through, the destination directory may contain a partial/corrupt clone. Before offering retry, check if the directory was created by the clone attempt and remove it:
143
+
144
+ ```javascript
145
+ const existedBefore = fs.existsSync(destPath);
146
+ try {
147
+ execFileSync('git', ['clone', gitUrl, destPath], { ... });
148
+ } catch (err) {
149
+ if (!existedBefore && fs.existsSync(destPath)) {
150
+ fs.rmSync(destPath, { recursive: true, force: true });
151
+ }
152
+ // offer retry or skip
153
+ }
154
+ ```
155
+
156
+ ### Key Implementation Constraints
157
+
158
+ 1. **`prompts` library** (NOT `inquirer`): Use `type: 'select'` with `{ title, value }` choices — match existing `bin/cli.js` patterns
159
+ 2. **File location**: `bin/cli.js` (NOT `cli.js` at project root — there is no such file)
160
+ 3. **`execFileSync` for git clone**: Array args, no shell, prevents injection
161
+ 4. **Clone timeout**: 120 seconds, matching existing `GIT_TERMINAL_PROMPT: '0'` pattern in `lib/bmad.js`
162
+ 5. **Cross-platform paths**: `path.resolve()` for normalization — do NOT use hardcoded separators
163
+ 6. **No new dependencies**: Use `fs`, `path`, `child_process` (already available), `chalk` (already imported), `prompts` (already imported)
164
+ 7. **CI/CD env vars**: `MA_KNOWLEDGEBASE_PATH` and `MA_SPRINT_PATH` enable headless multi-repo setup
165
+
166
+ ### NFR Compliance
167
+
168
+ | NFR | How This Story Addresses It |
169
+ |-----|----------------------------|
170
+ | NFR34 | Default "Current repository" preserves single-repo behavior — no change for existing users |
171
+ | NFR35 | Git clone uses user-provided URL — works with internal GitLab, local network repos |
172
+ | NFR9 | `path.resolve()` for cross-platform path handling |
173
+
174
+ ### Story Scope Boundary
175
+
176
+ This story ONLY implements the wizard collection. It does NOT write to config.yaml or create `project-layout.yaml` — that is Story 16.2. This story returns the layout object to the caller.
177
+
178
+ ### Project Structure Notes
179
+
180
+ - Primary file to modify: `bin/cli.js`
181
+ - Wizard section placement: after agent selection (~line 333), before scope selection (~line 336)
182
+ - The layout object is passed forward through the installation pipeline
183
+
184
+ ### References
185
+
186
+ - [Source: _bmad-output/planning-artifacts/architecture.md — Decision P2-10, lines 792-901]
187
+ - [Source: _bmad-output/planning-artifacts/epics.md — Story 16.1, lines 1972-2008]
188
+ - [Source: _bmad-output/planning-artifacts/prd.md — FR111-FR116, FR127, lines 574-598]
189
+ - [Source: _bmad-output/planning-artifacts/prd.md — NFR34-NFR37, lines 655-660]
190
+ - [Source: bin/cli.js — installWizard(), prompts library usage]
191
+
192
+ ## Dev Agent Record
193
+
194
+ ### Agent Model Used
195
+
196
+ Claude Opus 4.6 (1M context)
197
+
198
+ ### Debug Log References
199
+
200
+ None — implementation proceeded without errors.
201
+
202
+ ### Completion Notes List
203
+
204
+ - Implemented `collectRepoLayout(flags)` function with full CI/CD (--yes) and interactive support
205
+ - Implemented `collectLocalPath(concern)` helper for local path validation with re-prompt loops, directory/file checks, non-existent path warnings, and nested-repo detection
206
+ - Implemented `collectRemotePath(concern)` helper for remote git clone flow with `execFileSync` (injection-safe), clone failure cleanup, retry/skip fallback, and nested-repo detection
207
+ - Integrated `collectRepoLayout()` into `installWizard()` flow after agent selection, before scope selection
208
+ - Created 13 unit tests in `test/repo-layout.test.js` covering: --yes defaults, env var resolution, structural code checks (execFileSync array args, clone cleanup, empty input rejection, nested-repo warning), and integration test
209
+ - All 13 new tests pass, all existing tests pass (no regressions)
210
+ - Added `repo-layout.test.js` to `package.json` test script
211
+ - Exported `collectRepoLayout` from `bin/cli.js` for testability
212
+
213
+ ### Change Log
214
+
215
+ - 2026-03-28: Implemented story 16.1 — repository layout wizard with all 5 tasks complete
216
+
217
+ ### File List
218
+
219
+ - bin/cli.js (modified — added collectRepoLayout, collectLocalPath, collectRemotePath functions + integration)
220
+ - test/repo-layout.test.js (new — 13 unit/integration tests)
221
+ - package.json (modified — added repo-layout.test.js to test script)
222
+ - _bmad-output/implementation-artifacts/sprint-status.yaml (modified — story status)
223
+ - _bmad-output/implementation-artifacts/16-1-repository-layout-wizard.md (modified — task checkboxes, dev record)
@@ -0,0 +1,180 @@
1
+ # Story 16.2: Config Storage and Cross-Reference File
2
+
3
+ Status: review
4
+
5
+ <!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
6
+
7
+ ## Story
8
+
9
+ As a **DevOps engineer**,
10
+ I want the configured repo paths stored persistently and a cross-reference file created in the code repo,
11
+ So that agents and BMAD workflows can discover the correct paths without re-running installation.
12
+
13
+ ## Acceptance Criteria
14
+
15
+ 1. When knowledgebase is configured at `d:/Code/kb-repo` and sprint management at `d:/Code/sprint-repo`, `_bmad/bmm/config.yaml` contains `knowledgebase_path` and `sprint_management_path` fields with those values (FR117)
16
+ 2. When multi-repo mode is configured, `_bmad-output/project-layout.yaml` is created in the CODE repository with `generated`, `knowledgebase` (mode, path, gitUrl), and `sprint_management` (mode, path) sections (FR122)
17
+ 3. When single-repo mode is configured (both set to "current repository"), config.yaml contains `knowledgebase_path: "."` and `sprint_management_path: "."` — and NO `project-layout.yaml` is created (NFR34)
18
+ 4. Running the installer multiple times with the same multi-repo configuration produces an identical `project-layout.yaml` except for the `generated` date field (NFR36 deterministic)
19
+ 5. `project-layout.yaml` is generated by ma-agents installer, not by bmad-method — it lives in `_bmad-output/` which is version-controlled (per F3)
20
+ 6. Path values in both YAML files are always double-quoted and use forward slashes (cross-platform safe)
21
+ 7. If config.yaml already contains `knowledgebase_path`/`sprint_management_path` from a previous run, the values are updated in place (not duplicated)
22
+ 8. When switching from multi-repo to single-repo, a stale `project-layout.yaml` is deleted (not left behind with outdated paths)
23
+
24
+ ## Tasks / Subtasks
25
+
26
+ - [x] Task 1: Write repo layout to `_bmad/bmm/config.yaml` (AC: #1, #3, #6, #7)
27
+ - [x] 1.1 After `collectRepoLayout()` returns (Story 16.1), extract knowledgebase and sprint management paths
28
+ - [x] 1.2 Read existing `_bmad/bmm/config.yaml` content as string. If file does not exist, log error and skip (bmad-method should have created it)
29
+ - [x] 1.3 Normalize paths: `resolvedPath.replace(/\\/g, '/')` before writing
30
+ - [x] 1.4 For each field (`knowledgebase_path`, `sprint_management_path`): regex replace or append
31
+ - [x] 1.5 Always double-quote path values in YAML
32
+ - [x] 1.6 Wrap write in try/catch — non-fatal on permission errors
33
+ - [x] 1.7 For `same` mode, write `"."` as the path value
34
+
35
+ - [x] Task 2: Generate `project-layout.yaml` for multi-repo mode (AC: #2, #4, #5, #6)
36
+ - [x] 2.1 Check if either concern is NOT `same` mode — if both are `same`, skip
37
+ - [x] 2.2 Ensure `_bmad-output/` directory exists
38
+ - [x] 2.3 Generate `_bmad-output/project-layout.yaml` using template string
39
+ - [x] 2.4 Only include `gitUrl` field when mode is `remote`
40
+ - [x] 2.5 Normalize all paths before writing
41
+ - [x] 2.6 Always double-quote path and gitUrl values
42
+
43
+ - [x] Task 3: Handle single-repo mode and stale files (AC: #3, #8)
44
+ - [x] 3.1 When both concerns are `same` mode, do NOT create `project-layout.yaml`
45
+ - [x] 3.2 Delete stale `project-layout.yaml` when switching to single-repo
46
+ - [x] 3.3 Config.yaml still gets `"."` paths written
47
+
48
+ - [x] Task 4: Handle mode changes on reinstall (AC: #7, #8)
49
+ - [x] 4.1 Update existing fields in-place via regex
50
+ - [x] 4.2 Mode changes regenerate project-layout.yaml
51
+ - [x] 4.3 Mode changes to both-same delete project-layout.yaml
52
+
53
+ - [x] Task 5: Integrate into installation pipeline (AC: #1-#8)
54
+ - [x] 5.1 Place config write AFTER bmad-method installation completes
55
+ - [x] 5.2 Place project-layout.yaml generation after config write
56
+ - [x] 5.3 Log what was written
57
+ - [x] 5.4 Verify idempotency
58
+
59
+ - [x] Task 6: Write unit tests (AC: #1-#8)
60
+ - [x] 6.1 Test config write: both-same writes `"."`, multi-repo writes absolute paths
61
+ - [x] 6.2 Test config idempotency
62
+ - [x] 6.3 Test config update: existing fields replaced in place, no duplicates
63
+ - [x] 6.4 Test project-layout.yaml: created for multi-repo, skipped for single-repo
64
+ - [x] 6.5 Test stale cleanup: switching to single-repo deletes existing project-layout.yaml
65
+ - [x] 6.6 Test path normalization: backslashes converted to forward slashes
66
+ - [x] 6.7 Test YAML quoting: double-quoted paths
67
+ - [x] 6.8 Test file permissions error: non-fatal, logged gracefully
68
+
69
+ ## Dev Notes
70
+
71
+ ### CRITICAL: Correct Config File Location
72
+
73
+ **BMAD workflows read config from `_bmad/bmm/config.yaml`**, NOT `_bmad/core/config.yaml`. Every workflow.yaml in the codebase uses:
74
+ ```yaml
75
+ config_source: "{project-root}/_bmad/bmm/config.yaml"
76
+ ```
77
+
78
+ The architecture doc references `_bmad/core/config.yaml`, but the actual codebase uses `_bmad/bmm/config.yaml` for operational config that workflows consume. Write path fields to `_bmad/bmm/config.yaml` so workflows can resolve them at runtime.
79
+
80
+ ### Source of Truth Precedence
81
+
82
+ Three files can contain repo layout information. Their roles and precedence:
83
+
84
+ | File | Role | Authority |
85
+ |------|------|-----------|
86
+ | `_bmad/bmm/config.yaml` | **Runtime source of truth** — workflows read this at execution time | PRIMARY |
87
+ | `_bmad-output/project-layout.yaml` | **Agent discovery file** — agents in code repo discover cross-repo paths without loading BMAD config | INFORMATIONAL |
88
+ | `_bmad-output/project-context.md` | **Agent constitutional doc** — stamps paths into agent operating rules | INSTRUCTIONAL |
89
+
90
+ If these ever disagree, `_bmad/bmm/config.yaml` wins.
91
+
92
+ ### Idempotent YAML Write Pattern
93
+
94
+ The codebase avoids `js-yaml` as a dependency. Use regex-based find/replace for idempotent config writes:
95
+
96
+ ```javascript
97
+ function writeConfigField(content, fieldName, value) {
98
+ const regex = new RegExp(`^${fieldName}:.*$`, 'm');
99
+ const newLine = `${fieldName}: "${value}"`;
100
+ if (regex.test(content)) {
101
+ return content.replace(regex, newLine); // update in place
102
+ }
103
+ // append (ensure trailing newline)
104
+ return content.trimEnd() + '\n' + newLine + '\n';
105
+ }
106
+ ```
107
+
108
+ ### Stale File Cleanup
109
+
110
+ When switching from multi-repo to single-repo, the `project-layout.yaml` must be deleted — not left behind. Agents reading a stale file would use outdated paths silently. This is a deliberate departure from the "leave it" approach in the original architecture, based on the adversarial review finding that stale files cause silent path misdirection.
111
+
112
+ ### Key Implementation Constraints
113
+
114
+ 1. **Write to `_bmad/bmm/config.yaml`**: This is where workflows actually read from — verified by checking `config_source` in all workflow.yaml files
115
+ 2. **No js-yaml dependency**: Use string templates and regex for YAML operations
116
+ 3. **Always double-quote path values**: Handles Windows drive letters (`C:`), spaces, and YAML-special chars (`#`, `%`, `{`, `}`)
117
+ 4. **Always normalize separators**: `.replace(/\\/g, '/')` on all paths before writing
118
+ 5. **Idempotent writes**: Regex replace existing fields, append only if missing — never duplicate
119
+ 6. **Delete stale files**: Remove `project-layout.yaml` when switching to single-repo
120
+ 7. **project-layout.yaml in `_bmad-output/`**: version-controlled per Epic 10 policy
121
+ 8. **Generated date**: `YYYY-MM-DD` format matching sprint-status.yaml convention
122
+
123
+ ### NFR Compliance
124
+
125
+ | NFR | How This Story Addresses It |
126
+ |-----|----------------------------|
127
+ | NFR34 | Single-repo: write `"."` paths, delete any stale project-layout.yaml |
128
+ | NFR36 | Deterministic: template string, only `generated` date varies |
129
+ | NFR9 | Path normalization with forward slashes in YAML output |
130
+
131
+ ### Dependencies
132
+
133
+ - **Story 16.1** must be complete — provides the `layout` object with mode/path/gitUrl for each concern
134
+ - **bmad-method installation** must complete first — creates `_bmad/bmm/config.yaml`
135
+
136
+ ### Project Structure Notes
137
+
138
+ - Config write target: `_bmad/bmm/config.yaml` (verified: all workflows use this as config_source)
139
+ - Project-layout.yaml target: `_bmad-output/project-layout.yaml`
140
+ - Integration point: after `bmad.installBmad()` completes in the installation pipeline
141
+
142
+ ### References
143
+
144
+ - [Source: _bmad-output/planning-artifacts/architecture.md — Decision P2-10, config storage section, lines 844-870]
145
+ - [Source: _bmad-output/planning-artifacts/epics.md — Story 16.2, lines 2010-2052]
146
+ - [Source: _bmad-output/planning-artifacts/prd.md — FR117, FR122, lines 582-587]
147
+ - [Source: _bmad-output/planning-artifacts/prd.md — NFR34, NFR36, lines 657-659]
148
+ - [Source: _bmad/bmm/workflows/4-implementation/create-story/workflow.yaml — config_source: _bmad/bmm/config.yaml]
149
+
150
+ ## Dev Agent Record
151
+
152
+ ### Agent Model Used
153
+
154
+ Claude Opus 4.6 (1M context)
155
+
156
+ ### Debug Log References
157
+
158
+ None — clean implementation.
159
+
160
+ ### Completion Notes List
161
+
162
+ - Implemented `normalizePath()` utility for backslash-to-forward-slash conversion
163
+ - Implemented `writeConfigField()` for idempotent regex-based YAML field writes (replace or append)
164
+ - Implemented `writeRepoLayoutConfig()` to write `knowledgebase_path` and `sprint_management_path` to `_bmad/bmm/config.yaml`
165
+ - Implemented `writeProjectLayoutYaml()` to generate `_bmad-output/project-layout.yaml` for multi-repo or delete stale file for single-repo
166
+ - Integrated both into `installWizard()` as Step 3.6 after BMAD installation
167
+ - 16 unit tests covering normalization, config writes, idempotency, stale cleanup, multi-repo/single-repo modes
168
+ - All tests pass, no regressions
169
+
170
+ ### Change Log
171
+
172
+ - 2026-03-28: Implemented story 16.2 — config storage and project-layout.yaml generation
173
+
174
+ ### File List
175
+
176
+ - bin/cli.js (modified — added writeRepoLayoutConfig, writeProjectLayoutYaml, writeConfigField, normalizePath + integration)
177
+ - test/config-storage.test.js (new — 16 tests)
178
+ - package.json (modified — added test to script)
179
+ - _bmad-output/implementation-artifacts/sprint-status.yaml (modified)
180
+ - _bmad-output/implementation-artifacts/16-2-config-storage-and-cross-reference.md (modified)
@@ -0,0 +1,136 @@
1
+ # Story 16.3: Project-Context Multi-Repo Section
2
+
3
+ Status: review
4
+
5
+ <!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
6
+
7
+ ## Story
8
+
9
+ As an **AI agent**,
10
+ I want project-context.md to include the configured repository paths,
11
+ So that I know where to read and write planning and sprint artifacts.
12
+
13
+ ## Acceptance Criteria
14
+
15
+ 1. When multi-repo is configured with knowledgebase at `/path/to/kb` and sprint at `/path/to/sprint`, the generated project-context.md includes a "Repository Layout" section with both paths and usage instructions (FR118)
16
+ 2. When single-repo mode is configured, the "Repository Layout" section is omitted entirely from project-context.md — no empty headers, no leftover blank lines (NFR34 backward compatibility)
17
+ 3. When project-context.md already exists, the installer uses the **marker-based update pattern** (like the existing `ma-agents:manifest-paths` pattern) to insert or update the Repository Layout section between `<!-- ma-agents:repo-layout-start -->` and `<!-- ma-agents:repo-layout-end -->` markers. If markers don't exist yet, append the section with markers at the end of the "AI Agent Mandatory Rules" block. The file is NOT regenerated from scratch (preserves user customizations)
18
+ 4. The `project-context.template.md` template is updated with a `{{REPO_LAYOUT_SECTION}}` placeholder that resolves to the section content (with markers) or empty string
19
+ 5. When the layout config object is undefined or missing fields, the generator returns empty string (no crash)
20
+ 6. All paths in the generated section use forward slashes (backslashes normalized before markdown insertion)
21
+
22
+ ## Tasks / Subtasks
23
+
24
+ - [x] Task 1: Update project-context template (AC: #1, #2, #4)
25
+ - [x] 1.1-1.5 Added `{{REPO_LAYOUT_SECTION}}` placeholder; clean removal for single-repo
26
+
27
+ - [x] Task 2: Implement Repository Layout section generator (AC: #1, #2, #5, #6)
28
+ - [x] 2.1-2.7 `generateRepoLayoutSection(layout)` with guards, markers, mixed config, path normalization
29
+
30
+ - [x] Task 3: Integrate with project-context generator (AC: #1, #2, #4, #5)
31
+ - [x] 3.1-3.5 Added `layout` parameter to `generateProjectContext()`, backward-compatible
32
+
33
+ - [x] Task 4: Implement marker-based update for existing files (AC: #3)
34
+ - [x] 4.1-4.7 `updateProjectContextRepoLayout()` with marker update/insert, integrated into installWizard
35
+
36
+ - [x] Task 5: Write/update unit tests (AC: #1-#6)
37
+ - [x] 5.1-5.7 12 new tests added to generate-project-context.test.js (27 total, all pass)
38
+
39
+ ## Dev Notes
40
+
41
+ ### CRITICAL: Marker-Based Update Pattern (Not "Never Modify")
42
+
43
+ The adversarial review correctly identified that the original AC ("never modify existing project-context.md") contradicts the codebase's established pattern. The existing `updateProjectContextManifestPaths()` function in `lib/installer.js` already modifies existing files using HTML comment markers:
44
+
45
+ ```markdown
46
+ <!-- ma-agents:manifest-paths-start -->
47
+ content here
48
+ <!-- ma-agents:manifest-paths-end -->
49
+ ```
50
+
51
+ This story uses the SAME pattern with `<!-- ma-agents:repo-layout-start -->` / `<!-- ma-agents:repo-layout-end -->` markers. This allows:
52
+ - Fresh generation: placeholder replaced in template
53
+ - Existing files: content between markers updated in place
54
+ - User customizations outside markers: preserved
55
+
56
+ ### Generator Function Location (Confirmed)
57
+
58
+ The generator function is `generateProjectContext()` in `lib/installer.js` (lines 143-200). It is an exported function with existing tests in `test/generate-project-context.test.js`. Adding the `layout` parameter changes the public API — tests MUST be updated.
59
+
60
+ ### Template Section Format
61
+
62
+ ```markdown
63
+ <!-- ma-agents:repo-layout-start -->
64
+ ### Repository Layout
65
+ - **Knowledgebase:** {{KNOWLEDGEBASE_PATH}}
66
+ - **Sprint Management:** {{SPRINT_MANAGEMENT_PATH}}
67
+ - When creating or reading planning artifacts, use the knowledgebase path
68
+ - When creating or reading sprint/story artifacts, use the sprint management path
69
+ <!-- ma-agents:repo-layout-end -->
70
+ ```
71
+
72
+ ### Key Implementation Constraints
73
+
74
+ 1. **Marker-based updates**: Use `<!-- ma-agents:repo-layout-start/end -->` markers — same pattern as manifest paths
75
+ 2. **Clean omission**: When single-repo, no markers, no section, no blank lines — truly omitted
76
+ 3. **Backward-compatible API**: `generateProjectContext(root, agents, layout)` — `layout` defaults to `null`, existing callers unaffected
77
+ 4. **Normalize backslashes**: All paths get `.replace(/\\/g, '/')` before markdown insertion — backslashes break markdown rendering
78
+ 5. **No new dependencies**: String template replacement, consistent with existing approach
79
+ 6. **Template file**: `lib/templates/project-context.template.md` (confirmed)
80
+ 7. **Existing test file**: `test/generate-project-context.test.js` — MUST be updated
81
+
82
+ ### NFR Compliance
83
+
84
+ | NFR | How This Story Addresses It |
85
+ |-----|----------------------------|
86
+ | NFR34 | Single-repo: section omitted entirely — no visible change to existing project-context.md |
87
+ | NFR37 | Agents get explicit path instructions — no hardcoded `_bmad-output/` assumptions |
88
+
89
+ ### Dependencies
90
+
91
+ - **Story 16.2** provides the config values that determine whether multi-repo is active
92
+ - **Epic 13** (project-context auto-generation) provides the template and generator function this story modifies
93
+
94
+ ### Project Structure Notes
95
+
96
+ - Template file: `lib/templates/project-context.template.md`
97
+ - Generator function: `generateProjectContext()` in `lib/installer.js` (lines 143-200)
98
+ - Update function: `updateProjectContextManifestPaths()` in `lib/installer.js` — use as pattern reference
99
+ - Existing tests: `test/generate-project-context.test.js`
100
+ - Output: `_bmad-output/project-context.md`
101
+
102
+ ### References
103
+
104
+ - [Source: _bmad-output/planning-artifacts/architecture.md — Decision P2-10, project-context integration, lines 884-895]
105
+ - [Source: _bmad-output/planning-artifacts/epics.md — Story 16.3, lines 2054-2085]
106
+ - [Source: _bmad-output/planning-artifacts/prd.md — FR118, line 583]
107
+ - [Source: _bmad-output/planning-artifacts/prd.md — NFR34, NFR37, lines 657-660]
108
+ - [Source: lib/installer.js — generateProjectContext(), updateProjectContextManifestPaths()]
109
+ - [Source: test/generate-project-context.test.js — existing tests to update]
110
+
111
+ ## Dev Agent Record
112
+
113
+ ### Agent Model Used
114
+ Claude Opus 4.6 (1M context)
115
+
116
+ ### Debug Log References
117
+ None.
118
+
119
+ ### Completion Notes List
120
+ - Added `{{REPO_LAYOUT_SECTION}}` placeholder to `lib/templates/project-context.template.md`
121
+ - Implemented `generateRepoLayoutSection(layout)` in `lib/installer.js` — generates markdown with markers for multi-repo, empty string for single-repo
122
+ - Updated `generateProjectContext()` to accept optional `layout` parameter (backward-compatible)
123
+ - Implemented `updateProjectContextRepoLayout()` for marker-based updates to existing project-context.md
124
+ - Integrated into `installWizard()` — calls `updateProjectContextRepoLayout()` after skill installation
125
+ - 12 new tests added to `test/generate-project-context.test.js`, all 27 pass
126
+
127
+ ### Change Log
128
+ - 2026-03-28: Implemented story 16.3 — project-context multi-repo section
129
+
130
+ ### File List
131
+ - lib/installer.js (modified — generateRepoLayoutSection, updateProjectContextRepoLayout, generateProjectContext layout param)
132
+ - lib/templates/project-context.template.md (modified — added REPO_LAYOUT_SECTION placeholder)
133
+ - bin/cli.js (modified — import updateProjectContextRepoLayout, call after skill install)
134
+ - test/generate-project-context.test.js (modified — 12 new tests)
135
+ - _bmad-output/implementation-artifacts/sprint-status.yaml (modified)
136
+ - _bmad-output/implementation-artifacts/16-3-project-context-multi-repo-section.md (modified)