ma-agents 3.4.9 → 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 (826) 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/lib/bmad-extension/module-help.csv +26 -4
  112. package/lib/bmad-extension/skills/add-sprint/SKILL.md +126 -72
  113. package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +124 -96
  114. package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-dev-story}/bmad-skill-manifest.yaml +1 -1
  115. package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/checklist.md +13 -13
  116. package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/workflow.md +103 -44
  117. package/lib/bmad-extension/skills/bmad-ma-agent-mil498/SKILL.md +2 -1
  118. package/lib/bmad-extension/skills/bmad-sprint-planning/SKILL.md +6 -0
  119. package/lib/bmad-extension/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
  120. package/lib/bmad-extension/skills/bmad-sprint-planning/checklist.md +74 -0
  121. package/lib/bmad-extension/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
  122. package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +372 -0
  123. package/lib/bmad-extension/skills/bmad-sprint-status/SKILL.md +6 -0
  124. package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/bmad-sprint-status}/bmad-skill-manifest.yaml +1 -1
  125. package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +434 -0
  126. package/lib/bmad-extension/skills/cleanup-done/SKILL.md +215 -0
  127. package/lib/bmad-extension/skills/close-sprint/SKILL.md +379 -0
  128. package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/close-sprint}/bmad-skill-manifest.yaml +1 -1
  129. package/lib/bmad-extension/skills/generate-backlog/SKILL.md +195 -0
  130. package/lib/bmad-extension/skills/mil498-requirement-quality/SKILL.md +105 -0
  131. package/lib/bmad-extension/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
  132. package/lib/bmad-extension/skills/mil498-ssdd/prompts/05-validate.md +4 -0
  133. package/lib/bmad-extension/skills/modify-sprint/SKILL.md +227 -175
  134. package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +217 -0
  135. package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +184 -0
  136. package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +165 -190
  137. package/lib/bmad-extension/workflows/add-sprint/workflow.md +125 -71
  138. package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +123 -95
  139. package/lib/bmad-extension/workflows/modify-sprint/workflow.md +228 -176
  140. package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +164 -0
  141. package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +162 -189
  142. package/mil498/README.md +4 -0
  143. package/out.txt +0 -0
  144. package/package.json +1 -1
  145. package/skills/add-sprint/SKILL.md +165 -0
  146. package/skills/add-sprint/skill.json +7 -0
  147. package/skills/add-to-sprint/SKILL.md +231 -0
  148. package/skills/add-to-sprint/skill.json +7 -0
  149. package/skills/bmad-sprint-planning/SKILL.md +321 -0
  150. package/skills/bmad-sprint-planning/skill.json +7 -0
  151. package/skills/bmad-sprint-status/SKILL.md +273 -0
  152. package/skills/bmad-sprint-status/skill.json +7 -0
  153. package/skills/cleanup-done/SKILL.md +203 -0
  154. package/skills/cleanup-done/skill.json +7 -0
  155. package/skills/close-sprint/SKILL.md +370 -0
  156. package/skills/close-sprint/skill.json +7 -0
  157. package/skills/generate-backlog/SKILL.md +178 -0
  158. package/skills/generate-backlog/skill.json +7 -0
  159. package/skills/modify-sprint/SKILL.md +302 -0
  160. package/skills/modify-sprint/skill.json +7 -0
  161. package/skills/prioritize-backlog/SKILL.md +203 -0
  162. package/skills/prioritize-backlog/skill.json +7 -0
  163. package/skills/remove-from-sprint/SKILL.md +174 -0
  164. package/skills/remove-from-sprint/skill.json +7 -0
  165. package/skills/sprint-status-view/SKILL.md +173 -0
  166. package/skills/sprint-status-view/skill.json +7 -0
  167. package/skills/story-status-lookup/SKILL.md +21 -6
  168. package/skills/story-status-lookup/skill.json +2 -2
  169. package/test/extension-module-restructure.test.js +12 -11
  170. package/test/migration-validation.test.js +10 -10
  171. package/.opencode/skills/.ma-agents.json +0 -241
  172. package/.opencode/skills/MANIFEST.yaml +0 -254
  173. package/.opencode/skills/add-sprint/SKILL.md +0 -207
  174. package/.opencode/skills/add-to-sprint/SKILL.md +0 -189
  175. package/.opencode/skills/ai-audit-trail/SKILL.md +0 -23
  176. package/.opencode/skills/auto-bug-detection/SKILL.md +0 -169
  177. package/.opencode/skills/bmad-advanced-elicitation/SKILL.md +0 -137
  178. package/.opencode/skills/bmad-advanced-elicitation/methods.csv +0 -51
  179. package/.opencode/skills/bmad-agent-analyst/SKILL.md +0 -56
  180. package/.opencode/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -11
  181. package/.opencode/skills/bmad-agent-architect/SKILL.md +0 -52
  182. package/.opencode/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
  183. package/.opencode/skills/bmad-agent-dev/SKILL.md +0 -62
  184. package/.opencode/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
  185. package/.opencode/skills/bmad-agent-pm/SKILL.md +0 -57
  186. package/.opencode/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
  187. package/.opencode/skills/bmad-agent-qa/SKILL.md +0 -59
  188. package/.opencode/skills/bmad-agent-qa/bmad-skill-manifest.yaml +0 -11
  189. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/SKILL.md +0 -51
  190. package/.opencode/skills/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +0 -11
  191. package/.opencode/skills/bmad-agent-sm/SKILL.md +0 -53
  192. package/.opencode/skills/bmad-agent-sm/bmad-skill-manifest.yaml +0 -11
  193. package/.opencode/skills/bmad-agent-tech-writer/SKILL.md +0 -55
  194. package/.opencode/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
  195. package/.opencode/skills/bmad-agent-tech-writer/explain-concept.md +0 -20
  196. package/.opencode/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -20
  197. package/.opencode/skills/bmad-agent-tech-writer/validate-doc.md +0 -19
  198. package/.opencode/skills/bmad-agent-tech-writer/write-document.md +0 -20
  199. package/.opencode/skills/bmad-agent-ux-designer/SKILL.md +0 -53
  200. package/.opencode/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
  201. package/.opencode/skills/bmad-brainstorming/SKILL.md +0 -6
  202. package/.opencode/skills/bmad-brainstorming/brain-methods.csv +0 -62
  203. package/.opencode/skills/bmad-brainstorming/steps/step-01-session-setup.md +0 -214
  204. package/.opencode/skills/bmad-brainstorming/steps/step-01b-continue.md +0 -124
  205. package/.opencode/skills/bmad-brainstorming/steps/step-02a-user-selected.md +0 -229
  206. package/.opencode/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -239
  207. package/.opencode/skills/bmad-brainstorming/steps/step-02c-random-selection.md +0 -211
  208. package/.opencode/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -266
  209. package/.opencode/skills/bmad-brainstorming/steps/step-03-technique-execution.md +0 -401
  210. package/.opencode/skills/bmad-brainstorming/steps/step-04-idea-organization.md +0 -305
  211. package/.opencode/skills/bmad-brainstorming/template.md +0 -15
  212. package/.opencode/skills/bmad-brainstorming/workflow.md +0 -53
  213. package/.opencode/skills/bmad-check-implementation-readiness/SKILL.md +0 -6
  214. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
  215. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
  216. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
  217. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
  218. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
  219. package/.opencode/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -126
  220. package/.opencode/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
  221. package/.opencode/skills/bmad-check-implementation-readiness/workflow.md +0 -49
  222. package/.opencode/skills/bmad-cis-design-thinking/SKILL.md +0 -6
  223. package/.opencode/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
  224. package/.opencode/skills/bmad-cis-design-thinking/design-methods.csv +0 -31
  225. package/.opencode/skills/bmad-cis-design-thinking/template.md +0 -111
  226. package/.opencode/skills/bmad-cis-design-thinking/workflow.md +0 -242
  227. package/.opencode/skills/bmad-cis-innovation-strategy/SKILL.md +0 -6
  228. package/.opencode/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
  229. package/.opencode/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +0 -31
  230. package/.opencode/skills/bmad-cis-innovation-strategy/template.md +0 -189
  231. package/.opencode/skills/bmad-cis-innovation-strategy/workflow.md +0 -315
  232. package/.opencode/skills/bmad-cis-problem-solving/SKILL.md +0 -6
  233. package/.opencode/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
  234. package/.opencode/skills/bmad-cis-problem-solving/solving-methods.csv +0 -31
  235. package/.opencode/skills/bmad-cis-problem-solving/template.md +0 -165
  236. package/.opencode/skills/bmad-cis-problem-solving/workflow.md +0 -291
  237. package/.opencode/skills/bmad-cis-storytelling/SKILL.md +0 -6
  238. package/.opencode/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
  239. package/.opencode/skills/bmad-cis-storytelling/story-types.csv +0 -26
  240. package/.opencode/skills/bmad-cis-storytelling/template.md +0 -113
  241. package/.opencode/skills/bmad-cis-storytelling/workflow.md +0 -321
  242. package/.opencode/skills/bmad-code-review/SKILL.md +0 -6
  243. package/.opencode/skills/bmad-code-review/steps/step-01-gather-context.md +0 -62
  244. package/.opencode/skills/bmad-code-review/steps/step-02-review.md +0 -34
  245. package/.opencode/skills/bmad-code-review/steps/step-03-triage.md +0 -49
  246. package/.opencode/skills/bmad-code-review/steps/step-04-present.md +0 -129
  247. package/.opencode/skills/bmad-code-review/workflow.md +0 -55
  248. package/.opencode/skills/bmad-correct-course/SKILL.md +0 -6
  249. package/.opencode/skills/bmad-correct-course/checklist.md +0 -288
  250. package/.opencode/skills/bmad-correct-course/workflow.md +0 -267
  251. package/.opencode/skills/bmad-create-architecture/SKILL.md +0 -6
  252. package/.opencode/skills/bmad-create-architecture/architecture-decision-template.md +0 -12
  253. package/.opencode/skills/bmad-create-architecture/data/domain-complexity.csv +0 -13
  254. package/.opencode/skills/bmad-create-architecture/data/project-types.csv +0 -7
  255. package/.opencode/skills/bmad-create-architecture/steps/step-01-init.md +0 -153
  256. package/.opencode/skills/bmad-create-architecture/steps/step-01b-continue.md +0 -173
  257. package/.opencode/skills/bmad-create-architecture/steps/step-02-context.md +0 -224
  258. package/.opencode/skills/bmad-create-architecture/steps/step-03-starter.md +0 -329
  259. package/.opencode/skills/bmad-create-architecture/steps/step-04-decisions.md +0 -318
  260. package/.opencode/skills/bmad-create-architecture/steps/step-05-patterns.md +0 -359
  261. package/.opencode/skills/bmad-create-architecture/steps/step-06-structure.md +0 -379
  262. package/.opencode/skills/bmad-create-architecture/steps/step-07-validation.md +0 -359
  263. package/.opencode/skills/bmad-create-architecture/steps/step-08-complete.md +0 -76
  264. package/.opencode/skills/bmad-create-architecture/workflow.md +0 -38
  265. package/.opencode/skills/bmad-create-epics-and-stories/SKILL.md +0 -6
  266. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -255
  267. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -212
  268. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -255
  269. package/.opencode/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -131
  270. package/.opencode/skills/bmad-create-epics-and-stories/templates/epics-template.md +0 -61
  271. package/.opencode/skills/bmad-create-epics-and-stories/workflow.md +0 -53
  272. package/.opencode/skills/bmad-create-prd/SKILL.md +0 -6
  273. package/.opencode/skills/bmad-create-prd/data/domain-complexity.csv +0 -15
  274. package/.opencode/skills/bmad-create-prd/data/prd-purpose.md +0 -197
  275. package/.opencode/skills/bmad-create-prd/data/project-types.csv +0 -11
  276. package/.opencode/skills/bmad-create-prd/steps-c/step-01-init.md +0 -178
  277. package/.opencode/skills/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
  278. package/.opencode/skills/bmad-create-prd/steps-c/step-02-discovery.md +0 -208
  279. package/.opencode/skills/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
  280. package/.opencode/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  281. package/.opencode/skills/bmad-create-prd/steps-c/step-03-success.md +0 -214
  282. package/.opencode/skills/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
  283. package/.opencode/skills/bmad-create-prd/steps-c/step-05-domain.md +0 -194
  284. package/.opencode/skills/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
  285. package/.opencode/skills/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
  286. package/.opencode/skills/bmad-create-prd/steps-c/step-08-scoping.md +0 -216
  287. package/.opencode/skills/bmad-create-prd/steps-c/step-09-functional.md +0 -219
  288. package/.opencode/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  289. package/.opencode/skills/bmad-create-prd/steps-c/step-11-polish.md +0 -221
  290. package/.opencode/skills/bmad-create-prd/steps-c/step-12-complete.md +0 -115
  291. package/.opencode/skills/bmad-create-prd/templates/prd-template.md +0 -10
  292. package/.opencode/skills/bmad-create-prd/workflow.md +0 -62
  293. package/.opencode/skills/bmad-create-story/SKILL.md +0 -6
  294. package/.opencode/skills/bmad-create-story/checklist.md +0 -357
  295. package/.opencode/skills/bmad-create-story/discover-inputs.md +0 -88
  296. package/.opencode/skills/bmad-create-story/template.md +0 -49
  297. package/.opencode/skills/bmad-create-story/workflow.md +0 -380
  298. package/.opencode/skills/bmad-create-ux-design/SKILL.md +0 -6
  299. package/.opencode/skills/bmad-create-ux-design/steps/step-01-init.md +0 -135
  300. package/.opencode/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -127
  301. package/.opencode/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -190
  302. package/.opencode/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -217
  303. package/.opencode/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -220
  304. package/.opencode/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -235
  305. package/.opencode/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -253
  306. package/.opencode/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -255
  307. package/.opencode/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -225
  308. package/.opencode/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -225
  309. package/.opencode/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -242
  310. package/.opencode/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -249
  311. package/.opencode/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -238
  312. package/.opencode/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
  313. package/.opencode/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -171
  314. package/.opencode/skills/bmad-create-ux-design/ux-design-template.md +0 -13
  315. package/.opencode/skills/bmad-create-ux-design/workflow.md +0 -36
  316. package/.opencode/skills/bmad-distillator/SKILL.md +0 -178
  317. package/.opencode/skills/bmad-distillator/agents/distillate-compressor.md +0 -116
  318. package/.opencode/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -68
  319. package/.opencode/skills/bmad-distillator/resources/compression-rules.md +0 -51
  320. package/.opencode/skills/bmad-distillator/resources/distillate-format-reference.md +0 -227
  321. package/.opencode/skills/bmad-distillator/resources/splitting-strategy.md +0 -78
  322. package/.opencode/skills/bmad-distillator/scripts/analyze_sources.py +0 -300
  323. package/.opencode/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -204
  324. package/.opencode/skills/bmad-document-project/SKILL.md +0 -6
  325. package/.opencode/skills/bmad-document-project/checklist.md +0 -245
  326. package/.opencode/skills/bmad-document-project/documentation-requirements.csv +0 -12
  327. package/.opencode/skills/bmad-document-project/instructions.md +0 -128
  328. package/.opencode/skills/bmad-document-project/templates/deep-dive-template.md +0 -345
  329. package/.opencode/skills/bmad-document-project/templates/index-template.md +0 -169
  330. package/.opencode/skills/bmad-document-project/templates/project-overview-template.md +0 -103
  331. package/.opencode/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -160
  332. package/.opencode/skills/bmad-document-project/templates/source-tree-template.md +0 -135
  333. package/.opencode/skills/bmad-document-project/workflow.md +0 -27
  334. package/.opencode/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -299
  335. package/.opencode/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
  336. package/.opencode/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -1107
  337. package/.opencode/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -34
  338. package/.opencode/skills/bmad-domain-research/SKILL.md +0 -6
  339. package/.opencode/skills/bmad-domain-research/domain-steps/step-01-init.md +0 -137
  340. package/.opencode/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
  341. package/.opencode/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
  342. package/.opencode/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
  343. package/.opencode/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
  344. package/.opencode/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -444
  345. package/.opencode/skills/bmad-domain-research/research.template.md +0 -29
  346. package/.opencode/skills/bmad-domain-research/workflow.md +0 -49
  347. package/.opencode/skills/bmad-edit-prd/SKILL.md +0 -6
  348. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  349. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  350. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
  351. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
  352. package/.opencode/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
  353. package/.opencode/skills/bmad-edit-prd/workflow.md +0 -63
  354. package/.opencode/skills/bmad-editorial-review-prose/SKILL.md +0 -86
  355. package/.opencode/skills/bmad-editorial-review-structure/SKILL.md +0 -179
  356. package/.opencode/skills/bmad-generate-project-context/SKILL.md +0 -6
  357. package/.opencode/skills/bmad-generate-project-context/project-context-template.md +0 -21
  358. package/.opencode/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -186
  359. package/.opencode/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -321
  360. package/.opencode/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -278
  361. package/.opencode/skills/bmad-generate-project-context/workflow.md +0 -43
  362. package/.opencode/skills/bmad-help/SKILL.md +0 -73
  363. package/.opencode/skills/bmad-index-docs/SKILL.md +0 -66
  364. package/.opencode/skills/bmad-init/SKILL.md +0 -100
  365. package/.opencode/skills/bmad-init/resources/core-module.yaml +0 -25
  366. package/.opencode/skills/bmad-init/scripts/bmad_init.py +0 -593
  367. package/.opencode/skills/bmad-init/scripts/tests/test_bmad_init.py +0 -329
  368. package/.opencode/skills/bmad-ma-agent-cyber/SKILL.md +0 -49
  369. package/.opencode/skills/bmad-ma-agent-cyber/bmad-skill-manifest.yaml +0 -11
  370. package/.opencode/skills/bmad-ma-agent-devops/SKILL.md +0 -49
  371. package/.opencode/skills/bmad-ma-agent-devops/bmad-skill-manifest.yaml +0 -11
  372. package/.opencode/skills/bmad-ma-agent-mil498/SKILL.md +0 -53
  373. package/.opencode/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +0 -11
  374. package/.opencode/skills/bmad-ma-agent-ml/SKILL.md +0 -59
  375. package/.opencode/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +0 -11
  376. package/.opencode/skills/bmad-ma-agent-sre/SKILL.md +0 -49
  377. package/.opencode/skills/bmad-ma-agent-sre/bmad-skill-manifest.yaml +0 -11
  378. package/.opencode/skills/bmad-market-research/SKILL.md +0 -6
  379. package/.opencode/skills/bmad-market-research/research.template.md +0 -29
  380. package/.opencode/skills/bmad-market-research/steps/step-01-init.md +0 -184
  381. package/.opencode/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
  382. package/.opencode/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
  383. package/.opencode/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
  384. package/.opencode/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
  385. package/.opencode/skills/bmad-market-research/steps/step-06-research-completion.md +0 -478
  386. package/.opencode/skills/bmad-market-research/workflow.md +0 -49
  387. package/.opencode/skills/bmad-party-mode/SKILL.md +0 -6
  388. package/.opencode/skills/bmad-party-mode/steps/step-01-agent-loading.md +0 -138
  389. package/.opencode/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -187
  390. package/.opencode/skills/bmad-party-mode/steps/step-03-graceful-exit.md +0 -167
  391. package/.opencode/skills/bmad-party-mode/workflow.md +0 -190
  392. package/.opencode/skills/bmad-product-brief/SKILL.md +0 -87
  393. package/.opencode/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -60
  394. package/.opencode/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
  395. package/.opencode/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
  396. package/.opencode/skills/bmad-product-brief/agents/web-researcher.md +0 -49
  397. package/.opencode/skills/bmad-product-brief/bmad-manifest.json +0 -17
  398. package/.opencode/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -57
  399. package/.opencode/skills/bmad-product-brief/prompts/draft-and-review.md +0 -86
  400. package/.opencode/skills/bmad-product-brief/prompts/finalize.md +0 -75
  401. package/.opencode/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -70
  402. package/.opencode/skills/bmad-product-brief/resources/brief-template.md +0 -60
  403. package/.opencode/skills/bmad-qa-generate-e2e-tests/SKILL.md +0 -6
  404. package/.opencode/skills/bmad-qa-generate-e2e-tests/checklist.md +0 -33
  405. package/.opencode/skills/bmad-qa-generate-e2e-tests/workflow.md +0 -136
  406. package/.opencode/skills/bmad-quick-dev/SKILL.md +0 -6
  407. package/.opencode/skills/bmad-quick-dev/spec-template.md +0 -88
  408. package/.opencode/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -64
  409. package/.opencode/skills/bmad-quick-dev/step-02-plan.md +0 -35
  410. package/.opencode/skills/bmad-quick-dev/step-03-implement.md +0 -37
  411. package/.opencode/skills/bmad-quick-dev/step-04-review.md +0 -49
  412. package/.opencode/skills/bmad-quick-dev/step-05-present.md +0 -63
  413. package/.opencode/skills/bmad-quick-dev/step-oneshot.md +0 -49
  414. package/.opencode/skills/bmad-quick-dev/workflow.md +0 -79
  415. package/.opencode/skills/bmad-retrospective/SKILL.md +0 -6
  416. package/.opencode/skills/bmad-retrospective/workflow.md +0 -1479
  417. package/.opencode/skills/bmad-review-adversarial-general/SKILL.md +0 -37
  418. package/.opencode/skills/bmad-review-edge-case-hunter/SKILL.md +0 -67
  419. package/.opencode/skills/bmad-shard-doc/SKILL.md +0 -105
  420. package/.opencode/skills/bmad-sprint-planning/SKILL.md +0 -6
  421. package/.opencode/skills/bmad-sprint-planning/checklist.md +0 -33
  422. package/.opencode/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -56
  423. package/.opencode/skills/bmad-sprint-planning/workflow.md +0 -263
  424. package/.opencode/skills/bmad-sprint-status/SKILL.md +0 -6
  425. package/.opencode/skills/bmad-sprint-status/workflow.md +0 -261
  426. package/.opencode/skills/bmad-technical-research/SKILL.md +0 -6
  427. package/.opencode/skills/bmad-technical-research/research.template.md +0 -29
  428. package/.opencode/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -137
  429. package/.opencode/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
  430. package/.opencode/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
  431. package/.opencode/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
  432. package/.opencode/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
  433. package/.opencode/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -487
  434. package/.opencode/skills/bmad-technical-research/workflow.md +0 -50
  435. package/.opencode/skills/bmad-validate-prd/SKILL.md +0 -6
  436. package/.opencode/skills/bmad-validate-prd/data/domain-complexity.csv +0 -15
  437. package/.opencode/skills/bmad-validate-prd/data/prd-purpose.md +0 -197
  438. package/.opencode/skills/bmad-validate-prd/data/project-types.csv +0 -11
  439. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  440. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  441. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  442. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  443. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  444. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  445. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  446. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  447. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  448. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  449. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  450. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  451. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  452. package/.opencode/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -229
  453. package/.opencode/skills/bmad-validate-prd/workflow.md +0 -62
  454. package/.opencode/skills/cleanup-done/SKILL.md +0 -159
  455. package/.opencode/skills/cmake-best-practices/SKILL.md +0 -64
  456. package/.opencode/skills/cmake-best-practices/examples/cmake.md +0 -59
  457. package/.opencode/skills/code-documentation/SKILL.md +0 -57
  458. package/.opencode/skills/code-documentation/examples/cpp.md +0 -29
  459. package/.opencode/skills/code-documentation/examples/csharp.md +0 -28
  460. package/.opencode/skills/code-documentation/examples/javascript_typescript.md +0 -28
  461. package/.opencode/skills/code-documentation/examples/python.md +0 -57
  462. package/.opencode/skills/code-review/SKILL.md +0 -43
  463. package/.opencode/skills/commit-message/SKILL.md +0 -79
  464. package/.opencode/skills/cpp-best-practices/SKILL.md +0 -234
  465. package/.opencode/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
  466. package/.opencode/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
  467. package/.opencode/skills/cpp-concurrency-safety/SKILL.md +0 -60
  468. package/.opencode/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
  469. package/.opencode/skills/cpp-const-correctness/SKILL.md +0 -63
  470. package/.opencode/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
  471. package/.opencode/skills/cpp-memory-handling/SKILL.md +0 -42
  472. package/.opencode/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
  473. package/.opencode/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
  474. package/.opencode/skills/cpp-modern-composition/SKILL.md +0 -64
  475. package/.opencode/skills/cpp-modern-composition/examples/composition.md +0 -51
  476. package/.opencode/skills/cpp-robust-interfaces/SKILL.md +0 -55
  477. package/.opencode/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
  478. package/.opencode/skills/create-bug-story/SKILL.md +0 -263
  479. package/.opencode/skills/create-hardened-docker-skill/SKILL.md +0 -637
  480. package/.opencode/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
  481. package/.opencode/skills/csharp-best-practices/SKILL.md +0 -278
  482. package/.opencode/skills/cyber-generate-certs/.gitkeep +0 -0
  483. package/.opencode/skills/cyber-generate-certs/SKILL.md +0 -27
  484. package/.opencode/skills/cyber-generate-certs/bmad-skill-manifest.yaml +0 -3
  485. package/.opencode/skills/cyber-immunity-estimation/.gitkeep +0 -0
  486. package/.opencode/skills/cyber-immunity-estimation/SKILL.md +0 -29
  487. package/.opencode/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +0 -3
  488. package/.opencode/skills/cyber-security-audit/.gitkeep +0 -0
  489. package/.opencode/skills/cyber-security-audit/SKILL.md +0 -27
  490. package/.opencode/skills/cyber-security-audit/bmad-skill-manifest.yaml +0 -3
  491. package/.opencode/skills/cyber-vault-secrets/.gitkeep +0 -0
  492. package/.opencode/skills/cyber-vault-secrets/SKILL.md +0 -28
  493. package/.opencode/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +0 -3
  494. package/.opencode/skills/cyber-verify-docker-users/.gitkeep +0 -0
  495. package/.opencode/skills/cyber-verify-docker-users/SKILL.md +0 -23
  496. package/.opencode/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +0 -3
  497. package/.opencode/skills/cyber-verify-image-signature/.gitkeep +0 -0
  498. package/.opencode/skills/cyber-verify-image-signature/SKILL.md +0 -22
  499. package/.opencode/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +0 -3
  500. package/.opencode/skills/cyber-vulnerability-scan/.gitkeep +0 -0
  501. package/.opencode/skills/cyber-vulnerability-scan/SKILL.md +0 -28
  502. package/.opencode/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +0 -3
  503. package/.opencode/skills/devops-configure-infrastructure/.gitkeep +0 -0
  504. package/.opencode/skills/devops-configure-infrastructure/SKILL.md +0 -27
  505. package/.opencode/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +0 -3
  506. package/.opencode/skills/devops-disconnected-deployment/.gitkeep +0 -0
  507. package/.opencode/skills/devops-disconnected-deployment/SKILL.md +0 -27
  508. package/.opencode/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +0 -3
  509. package/.opencode/skills/devops-docker-compose-setup/.gitkeep +0 -0
  510. package/.opencode/skills/devops-docker-compose-setup/SKILL.md +0 -26
  511. package/.opencode/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +0 -3
  512. package/.opencode/skills/devops-manage-helm/.gitkeep +0 -0
  513. package/.opencode/skills/devops-manage-helm/SKILL.md +0 -28
  514. package/.opencode/skills/devops-manage-helm/bmad-skill-manifest.yaml +0 -3
  515. package/.opencode/skills/devops-sign-docker-image/.gitkeep +0 -0
  516. package/.opencode/skills/devops-sign-docker-image/SKILL.md +0 -24
  517. package/.opencode/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +0 -3
  518. package/.opencode/skills/docker-hardening-verification/SKILL.md +0 -28
  519. package/.opencode/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
  520. package/.opencode/skills/docker-image-signing/SKILL.md +0 -28
  521. package/.opencode/skills/docker-image-signing/scripts/sign-image.sh +0 -33
  522. package/.opencode/skills/document-revision-history/SKILL.md +0 -104
  523. package/.opencode/skills/generate-backlog/.gitkeep +0 -0
  524. package/.opencode/skills/generate-backlog/SKILL.md +0 -183
  525. package/.opencode/skills/git-workflow-skill/SKILL.md +0 -194
  526. package/.opencode/skills/git-workflow-skill/hooks/commit-msg +0 -61
  527. package/.opencode/skills/git-workflow-skill/hooks/pre-commit +0 -38
  528. package/.opencode/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  529. package/.opencode/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  530. package/.opencode/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  531. package/.opencode/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  532. package/.opencode/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  533. package/.opencode/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  534. package/.opencode/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  535. package/.opencode/skills/js-ts-security-skill/SKILL.md +0 -64
  536. package/.opencode/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  537. package/.opencode/skills/logging-best-practices/SKILL.md +0 -50
  538. package/.opencode/skills/logging-best-practices/examples/cpp.md +0 -36
  539. package/.opencode/skills/logging-best-practices/examples/csharp.md +0 -49
  540. package/.opencode/skills/logging-best-practices/examples/javascript.md +0 -77
  541. package/.opencode/skills/logging-best-practices/examples/python.md +0 -57
  542. package/.opencode/skills/logging-best-practices/references/logging-standards.md +0 -29
  543. package/.opencode/skills/mil498-ocd/.gitkeep +0 -0
  544. package/.opencode/skills/mil498-ocd/SKILL.md +0 -30
  545. package/.opencode/skills/mil498-ocd/bmad-skill-manifest.yaml +0 -5
  546. package/.opencode/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +0 -26
  547. package/.opencode/skills/mil498-ocd/prompts/02-load-template.md +0 -10
  548. package/.opencode/skills/mil498-ocd/prompts/03-generate-document.md +0 -90
  549. package/.opencode/skills/mil498-ocd/prompts/04-validate.md +0 -14
  550. package/.opencode/skills/mil498-ocd/prompts/05-review.md +0 -15
  551. package/.opencode/skills/mil498-ocd/prompts/06-save.md +0 -15
  552. package/.opencode/skills/mil498-sdd/.gitkeep +0 -0
  553. package/.opencode/skills/mil498-sdd/SKILL.md +0 -30
  554. package/.opencode/skills/mil498-sdd/bmad-skill-manifest.yaml +0 -5
  555. package/.opencode/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +0 -50
  556. package/.opencode/skills/mil498-sdd/prompts/02-load-template.md +0 -10
  557. package/.opencode/skills/mil498-sdd/prompts/03-generate-document.md +0 -98
  558. package/.opencode/skills/mil498-sdd/prompts/04-validate.md +0 -16
  559. package/.opencode/skills/mil498-sdd/prompts/05-review.md +0 -15
  560. package/.opencode/skills/mil498-sdd/prompts/06-save.md +0 -19
  561. package/.opencode/skills/mil498-sdd/template.md +0 -163
  562. package/.opencode/skills/mil498-sdp/.gitkeep +0 -0
  563. package/.opencode/skills/mil498-sdp/SKILL.md +0 -30
  564. package/.opencode/skills/mil498-sdp/bmad-skill-manifest.yaml +0 -5
  565. package/.opencode/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +0 -32
  566. package/.opencode/skills/mil498-sdp/prompts/02-load-template.md +0 -10
  567. package/.opencode/skills/mil498-sdp/prompts/03-generate-document.md +0 -187
  568. package/.opencode/skills/mil498-sdp/prompts/04-validate.md +0 -13
  569. package/.opencode/skills/mil498-sdp/prompts/05-review.md +0 -15
  570. package/.opencode/skills/mil498-sdp/prompts/06-save.md +0 -14
  571. package/.opencode/skills/mil498-srs/.gitkeep +0 -0
  572. package/.opencode/skills/mil498-srs/SKILL.md +0 -30
  573. package/.opencode/skills/mil498-srs/bmad-skill-manifest.yaml +0 -5
  574. package/.opencode/skills/mil498-srs/prompts/01-discover-project-artifacts.md +0 -42
  575. package/.opencode/skills/mil498-srs/prompts/02-load-template.md +0 -10
  576. package/.opencode/skills/mil498-srs/prompts/03-generate-document.md +0 -100
  577. package/.opencode/skills/mil498-srs/prompts/04-validate.md +0 -16
  578. package/.opencode/skills/mil498-srs/prompts/05-review.md +0 -15
  579. package/.opencode/skills/mil498-srs/prompts/06-save.md +0 -18
  580. package/.opencode/skills/mil498-ssdd/.gitkeep +0 -0
  581. package/.opencode/skills/mil498-ssdd/SKILL.md +0 -32
  582. package/.opencode/skills/mil498-ssdd/bmad-skill-manifest.yaml +0 -5
  583. package/.opencode/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +0 -32
  584. package/.opencode/skills/mil498-ssdd/prompts/02-load-template.md +0 -10
  585. package/.opencode/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +0 -43
  586. package/.opencode/skills/mil498-ssdd/prompts/04-generate-document.md +0 -96
  587. package/.opencode/skills/mil498-ssdd/prompts/05-validate.md +0 -14
  588. package/.opencode/skills/mil498-ssdd/prompts/06-review.md +0 -16
  589. package/.opencode/skills/mil498-ssdd/prompts/07-save.md +0 -16
  590. package/.opencode/skills/mil498-sss/.gitkeep +0 -0
  591. package/.opencode/skills/mil498-sss/SKILL.md +0 -31
  592. package/.opencode/skills/mil498-sss/bmad-skill-manifest.yaml +0 -5
  593. package/.opencode/skills/mil498-sss/prompts/01-discover-project-artifacts.md +0 -31
  594. package/.opencode/skills/mil498-sss/prompts/02-load-template.md +0 -10
  595. package/.opencode/skills/mil498-sss/prompts/03-generate-document.md +0 -108
  596. package/.opencode/skills/mil498-sss/prompts/04-validate.md +0 -16
  597. package/.opencode/skills/mil498-sss/prompts/05-review.md +0 -15
  598. package/.opencode/skills/mil498-sss/prompts/06-save.md +0 -15
  599. package/.opencode/skills/mil498-std/.gitkeep +0 -0
  600. package/.opencode/skills/mil498-std/SKILL.md +0 -30
  601. package/.opencode/skills/mil498-std/bmad-skill-manifest.yaml +0 -5
  602. package/.opencode/skills/mil498-std/prompts/01-discover-project-artifacts.md +0 -42
  603. package/.opencode/skills/mil498-std/prompts/02-load-template.md +0 -10
  604. package/.opencode/skills/mil498-std/prompts/03-generate-document.md +0 -117
  605. package/.opencode/skills/mil498-std/prompts/04-validate.md +0 -15
  606. package/.opencode/skills/mil498-std/prompts/05-review.md +0 -15
  607. package/.opencode/skills/mil498-std/prompts/06-save.md +0 -15
  608. package/.opencode/skills/ml-advise/.gitkeep +0 -0
  609. package/.opencode/skills/ml-advise/SKILL.md +0 -76
  610. package/.opencode/skills/ml-advise/bmad-skill-manifest.yaml +0 -3
  611. package/.opencode/skills/ml-advise/skill.json +0 -7
  612. package/.opencode/skills/ml-analysis/.gitkeep +0 -0
  613. package/.opencode/skills/ml-analysis/SKILL.md +0 -60
  614. package/.opencode/skills/ml-analysis/bmad-skill-manifest.yaml +0 -3
  615. package/.opencode/skills/ml-analysis/skill.json +0 -7
  616. package/.opencode/skills/ml-architecture/.gitkeep +0 -0
  617. package/.opencode/skills/ml-architecture/SKILL.md +0 -55
  618. package/.opencode/skills/ml-architecture/bmad-skill-manifest.yaml +0 -3
  619. package/.opencode/skills/ml-architecture/skill.json +0 -7
  620. package/.opencode/skills/ml-detailed-design/.gitkeep +0 -0
  621. package/.opencode/skills/ml-detailed-design/SKILL.md +0 -67
  622. package/.opencode/skills/ml-detailed-design/bmad-skill-manifest.yaml +0 -3
  623. package/.opencode/skills/ml-detailed-design/skill.json +0 -7
  624. package/.opencode/skills/ml-eda/.gitkeep +0 -0
  625. package/.opencode/skills/ml-eda/SKILL.md +0 -56
  626. package/.opencode/skills/ml-eda/bmad-skill-manifest.yaml +0 -3
  627. package/.opencode/skills/ml-eda/scripts/baseline_classifier.py +0 -522
  628. package/.opencode/skills/ml-eda/scripts/class_weights_calculator.py +0 -295
  629. package/.opencode/skills/ml-eda/scripts/clustering_explorer.py +0 -383
  630. package/.opencode/skills/ml-eda/scripts/eda_analyzer.py +0 -654
  631. package/.opencode/skills/ml-eda/skill.json +0 -7
  632. package/.opencode/skills/ml-experiment/.gitkeep +0 -0
  633. package/.opencode/skills/ml-experiment/SKILL.md +0 -74
  634. package/.opencode/skills/ml-experiment/assets/advanced_trainer_configs.py +0 -430
  635. package/.opencode/skills/ml-experiment/assets/quick_trainer_setup.py +0 -233
  636. package/.opencode/skills/ml-experiment/assets/template_datamodule.py +0 -219
  637. package/.opencode/skills/ml-experiment/assets/template_gnn_module.py +0 -341
  638. package/.opencode/skills/ml-experiment/assets/template_lightning_module.py +0 -158
  639. package/.opencode/skills/ml-experiment/bmad-skill-manifest.yaml +0 -3
  640. package/.opencode/skills/ml-experiment/skill.json +0 -7
  641. package/.opencode/skills/ml-hparam/.gitkeep +0 -0
  642. package/.opencode/skills/ml-hparam/SKILL.md +0 -81
  643. package/.opencode/skills/ml-hparam/bmad-skill-manifest.yaml +0 -3
  644. package/.opencode/skills/ml-hparam/skill.json +0 -7
  645. package/.opencode/skills/ml-ideation/.gitkeep +0 -0
  646. package/.opencode/skills/ml-ideation/SKILL.md +0 -50
  647. package/.opencode/skills/ml-ideation/bmad-skill-manifest.yaml +0 -3
  648. package/.opencode/skills/ml-ideation/scripts/validate_ml_prd.py +0 -287
  649. package/.opencode/skills/ml-ideation/skill.json +0 -7
  650. package/.opencode/skills/ml-infra/.gitkeep +0 -0
  651. package/.opencode/skills/ml-infra/SKILL.md +0 -58
  652. package/.opencode/skills/ml-infra/bmad-skill-manifest.yaml +0 -3
  653. package/.opencode/skills/ml-infra/skill.json +0 -7
  654. package/.opencode/skills/ml-retrospective/.gitkeep +0 -0
  655. package/.opencode/skills/ml-retrospective/SKILL.md +0 -63
  656. package/.opencode/skills/ml-retrospective/bmad-skill-manifest.yaml +0 -3
  657. package/.opencode/skills/ml-retrospective/skill.json +0 -7
  658. package/.opencode/skills/ml-revision/.gitkeep +0 -0
  659. package/.opencode/skills/ml-revision/SKILL.md +0 -82
  660. package/.opencode/skills/ml-revision/bmad-skill-manifest.yaml +0 -3
  661. package/.opencode/skills/ml-revision/skill.json +0 -7
  662. package/.opencode/skills/ml-techspec/.gitkeep +0 -0
  663. package/.opencode/skills/ml-techspec/SKILL.md +0 -80
  664. package/.opencode/skills/ml-techspec/bmad-skill-manifest.yaml +0 -3
  665. package/.opencode/skills/ml-techspec/skill.json +0 -7
  666. package/.opencode/skills/modify-sprint/.gitkeep +0 -0
  667. package/.opencode/skills/modify-sprint/SKILL.md +0 -322
  668. package/.opencode/skills/modify-sprint/bmad-skill-manifest.yaml +0 -3
  669. package/.opencode/skills/open-presentation/SKILL.md +0 -35
  670. package/.opencode/skills/opentelemetry-best-practices/SKILL.md +0 -34
  671. package/.opencode/skills/opentelemetry-best-practices/examples/go.md +0 -32
  672. package/.opencode/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  673. package/.opencode/skills/opentelemetry-best-practices/examples/python.md +0 -37
  674. package/.opencode/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  675. package/.opencode/skills/prioritize-backlog/.gitkeep +0 -0
  676. package/.opencode/skills/prioritize-backlog/SKILL.md +0 -195
  677. package/.opencode/skills/project-context-expansion/.gitkeep +0 -0
  678. package/.opencode/skills/project-context-expansion/SKILL.md +0 -238
  679. package/.opencode/skills/project-context-expansion/bmad-skill-manifest.yaml +0 -3
  680. package/.opencode/skills/python-best-practices/SKILL.md +0 -385
  681. package/.opencode/skills/python-dependency-mgmt/SKILL.md +0 -42
  682. package/.opencode/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  683. package/.opencode/skills/python-security-skill/SKILL.md +0 -56
  684. package/.opencode/skills/python-security-skill/examples/security.md +0 -56
  685. package/.opencode/skills/remove-from-sprint/.gitkeep +0 -0
  686. package/.opencode/skills/remove-from-sprint/SKILL.md +0 -163
  687. package/.opencode/skills/self-signed-cert/SKILL.md +0 -42
  688. package/.opencode/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  689. package/.opencode/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  690. package/.opencode/skills/skill-creator/SKILL.md +0 -196
  691. package/.opencode/skills/skill-creator/references/output-patterns.md +0 -82
  692. package/.opencode/skills/skill-creator/references/workflows.md +0 -28
  693. package/.opencode/skills/skill-creator/scripts/init_skill.py +0 -208
  694. package/.opencode/skills/skill-creator/scripts/package_skill.py +0 -99
  695. package/.opencode/skills/skill-creator/scripts/quick_validate.py +0 -113
  696. package/.opencode/skills/sprint-status-view/.gitkeep +0 -0
  697. package/.opencode/skills/sprint-status-view/SKILL.md +0 -263
  698. package/.opencode/skills/sprint-status-view/bmad-skill-manifest.yaml +0 -3
  699. package/.opencode/skills/sre-check-deployment-status/.gitkeep +0 -0
  700. package/.opencode/skills/sre-check-deployment-status/SKILL.md +0 -32
  701. package/.opencode/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +0 -3
  702. package/.opencode/skills/sre-check-secrets/.gitkeep +0 -0
  703. package/.opencode/skills/sre-check-secrets/SKILL.md +0 -23
  704. package/.opencode/skills/sre-check-secrets/bmad-skill-manifest.yaml +0 -3
  705. package/.opencode/skills/sre-check-system-status/.gitkeep +0 -0
  706. package/.opencode/skills/sre-check-system-status/SKILL.md +0 -27
  707. package/.opencode/skills/sre-check-system-status/bmad-skill-manifest.yaml +0 -3
  708. package/.opencode/skills/sre-day-2-ops/.gitkeep +0 -0
  709. package/.opencode/skills/sre-day-2-ops/SKILL.md +0 -26
  710. package/.opencode/skills/sre-day-2-ops/bmad-skill-manifest.yaml +0 -3
  711. package/.opencode/skills/sre-deployment-strategies/.gitkeep +0 -0
  712. package/.opencode/skills/sre-deployment-strategies/SKILL.md +0 -28
  713. package/.opencode/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +0 -3
  714. package/.opencode/skills/sre-fix-deployments/.gitkeep +0 -0
  715. package/.opencode/skills/sre-fix-deployments/SKILL.md +0 -25
  716. package/.opencode/skills/sre-fix-deployments/bmad-skill-manifest.yaml +0 -3
  717. package/.opencode/skills/sre-gitops-status/.gitkeep +0 -0
  718. package/.opencode/skills/sre-gitops-status/SKILL.md +0 -25
  719. package/.opencode/skills/sre-gitops-status/bmad-skill-manifest.yaml +0 -3
  720. package/.opencode/skills/story-status-lookup/SKILL.md +0 -78
  721. package/.opencode/skills/test-accompanied-development/SKILL.md +0 -50
  722. package/.opencode/skills/test-generator/SKILL.md +0 -65
  723. package/.opencode/skills/vercel-react-best-practices/SKILL.md +0 -109
  724. package/.opencode/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  725. package/.opencode/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  726. package/.roo/rules/00-ma-agents.md +0 -13
  727. package/.roo/skills/.ma-agents.json +0 -241
  728. package/.roo/skills/MANIFEST.yaml +0 -254
  729. package/.roo/skills/ai-audit-trail/SKILL.md +0 -23
  730. package/.roo/skills/auto-bug-detection/SKILL.md +0 -169
  731. package/.roo/skills/cmake-best-practices/SKILL.md +0 -64
  732. package/.roo/skills/cmake-best-practices/examples/cmake.md +0 -59
  733. package/.roo/skills/code-documentation/SKILL.md +0 -57
  734. package/.roo/skills/code-documentation/examples/cpp.md +0 -29
  735. package/.roo/skills/code-documentation/examples/csharp.md +0 -28
  736. package/.roo/skills/code-documentation/examples/javascript_typescript.md +0 -28
  737. package/.roo/skills/code-documentation/examples/python.md +0 -57
  738. package/.roo/skills/code-review/SKILL.md +0 -43
  739. package/.roo/skills/commit-message/SKILL.md +0 -79
  740. package/.roo/skills/cpp-best-practices/SKILL.md +0 -234
  741. package/.roo/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
  742. package/.roo/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
  743. package/.roo/skills/cpp-concurrency-safety/SKILL.md +0 -60
  744. package/.roo/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
  745. package/.roo/skills/cpp-const-correctness/SKILL.md +0 -63
  746. package/.roo/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
  747. package/.roo/skills/cpp-memory-handling/SKILL.md +0 -42
  748. package/.roo/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
  749. package/.roo/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
  750. package/.roo/skills/cpp-modern-composition/SKILL.md +0 -64
  751. package/.roo/skills/cpp-modern-composition/examples/composition.md +0 -51
  752. package/.roo/skills/cpp-robust-interfaces/SKILL.md +0 -55
  753. package/.roo/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
  754. package/.roo/skills/create-hardened-docker-skill/SKILL.md +0 -637
  755. package/.roo/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
  756. package/.roo/skills/csharp-best-practices/SKILL.md +0 -278
  757. package/.roo/skills/docker-hardening-verification/SKILL.md +0 -28
  758. package/.roo/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
  759. package/.roo/skills/docker-image-signing/SKILL.md +0 -28
  760. package/.roo/skills/docker-image-signing/scripts/sign-image.sh +0 -33
  761. package/.roo/skills/document-revision-history/SKILL.md +0 -104
  762. package/.roo/skills/git-workflow-skill/SKILL.md +0 -194
  763. package/.roo/skills/git-workflow-skill/hooks/commit-msg +0 -61
  764. package/.roo/skills/git-workflow-skill/hooks/pre-commit +0 -38
  765. package/.roo/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
  766. package/.roo/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
  767. package/.roo/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
  768. package/.roo/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
  769. package/.roo/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
  770. package/.roo/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
  771. package/.roo/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
  772. package/.roo/skills/js-ts-security-skill/SKILL.md +0 -64
  773. package/.roo/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
  774. package/.roo/skills/logging-best-practices/SKILL.md +0 -50
  775. package/.roo/skills/logging-best-practices/examples/cpp.md +0 -36
  776. package/.roo/skills/logging-best-practices/examples/csharp.md +0 -49
  777. package/.roo/skills/logging-best-practices/examples/javascript.md +0 -77
  778. package/.roo/skills/logging-best-practices/examples/python.md +0 -57
  779. package/.roo/skills/logging-best-practices/references/logging-standards.md +0 -29
  780. package/.roo/skills/open-presentation/SKILL.md +0 -35
  781. package/.roo/skills/opentelemetry-best-practices/SKILL.md +0 -34
  782. package/.roo/skills/opentelemetry-best-practices/examples/go.md +0 -32
  783. package/.roo/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
  784. package/.roo/skills/opentelemetry-best-practices/examples/python.md +0 -37
  785. package/.roo/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
  786. package/.roo/skills/python-best-practices/SKILL.md +0 -385
  787. package/.roo/skills/python-dependency-mgmt/SKILL.md +0 -42
  788. package/.roo/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
  789. package/.roo/skills/python-security-skill/SKILL.md +0 -56
  790. package/.roo/skills/python-security-skill/examples/security.md +0 -56
  791. package/.roo/skills/self-signed-cert/SKILL.md +0 -42
  792. package/.roo/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
  793. package/.roo/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
  794. package/.roo/skills/skill-creator/SKILL.md +0 -196
  795. package/.roo/skills/skill-creator/references/output-patterns.md +0 -82
  796. package/.roo/skills/skill-creator/references/workflows.md +0 -28
  797. package/.roo/skills/skill-creator/scripts/init_skill.py +0 -208
  798. package/.roo/skills/skill-creator/scripts/package_skill.py +0 -99
  799. package/.roo/skills/skill-creator/scripts/quick_validate.py +0 -113
  800. package/.roo/skills/story-status-lookup/SKILL.md +0 -78
  801. package/.roo/skills/test-accompanied-development/SKILL.md +0 -50
  802. package/.roo/skills/test-generator/SKILL.md +0 -65
  803. package/.roo/skills/vercel-react-best-practices/SKILL.md +0 -109
  804. package/.roo/skills/verify-hardened-docker-skill/SKILL.md +0 -442
  805. package/.roo/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
  806. package/opencode.json +0 -5
  807. /package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/bmad-dev-story}/.gitkeep +0 -0
  808. /package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/SKILL.md +0 -0
  809. /package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-sprint-planning}/.gitkeep +0 -0
  810. /package/{.opencode/skills/bmad-ma-agent-cyber → lib/bmad-extension/skills/bmad-sprint-status}/.gitkeep +0 -0
  811. /package/{.opencode/skills/bmad-ma-agent-devops → lib/bmad-extension/skills/cleanup-done}/.gitkeep +0 -0
  812. /package/{.opencode → lib/bmad-extension}/skills/cleanup-done/bmad-skill-manifest.yaml +0 -0
  813. /package/{.opencode/skills/bmad-ma-agent-mil498 → lib/bmad-extension/skills/close-sprint}/.gitkeep +0 -0
  814. /package/{.opencode/skills/bmad-ma-agent-ml → lib/bmad-extension/skills/generate-backlog}/.gitkeep +0 -0
  815. /package/{.opencode → lib/bmad-extension}/skills/generate-backlog/bmad-skill-manifest.yaml +0 -0
  816. /package/{.opencode/skills/bmad-ma-agent-sre → lib/bmad-extension/skills/mil498-requirement-quality}/.gitkeep +0 -0
  817. /package/{.opencode/skills/cleanup-done → lib/bmad-extension/skills/prioritize-backlog}/.gitkeep +0 -0
  818. /package/{.opencode → lib/bmad-extension}/skills/prioritize-backlog/bmad-skill-manifest.yaml +0 -0
  819. /package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/remove-from-sprint}/.gitkeep +0 -0
  820. /package/{.opencode → lib/bmad-extension}/skills/remove-from-sprint/bmad-skill-manifest.yaml +0 -0
  821. /package/{.opencode/skills/mil498-ocd/template.md → mil498/OCD.md} +0 -0
  822. /package/{.opencode/skills/mil498-sdp/template.md → mil498/SDP.md} +0 -0
  823. /package/{.opencode/skills/mil498-srs/template.md → mil498/SRS.md} +0 -0
  824. /package/{.opencode/skills/mil498-ssdd/template.md → mil498/SSDD.md} +0 -0
  825. /package/{.opencode/skills/mil498-sss/template.md → mil498/SSS.md} +0 -0
  826. /package/{.opencode/skills/mil498-std/template.md → mil498/STD.md} +0 -0
@@ -0,0 +1,287 @@
1
+ # Epic 15: Adversarial Review — Fix Specification
2
+
3
+ **Source:** Epic 15 adversarial review (2026-03-28)
4
+ **Scope:** 9 actionable fixes across test infrastructure, migration safety, code hygiene
5
+ **Priority:** Fixes are ordered by importance — complete them in sequence
6
+
7
+ ---
8
+
9
+ ## Fix 1: Add missing test file to npm test script
10
+
11
+ **Finding:** `test/story-15-5-workflow-skills.test.js` (157 tests covering all 25 SRE/DevOps/Cyber/extension workflow conversions) is not listed in the `npm test` script in `package.json`. These tests never run in CI.
12
+
13
+ **What to do:**
14
+ 1. Open `package.json`
15
+ 2. Find the `"test"` script in the `"scripts"` section
16
+ 3. Add `node test/story-15-5-workflow-skills.test.js` to the test chain, positioned after the other Epic 15 test files (after `convert-agents-to-skills.test.js` or `migration.test.js`)
17
+ 4. Run `npm test` to confirm all tests pass including the newly added file
18
+
19
+ **Acceptance criteria:**
20
+ - `npm test` executes `story-15-5-workflow-skills.test.js` and all 157 tests pass
21
+ - No other test files are removed or reordered
22
+
23
+ ---
24
+
25
+ ## Fix 2: Fix 3 stale test assertions
26
+
27
+ **Finding:** Epic 15 changed the module structure but left pre-existing test assertions pointing at the old structure. These are documented as discrepancies D2, D3, D4 in `_bmad-output/implementation-artifacts/15-8-validation-report.md`.
28
+
29
+ ### Fix 2a: `test/bmad-extension.test.js` — stale module.yaml name assertion (D2)
30
+
31
+ 1. Open `test/bmad-extension.test.js`
32
+ 2. Find the assertion that checks the `name` field of `lib/bmad-extension/module.yaml`
33
+ 3. The old expected value will reference the pre-6.2.1 module name
34
+ 4. Update it to match the current value in `lib/bmad-extension/module.yaml`, which is: `"MA-Agents Skills & Agents"`
35
+ 5. Run this test file to confirm it passes
36
+
37
+ ### Fix 2b: `test/extension-module-restructure.test.js` — stale agents/ directory assertions (D3)
38
+
39
+ 1. Open `test/extension-module-restructure.test.js`
40
+ 2. Find assertions that expect `lib/bmad-extension/agents/` directory to exist or contain files
41
+ 3. This directory was deleted in Story 15.6. Remove or update these assertions:
42
+ - If the assertion checks that `agents/` exists → remove it
43
+ - If it counts files in `agents/` → remove it
44
+ - If it checks that specific `.customize.yaml` files exist in `agents/` → remove those specific checks
45
+ 4. Do NOT remove assertions about `skills/` or other directories that still exist
46
+ 5. Run this test file to confirm it passes
47
+
48
+ ### Fix 2c: `test/yes-flag.test.js` — environment-dependent flakiness (D4)
49
+
50
+ 1. Open `test/yes-flag.test.js`
51
+ 2. Identify the flaky test (it will be environment-dependent — likely depends on npm/node version, temp directory availability, or network access)
52
+ 3. If the test relies on external state (network, specific paths), make it self-contained by:
53
+ - Mocking the external dependency, OR
54
+ - Adding a guard that skips the test with a clear message when the prerequisite is unavailable
55
+ 4. Run the test file 3 times to confirm it passes consistently
56
+
57
+ **Acceptance criteria:**
58
+ - All three test files pass cleanly
59
+ - No unrelated assertions were modified
60
+ - `npm test` passes end-to-end
61
+
62
+ ---
63
+
64
+ ## Fix 3: Retain migration backup directory until next successful install
65
+
66
+ **Finding:** `cleanupLegacyArtifacts()` in `lib/bmad.js` deletes `.backup-pre-migration/` immediately after `mergeUserCustomizations()` runs. If the merge produced corrupt output (e.g., invalid YAML from user content with special characters), the backup is permanently destroyed. The rollback safety net (NFR29) only covers the update step, not a botched merge.
67
+
68
+ **What to do:**
69
+ 1. Open `lib/bmad.js`
70
+ 2. Find `cleanupLegacyArtifacts()` — it has three cleanup targets: old XML agents, legacy workflow YAML, and the backup directory
71
+ 3. **Remove the backup directory cleanup from `cleanupLegacyArtifacts()`** — specifically, remove or comment out the section that deletes `.backup-pre-migration/`
72
+ 4. Instead, move backup directory cleanup to the **beginning** of `backupCustomizations()` — so the old backup is only deleted when a NEW backup is about to be created (i.e., on the next migration/install run)
73
+ 5. Add a console log message when deleting a previous backup: `chalk.dim('Removing previous migration backup...')`
74
+
75
+ **Implementation detail:**
76
+ ```
77
+ In backupCustomizations():
78
+ 1. Check if .backup-pre-migration/ already exists
79
+ 2. If yes: log message, delete it
80
+ 3. Proceed with creating new backup as before
81
+
82
+ In cleanupLegacyArtifacts():
83
+ 1. Keep old XML cleanup
84
+ 2. Keep legacy YAML cleanup
85
+ 3. REMOVE backup directory cleanup
86
+ ```
87
+
88
+ 6. Update `test/migration.test.js`:
89
+ - Add a test: after `cleanupLegacyArtifacts()` runs, `.backup-pre-migration/` directory still exists
90
+ - Add a test: `backupCustomizations()` removes a pre-existing `.backup-pre-migration/` before creating a new one
91
+ - Update any existing test that asserts `.backup-pre-migration/` is deleted by cleanup
92
+
93
+ **Acceptance criteria:**
94
+ - After a migration, `.backup-pre-migration/` is preserved on disk
95
+ - On the NEXT migration run, the old backup is replaced with a fresh one
96
+ - All migration tests pass
97
+
98
+ ---
99
+
100
+ ## Fix 4: Add output validation to mergeUserCustomizations()
101
+
102
+ **Finding:** After merging user memories, custom critical_actions, and persona overrides into post-migration customize files, the function never validates that the resulting file is still parseable. A user persona containing YAML special characters (`:`, `#`, `{`, `>`, `|`) could produce corrupt output.
103
+
104
+ **What to do:**
105
+ 1. Open `lib/bmad.js`, find `mergeUserCustomizations()`
106
+ 2. After writing each merged customize file, add a validation step:
107
+ - Re-read the file that was just written
108
+ - Run it through `parseCustomizeYaml()` (the same parser used to read it)
109
+ - If parsing fails or returns unexpected structure, log a warning and restore the pre-merge version from backup
110
+ 3. The validation logic should be:
111
+ ```
112
+ const merged = fs.readFileSync(targetPath, 'utf8');
113
+ const parsed = parseCustomizeYaml(merged);
114
+ if (!parsed || !parsed.criticalActions || parsed.criticalActions.length === 0) {
115
+ console.warn(chalk.yellow(` ⚠ Merge produced invalid output for ${file}, restoring backup`));
116
+ fs.copyFileSync(backupPath, targetPath);
117
+ skipped.push(file);
118
+ continue;
119
+ }
120
+ ```
121
+ 4. Update `test/migration.test.js`:
122
+ - Add a test: merge with user content containing YAML special characters (`memories:\n - "key: value with colons"`) produces valid output
123
+ - Add a test: if merge produces unparseable output, the backup copy is restored and the file is added to `skipped`
124
+
125
+ **Acceptance criteria:**
126
+ - `mergeUserCustomizations()` validates each merged file before moving on
127
+ - Corrupt merges are caught and the backup is restored for that specific file
128
+ - Migration continues for other files (doesn't abort entirely)
129
+ - New tests cover the happy path and the corrupt-merge path
130
+
131
+ ---
132
+
133
+ ## Fix 5: Flag dead menu items in agent SKILL.md files
134
+
135
+ **Finding:** Four agent menu items reference skills that were never implemented: `sre-health-check`, `sre-performance-opt`, `devops-optimize-pipelines`, `cyber-threat-modeling`. These are dead links that will confuse users.
136
+
137
+ **What to do:**
138
+ 1. Edit `lib/bmad-extension/skills/bmad-ma-agent-sre/SKILL.md`:
139
+ - Find the menu table rows for "Health Check" (referencing `sre-health-check`) and "Performance Optimization" (referencing `sre-performance-opt`)
140
+ - Append ` *(not yet implemented)*` to the description column of each
141
+
142
+ 2. Edit `lib/bmad-extension/skills/bmad-ma-agent-devops/SKILL.md`:
143
+ - Find the menu table row for "Optimize Pipelines" (referencing `devops-optimize-pipelines`)
144
+ - Append ` *(not yet implemented)*` to the description column
145
+
146
+ 3. Edit `lib/bmad-extension/skills/bmad-ma-agent-cyber/SKILL.md`:
147
+ - Find the menu table row for "Threat Modeling" (referencing `cyber-threat-modeling`)
148
+ - Append ` *(not yet implemented)*` to the description column
149
+
150
+ 4. Update `test/migration-validation.test.js` if it has assertions that check these exact description strings — adjust expected values to include the new suffix
151
+
152
+ **Acceptance criteria:**
153
+ - All 4 dead menu items are visibly marked as not yet implemented
154
+ - Agents still render menus correctly (no broken markdown)
155
+ - Tests pass
156
+
157
+ ---
158
+
159
+ ## Fix 6: Remove redundant agent source files from lib/bmad-customizations/
160
+
161
+ **Finding:** `lib/bmad-customizations/` still contains the original source files for all 4 migrated agents (`bmm-sre.customize.yaml`, `bmm-cyber.customize.yaml`, `bmm-devops.customize.yaml`, `bmm-mil498.customize.yaml`, plus `sre.md`, `cyber.md`, `devops.md`, `mil498.md`). These are superseded by the skill folders in `lib/bmad-extension/skills/bmad-ma-agent-*/`. No code reads from these paths for the migrated agents.
162
+
163
+ **What to do:**
164
+ 1. First, **verify** that no code references these files:
165
+ - Search all `.js` files for `bmad-customizations/bmm-sre`, `bmad-customizations/bmm-cyber`, `bmad-customizations/bmm-devops`, `bmad-customizations/bmm-mil498`
166
+ - Search all `.js` files for `bmad-customizations/sre.md`, `bmad-customizations/cyber.md`, `bmad-customizations/devops.md`, `bmad-customizations/mil498.md`
167
+ - If ANY code still references these files, do NOT delete them — instead add a comment at the top of each: `# DEPRECATED: Canonical source is now lib/bmad-extension/skills/bmad-ma-agent-{name}/SKILL.md`
168
+
169
+ 2. If no code references them, delete these 8 files:
170
+ - `lib/bmad-customizations/bmm-sre.customize.yaml`
171
+ - `lib/bmad-customizations/bmm-cyber.customize.yaml`
172
+ - `lib/bmad-customizations/bmm-devops.customize.yaml`
173
+ - `lib/bmad-customizations/bmm-mil498.customize.yaml`
174
+ - `lib/bmad-customizations/sre.md`
175
+ - `lib/bmad-customizations/cyber.md`
176
+ - `lib/bmad-customizations/devops.md`
177
+ - `lib/bmad-customizations/mil498.md`
178
+
179
+ 3. Do NOT delete the other files in `lib/bmad-customizations/` (the platform-specific customize files like `claude-code.customize.yaml`, `cursor.customize.yaml`, etc.) — those serve a different purpose
180
+
181
+ 4. Update any test that asserts the existence or count of files in `lib/bmad-customizations/`
182
+
183
+ **Acceptance criteria:**
184
+ - No code references the deleted files
185
+ - The 8 agent-specific files are removed (or deprecated if still referenced)
186
+ - Platform-specific customize files are untouched
187
+ - All tests pass
188
+
189
+ ---
190
+
191
+ ## Fix 7: Update story artifact statuses to match sprint status
192
+
193
+ **Finding:** Stories 15.1 through 15.5 have `status: review` in their implementation artifact `.md` files, while the sprint status YAML says the entire epic is `done`. This inconsistency creates confusion about which source of truth to trust.
194
+
195
+ **What to do:**
196
+ 1. Update the `status:` field in each of these files to `done`:
197
+ - `_bmad-output/implementation-artifacts/15-1-bump-bmad-method-to-6-2-1.md`
198
+ - `_bmad-output/implementation-artifacts/15-2-restructure-extension-module.md`
199
+ - `_bmad-output/implementation-artifacts/15-3-convert-custom-agents-to-skill-folders.md`
200
+ - `_bmad-output/implementation-artifacts/15-4-convert-mil498-workflows-to-skill-md.md`
201
+ - `_bmad-output/implementation-artifacts/15-5-convert-sre-devops-cyber-workflows.md`
202
+
203
+ 2. Look for a `status:` key in the YAML frontmatter or a `**Status:**` line in the markdown body — update whichever format the file uses
204
+
205
+ **Acceptance criteria:**
206
+ - All 8 story artifacts show status `done`
207
+ - Sprint status YAML and individual story statuses agree
208
+
209
+ ---
210
+
211
+ ## Fix 8: Document compareVersions() limitations
212
+
213
+ **Finding:** `compareVersions()` in `lib/bmad.js` only handles simple `X.Y.Z` numeric semver. It will mishandle pre-release versions, 4+ segments, leading zeros, and non-numeric segments. Since it gates whether migrations run, failures here are silent and consequential.
214
+
215
+ **What to do:**
216
+ 1. Open `lib/bmad.js`, find `compareVersions()`
217
+ 2. Add a JSDoc comment above the function documenting its constraints:
218
+ ```javascript
219
+ /**
220
+ * Compare two semver version strings (X.Y.Z format only).
221
+ * Limitations: Does not support pre-release suffixes (e.g., 6.2.1-beta.1),
222
+ * versions with more than 3 segments, or non-numeric segments.
223
+ * Returns: -1 if a < b, 0 if equal, 1 if a > b.
224
+ */
225
+ ```
226
+ 3. Add a guard at the top of the function that logs a warning if either version doesn't match `/^\d+\.\d+\.\d+$/`:
227
+ ```javascript
228
+ const semverPattern = /^\d+\.\d+\.\d+$/;
229
+ if (!semverPattern.test(a) || !semverPattern.test(b)) {
230
+ console.warn(chalk.yellow(`Warning: Non-standard version format detected (${a} vs ${b}), comparison may be unreliable`));
231
+ }
232
+ ```
233
+ 4. Add a test in `test/migration.test.js`:
234
+ - `compareVersions('6.2.1-beta.1', '6.2.1')` — verify it doesn't crash (behavior can be undefined, but it must not throw)
235
+ - `compareVersions('6.2', '6.2.1')` — same, no crash
236
+
237
+ **Acceptance criteria:**
238
+ - Function has clear documentation of its limitations
239
+ - Non-standard version inputs produce a warning, not a crash
240
+ - Existing version comparisons continue to work identically
241
+
242
+ ---
243
+
244
+ ## Fix 9: Add basic merge integration test with adversarial YAML content
245
+
246
+ **Finding:** No test feeds realistic/adversarial user content through the merge pipeline. The regex-based YAML parsing in `parseCustomizeYaml()` and the merge logic in `mergeUserCustomizations()` are untested against content containing colons, hashes, multi-line strings, and other YAML special characters.
247
+
248
+ **What to do:**
249
+ 1. Open `test/migration.test.js`
250
+ 2. Add a new test section: `// Adversarial YAML content tests`
251
+ 3. Create a mock project where the backed-up customize file contains:
252
+ ```yaml
253
+ critical_actions:
254
+ - "Read the skills MANIFEST at {project-root}/skills/MANIFEST.yaml"
255
+ - "Custom action: deploy to prod #important"
256
+ memories:
257
+ - "User prefers dark mode: always"
258
+ - "Last deploy was 2026-03-15 at 14:30"
259
+ - "Note: this has a colon in it"
260
+ persona:
261
+ role: "Senior SRE: Platform Team"
262
+ identity: "Expert in k8s | helm | terraform"
263
+ ```
264
+ 4. Run `mergeUserCustomizations()` against it
265
+ 5. Assert:
266
+ - The custom critical action (`"Custom action: deploy to prod #important"`) appears in the merged output
267
+ - All 3 memories appear in the merged output
268
+ - The persona with colons and pipes is preserved
269
+ - The merged file can be re-parsed by `parseCustomizeYaml()` without error
270
+ 6. Add a second test with a truly broken input (e.g., unbalanced quotes, bare `{` characters) to verify the function doesn't crash and handles it gracefully
271
+
272
+ **Acceptance criteria:**
273
+ - Adversarial YAML content survives the merge round-trip
274
+ - Broken input is handled without crashing
275
+ - All existing migration tests still pass
276
+
277
+ ---
278
+
279
+ ## Execution Notes
280
+
281
+ - **Run `npm test` after each fix** to catch regressions early
282
+ - Fixes 1-2 are pure test maintenance — no production code changes
283
+ - Fixes 3-4 modify `lib/bmad.js` — be careful with the migration pipeline; don't break the happy path
284
+ - Fix 5 modifies SKILL.md content files — verify markdown rendering
285
+ - Fix 6 deletes files — the grep verification step is mandatory before deletion
286
+ - Fixes 7-8 are documentation/metadata — lowest risk
287
+ - Fix 9 is test-only — adds coverage without production code changes
@@ -0,0 +1,49 @@
1
+ # Epic 16: Multi-Repository Project Layout -- Adversarial Review
2
+
3
+ **Review Date:** 2026-03-28
4
+ **Scope:** Stories 16.1, 16.2, 16.3, 16.4
5
+ **Verdict:** Significant issues found -- not ready for dev without corrections
6
+
7
+ ---
8
+
9
+ ## Findings
10
+
11
+ ### Story 16.1: Repository Layout Wizard
12
+
13
+ 1. **Wrong prompt library referenced throughout the story.** The Dev Notes, code sample, and Key Implementation Constraint #1 all reference `inquirer` as the prompt library. The actual codebase uses `prompts` (the `prompts` npm package), not `inquirer`. See `bin/cli.js` line 3: `const prompts = require('prompts');` and `lib/installer.js` line 4. The `inquirer` package is never imported anywhere. The code sample uses `prompt({ type: 'list', ... })` which is `inquirer` syntax; `prompts` uses `type: 'select'` with `choices` as `{ title, value }` objects, not `{ name, value }`. The entire code pattern reference is wrong.
14
+
15
+ 2. **Story says to modify `cli.js` (root of project) but the actual file is at `bin/cli.js`.** The Dev Notes state "Primary file to modify: `cli.js` (root of project)" and the code sample says "In cli.js -- new wizard section after agent selection." The file is actually `bin/cli.js`. There is no `cli.js` at the project root. A developer would spend time looking for a file that does not exist at the stated location.
16
+
17
+ 3. **No git URL validation whatsoever.** AC #3 and Task 3.1 accept any string as a git URL. There is no validation that the URL is a plausible git remote. There is also no protection against command injection -- the URL is interpolated directly into an `execSync()` shell command. A malicious or mistyped URL containing shell metacharacters (e.g., `; rm -rf /`) would execute arbitrary commands. This is a **security vulnerability**. At minimum, the URL and path should be validated and shell-escaped, not merely quoted.
18
+
19
+ 4. **AC #5 (Local path) allows confirming a non-existent path, but consequences are undefined.** Task 2.3-2.4 say if the user confirms a non-existent path, store it anyway. But Story 16.2 will write this path into config.yaml, Story 16.3 stamps it into project-context.md, and Story 16.4 expects BMAD workflows to read from it. What happens when every downstream consumer tries to use a path that does not exist? There is no acceptance criterion for how the system should behave when a configured path is invalid at runtime.
20
+
21
+ 5. **No acceptance criterion or task for handling git authentication failures.** Task 3.7 says "Handle clone failure gracefully -- catch error, display message, ask user to retry or skip." But "skip" is undefined. If the user skips a failed clone, what is the state of the layout object? Is the mode still `remote` with no valid local path? Is it silently downgraded to `same`? The skip behavior is not specified and would leave the layout object in an inconsistent state.
22
+
23
+ ### Story 16.2: Config Storage and Cross-Reference File
24
+
25
+ 6. **Story 16.2 writes to `_bmad/core/config.yaml`, but BMAD workflows read from `_bmad/bmm/config.yaml`.** Every single workflow.yaml in the codebase uses `config_source: "{project-root}/_bmad/bmm/config.yaml"`, and SKILL.md extension files also instruct agents to "Load and read `{project-root}/_bmad/bmm/config.yaml`." The story writes `knowledgebase_path` and `sprint_management_path` to `_bmad/core/config.yaml`, but no workflow or agent reads from that file for operational config. Unless BMAD workflows are modified to also read `_bmad/core/config.yaml` (not specified anywhere in these four stories), the paths written will be invisible to consumers. This is a **fundamental architectural disconnect**.
26
+
27
+ 7. **Stale `project-layout.yaml` problem is unaddressed.** Task 3.2 explicitly says "leave it in place (do not delete -- user may switch back)." This means if a user switches from multi-repo to single-repo, a stale `project-layout.yaml` with old paths remains. Agents reading that file (per Story 16.4 AC #4) would use outdated paths. There is no mechanism to mark the file as inactive, no version or validity check, and no AC addressing how consumers should handle the stale-file scenario.
28
+
29
+ 8. **String manipulation for YAML merge is fragile and underspecified.** Task 1.5 says "Preserve existing config.yaml content -- append/merge, do not overwrite" and Task 1.6 says use "string manipulation or regex." But there is no specification for what happens when `knowledgebase_path` already exists in the file from a previous run. Append would create duplicates. Find/replace needs a defined regex. The story does not specify whether existing values should be updated in place or appended, nor does it provide the regex pattern.
30
+
31
+ ### Story 16.3: Project-Context Multi-Repo Section
32
+
33
+ 9. **Contradiction between AC #3 (idempotency) and existing codebase behavior.** AC #3 says "When project-context.md already exists, the file is NOT modified." But the existing codebase in `installer.js` already DOES modify an existing `project-context.md` via `updateProjectContextManifestPaths()` which replaces content between marker comments. The story's blanket "do NOT modify" rule contradicts the established pattern and means users who install multi-repo on an existing project will NEVER get the Repository Layout section unless they manually edit it or regenerate from scratch (losing customizations).
34
+
35
+ 10. **Template location uncertainty and missing test updates.** Dev Notes say "Generator function: in `installer.js` or related module (find via Epic 13 implementation)" -- the hedge "or related module" suggests the author was not sure. More critically, Task 3.2 modifies the public API signature of `generateProjectContext()` (an exported function). There is no mention of updating tests in `test/generate-project-context.test.js` or checking for other callers of this function.
36
+
37
+ ### Story 16.4: Validate Cross-Repo Path Resolution
38
+
39
+ 11. **Story is built on an unverified assumption with no definition of done if it fails.** The Expected Outcome says "Most likely outcome: BMAD workflow path resolution is driven by `config.yaml` values that ma-agents sets." But workflows use `output_folder: "{config_source}:output_folder"` which reads from `_bmad/bmm/config.yaml` -- a completely different key name and config file. There are zero references to `knowledgebase_path` or `sprint_management_path` anywhere in workflow files. This story is framed as "validation" but the gap it will inevitably discover should have been scoped as implementation work, not punted to a validation story that might produce a "gap analysis document" with no timeline for resolution.
40
+
41
+ 12. **No acceptance criteria for what constitutes a passing validation.** The ACs describe expected behaviors, but Task 4 says "If BMAD workflows don't natively support configurable output paths, document changes needed." So the story passes even if nothing works? There is no AC that defines the minimum passing bar. A validation story without a pass/fail criterion is a research spike wearing a validation costume.
42
+
43
+ ### Cross-Story Issues
44
+
45
+ 13. **Three sources of truth, no precedence specification.** Story 16.2 stores paths in `config.yaml`. Story 16.3 stamps paths into `project-context.md`. Story 16.4 says agents discover paths from `project-layout.yaml` OR `config.yaml`. There are now three sources of truth for the same information, and no specification for which takes precedence when they disagree.
46
+
47
+ 14. **No CI/CD path for multi-repo configuration.** AC #7 of Story 16.1 says `--yes` mode defaults to single-repo, and Dev Notes say "multi-repo is interactive-only configuration." This means there is no way to configure multi-repo in an automated pipeline -- ever. For a feature targeting DevOps engineers (Story 16.2's persona), making it impossible to automate is a significant gap. There should be environment variables or CLI arguments for headless multi-repo setup.
48
+
49
+ 15. **Zero automated test coverage across all four stories.** Stories 16.1-16.3 introduce new functions and modify an existing exported function. There is an existing test file that will break when the function signature changes. None of the three implementation stories include any task for writing or updating unit tests. Story 16.4's tasks are all manual audits. The epic ships with zero automated regression coverage.
@@ -0,0 +1,230 @@
1
+ # Edge Case Hunter Review: Epic 16 — Multi-Repository Project Layout
2
+
3
+ **Scope:** Stories 16.1, 16.2, 16.3, 16.4
4
+ **Date:** 2026-03-28
5
+ **Method:** Exhaustive path enumeration across all branching paths and boundary conditions
6
+
7
+ ## Findings
8
+
9
+ ```json
10
+ [
11
+ {
12
+ "location": "16.1:AC#3/Task3.1",
13
+ "trigger_condition": "User enters empty string or whitespace-only git URL",
14
+ "guard_snippet": "if (!gitUrl || !gitUrl.trim()) { console.log(chalk.red('Git URL cannot be empty')); /* re-prompt */ }",
15
+ "potential_consequence": "execSync runs git clone with empty quoted arg, cryptic git error"
16
+ },
17
+ {
18
+ "location": "16.1:AC#3/Task3.2",
19
+ "trigger_condition": "User enters empty string or whitespace-only destination path",
20
+ "guard_snippet": "if (!destPath || !destPath.trim()) { console.log(chalk.red('Destination path cannot be empty')); /* re-prompt */ }",
21
+ "potential_consequence": "git clone writes into current directory unexpectedly"
22
+ },
23
+ {
24
+ "location": "16.1:AC#3/Task3.4",
25
+ "trigger_condition": "Git URL contains shell metacharacters like $() or backticks",
26
+ "guard_snippet": "Use execFileSync('git', ['clone', gitUrl, destPath]) instead of execSync with string interpolation",
27
+ "potential_consequence": "Arbitrary command injection via crafted git URL string"
28
+ },
29
+ {
30
+ "location": "16.1:AC#5/Task2.2",
31
+ "trigger_condition": "User provides relative path like '../kb' from different CWDs",
32
+ "guard_snippet": "const resolved = path.resolve(process.cwd(), localPath); // resolve relative to install CWD, store absolute",
33
+ "potential_consequence": "Stored relative path resolves differently when agents run later"
34
+ },
35
+ {
36
+ "location": "16.1:AC#5/Task2.4",
37
+ "trigger_condition": "User confirms non-existent local path without correction",
38
+ "guard_snippet": "If user confirms non-existent path, log warning that path will need to exist before agents run",
39
+ "potential_consequence": "Config stores path that does not exist; agents fail at runtime"
40
+ },
41
+ {
42
+ "location": "16.1:AC#3/Task3.3",
43
+ "trigger_condition": "Destination exists but is a file, not a directory",
44
+ "guard_snippet": "if (fs.existsSync(destPath) && !fs.statSync(destPath).isDirectory()) { /* warn and re-prompt */ }",
45
+ "potential_consequence": "Summary display crashes or git clone fails overwriting a file"
46
+ },
47
+ {
48
+ "location": "16.1:AC#3/Task3.7",
49
+ "trigger_condition": "Clone fails and user selects 'skip'; no fallback path stored",
50
+ "guard_snippet": "If skip chosen after clone failure, set mode to 'same' or require valid local path before proceeding",
51
+ "potential_consequence": "Layout object has remote mode but no cloned repo; downstream steps fail"
52
+ },
53
+ {
54
+ "location": "16.1:AC#3/Task3.4",
55
+ "trigger_condition": "Git is not installed or not on PATH",
56
+ "guard_snippet": "try { execSync('git --version') } catch { chalk.red('git not found on PATH'); process.exit(1) }",
57
+ "potential_consequence": "Unhelpful ENOENT error from execSync instead of clear message"
58
+ },
59
+ {
60
+ "location": "16.1:AC#7/Task1.6",
61
+ "trigger_condition": "User passes --yes with env vars for custom repo paths",
62
+ "guard_snippet": "Document or support env vars (MA_KB_PATH, MA_SPRINT_PATH) that override defaults in --yes mode",
63
+ "potential_consequence": "CI/CD pipelines cannot configure multi-repo without interactive prompts"
64
+ },
65
+ {
66
+ "location": "16.1:AC#3/Task3.5",
67
+ "trigger_condition": "Clone hangs due to SSH key prompt or large repo on slow network",
68
+ "guard_snippet": "execSync('git clone ...', { timeout: 120000, env: { ...process.env, GIT_TERMINAL_PROMPT: '0' } })",
69
+ "potential_consequence": "Installer hangs indefinitely waiting for git credential or transfer"
70
+ },
71
+ {
72
+ "location": "16.2:AC#1/Task1.5",
73
+ "trigger_condition": "config.yaml has no trailing newline or unusual YAML formatting",
74
+ "guard_snippet": "Ensure content ends with newline before appending; use regex anchored to line start for find/replace",
75
+ "potential_consequence": "Appended fields merge into last line, producing invalid YAML"
76
+ },
77
+ {
78
+ "location": "16.2:AC#1/Task1.6",
79
+ "trigger_condition": "config.yaml contains duplicate knowledgebase_path keys after multiple installs",
80
+ "guard_snippet": "Regex replace existing key if found: content.replace(/^knowledgebase_path:.*$/m, newLine) || append",
81
+ "potential_consequence": "YAML has duplicate keys; parsers may use first or last unpredictably"
82
+ },
83
+ {
84
+ "location": "16.2:AC#1/Task1.4",
85
+ "trigger_condition": "Absolute path contains YAML-special characters like colons (C:\\path or C:/path)",
86
+ "guard_snippet": "Quote path values in YAML: knowledgebase_path: \"C:/Code/kb-repo\"",
87
+ "potential_consequence": "Unquoted colon in Windows path produces invalid YAML"
88
+ },
89
+ {
90
+ "location": "16.2:AC#2/Task2.4",
91
+ "trigger_condition": "Path contains characters needing YAML escaping (#, %, {, })",
92
+ "guard_snippet": "Always wrap path values in double quotes in project-layout.yaml template strings",
93
+ "potential_consequence": "YAML comment or anchor syntax triggered by special chars in path"
94
+ },
95
+ {
96
+ "location": "16.2:AC#4/Task2.4",
97
+ "trigger_condition": "Path separator normalization differs between runs on same OS",
98
+ "guard_snippet": "Always normalize with .replace(/\\\\/g, '/') before writing, even on Unix (idempotency)",
99
+ "potential_consequence": "Determinism check fails; file diff shows path separator changes"
100
+ },
101
+ {
102
+ "location": "16.2:AC#1/Task1.2",
103
+ "trigger_condition": "config.yaml does not exist yet (first install before bmad-method completes)",
104
+ "guard_snippet": "if (!fs.existsSync(configPath)) { fs.mkdirSync(path.dirname(configPath), {recursive:true}); fs.writeFileSync(configPath, '') }",
105
+ "potential_consequence": "Read of non-existent file throws ENOENT, installer crashes"
106
+ },
107
+ {
108
+ "location": "16.2:AC#3/Task3.2",
109
+ "trigger_condition": "Previous multi-repo project-layout.yaml is stale but not deleted on mode change",
110
+ "guard_snippet": "Log warning: 'Existing project-layout.yaml found but current config is single-repo — file may be stale'",
111
+ "potential_consequence": "Agents read stale project-layout.yaml and use wrong paths silently"
112
+ },
113
+ {
114
+ "location": "16.3:AC#3/Task4.3",
115
+ "trigger_condition": "project-context.md exists AND single-repo mode configured",
116
+ "guard_snippet": "Only log 'add Repository Layout manually' message when multi-repo is configured AND file exists",
117
+ "potential_consequence": "Confusing log message shown to single-repo users who need no action"
118
+ },
119
+ {
120
+ "location": "16.3:AC#2/Task3.4",
121
+ "trigger_condition": "Template placeholder replaced with empty string leaves double blank lines",
122
+ "guard_snippet": "Replace '{{REPO_LAYOUT_SECTION}}\\n\\n' (placeholder plus surrounding blank lines) as a unit",
123
+ "potential_consequence": "Generated project-context.md has extra blank lines in single-repo mode"
124
+ },
125
+ {
126
+ "location": "16.3:AC#1/Task2.4",
127
+ "trigger_condition": "Mixed config: knowledgebase is external but sprint is same-repo",
128
+ "guard_snippet": "Section generator should list each concern independently, showing '.' or 'current repository' for same-mode items",
129
+ "potential_consequence": "Section omits same-repo concern or shows incomplete path info to agents"
130
+ },
131
+ {
132
+ "location": "16.3:AC#1/Task2.2",
133
+ "trigger_condition": "Layout config object is undefined or missing fields when generator is called",
134
+ "guard_snippet": "if (!layout?.knowledgebase || !layout?.sprintManagement) { return ''; }",
135
+ "potential_consequence": "TypeError accessing .mode on undefined; installer crash during generation"
136
+ },
137
+ {
138
+ "location": "16.4:AC#1/Task1.3",
139
+ "trigger_condition": "BMAD workflows use hardcoded _bmad-output/ instead of config-driven path",
140
+ "guard_snippet": "Audit must check for literal '_bmad-output/' strings in workflow files; document each as requiring change",
141
+ "potential_consequence": "Multi-repo config is stored but never used; artifacts always go to code repo"
142
+ },
143
+ {
144
+ "location": "16.4:AC#4/Task3.1",
145
+ "trigger_condition": "Both project-layout.yaml and config.yaml exist with conflicting paths",
146
+ "guard_snippet": "Define precedence: config.yaml is source of truth; project-layout.yaml is informational. Document this.",
147
+ "potential_consequence": "Agents read different files and resolve to different paths non-deterministically"
148
+ },
149
+ {
150
+ "location": "16.4:AC#1/Task2.2",
151
+ "trigger_condition": "Knowledgebase path points to repo that lacks _bmad-output/planning-artifacts/",
152
+ "guard_snippet": "Workflows should check if target directory exists before read/write; create or error clearly",
153
+ "potential_consequence": "Agent crashes or silently creates artifacts in wrong location"
154
+ },
155
+ {
156
+ "location": "16.1:AC#5/Task2.2",
157
+ "trigger_condition": "Path exists but is a file, not a directory",
158
+ "guard_snippet": "if (fs.existsSync(p) && !fs.statSync(p).isDirectory()) { chalk.yellow('Path exists but is not a directory') }",
159
+ "potential_consequence": "Validation passes but subsequent file operations in that 'directory' fail"
160
+ },
161
+ {
162
+ "location": "16.2:AC#2/Task2.5",
163
+ "trigger_condition": "_bmad-output/ directory does not exist in fresh code repo",
164
+ "guard_snippet": "fs.mkdirSync('_bmad-output', { recursive: true }) before writing project-layout.yaml",
165
+ "potential_consequence": "ENOENT error writing project-layout.yaml in brand-new repository"
166
+ },
167
+ {
168
+ "location": "16.1:AC#3/Task3.3",
169
+ "trigger_condition": "Destination directory exists but is empty (not a git repo)",
170
+ "guard_snippet": "Distinguish empty dir from populated dir/git repo in summary; offer to clone into it vs. use as-is",
171
+ "potential_consequence": "User confirms empty directory; agents later find no artifacts and fail"
172
+ },
173
+ {
174
+ "location": "16.2:AC#1/Task1.5",
175
+ "trigger_condition": "config.yaml is read-only or locked by another process",
176
+ "guard_snippet": "try { fs.writeFileSync(configPath, content) } catch(e) { chalk.red('Cannot write config.yaml: ' + e.message) }",
177
+ "potential_consequence": "Unhandled EACCES or EPERM crashes installer with stack trace"
178
+ },
179
+ {
180
+ "location": "16.1:AC#4/Task3.4",
181
+ "trigger_condition": "Destination path is inside the current repository (e.g., ./external/kb)",
182
+ "guard_snippet": "Warn if destPath resolves to a subdirectory of process.cwd(); nested repos cause git confusion",
183
+ "potential_consequence": "Nested git repo causes submodule-like issues; commits mix repos"
184
+ },
185
+ {
186
+ "location": "16.3:AC#4/Task1.2",
187
+ "trigger_condition": "Template file does not contain {{REPO_LAYOUT_SECTION}} after manual edit",
188
+ "guard_snippet": "if (!template.includes('{{REPO_LAYOUT_SECTION}}')) { log warning; append section at end if multi-repo }",
189
+ "potential_consequence": "Multi-repo section silently dropped; agents have no path information"
190
+ },
191
+ {
192
+ "location": "16.4:AC#4/Task3.3",
193
+ "trigger_condition": "Knowledgebase repo path is valid but user has no read permission",
194
+ "guard_snippet": "Validation should test fs.accessSync(kbPath, fs.constants.R_OK) and report permission error",
195
+ "potential_consequence": "Agent discovers path but cannot read PRD; opaque permission denied error"
196
+ },
197
+ {
198
+ "location": "16.2:AC#2/Task2.3",
199
+ "trigger_condition": "Mode is 'local' but original source was cloned; no gitUrl stored",
200
+ "guard_snippet": "Only check mode === 'remote' for gitUrl inclusion; 'local' mode must never have gitUrl even if path is a git repo",
201
+ "potential_consequence": "Missing gitUrl for local-mode git repos may confuse future pull/sync features"
202
+ },
203
+ {
204
+ "location": "16.1:AC#1/Task1.4",
205
+ "trigger_condition": "User selects different modes for KB and sprint pointing to same external path",
206
+ "guard_snippet": "if (kb.path === sprint.path && kb.path !== '.') { log info: 'Both concerns point to same external repo' }",
207
+ "potential_consequence": "No issue per se but user may not realize both share one repo; worth confirming"
208
+ },
209
+ {
210
+ "location": "16.2:AC#4/Task4.4",
211
+ "trigger_condition": "Second install changes mode from remote to local for same concern",
212
+ "guard_snippet": "When overwriting config.yaml paths, also check if project-layout.yaml needs regeneration with new mode",
213
+ "potential_consequence": "config.yaml updated but project-layout.yaml still shows old remote mode and gitUrl"
214
+ },
215
+ {
216
+ "location": "16.1:AC#3/Task3.4",
217
+ "trigger_condition": "Disk is full during git clone; partial clone left on filesystem",
218
+ "guard_snippet": "In catch block after clone failure: if destPath was created by clone, rimraf/remove it before retry prompt",
219
+ "potential_consequence": "Partial clone directory passes exists-check on retry; corrupt repo used"
220
+ },
221
+ {
222
+ "location": "16.3:AC#1/Task2.2",
223
+ "trigger_condition": "Configured path contains backslashes that break markdown rendering",
224
+ "guard_snippet": "Normalize all paths with .replace(/\\\\/g, '/') before injecting into markdown section",
225
+ "potential_consequence": "Markdown renders backslashes as escape chars; agents see mangled paths"
226
+ }
227
+ ]
228
+ ```
229
+
230
+ **Total findings: 35**
@@ -0,0 +1,37 @@
1
+ # Epic 17: Sprint Planning Overhaul -- Adversarial Review
2
+
3
+ **Review Date:** 2026-03-28
4
+ **Scope:** Story 17.1 (Sprint Entity Model)
5
+ **Verdict:** Multiple specification conflicts and gaps -- needs corrections before dev
6
+
7
+ ---
8
+
9
+ ## Findings
10
+
11
+ 1. **Schema mismatch between AC #1 and Task 2.5: `created_date` and `last_modified` are phantom fields.** AC #1 specifies exactly seven fields in the YAML schema: `id`, `name`, `status`, `capacity`, `start`, `end`, `items`. Task 2.5 adds two more fields (`created_date` and `last_modified`) that appear nowhere in the acceptance criteria. Task 6.2 then says "Verify new schema fields match AC #1 exactly" -- which they cannot, because Task 2.5's template has nine fields. A developer literally cannot satisfy both Task 2.5 and Task 6.2 simultaneously. Either the AC needs updating or the task needs to drop the extra fields.
12
+
13
+ 2. **The story ignores the SKILL.md file entirely.** Epic 15 already converted `add-sprint` into a skill package. The file `lib/bmad-extension/skills/add-sprint/SKILL.md` exists and contains an identical copy of the workflow. The story's "Files to modify" list mentions only `lib/bmad-extension/workflows/add-sprint/workflow.md`. The `module-help.csv` entry already points to `skill:add-sprint`, which resolves to the SKILL.md, not the workflow.md. If the developer only modifies `workflow.md`, the actual invoked skill will remain unchanged and still emit the old format. This is a **showstopper omission**. The `bmad-skill-manifest.yaml` file may also need updating.
14
+
15
+ 3. **No date validation specified.** Task 2.3 says dates must be ISO format `YYYY-MM-DD`, but there is no acceptance criterion, validation step, or error-handling behavior defined for invalid dates. What happens if the user enters `2026-13-45`, `next Tuesday`, or an empty string? The old workflow allowed freeform or empty values. The new schema implies strict ISO dates, but the story specifies no validation logic, no error message, and no retry loop. Compare to the capacity field (Task 2.2), which has explicit validation with an error message and a `goto` loop. Dates get nothing.
16
+
17
+ 4. **Start and end dates: required or optional?** The old workflow explicitly made `start_context` and `end_context` optional ("press Enter to skip"). The new schema shows `start` and `end` as always populated. No AC or task states whether dates are required or optional. If optional, what value goes in the YAML -- empty string, `null`, omitted key? If required, the story needs to say so explicitly. Downstream story 17.8 (Sprint Status Display) will need to render these fields, so the contract matters.
18
+
19
+ 5. **AC #2 is untestable within this story's scope.** AC #2 says "`items` contains an ordered list of story/bug IDs" and "the count of items never exceeds `capacity`." But the Critical Guardrails state "`items` array MUST be initialized as empty `[]` -- never pre-populated during sprint creation," and the story explicitly forbids touching `add-to-sprint` or `modify-sprint` (the only workflows that would populate `items`). Within this story, `items` will always be `[]`, and the capacity constraint can never be exercised. This AC is testing behavior that is physically impossible to trigger until Story 17.4. It should be moved to 17.4 or clearly marked as a contract specification, not an acceptance criterion for this story.
20
+
21
+ 6. **AC #3 is also largely untestable within this story's scope.** AC #3 describes the transition from `planning` to `active`, but Task 3.4 says "activation is a separate action (via modify-sprint or a future activate-sprint step)" and the guardrails say "Do NOT rework modify-sprint." There is no mechanism in this story's add-sprint workflow to set a sprint to `active`, so the single-active-sprint validation (Task 3.1-3.3) cannot be triggered by anything this story delivers. The validation code would be dead code with no way to invoke it.
22
+
23
+ 7. **The `name` field has no uniqueness constraint or validation.** Two sprints can have different IDs but identical names. The ID has overwrite protection (Task 2.6), but the name is free text with a default template that could easily collide. If 17.8 (Sprint Status Display) shows sprints by name, this will cause confusion. No AC addresses name uniqueness or name format validation.
24
+
25
+ 8. **FR132 specifies "start/end context" but the story silently narrows to strict ISO dates.** The PRD requirement FR132 reads: "each sprint has an iteration identifier, capacity, assigned item list, start/end context, and status." The word "context" implies the old freeform model. This story silently narrows the semantics from freeform context to strict ISO dates without documenting this as a deliberate deviation from FR132 or proposing a PRD amendment.
26
+
27
+ 9. **Sprint status transition rules are incomplete.** AC #3 only covers `planning -> active`. The Dev Notes say the state machine is `planning -> active -> closed`. But the story never explicitly forbids: `closed -> active` (reopening), `closed -> planning`, `active -> planning` (deactivation without closing), or creating a sprint directly in `active` or `closed` status. The guardrails document update (Task 5.3) should contain the full transition matrix, but the story only says "Add Sprint Status Transitions section" -- that is a one-line description, not a specification.
28
+
29
+ 10. **The `module-help.csv` output-location column is stale.** The current entry's output-location says `_bmad-output/implementation-artifacts` -- but sprint files now go to `_bmad-output/implementation-artifacts/sprints/`. Task 4.2 says "Update description if changed" but does not identify that the output-location is also wrong. The description references "optional start/end context" which no longer applies either.
30
+
31
+ 11. **No guidance on sprint ID numbering conflicts or sequencing.** The ID format is `sprint-{number}`, but nothing prevents creating `sprint-5` when only `sprint-1` exists, or creating `sprint-1` after `sprint-3`. There is no auto-increment, no next-available-number suggestion, and no validation that numbers are sequential. Downstream stories that glob and sort by ID will behave unpredictably with non-sequential numbering.
32
+
33
+ 12. **The guardrails document name is misleading after this update.** The file is called `epic-11-12-shared-guardrails.md`, but after Task 5 it will contain Epic 17 content (Sprint Status Transitions, new paths, new globs). The filename no longer reflects its scope. No renaming is proposed.
34
+
35
+ 13. **Interim breakage of existing workflows has no mitigation.** The story states that after 17.1, the existing `add-to-sprint`, `modify-sprint`, and `sprint-status-view` workflows will be **broken** because they still reference `sprint-plan-*.yaml` paths. The story calls this "expected and acceptable." But there is no feature flag, no deprecation warning, no stub that returns a useful error message, and no documented workaround. A Scrum Master running `/add-to-sprint` after 17.1 lands will get a silent failure or cryptic "no sprint plans found" error with no explanation.
36
+
37
+ 14. **The `items` array example in AC #2 uses inconsistent ID formats without defining the contract.** The example shows `["5-5-explicit-parameter-passing", "5-6-fix-space-in-path-bug", "BUG-path-spaces"]`. Story IDs use `{epic}-{story}-{slug}` format but bug IDs use `BUG-{slug}`. This is the only place that defines the item ID format, and it is buried in an example rather than stated as a rule. Story 17.4 will need to write to this array and must know the exact format. The contract should be explicit.