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.
- package/AiAudit.md +7 -0
- package/README.md +78 -29
- package/_bmad-output/implementation-artifacts/17-10-rework-generate-backlog.md +237 -0
- package/_bmad-output/implementation-artifacts/17-11-rework-add-to-sprint.md +339 -0
- package/_bmad-output/implementation-artifacts/17-12-rework-remove-from-sprint.md +348 -0
- package/_bmad-output/implementation-artifacts/17-13-rework-sprint-status-view.md +383 -0
- package/_bmad-output/implementation-artifacts/17-14-rework-cleanup-done.md +348 -0
- package/_bmad-output/implementation-artifacts/17-15-rework-bmad-sprint-planning.md +385 -0
- package/_bmad-output/implementation-artifacts/17-16-rework-add-sprint.md +362 -0
- package/_bmad-output/implementation-artifacts/17-17-rework-modify-sprint.md +477 -0
- package/_bmad-output/implementation-artifacts/17-18-rework-bmad-dev-story.md +377 -0
- package/_bmad-output/implementation-artifacts/17-19-rework-story-status-lookup.md +301 -0
- package/_bmad-output/implementation-artifacts/17-20-rework-bmad-sprint-status.md +508 -0
- package/_bmad-output/implementation-artifacts/17-21-new-close-sprint.md +455 -0
- package/_bmad-output/implementation-artifacts/17-22-jira-adapter-pattern.md +325 -0
- package/_bmad-output/implementation-artifacts/17-23-migration-deprecation-old-files.md +403 -0
- package/_bmad-output/implementation-artifacts/17-24-rework-prioritize-backlog.md +344 -0
- package/_bmad-output/implementation-artifacts/17-9-unified-sprint-status-schema.md +279 -0
- package/_bmad-output/implementation-artifacts/4-1-vs-agent-registry-entry.md +173 -0
- package/_bmad-output/implementation-artifacts/4-2-vs-skill-template-format.md +129 -0
- package/_bmad-output/implementation-artifacts/5-5-explicit-parameter-passing.md +274 -0
- package/_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md +186 -0
- package/_bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md +144 -0
- package/_bmad-output/implementation-artifacts/7-2-installer-pipeline-tests.md +132 -0
- package/_bmad-output/implementation-artifacts/7-3-bmad-pipeline-tests.md +119 -0
- package/_bmad-output/implementation-artifacts/7-4-cli-command-routing-tests.md +162 -0
- package/_bmad-output/implementation-artifacts/deferred-work.md +9 -0
- package/_bmad-output/implementation-artifacts/done/1-1-ci-cd-yes-flag.md +200 -0
- package/_bmad-output/implementation-artifacts/done/10-1-ensure-bmad-output-not-gitignored.md +172 -0
- package/_bmad-output/implementation-artifacts/done/10-2-document-bmad-output-policy.md +102 -0
- package/_bmad-output/implementation-artifacts/done/11-1-auto-bug-detection-skill.md +119 -0
- package/_bmad-output/implementation-artifacts/done/11-2-bug-story-extension-workflow.md +132 -0
- package/_bmad-output/implementation-artifacts/done/11-3-integrate-bug-detection-code-review.md +111 -0
- package/_bmad-output/implementation-artifacts/done/12-1-add-sprint-workflow.md +126 -0
- package/_bmad-output/implementation-artifacts/done/12-2-add-to-sprint-workflow.md +137 -0
- package/_bmad-output/implementation-artifacts/done/12-3-modify-sprint-workflow.md +127 -0
- package/_bmad-output/implementation-artifacts/done/12-4-sprint-status-assigned-items.md +129 -0
- package/_bmad-output/implementation-artifacts/done/13-1-project-context-template-and-generator.md +179 -0
- package/_bmad-output/implementation-artifacts/done/13-2-install-pipeline-integration.md +138 -0
- package/_bmad-output/implementation-artifacts/done/13-3-bmad-critical-actions-update.md +150 -0
- package/_bmad-output/implementation-artifacts/done/13-4-retrospective-expansion-trigger.md +128 -0
- package/_bmad-output/implementation-artifacts/done/13-5-document-project-context-generation.md +118 -0
- package/_bmad-output/implementation-artifacts/done/15-1-bump-bmad-method-to-6-2-1.md +132 -0
- package/_bmad-output/implementation-artifacts/done/15-2-restructure-extension-module.md +174 -0
- package/_bmad-output/implementation-artifacts/done/15-3-convert-custom-agents-to-skill-folders.md +183 -0
- package/_bmad-output/implementation-artifacts/done/15-4-convert-mil498-workflows-to-skill-md.md +252 -0
- package/_bmad-output/implementation-artifacts/done/15-5-convert-sre-devops-cyber-workflows.md +232 -0
- package/_bmad-output/implementation-artifacts/done/15-6-separate-built-in-agent-customizations.md +163 -0
- package/_bmad-output/implementation-artifacts/done/15-7-migration-detection-and-upgrade-path.md +133 -0
- package/_bmad-output/implementation-artifacts/done/15-8-validate-migrated-agents-and-workflows.md +172 -0
- package/_bmad-output/implementation-artifacts/done/15-8-validation-report.md +342 -0
- package/_bmad-output/implementation-artifacts/done/16-1-repository-layout-wizard.md +223 -0
- package/_bmad-output/implementation-artifacts/done/16-2-config-storage-and-cross-reference.md +180 -0
- package/_bmad-output/implementation-artifacts/done/16-3-project-context-multi-repo-section.md +136 -0
- package/_bmad-output/implementation-artifacts/done/16-4-validate-cross-repo-path-resolution.md +137 -0
- package/_bmad-output/implementation-artifacts/done/16-4-validation-report.md +79 -0
- package/_bmad-output/implementation-artifacts/done/16-5-fix-config-lost-on-update.md +110 -0
- package/_bmad-output/implementation-artifacts/done/16-6-repo-sync-check-skill.md +116 -0
- package/_bmad-output/implementation-artifacts/done/16-7-portable-path-storage.md +109 -0
- package/_bmad-output/implementation-artifacts/done/16-8-cicd-remote-mode.md +97 -0
- package/_bmad-output/implementation-artifacts/done/16-9-reconfigure-layout-workflow.md +125 -0
- package/_bmad-output/implementation-artifacts/done/17-1-sprint-entity-model.md +322 -0
- package/_bmad-output/implementation-artifacts/done/17-2-flat-backlog-model.md +264 -0
- package/_bmad-output/implementation-artifacts/done/17-3-bug-as-story-type.md +208 -0
- package/_bmad-output/implementation-artifacts/done/17-4-backlog-to-sprint-workflow.md +209 -0
- package/_bmad-output/implementation-artifacts/done/17-5-sprint-to-backlog-workflow.md +221 -0
- package/_bmad-output/implementation-artifacts/done/17-6-done-item-cleanup.md +273 -0
- package/_bmad-output/implementation-artifacts/done/17-7-multi-criteria-prioritization.md +235 -0
- package/_bmad-output/implementation-artifacts/done/17-8-rework-sprint-status-display.md +285 -0
- package/_bmad-output/implementation-artifacts/done/2-1-cpp-coding-standards-skill.md +188 -0
- package/_bmad-output/implementation-artifacts/done/2-2-csharp-coding-standards-skill.md +211 -0
- package/_bmad-output/implementation-artifacts/done/2-3-python-coding-standards-skill.md +189 -0
- package/_bmad-output/implementation-artifacts/done/3-1-skill-scaffolding-tool.md +184 -0
- package/_bmad-output/implementation-artifacts/done/3-2-skill-validation-tool.md +178 -0
- package/_bmad-output/implementation-artifacts/done/3-3-mandatory-skill-designation.md +136 -0
- package/_bmad-output/implementation-artifacts/done/3-4-bmad-persona-customization-tooling.md +141 -0
- package/_bmad-output/implementation-artifacts/done/3-5-specialized-agent-development-tooling.md +145 -0
- package/_bmad-output/implementation-artifacts/done/5-1-bmad-method-direct-dependency.md +188 -0
- package/_bmad-output/implementation-artifacts/done/5-2-bmad-cache-build-script.md +219 -0
- package/_bmad-output/implementation-artifacts/done/5-3-pre-populate-bmad-cache.md +234 -0
- package/_bmad-output/implementation-artifacts/done/5-4-validate-bundled-installation.md +274 -0
- package/_bmad-output/implementation-artifacts/done/6-1-methodology-presentation-bundle.md +173 -0
- package/_bmad-output/implementation-artifacts/done/8-1-move-instruction-injection-to-top.md +131 -0
- package/_bmad-output/implementation-artifacts/done/8-2-agent-aware-injection-strategy.md +124 -0
- package/_bmad-output/implementation-artifacts/done/8-3-create-bmad-extension-module.md +187 -0
- package/_bmad-output/implementation-artifacts/done/8-4-integration-verification.md +102 -0
- package/_bmad-output/implementation-artifacts/done/8-5-per-agent-enforcement-hooks-research.md +126 -0
- package/_bmad-output/implementation-artifacts/done/8-6-context-persistence-research.md +101 -0
- package/_bmad-output/implementation-artifacts/done/9-1-register-opencode-agent.md +73 -0
- package/_bmad-output/implementation-artifacts/done/9-2-json-merge-injection.md +91 -0
- package/_bmad-output/implementation-artifacts/done/9-3-json-merge-existing.md +113 -0
- package/_bmad-output/implementation-artifacts/done/9-4-json-error-handling.md +90 -0
- package/_bmad-output/implementation-artifacts/epic-11-12-shared-guardrails.md +53 -0
- package/_bmad-output/implementation-artifacts/epic-15-adversarial-fixes.md +287 -0
- package/_bmad-output/implementation-artifacts/epic-16-adversarial-review.md +49 -0
- package/_bmad-output/implementation-artifacts/epic-16-edge-case-review.md +230 -0
- package/_bmad-output/implementation-artifacts/epic-17-adversarial-review.md +37 -0
- package/_bmad-output/implementation-artifacts/epic-17-edge-case-review.md +140 -0
- package/_bmad-output/implementation-artifacts/sprint-status.yaml +83 -0
- package/_bmad-output/methodology/BMAD_AI_Development_Training.pptx +0 -0
- package/_bmad-output/methodology/version.json +7 -0
- package/_bmad-output/planning-artifacts/adapter-pattern-spec.md +508 -0
- package/_bmad-output/planning-artifacts/architecture.md +1619 -0
- package/_bmad-output/planning-artifacts/domain-research-roocode-2026-03-31.md +295 -0
- package/_bmad-output/planning-artifacts/epics.md +3287 -0
- package/_bmad-output/planning-artifacts/mil498-workflow-audit.md +290 -0
- package/_bmad-output/planning-artifacts/prd.md +684 -0
- package/_bmad-output/planning-artifacts/product-brief-agents-2026-03-08.md +214 -0
- package/_bmad-output/planning-artifacts/sprint-status-schema.md +506 -0
- package/_bmad-output/project-context.md +47 -0
- package/lib/bmad-extension/module-help.csv +26 -4
- package/lib/bmad-extension/skills/add-sprint/SKILL.md +126 -72
- package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +124 -96
- package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-dev-story}/bmad-skill-manifest.yaml +1 -1
- package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/checklist.md +13 -13
- package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/workflow.md +103 -44
- package/lib/bmad-extension/skills/bmad-ma-agent-mil498/SKILL.md +2 -1
- package/lib/bmad-extension/skills/bmad-sprint-planning/SKILL.md +6 -0
- package/lib/bmad-extension/skills/bmad-sprint-planning/bmad-skill-manifest.yaml +3 -0
- package/lib/bmad-extension/skills/bmad-sprint-planning/checklist.md +74 -0
- package/lib/bmad-extension/skills/bmad-sprint-planning/sprint-status-template.yaml +89 -0
- package/lib/bmad-extension/skills/bmad-sprint-planning/workflow.md +372 -0
- package/lib/bmad-extension/skills/bmad-sprint-status/SKILL.md +6 -0
- package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/bmad-sprint-status}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension/skills/bmad-sprint-status/workflow.md +434 -0
- package/lib/bmad-extension/skills/cleanup-done/SKILL.md +215 -0
- package/lib/bmad-extension/skills/close-sprint/SKILL.md +379 -0
- package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/close-sprint}/bmad-skill-manifest.yaml +1 -1
- package/lib/bmad-extension/skills/generate-backlog/SKILL.md +195 -0
- package/lib/bmad-extension/skills/mil498-requirement-quality/SKILL.md +105 -0
- package/lib/bmad-extension/skills/mil498-requirement-quality/bmad-skill-manifest.yaml +5 -0
- package/lib/bmad-extension/skills/mil498-ssdd/prompts/05-validate.md +4 -0
- package/lib/bmad-extension/skills/modify-sprint/SKILL.md +227 -175
- package/lib/bmad-extension/skills/prioritize-backlog/SKILL.md +217 -0
- package/lib/bmad-extension/skills/remove-from-sprint/SKILL.md +184 -0
- package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +165 -190
- package/lib/bmad-extension/workflows/add-sprint/workflow.md +125 -71
- package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +123 -95
- package/lib/bmad-extension/workflows/modify-sprint/workflow.md +228 -176
- package/lib/bmad-extension/workflows/remove-from-sprint/workflow.md +164 -0
- package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +162 -189
- package/mil498/README.md +4 -0
- package/out.txt +0 -0
- package/package.json +1 -1
- package/skills/add-sprint/SKILL.md +165 -0
- package/skills/add-sprint/skill.json +7 -0
- package/skills/add-to-sprint/SKILL.md +231 -0
- package/skills/add-to-sprint/skill.json +7 -0
- package/skills/bmad-sprint-planning/SKILL.md +321 -0
- package/skills/bmad-sprint-planning/skill.json +7 -0
- package/skills/bmad-sprint-status/SKILL.md +273 -0
- package/skills/bmad-sprint-status/skill.json +7 -0
- package/skills/cleanup-done/SKILL.md +203 -0
- package/skills/cleanup-done/skill.json +7 -0
- package/skills/close-sprint/SKILL.md +370 -0
- package/skills/close-sprint/skill.json +7 -0
- package/skills/generate-backlog/SKILL.md +178 -0
- package/skills/generate-backlog/skill.json +7 -0
- package/skills/modify-sprint/SKILL.md +302 -0
- package/skills/modify-sprint/skill.json +7 -0
- package/skills/prioritize-backlog/SKILL.md +203 -0
- package/skills/prioritize-backlog/skill.json +7 -0
- package/skills/remove-from-sprint/SKILL.md +174 -0
- package/skills/remove-from-sprint/skill.json +7 -0
- package/skills/sprint-status-view/SKILL.md +173 -0
- package/skills/sprint-status-view/skill.json +7 -0
- package/skills/story-status-lookup/SKILL.md +21 -6
- package/skills/story-status-lookup/skill.json +2 -2
- package/test/extension-module-restructure.test.js +12 -11
- package/test/migration-validation.test.js +10 -10
- package/.opencode/skills/.ma-agents.json +0 -241
- package/.opencode/skills/MANIFEST.yaml +0 -254
- package/.opencode/skills/add-sprint/SKILL.md +0 -207
- package/.opencode/skills/add-to-sprint/SKILL.md +0 -189
- package/.opencode/skills/ai-audit-trail/SKILL.md +0 -23
- package/.opencode/skills/auto-bug-detection/SKILL.md +0 -169
- package/.opencode/skills/bmad-advanced-elicitation/SKILL.md +0 -137
- package/.opencode/skills/bmad-advanced-elicitation/methods.csv +0 -51
- package/.opencode/skills/bmad-agent-analyst/SKILL.md +0 -56
- package/.opencode/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-architect/SKILL.md +0 -52
- package/.opencode/skills/bmad-agent-architect/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-dev/SKILL.md +0 -62
- package/.opencode/skills/bmad-agent-dev/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-pm/SKILL.md +0 -57
- package/.opencode/skills/bmad-agent-pm/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-qa/SKILL.md +0 -59
- package/.opencode/skills/bmad-agent-qa/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-quick-flow-solo-dev/SKILL.md +0 -51
- package/.opencode/skills/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-sm/SKILL.md +0 -53
- package/.opencode/skills/bmad-agent-sm/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-tech-writer/SKILL.md +0 -55
- package/.opencode/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-agent-tech-writer/explain-concept.md +0 -20
- package/.opencode/skills/bmad-agent-tech-writer/mermaid-gen.md +0 -20
- package/.opencode/skills/bmad-agent-tech-writer/validate-doc.md +0 -19
- package/.opencode/skills/bmad-agent-tech-writer/write-document.md +0 -20
- package/.opencode/skills/bmad-agent-ux-designer/SKILL.md +0 -53
- package/.opencode/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-brainstorming/SKILL.md +0 -6
- package/.opencode/skills/bmad-brainstorming/brain-methods.csv +0 -62
- package/.opencode/skills/bmad-brainstorming/steps/step-01-session-setup.md +0 -214
- package/.opencode/skills/bmad-brainstorming/steps/step-01b-continue.md +0 -124
- package/.opencode/skills/bmad-brainstorming/steps/step-02a-user-selected.md +0 -229
- package/.opencode/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +0 -239
- package/.opencode/skills/bmad-brainstorming/steps/step-02c-random-selection.md +0 -211
- package/.opencode/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +0 -266
- package/.opencode/skills/bmad-brainstorming/steps/step-03-technique-execution.md +0 -401
- package/.opencode/skills/bmad-brainstorming/steps/step-04-idea-organization.md +0 -305
- package/.opencode/skills/bmad-brainstorming/template.md +0 -15
- package/.opencode/skills/bmad-brainstorming/workflow.md +0 -53
- package/.opencode/skills/bmad-check-implementation-readiness/SKILL.md +0 -6
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +0 -179
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +0 -168
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +0 -169
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -129
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -241
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +0 -126
- package/.opencode/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +0 -4
- package/.opencode/skills/bmad-check-implementation-readiness/workflow.md +0 -49
- package/.opencode/skills/bmad-cis-design-thinking/SKILL.md +0 -6
- package/.opencode/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +0 -1
- package/.opencode/skills/bmad-cis-design-thinking/design-methods.csv +0 -31
- package/.opencode/skills/bmad-cis-design-thinking/template.md +0 -111
- package/.opencode/skills/bmad-cis-design-thinking/workflow.md +0 -242
- package/.opencode/skills/bmad-cis-innovation-strategy/SKILL.md +0 -6
- package/.opencode/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +0 -1
- package/.opencode/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +0 -31
- package/.opencode/skills/bmad-cis-innovation-strategy/template.md +0 -189
- package/.opencode/skills/bmad-cis-innovation-strategy/workflow.md +0 -315
- package/.opencode/skills/bmad-cis-problem-solving/SKILL.md +0 -6
- package/.opencode/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +0 -1
- package/.opencode/skills/bmad-cis-problem-solving/solving-methods.csv +0 -31
- package/.opencode/skills/bmad-cis-problem-solving/template.md +0 -165
- package/.opencode/skills/bmad-cis-problem-solving/workflow.md +0 -291
- package/.opencode/skills/bmad-cis-storytelling/SKILL.md +0 -6
- package/.opencode/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +0 -1
- package/.opencode/skills/bmad-cis-storytelling/story-types.csv +0 -26
- package/.opencode/skills/bmad-cis-storytelling/template.md +0 -113
- package/.opencode/skills/bmad-cis-storytelling/workflow.md +0 -321
- package/.opencode/skills/bmad-code-review/SKILL.md +0 -6
- package/.opencode/skills/bmad-code-review/steps/step-01-gather-context.md +0 -62
- package/.opencode/skills/bmad-code-review/steps/step-02-review.md +0 -34
- package/.opencode/skills/bmad-code-review/steps/step-03-triage.md +0 -49
- package/.opencode/skills/bmad-code-review/steps/step-04-present.md +0 -129
- package/.opencode/skills/bmad-code-review/workflow.md +0 -55
- package/.opencode/skills/bmad-correct-course/SKILL.md +0 -6
- package/.opencode/skills/bmad-correct-course/checklist.md +0 -288
- package/.opencode/skills/bmad-correct-course/workflow.md +0 -267
- package/.opencode/skills/bmad-create-architecture/SKILL.md +0 -6
- package/.opencode/skills/bmad-create-architecture/architecture-decision-template.md +0 -12
- package/.opencode/skills/bmad-create-architecture/data/domain-complexity.csv +0 -13
- package/.opencode/skills/bmad-create-architecture/data/project-types.csv +0 -7
- package/.opencode/skills/bmad-create-architecture/steps/step-01-init.md +0 -153
- package/.opencode/skills/bmad-create-architecture/steps/step-01b-continue.md +0 -173
- package/.opencode/skills/bmad-create-architecture/steps/step-02-context.md +0 -224
- package/.opencode/skills/bmad-create-architecture/steps/step-03-starter.md +0 -329
- package/.opencode/skills/bmad-create-architecture/steps/step-04-decisions.md +0 -318
- package/.opencode/skills/bmad-create-architecture/steps/step-05-patterns.md +0 -359
- package/.opencode/skills/bmad-create-architecture/steps/step-06-structure.md +0 -379
- package/.opencode/skills/bmad-create-architecture/steps/step-07-validation.md +0 -359
- package/.opencode/skills/bmad-create-architecture/steps/step-08-complete.md +0 -76
- package/.opencode/skills/bmad-create-architecture/workflow.md +0 -38
- package/.opencode/skills/bmad-create-epics-and-stories/SKILL.md +0 -6
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -255
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +0 -212
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +0 -255
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +0 -131
- package/.opencode/skills/bmad-create-epics-and-stories/templates/epics-template.md +0 -61
- package/.opencode/skills/bmad-create-epics-and-stories/workflow.md +0 -53
- package/.opencode/skills/bmad-create-prd/SKILL.md +0 -6
- package/.opencode/skills/bmad-create-prd/data/domain-complexity.csv +0 -15
- package/.opencode/skills/bmad-create-prd/data/prd-purpose.md +0 -197
- package/.opencode/skills/bmad-create-prd/data/project-types.csv +0 -11
- package/.opencode/skills/bmad-create-prd/steps-c/step-01-init.md +0 -178
- package/.opencode/skills/bmad-create-prd/steps-c/step-01b-continue.md +0 -161
- package/.opencode/skills/bmad-create-prd/steps-c/step-02-discovery.md +0 -208
- package/.opencode/skills/bmad-create-prd/steps-c/step-02b-vision.md +0 -142
- package/.opencode/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +0 -158
- package/.opencode/skills/bmad-create-prd/steps-c/step-03-success.md +0 -214
- package/.opencode/skills/bmad-create-prd/steps-c/step-04-journeys.md +0 -201
- package/.opencode/skills/bmad-create-prd/steps-c/step-05-domain.md +0 -194
- package/.opencode/skills/bmad-create-prd/steps-c/step-06-innovation.md +0 -211
- package/.opencode/skills/bmad-create-prd/steps-c/step-07-project-type.md +0 -222
- package/.opencode/skills/bmad-create-prd/steps-c/step-08-scoping.md +0 -216
- package/.opencode/skills/bmad-create-prd/steps-c/step-09-functional.md +0 -219
- package/.opencode/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +0 -230
- package/.opencode/skills/bmad-create-prd/steps-c/step-11-polish.md +0 -221
- package/.opencode/skills/bmad-create-prd/steps-c/step-12-complete.md +0 -115
- package/.opencode/skills/bmad-create-prd/templates/prd-template.md +0 -10
- package/.opencode/skills/bmad-create-prd/workflow.md +0 -62
- package/.opencode/skills/bmad-create-story/SKILL.md +0 -6
- package/.opencode/skills/bmad-create-story/checklist.md +0 -357
- package/.opencode/skills/bmad-create-story/discover-inputs.md +0 -88
- package/.opencode/skills/bmad-create-story/template.md +0 -49
- package/.opencode/skills/bmad-create-story/workflow.md +0 -380
- package/.opencode/skills/bmad-create-ux-design/SKILL.md +0 -6
- package/.opencode/skills/bmad-create-ux-design/steps/step-01-init.md +0 -135
- package/.opencode/skills/bmad-create-ux-design/steps/step-01b-continue.md +0 -127
- package/.opencode/skills/bmad-create-ux-design/steps/step-02-discovery.md +0 -190
- package/.opencode/skills/bmad-create-ux-design/steps/step-03-core-experience.md +0 -217
- package/.opencode/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +0 -220
- package/.opencode/skills/bmad-create-ux-design/steps/step-05-inspiration.md +0 -235
- package/.opencode/skills/bmad-create-ux-design/steps/step-06-design-system.md +0 -253
- package/.opencode/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +0 -255
- package/.opencode/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +0 -225
- package/.opencode/skills/bmad-create-ux-design/steps/step-09-design-directions.md +0 -225
- package/.opencode/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +0 -242
- package/.opencode/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +0 -249
- package/.opencode/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +0 -238
- package/.opencode/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
- package/.opencode/skills/bmad-create-ux-design/steps/step-14-complete.md +0 -171
- package/.opencode/skills/bmad-create-ux-design/ux-design-template.md +0 -13
- package/.opencode/skills/bmad-create-ux-design/workflow.md +0 -36
- package/.opencode/skills/bmad-distillator/SKILL.md +0 -178
- package/.opencode/skills/bmad-distillator/agents/distillate-compressor.md +0 -116
- package/.opencode/skills/bmad-distillator/agents/round-trip-reconstructor.md +0 -68
- package/.opencode/skills/bmad-distillator/resources/compression-rules.md +0 -51
- package/.opencode/skills/bmad-distillator/resources/distillate-format-reference.md +0 -227
- package/.opencode/skills/bmad-distillator/resources/splitting-strategy.md +0 -78
- package/.opencode/skills/bmad-distillator/scripts/analyze_sources.py +0 -300
- package/.opencode/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +0 -204
- package/.opencode/skills/bmad-document-project/SKILL.md +0 -6
- package/.opencode/skills/bmad-document-project/checklist.md +0 -245
- package/.opencode/skills/bmad-document-project/documentation-requirements.csv +0 -12
- package/.opencode/skills/bmad-document-project/instructions.md +0 -128
- package/.opencode/skills/bmad-document-project/templates/deep-dive-template.md +0 -345
- package/.opencode/skills/bmad-document-project/templates/index-template.md +0 -169
- package/.opencode/skills/bmad-document-project/templates/project-overview-template.md +0 -103
- package/.opencode/skills/bmad-document-project/templates/project-scan-report-schema.json +0 -160
- package/.opencode/skills/bmad-document-project/templates/source-tree-template.md +0 -135
- package/.opencode/skills/bmad-document-project/workflow.md +0 -27
- package/.opencode/skills/bmad-document-project/workflows/deep-dive-instructions.md +0 -299
- package/.opencode/skills/bmad-document-project/workflows/deep-dive-workflow.md +0 -34
- package/.opencode/skills/bmad-document-project/workflows/full-scan-instructions.md +0 -1107
- package/.opencode/skills/bmad-document-project/workflows/full-scan-workflow.md +0 -34
- package/.opencode/skills/bmad-domain-research/SKILL.md +0 -6
- package/.opencode/skills/bmad-domain-research/domain-steps/step-01-init.md +0 -137
- package/.opencode/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +0 -229
- package/.opencode/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +0 -238
- package/.opencode/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +0 -206
- package/.opencode/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +0 -234
- package/.opencode/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +0 -444
- package/.opencode/skills/bmad-domain-research/research.template.md +0 -29
- package/.opencode/skills/bmad-domain-research/workflow.md +0 -49
- package/.opencode/skills/bmad-edit-prd/SKILL.md +0 -6
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +0 -242
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-02-review.md +0 -245
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +0 -250
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +0 -165
- package/.opencode/skills/bmad-edit-prd/workflow.md +0 -63
- package/.opencode/skills/bmad-editorial-review-prose/SKILL.md +0 -86
- package/.opencode/skills/bmad-editorial-review-structure/SKILL.md +0 -179
- package/.opencode/skills/bmad-generate-project-context/SKILL.md +0 -6
- package/.opencode/skills/bmad-generate-project-context/project-context-template.md +0 -21
- package/.opencode/skills/bmad-generate-project-context/steps/step-01-discover.md +0 -186
- package/.opencode/skills/bmad-generate-project-context/steps/step-02-generate.md +0 -321
- package/.opencode/skills/bmad-generate-project-context/steps/step-03-complete.md +0 -278
- package/.opencode/skills/bmad-generate-project-context/workflow.md +0 -43
- package/.opencode/skills/bmad-help/SKILL.md +0 -73
- package/.opencode/skills/bmad-index-docs/SKILL.md +0 -66
- package/.opencode/skills/bmad-init/SKILL.md +0 -100
- package/.opencode/skills/bmad-init/resources/core-module.yaml +0 -25
- package/.opencode/skills/bmad-init/scripts/bmad_init.py +0 -593
- package/.opencode/skills/bmad-init/scripts/tests/test_bmad_init.py +0 -329
- package/.opencode/skills/bmad-ma-agent-cyber/SKILL.md +0 -49
- package/.opencode/skills/bmad-ma-agent-cyber/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-ma-agent-devops/SKILL.md +0 -49
- package/.opencode/skills/bmad-ma-agent-devops/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-ma-agent-mil498/SKILL.md +0 -53
- package/.opencode/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-ma-agent-ml/SKILL.md +0 -59
- package/.opencode/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-ma-agent-sre/SKILL.md +0 -49
- package/.opencode/skills/bmad-ma-agent-sre/bmad-skill-manifest.yaml +0 -11
- package/.opencode/skills/bmad-market-research/SKILL.md +0 -6
- package/.opencode/skills/bmad-market-research/research.template.md +0 -29
- package/.opencode/skills/bmad-market-research/steps/step-01-init.md +0 -184
- package/.opencode/skills/bmad-market-research/steps/step-02-customer-behavior.md +0 -239
- package/.opencode/skills/bmad-market-research/steps/step-03-customer-pain-points.md +0 -251
- package/.opencode/skills/bmad-market-research/steps/step-04-customer-decisions.md +0 -261
- package/.opencode/skills/bmad-market-research/steps/step-05-competitive-analysis.md +0 -173
- package/.opencode/skills/bmad-market-research/steps/step-06-research-completion.md +0 -478
- package/.opencode/skills/bmad-market-research/workflow.md +0 -49
- package/.opencode/skills/bmad-party-mode/SKILL.md +0 -6
- package/.opencode/skills/bmad-party-mode/steps/step-01-agent-loading.md +0 -138
- package/.opencode/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +0 -187
- package/.opencode/skills/bmad-party-mode/steps/step-03-graceful-exit.md +0 -167
- package/.opencode/skills/bmad-party-mode/workflow.md +0 -190
- package/.opencode/skills/bmad-product-brief/SKILL.md +0 -87
- package/.opencode/skills/bmad-product-brief/agents/artifact-analyzer.md +0 -60
- package/.opencode/skills/bmad-product-brief/agents/opportunity-reviewer.md +0 -44
- package/.opencode/skills/bmad-product-brief/agents/skeptic-reviewer.md +0 -44
- package/.opencode/skills/bmad-product-brief/agents/web-researcher.md +0 -49
- package/.opencode/skills/bmad-product-brief/bmad-manifest.json +0 -17
- package/.opencode/skills/bmad-product-brief/prompts/contextual-discovery.md +0 -57
- package/.opencode/skills/bmad-product-brief/prompts/draft-and-review.md +0 -86
- package/.opencode/skills/bmad-product-brief/prompts/finalize.md +0 -75
- package/.opencode/skills/bmad-product-brief/prompts/guided-elicitation.md +0 -70
- package/.opencode/skills/bmad-product-brief/resources/brief-template.md +0 -60
- package/.opencode/skills/bmad-qa-generate-e2e-tests/SKILL.md +0 -6
- package/.opencode/skills/bmad-qa-generate-e2e-tests/checklist.md +0 -33
- package/.opencode/skills/bmad-qa-generate-e2e-tests/workflow.md +0 -136
- package/.opencode/skills/bmad-quick-dev/SKILL.md +0 -6
- package/.opencode/skills/bmad-quick-dev/spec-template.md +0 -88
- package/.opencode/skills/bmad-quick-dev/step-01-clarify-and-route.md +0 -64
- package/.opencode/skills/bmad-quick-dev/step-02-plan.md +0 -35
- package/.opencode/skills/bmad-quick-dev/step-03-implement.md +0 -37
- package/.opencode/skills/bmad-quick-dev/step-04-review.md +0 -49
- package/.opencode/skills/bmad-quick-dev/step-05-present.md +0 -63
- package/.opencode/skills/bmad-quick-dev/step-oneshot.md +0 -49
- package/.opencode/skills/bmad-quick-dev/workflow.md +0 -79
- package/.opencode/skills/bmad-retrospective/SKILL.md +0 -6
- package/.opencode/skills/bmad-retrospective/workflow.md +0 -1479
- package/.opencode/skills/bmad-review-adversarial-general/SKILL.md +0 -37
- package/.opencode/skills/bmad-review-edge-case-hunter/SKILL.md +0 -67
- package/.opencode/skills/bmad-shard-doc/SKILL.md +0 -105
- package/.opencode/skills/bmad-sprint-planning/SKILL.md +0 -6
- package/.opencode/skills/bmad-sprint-planning/checklist.md +0 -33
- package/.opencode/skills/bmad-sprint-planning/sprint-status-template.yaml +0 -56
- package/.opencode/skills/bmad-sprint-planning/workflow.md +0 -263
- package/.opencode/skills/bmad-sprint-status/SKILL.md +0 -6
- package/.opencode/skills/bmad-sprint-status/workflow.md +0 -261
- package/.opencode/skills/bmad-technical-research/SKILL.md +0 -6
- package/.opencode/skills/bmad-technical-research/research.template.md +0 -29
- package/.opencode/skills/bmad-technical-research/technical-steps/step-01-init.md +0 -137
- package/.opencode/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +0 -239
- package/.opencode/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +0 -248
- package/.opencode/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +0 -202
- package/.opencode/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +0 -233
- package/.opencode/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +0 -487
- package/.opencode/skills/bmad-technical-research/workflow.md +0 -50
- package/.opencode/skills/bmad-validate-prd/SKILL.md +0 -6
- package/.opencode/skills/bmad-validate-prd/data/domain-complexity.csv +0 -15
- package/.opencode/skills/bmad-validate-prd/data/prd-purpose.md +0 -197
- package/.opencode/skills/bmad-validate-prd/data/project-types.csv +0 -11
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +0 -221
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +0 -229
- package/.opencode/skills/bmad-validate-prd/workflow.md +0 -62
- package/.opencode/skills/cleanup-done/SKILL.md +0 -159
- package/.opencode/skills/cmake-best-practices/SKILL.md +0 -64
- package/.opencode/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.opencode/skills/code-documentation/SKILL.md +0 -57
- package/.opencode/skills/code-documentation/examples/cpp.md +0 -29
- package/.opencode/skills/code-documentation/examples/csharp.md +0 -28
- package/.opencode/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.opencode/skills/code-documentation/examples/python.md +0 -57
- package/.opencode/skills/code-review/SKILL.md +0 -43
- package/.opencode/skills/commit-message/SKILL.md +0 -79
- package/.opencode/skills/cpp-best-practices/SKILL.md +0 -234
- package/.opencode/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
- package/.opencode/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
- package/.opencode/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.opencode/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.opencode/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.opencode/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.opencode/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.opencode/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.opencode/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.opencode/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.opencode/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.opencode/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.opencode/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.opencode/skills/create-bug-story/SKILL.md +0 -263
- package/.opencode/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.opencode/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.opencode/skills/csharp-best-practices/SKILL.md +0 -278
- package/.opencode/skills/cyber-generate-certs/.gitkeep +0 -0
- package/.opencode/skills/cyber-generate-certs/SKILL.md +0 -27
- package/.opencode/skills/cyber-generate-certs/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-immunity-estimation/.gitkeep +0 -0
- package/.opencode/skills/cyber-immunity-estimation/SKILL.md +0 -29
- package/.opencode/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-security-audit/.gitkeep +0 -0
- package/.opencode/skills/cyber-security-audit/SKILL.md +0 -27
- package/.opencode/skills/cyber-security-audit/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-vault-secrets/.gitkeep +0 -0
- package/.opencode/skills/cyber-vault-secrets/SKILL.md +0 -28
- package/.opencode/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-verify-docker-users/.gitkeep +0 -0
- package/.opencode/skills/cyber-verify-docker-users/SKILL.md +0 -23
- package/.opencode/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-verify-image-signature/.gitkeep +0 -0
- package/.opencode/skills/cyber-verify-image-signature/SKILL.md +0 -22
- package/.opencode/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/cyber-vulnerability-scan/.gitkeep +0 -0
- package/.opencode/skills/cyber-vulnerability-scan/SKILL.md +0 -28
- package/.opencode/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/devops-configure-infrastructure/.gitkeep +0 -0
- package/.opencode/skills/devops-configure-infrastructure/SKILL.md +0 -27
- package/.opencode/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/devops-disconnected-deployment/.gitkeep +0 -0
- package/.opencode/skills/devops-disconnected-deployment/SKILL.md +0 -27
- package/.opencode/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/devops-docker-compose-setup/.gitkeep +0 -0
- package/.opencode/skills/devops-docker-compose-setup/SKILL.md +0 -26
- package/.opencode/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/devops-manage-helm/.gitkeep +0 -0
- package/.opencode/skills/devops-manage-helm/SKILL.md +0 -28
- package/.opencode/skills/devops-manage-helm/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/devops-sign-docker-image/.gitkeep +0 -0
- package/.opencode/skills/devops-sign-docker-image/SKILL.md +0 -24
- package/.opencode/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.opencode/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.opencode/skills/docker-image-signing/SKILL.md +0 -28
- package/.opencode/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.opencode/skills/document-revision-history/SKILL.md +0 -104
- package/.opencode/skills/generate-backlog/.gitkeep +0 -0
- package/.opencode/skills/generate-backlog/SKILL.md +0 -183
- package/.opencode/skills/git-workflow-skill/SKILL.md +0 -194
- package/.opencode/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.opencode/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.opencode/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.opencode/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.opencode/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.opencode/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.opencode/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.opencode/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.opencode/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.opencode/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.opencode/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.opencode/skills/logging-best-practices/SKILL.md +0 -50
- package/.opencode/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.opencode/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.opencode/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.opencode/skills/logging-best-practices/examples/python.md +0 -57
- package/.opencode/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.opencode/skills/mil498-ocd/.gitkeep +0 -0
- package/.opencode/skills/mil498-ocd/SKILL.md +0 -30
- package/.opencode/skills/mil498-ocd/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +0 -26
- package/.opencode/skills/mil498-ocd/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-ocd/prompts/03-generate-document.md +0 -90
- package/.opencode/skills/mil498-ocd/prompts/04-validate.md +0 -14
- package/.opencode/skills/mil498-ocd/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-ocd/prompts/06-save.md +0 -15
- package/.opencode/skills/mil498-sdd/.gitkeep +0 -0
- package/.opencode/skills/mil498-sdd/SKILL.md +0 -30
- package/.opencode/skills/mil498-sdd/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +0 -50
- package/.opencode/skills/mil498-sdd/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-sdd/prompts/03-generate-document.md +0 -98
- package/.opencode/skills/mil498-sdd/prompts/04-validate.md +0 -16
- package/.opencode/skills/mil498-sdd/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-sdd/prompts/06-save.md +0 -19
- package/.opencode/skills/mil498-sdd/template.md +0 -163
- package/.opencode/skills/mil498-sdp/.gitkeep +0 -0
- package/.opencode/skills/mil498-sdp/SKILL.md +0 -30
- package/.opencode/skills/mil498-sdp/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +0 -32
- package/.opencode/skills/mil498-sdp/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-sdp/prompts/03-generate-document.md +0 -187
- package/.opencode/skills/mil498-sdp/prompts/04-validate.md +0 -13
- package/.opencode/skills/mil498-sdp/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-sdp/prompts/06-save.md +0 -14
- package/.opencode/skills/mil498-srs/.gitkeep +0 -0
- package/.opencode/skills/mil498-srs/SKILL.md +0 -30
- package/.opencode/skills/mil498-srs/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-srs/prompts/01-discover-project-artifacts.md +0 -42
- package/.opencode/skills/mil498-srs/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-srs/prompts/03-generate-document.md +0 -100
- package/.opencode/skills/mil498-srs/prompts/04-validate.md +0 -16
- package/.opencode/skills/mil498-srs/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-srs/prompts/06-save.md +0 -18
- package/.opencode/skills/mil498-ssdd/.gitkeep +0 -0
- package/.opencode/skills/mil498-ssdd/SKILL.md +0 -32
- package/.opencode/skills/mil498-ssdd/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +0 -32
- package/.opencode/skills/mil498-ssdd/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +0 -43
- package/.opencode/skills/mil498-ssdd/prompts/04-generate-document.md +0 -96
- package/.opencode/skills/mil498-ssdd/prompts/05-validate.md +0 -14
- package/.opencode/skills/mil498-ssdd/prompts/06-review.md +0 -16
- package/.opencode/skills/mil498-ssdd/prompts/07-save.md +0 -16
- package/.opencode/skills/mil498-sss/.gitkeep +0 -0
- package/.opencode/skills/mil498-sss/SKILL.md +0 -31
- package/.opencode/skills/mil498-sss/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-sss/prompts/01-discover-project-artifacts.md +0 -31
- package/.opencode/skills/mil498-sss/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-sss/prompts/03-generate-document.md +0 -108
- package/.opencode/skills/mil498-sss/prompts/04-validate.md +0 -16
- package/.opencode/skills/mil498-sss/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-sss/prompts/06-save.md +0 -15
- package/.opencode/skills/mil498-std/.gitkeep +0 -0
- package/.opencode/skills/mil498-std/SKILL.md +0 -30
- package/.opencode/skills/mil498-std/bmad-skill-manifest.yaml +0 -5
- package/.opencode/skills/mil498-std/prompts/01-discover-project-artifacts.md +0 -42
- package/.opencode/skills/mil498-std/prompts/02-load-template.md +0 -10
- package/.opencode/skills/mil498-std/prompts/03-generate-document.md +0 -117
- package/.opencode/skills/mil498-std/prompts/04-validate.md +0 -15
- package/.opencode/skills/mil498-std/prompts/05-review.md +0 -15
- package/.opencode/skills/mil498-std/prompts/06-save.md +0 -15
- package/.opencode/skills/ml-advise/.gitkeep +0 -0
- package/.opencode/skills/ml-advise/SKILL.md +0 -76
- package/.opencode/skills/ml-advise/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-advise/skill.json +0 -7
- package/.opencode/skills/ml-analysis/.gitkeep +0 -0
- package/.opencode/skills/ml-analysis/SKILL.md +0 -60
- package/.opencode/skills/ml-analysis/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-analysis/skill.json +0 -7
- package/.opencode/skills/ml-architecture/.gitkeep +0 -0
- package/.opencode/skills/ml-architecture/SKILL.md +0 -55
- package/.opencode/skills/ml-architecture/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-architecture/skill.json +0 -7
- package/.opencode/skills/ml-detailed-design/.gitkeep +0 -0
- package/.opencode/skills/ml-detailed-design/SKILL.md +0 -67
- package/.opencode/skills/ml-detailed-design/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-detailed-design/skill.json +0 -7
- package/.opencode/skills/ml-eda/.gitkeep +0 -0
- package/.opencode/skills/ml-eda/SKILL.md +0 -56
- package/.opencode/skills/ml-eda/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-eda/scripts/baseline_classifier.py +0 -522
- package/.opencode/skills/ml-eda/scripts/class_weights_calculator.py +0 -295
- package/.opencode/skills/ml-eda/scripts/clustering_explorer.py +0 -383
- package/.opencode/skills/ml-eda/scripts/eda_analyzer.py +0 -654
- package/.opencode/skills/ml-eda/skill.json +0 -7
- package/.opencode/skills/ml-experiment/.gitkeep +0 -0
- package/.opencode/skills/ml-experiment/SKILL.md +0 -74
- package/.opencode/skills/ml-experiment/assets/advanced_trainer_configs.py +0 -430
- package/.opencode/skills/ml-experiment/assets/quick_trainer_setup.py +0 -233
- package/.opencode/skills/ml-experiment/assets/template_datamodule.py +0 -219
- package/.opencode/skills/ml-experiment/assets/template_gnn_module.py +0 -341
- package/.opencode/skills/ml-experiment/assets/template_lightning_module.py +0 -158
- package/.opencode/skills/ml-experiment/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-experiment/skill.json +0 -7
- package/.opencode/skills/ml-hparam/.gitkeep +0 -0
- package/.opencode/skills/ml-hparam/SKILL.md +0 -81
- package/.opencode/skills/ml-hparam/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-hparam/skill.json +0 -7
- package/.opencode/skills/ml-ideation/.gitkeep +0 -0
- package/.opencode/skills/ml-ideation/SKILL.md +0 -50
- package/.opencode/skills/ml-ideation/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-ideation/scripts/validate_ml_prd.py +0 -287
- package/.opencode/skills/ml-ideation/skill.json +0 -7
- package/.opencode/skills/ml-infra/.gitkeep +0 -0
- package/.opencode/skills/ml-infra/SKILL.md +0 -58
- package/.opencode/skills/ml-infra/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-infra/skill.json +0 -7
- package/.opencode/skills/ml-retrospective/.gitkeep +0 -0
- package/.opencode/skills/ml-retrospective/SKILL.md +0 -63
- package/.opencode/skills/ml-retrospective/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-retrospective/skill.json +0 -7
- package/.opencode/skills/ml-revision/.gitkeep +0 -0
- package/.opencode/skills/ml-revision/SKILL.md +0 -82
- package/.opencode/skills/ml-revision/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-revision/skill.json +0 -7
- package/.opencode/skills/ml-techspec/.gitkeep +0 -0
- package/.opencode/skills/ml-techspec/SKILL.md +0 -80
- package/.opencode/skills/ml-techspec/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/ml-techspec/skill.json +0 -7
- package/.opencode/skills/modify-sprint/.gitkeep +0 -0
- package/.opencode/skills/modify-sprint/SKILL.md +0 -322
- package/.opencode/skills/modify-sprint/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/open-presentation/SKILL.md +0 -35
- package/.opencode/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.opencode/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.opencode/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.opencode/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.opencode/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.opencode/skills/prioritize-backlog/.gitkeep +0 -0
- package/.opencode/skills/prioritize-backlog/SKILL.md +0 -195
- package/.opencode/skills/project-context-expansion/.gitkeep +0 -0
- package/.opencode/skills/project-context-expansion/SKILL.md +0 -238
- package/.opencode/skills/project-context-expansion/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/python-best-practices/SKILL.md +0 -385
- package/.opencode/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.opencode/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.opencode/skills/python-security-skill/SKILL.md +0 -56
- package/.opencode/skills/python-security-skill/examples/security.md +0 -56
- package/.opencode/skills/remove-from-sprint/.gitkeep +0 -0
- package/.opencode/skills/remove-from-sprint/SKILL.md +0 -163
- package/.opencode/skills/self-signed-cert/SKILL.md +0 -42
- package/.opencode/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.opencode/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.opencode/skills/skill-creator/SKILL.md +0 -196
- package/.opencode/skills/skill-creator/references/output-patterns.md +0 -82
- package/.opencode/skills/skill-creator/references/workflows.md +0 -28
- package/.opencode/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.opencode/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.opencode/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.opencode/skills/sprint-status-view/.gitkeep +0 -0
- package/.opencode/skills/sprint-status-view/SKILL.md +0 -263
- package/.opencode/skills/sprint-status-view/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-check-deployment-status/.gitkeep +0 -0
- package/.opencode/skills/sre-check-deployment-status/SKILL.md +0 -32
- package/.opencode/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-check-secrets/.gitkeep +0 -0
- package/.opencode/skills/sre-check-secrets/SKILL.md +0 -23
- package/.opencode/skills/sre-check-secrets/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-check-system-status/.gitkeep +0 -0
- package/.opencode/skills/sre-check-system-status/SKILL.md +0 -27
- package/.opencode/skills/sre-check-system-status/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-day-2-ops/.gitkeep +0 -0
- package/.opencode/skills/sre-day-2-ops/SKILL.md +0 -26
- package/.opencode/skills/sre-day-2-ops/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-deployment-strategies/.gitkeep +0 -0
- package/.opencode/skills/sre-deployment-strategies/SKILL.md +0 -28
- package/.opencode/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-fix-deployments/.gitkeep +0 -0
- package/.opencode/skills/sre-fix-deployments/SKILL.md +0 -25
- package/.opencode/skills/sre-fix-deployments/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/sre-gitops-status/.gitkeep +0 -0
- package/.opencode/skills/sre-gitops-status/SKILL.md +0 -25
- package/.opencode/skills/sre-gitops-status/bmad-skill-manifest.yaml +0 -3
- package/.opencode/skills/story-status-lookup/SKILL.md +0 -78
- package/.opencode/skills/test-accompanied-development/SKILL.md +0 -50
- package/.opencode/skills/test-generator/SKILL.md +0 -65
- package/.opencode/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.opencode/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.opencode/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/.roo/rules/00-ma-agents.md +0 -13
- package/.roo/skills/.ma-agents.json +0 -241
- package/.roo/skills/MANIFEST.yaml +0 -254
- package/.roo/skills/ai-audit-trail/SKILL.md +0 -23
- package/.roo/skills/auto-bug-detection/SKILL.md +0 -169
- package/.roo/skills/cmake-best-practices/SKILL.md +0 -64
- package/.roo/skills/cmake-best-practices/examples/cmake.md +0 -59
- package/.roo/skills/code-documentation/SKILL.md +0 -57
- package/.roo/skills/code-documentation/examples/cpp.md +0 -29
- package/.roo/skills/code-documentation/examples/csharp.md +0 -28
- package/.roo/skills/code-documentation/examples/javascript_typescript.md +0 -28
- package/.roo/skills/code-documentation/examples/python.md +0 -57
- package/.roo/skills/code-review/SKILL.md +0 -43
- package/.roo/skills/commit-message/SKILL.md +0 -79
- package/.roo/skills/cpp-best-practices/SKILL.md +0 -234
- package/.roo/skills/cpp-best-practices/examples/modern-idioms.md +0 -189
- package/.roo/skills/cpp-best-practices/examples/naming-and-organization.md +0 -102
- package/.roo/skills/cpp-concurrency-safety/SKILL.md +0 -60
- package/.roo/skills/cpp-concurrency-safety/examples/concurrency.md +0 -73
- package/.roo/skills/cpp-const-correctness/SKILL.md +0 -63
- package/.roo/skills/cpp-const-correctness/examples/const_correctness.md +0 -54
- package/.roo/skills/cpp-memory-handling/SKILL.md +0 -42
- package/.roo/skills/cpp-memory-handling/examples/modern-cpp.md +0 -49
- package/.roo/skills/cpp-memory-handling/examples/smart-pointers.md +0 -46
- package/.roo/skills/cpp-modern-composition/SKILL.md +0 -64
- package/.roo/skills/cpp-modern-composition/examples/composition.md +0 -51
- package/.roo/skills/cpp-robust-interfaces/SKILL.md +0 -55
- package/.roo/skills/cpp-robust-interfaces/examples/interfaces.md +0 -56
- package/.roo/skills/create-hardened-docker-skill/SKILL.md +0 -637
- package/.roo/skills/create-hardened-docker-skill/scripts/create-all.sh +0 -489
- package/.roo/skills/csharp-best-practices/SKILL.md +0 -278
- package/.roo/skills/docker-hardening-verification/SKILL.md +0 -28
- package/.roo/skills/docker-hardening-verification/scripts/verify-hardening.sh +0 -39
- package/.roo/skills/docker-image-signing/SKILL.md +0 -28
- package/.roo/skills/docker-image-signing/scripts/sign-image.sh +0 -33
- package/.roo/skills/document-revision-history/SKILL.md +0 -104
- package/.roo/skills/git-workflow-skill/SKILL.md +0 -194
- package/.roo/skills/git-workflow-skill/hooks/commit-msg +0 -61
- package/.roo/skills/git-workflow-skill/hooks/pre-commit +0 -38
- package/.roo/skills/git-workflow-skill/hooks/prepare-commit-msg +0 -56
- package/.roo/skills/git-workflow-skill/scripts/finish-feature.sh +0 -192
- package/.roo/skills/git-workflow-skill/scripts/install-hooks.sh +0 -55
- package/.roo/skills/git-workflow-skill/scripts/start-feature.sh +0 -110
- package/.roo/skills/git-workflow-skill/scripts/validate-workflow.sh +0 -229
- package/.roo/skills/js-ts-dependency-mgmt/SKILL.md +0 -49
- package/.roo/skills/js-ts-dependency-mgmt/examples/dependency_mgmt.md +0 -60
- package/.roo/skills/js-ts-security-skill/SKILL.md +0 -64
- package/.roo/skills/js-ts-security-skill/scripts/verify-security.sh +0 -136
- package/.roo/skills/logging-best-practices/SKILL.md +0 -50
- package/.roo/skills/logging-best-practices/examples/cpp.md +0 -36
- package/.roo/skills/logging-best-practices/examples/csharp.md +0 -49
- package/.roo/skills/logging-best-practices/examples/javascript.md +0 -77
- package/.roo/skills/logging-best-practices/examples/python.md +0 -57
- package/.roo/skills/logging-best-practices/references/logging-standards.md +0 -29
- package/.roo/skills/open-presentation/SKILL.md +0 -35
- package/.roo/skills/opentelemetry-best-practices/SKILL.md +0 -34
- package/.roo/skills/opentelemetry-best-practices/examples/go.md +0 -32
- package/.roo/skills/opentelemetry-best-practices/examples/javascript.md +0 -58
- package/.roo/skills/opentelemetry-best-practices/examples/python.md +0 -37
- package/.roo/skills/opentelemetry-best-practices/references/otel-standards.md +0 -37
- package/.roo/skills/python-best-practices/SKILL.md +0 -385
- package/.roo/skills/python-dependency-mgmt/SKILL.md +0 -42
- package/.roo/skills/python-dependency-mgmt/examples/dependency_mgmt.md +0 -67
- package/.roo/skills/python-security-skill/SKILL.md +0 -56
- package/.roo/skills/python-security-skill/examples/security.md +0 -56
- package/.roo/skills/self-signed-cert/SKILL.md +0 -42
- package/.roo/skills/self-signed-cert/scripts/generate-cert.ps1 +0 -45
- package/.roo/skills/self-signed-cert/scripts/generate-cert.sh +0 -43
- package/.roo/skills/skill-creator/SKILL.md +0 -196
- package/.roo/skills/skill-creator/references/output-patterns.md +0 -82
- package/.roo/skills/skill-creator/references/workflows.md +0 -28
- package/.roo/skills/skill-creator/scripts/init_skill.py +0 -208
- package/.roo/skills/skill-creator/scripts/package_skill.py +0 -99
- package/.roo/skills/skill-creator/scripts/quick_validate.py +0 -113
- package/.roo/skills/story-status-lookup/SKILL.md +0 -78
- package/.roo/skills/test-accompanied-development/SKILL.md +0 -50
- package/.roo/skills/test-generator/SKILL.md +0 -65
- package/.roo/skills/vercel-react-best-practices/SKILL.md +0 -109
- package/.roo/skills/verify-hardened-docker-skill/SKILL.md +0 -442
- package/.roo/skills/verify-hardened-docker-skill/scripts/verify-docker-hardening.sh +0 -439
- package/opencode.json +0 -5
- /package/{.opencode/skills/add-sprint → lib/bmad-extension/skills/bmad-dev-story}/.gitkeep +0 -0
- /package/{.opencode → lib/bmad-extension}/skills/bmad-dev-story/SKILL.md +0 -0
- /package/{.opencode/skills/add-to-sprint → lib/bmad-extension/skills/bmad-sprint-planning}/.gitkeep +0 -0
- /package/{.opencode/skills/bmad-ma-agent-cyber → lib/bmad-extension/skills/bmad-sprint-status}/.gitkeep +0 -0
- /package/{.opencode/skills/bmad-ma-agent-devops → lib/bmad-extension/skills/cleanup-done}/.gitkeep +0 -0
- /package/{.opencode → lib/bmad-extension}/skills/cleanup-done/bmad-skill-manifest.yaml +0 -0
- /package/{.opencode/skills/bmad-ma-agent-mil498 → lib/bmad-extension/skills/close-sprint}/.gitkeep +0 -0
- /package/{.opencode/skills/bmad-ma-agent-ml → lib/bmad-extension/skills/generate-backlog}/.gitkeep +0 -0
- /package/{.opencode → lib/bmad-extension}/skills/generate-backlog/bmad-skill-manifest.yaml +0 -0
- /package/{.opencode/skills/bmad-ma-agent-sre → lib/bmad-extension/skills/mil498-requirement-quality}/.gitkeep +0 -0
- /package/{.opencode/skills/cleanup-done → lib/bmad-extension/skills/prioritize-backlog}/.gitkeep +0 -0
- /package/{.opencode → lib/bmad-extension}/skills/prioritize-backlog/bmad-skill-manifest.yaml +0 -0
- /package/{.opencode/skills/create-bug-story → lib/bmad-extension/skills/remove-from-sprint}/.gitkeep +0 -0
- /package/{.opencode → lib/bmad-extension}/skills/remove-from-sprint/bmad-skill-manifest.yaml +0 -0
- /package/{.opencode/skills/mil498-ocd/template.md → mil498/OCD.md} +0 -0
- /package/{.opencode/skills/mil498-sdp/template.md → mil498/SDP.md} +0 -0
- /package/{.opencode/skills/mil498-srs/template.md → mil498/SRS.md} +0 -0
- /package/{.opencode/skills/mil498-ssdd/template.md → mil498/SSDD.md} +0 -0
- /package/{.opencode/skills/mil498-sss/template.md → mil498/SSS.md} +0 -0
- /package/{.opencode/skills/mil498-std/template.md → mil498/STD.md} +0 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Story 5.6: Fix Space-in-Path Bug
|
|
2
|
+
|
|
3
|
+
Status: review
|
|
4
|
+
|
|
5
|
+
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
+
<!-- Epic: 5 — Bundled BMAD Installation (Phase 2) -->
|
|
7
|
+
<!-- Sprint Phase: Phase A — Installation Fixes (next release) -->
|
|
8
|
+
<!-- Dependencies: Story 5.5 (buildBmadArgs) must be implemented first — this story verifies and hardens its path quoting. -->
|
|
9
|
+
|
|
10
|
+
## Story
|
|
11
|
+
|
|
12
|
+
As an **engineer**,
|
|
13
|
+
I want ma-agents installation to work in directories containing spaces,
|
|
14
|
+
so that I can install in any project location without path-related failures.
|
|
15
|
+
|
|
16
|
+
## Acceptance Criteria
|
|
17
|
+
|
|
18
|
+
1. **Given** the project is located at a path with spaces (e.g., `d:\My Projects\agents`)
|
|
19
|
+
**When** `npx ma-agents install` is run
|
|
20
|
+
**Then** the installation completes without errors
|
|
21
|
+
**And** all file paths are properly quoted in `execSync` calls
|
|
22
|
+
|
|
23
|
+
2. **Given** any `execSync` call in `bmad.js` that constructs shell commands with paths
|
|
24
|
+
**When** the path contains spaces, parentheses, or other shell-special characters
|
|
25
|
+
**Then** the path is enclosed in double quotes in the command string
|
|
26
|
+
|
|
27
|
+
3. **Given** `require.resolve()` returns a path with spaces
|
|
28
|
+
**When** the resolved path is used in an `execSync` call
|
|
29
|
+
**Then** the path is quoted: `execSync('node "${resolvedPath}" install ...')`
|
|
30
|
+
|
|
31
|
+
## Tasks / Subtasks
|
|
32
|
+
|
|
33
|
+
- [x] Task 1: Audit all `execSync` calls in `lib/bmad.js` (AC: #1, #2, #3)
|
|
34
|
+
- [x] 1.1 Verify `buildBmadArgs()` (from Story 5.5) quotes `--directory` path — line 47: `"${ctx.projectRoot}"`
|
|
35
|
+
- [x] 1.2 Verify `buildBmadArgs()` quotes the `bmadPath` from `require.resolve()` — line 13 in `getBmadCommand()`: `"${wrapperPath}"`
|
|
36
|
+
- [x] 1.3 Verify `buildBmadArgs()` quotes `--custom-content` extension path — line 69: `"${extensionPath}"`
|
|
37
|
+
- [x] 1.4 Verify `buildBmadArgs()` quotes `--user-name` (may contain spaces) — line 54: `"${ctx.userName}"`
|
|
38
|
+
- [x] 1.5 Verify `restoreGitDir()` line 464 quotes `localUrl` — confirmed: `"${localUrl}"`
|
|
39
|
+
- [x] 1.6 Confirm NO other `execSync` calls exist outside `bmad.js` in ma-agents source — verified: `bin/cli.js` has none, `scripts/build-bmad-cache.js` uses `execFileSync` (array-based, immune)
|
|
40
|
+
- [x] Task 2: Verify `cwd` option handling (AC: #1)
|
|
41
|
+
- [x] 2.1 Confirm all `execSync` calls pass `cwd` as a Node.js option (not embedded in command string) — all 4 calls (lines 95, 120, 196, 465) use `{ cwd: ... }` option
|
|
42
|
+
- [x] 2.2 Node.js `cwd` option handles spaces natively — no quoting needed
|
|
43
|
+
- [x] Task 3: Smoke test with space-in-path directory (AC: #1, #2, #3)
|
|
44
|
+
- [x] 3.1 Created test directory: `d:\tmp\My Test Project\`
|
|
45
|
+
- [x] 3.2 Ran `npm init -y && npm install d:\Code\agents` — success
|
|
46
|
+
- [x] 3.3 Ran `npx ma-agents install --yes` — completed without path-related errors
|
|
47
|
+
- [x] 3.4 Verified `_bmad/` output: `_config`, `_memory`, `bmb`, `bmm`, `core`, `custom`, `extensions`, `skills` all present
|
|
48
|
+
- [x] 3.5 Ran update path: triggered `updateBmad()` with `--action update` — path handling correct (bmad-method module source issue is upstream, not path-related)
|
|
49
|
+
- [x] Task 4: Edge case verification (AC: #2)
|
|
50
|
+
- [x] 4.1 Tested path with parentheses: `d:\tmp\Project (v2)\` — `buildBmadArgs()` correctly produces `--directory "D:\tmp\Project (v2)"` from real `process.cwd()`
|
|
51
|
+
- [x] 4.2 Ampersand in path: `buildBmadArgs()` correctly quotes — double quotes protect `&` from shell interpretation on Windows
|
|
52
|
+
- [x] 4.3 No unsupported characters found. All tested special chars (spaces, parentheses, ampersand) are correctly handled by double-quoting
|
|
53
|
+
|
|
54
|
+
## Dev Notes
|
|
55
|
+
|
|
56
|
+
### Relationship to Story 5.5
|
|
57
|
+
|
|
58
|
+
The epics file explicitly states: "This is a bug fix — can be combined with Story 5.5 implementation since both touch the same code." Story 5.5's `buildBmadArgs()` function is the PRIMARY fix — it centralizes all path quoting in one place. Story 5.6 exists to:
|
|
59
|
+
|
|
60
|
+
1. **Audit completeness** — verify `buildBmadArgs()` didn't miss any path arguments
|
|
61
|
+
2. **Test with real space-in-path directories** — prove the fix works end-to-end
|
|
62
|
+
3. **Cover edge cases** — parentheses, ampersands, unicode in paths
|
|
63
|
+
|
|
64
|
+
If Story 5.5 is implemented correctly, Story 5.6 should mostly be a verification pass with minimal (or zero) additional code changes.
|
|
65
|
+
|
|
66
|
+
### Complete `execSync` Audit of `lib/bmad.js`
|
|
67
|
+
|
|
68
|
+
Only 4 `execSync` calls exist in the entire ma-agents codebase (all in `lib/bmad.js`):
|
|
69
|
+
|
|
70
|
+
| Line | Function | Call | Path safety |
|
|
71
|
+
|---|---|---|---|
|
|
72
|
+
| 42 | `installBmad()` | `execSync(command, { cwd: projectRoot, ... })` | Command built by `buildBmadArgs()` (after 5.5). `cwd` is Node option — safe. |
|
|
73
|
+
| 68 | `updateBmad()` | `execSync(command, { cwd: projectRoot, ... })` | Same as line 42. |
|
|
74
|
+
| 143 | `applyCustomizations()` | `execSync(command, { cwd: projectRoot, ... })` | Same as line 42. |
|
|
75
|
+
| 411 | `restoreGitDir()` | `execSync(\`git remote set-url origin "${localUrl}"\`, { cwd: moduleDir, ... })` | `localUrl` already quoted. `cwd` is Node option — safe. |
|
|
76
|
+
|
|
77
|
+
**Other files:** No `execSync` calls in `bin/cli.js`, `lib/installer.js`, or `lib/agents.js`. The `scripts/build-bmad-cache.js` uses `execFileSync` (array-based args, immune to space issues).
|
|
78
|
+
|
|
79
|
+
### Paths That Must Be Quoted in `buildBmadArgs()`
|
|
80
|
+
|
|
81
|
+
After Story 5.5, `buildBmadArgs()` constructs the command string. These paths MUST be double-quoted:
|
|
82
|
+
|
|
83
|
+
| Path | Source | Example with spaces |
|
|
84
|
+
|---|---|---|
|
|
85
|
+
| `bmadPath` | `require.resolve('bmad-method/...')` | `C:\Users\John Smith\node_modules\bmad-method\tools\bmad-npx-wrapper.js` |
|
|
86
|
+
| `--directory` value | `installContext.projectRoot` | `d:\My Projects\agents` |
|
|
87
|
+
| `--custom-content` value | `path.join(__dirname, 'bmad-extension')` | `C:\Users\John Smith\node_modules\ma-agents\lib\bmad-extension` |
|
|
88
|
+
| `--user-name` value | `installContext.userName` | `John Smith` |
|
|
89
|
+
| `--output-folder` value | `installContext.outputFolder` | Unlikely to have spaces, but quote defensively |
|
|
90
|
+
|
|
91
|
+
Non-path values that do NOT need quoting: `--modules`, `--tools`, `--communication-language`, `--document-output-language`, `--action`, `--yes`.
|
|
92
|
+
|
|
93
|
+
### `restoreGitDir()` — Already Safe
|
|
94
|
+
|
|
95
|
+
Line 411: `execSync(\`git remote set-url origin "${localUrl}"\`)` — the `localUrl` is already wrapped in double quotes. The `cwd: moduleDir` is a Node.js option, not interpolated into the command string. No changes needed here.
|
|
96
|
+
|
|
97
|
+
### Windows-Specific Considerations
|
|
98
|
+
|
|
99
|
+
- Windows paths use backslashes (`\`), which are NOT shell-special in `cmd.exe` or PowerShell
|
|
100
|
+
- Double quotes in `execSync` on Windows are handled correctly by Node.js
|
|
101
|
+
- `require.resolve()` returns native path separators (backslash on Windows)
|
|
102
|
+
- The `cwd` option in `execSync` works with both forward and backslashes on Windows
|
|
103
|
+
|
|
104
|
+
### Previous Story Intelligence (5.5)
|
|
105
|
+
|
|
106
|
+
Story 5.5 creates `buildBmadArgs(installContext)` which centralizes command construction. Its reference implementation quotes all path arguments with template literals: `\`"${path}"\``. The key things to verify:
|
|
107
|
+
|
|
108
|
+
- `bmadPath` is quoted: `\`"${bmadPath}"\``
|
|
109
|
+
- `projectRoot` is quoted: `'--directory', \`"${installContext.projectRoot}"\``
|
|
110
|
+
- `extensionPath` is quoted: `'--custom-content', \`"${extensionPath}"\``
|
|
111
|
+
- `userName` is quoted: `'--user-name', \`"${installContext.userName}"\``
|
|
112
|
+
|
|
113
|
+
If any of these are missing in the actual 5.5 implementation, add the quotes in this story.
|
|
114
|
+
|
|
115
|
+
### Previous Story Intelligence (5.4)
|
|
116
|
+
|
|
117
|
+
Story 5.4 discovered the `--directory` bug — the parameter was missing entirely. After adding it, the format was `--directory "${projectRoot}"` which correctly handles spaces. However, 5.4 only fixed the 3 `getBmadCommand()` callsites — it didn't audit the wrapper path or extension path for space safety.
|
|
118
|
+
|
|
119
|
+
### Project Structure Notes
|
|
120
|
+
|
|
121
|
+
- **Primary file**: `lib/bmad.js` — audit and fix if needed (changes from 5.5 should cover this)
|
|
122
|
+
- **No new files created**
|
|
123
|
+
- **No new dependencies**
|
|
124
|
+
- This story is primarily verification/testing with code fixes only if gaps are found
|
|
125
|
+
|
|
126
|
+
### References
|
|
127
|
+
|
|
128
|
+
- [Source: epics.md, Story 5.6 lines 578-603] — Acceptance criteria and technical notes
|
|
129
|
+
- [Source: epics.md, Story 5.5 lines 571-572] — "All path arguments must be quoted" technical note
|
|
130
|
+
- [Source: architecture.md, Decision P2-6] — "all path arguments are quoted" design decision
|
|
131
|
+
- [Source: lib/bmad.js lines 10-18] — `getBmadCommand()` with quoted wrapperPath
|
|
132
|
+
- [Source: lib/bmad.js lines 398-418] — `restoreGitDir()` with quoted localUrl
|
|
133
|
+
- [Source: 5-5-explicit-parameter-passing.md] — buildBmadArgs() reference implementation with quoting
|
|
134
|
+
- [Source: 5-4-validate-bundled-installation.md] — --directory bug fix discovery
|
|
135
|
+
|
|
136
|
+
## Previous Story Intelligence (5.5)
|
|
137
|
+
|
|
138
|
+
Story 5.5 introduces `buildBmadArgs(installContext)` that replaces all 3 ad-hoc command construction sites. The function centralizes path quoting. Key design decisions from 5.5:
|
|
139
|
+
|
|
140
|
+
- All path arguments use `\`"${value}"\`` template literal quoting
|
|
141
|
+
- `getBmadCommand()` may be subsumed or called internally by `buildBmadArgs()`
|
|
142
|
+
- `--custom-content` flag added for extension module deployment
|
|
143
|
+
- Optional params (`userName`, etc.) only included if provided
|
|
144
|
+
|
|
145
|
+
**Key learning from 5.4**: bmad-method silently succeeds when params are missing or malformed — always verify `_bmad/` output after install to catch silent failures.
|
|
146
|
+
|
|
147
|
+
## Git Intelligence
|
|
148
|
+
|
|
149
|
+
Recent commits (descending):
|
|
150
|
+
```
|
|
151
|
+
998fa13 docs(planning): add F9 migration, F10 multi-repo, F6 explicit params, Epic 17 sprint rework
|
|
152
|
+
8e88686 chore(release): bump version to 2.21.0
|
|
153
|
+
63610de feat(epic-13): auto-generate project-context.md at install time
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Current version: **2.21.0**. No code changes to `lib/bmad.js` since Story 5.4.
|
|
157
|
+
|
|
158
|
+
## Dev Agent Record
|
|
159
|
+
|
|
160
|
+
### Agent Model Used
|
|
161
|
+
|
|
162
|
+
Claude Opus 4.6 (1M context)
|
|
163
|
+
|
|
164
|
+
### Debug Log References
|
|
165
|
+
|
|
166
|
+
- Smoke test in `d:\tmp\My Test Project\`: full install completed, `_bmad/` has 8 expected subdirectories
|
|
167
|
+
- Update path test: command correctly included `--action update` with all quoted paths; bmad-method "module source not available" error is upstream (custom module update behavior), not path-related
|
|
168
|
+
- Parentheses test in `d:\tmp\Project (v2)\`: `buildBmadArgs()` correctly produces `--directory "D:\tmp\Project (v2)"` from real `process.cwd()`
|
|
169
|
+
|
|
170
|
+
### Completion Notes List
|
|
171
|
+
|
|
172
|
+
- Story 5.6 is a verification/audit pass — Story 5.5's `buildBmadArgs()` already correctly quotes ALL path arguments
|
|
173
|
+
- Zero code changes required: the `buildBmadArgs()` function from Story 5.5 handles all space-in-path scenarios correctly
|
|
174
|
+
- Audit confirmed: only 4 `execSync` calls in entire ma-agents codebase, all in `lib/bmad.js`, all with proper path quoting and `cwd` as Node.js options
|
|
175
|
+
- End-to-end smoke test confirmed: full install + update path work in `d:\tmp\My Test Project\` (directory with spaces)
|
|
176
|
+
- Edge cases verified: parentheses in path `Project (v2)` and ampersand `R&D` both handled by double quoting
|
|
177
|
+
- No unsupported characters identified
|
|
178
|
+
|
|
179
|
+
### File List
|
|
180
|
+
|
|
181
|
+
- `_bmad-output/implementation-artifacts/5-6-fix-space-in-path-bug.md` — Story file updates (tasks, status, dev record)
|
|
182
|
+
- `_bmad-output/implementation-artifacts/sprint-status.yaml` — Status: ready-for-dev → review
|
|
183
|
+
|
|
184
|
+
## Change Log
|
|
185
|
+
|
|
186
|
+
- 2026-03-26: Completed Story 5.6 — verification/audit pass confirming Story 5.5's `buildBmadArgs()` correctly handles all space-in-path scenarios. Smoke-tested in `d:\tmp\My Test Project\` (spaces) and `d:\tmp\Project (v2)\` (parentheses). Zero code changes needed — all path quoting was already correct from Story 5.5.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Story 7.1: Set Up Test Framework and First Tests for agents.js
|
|
2
|
+
|
|
3
|
+
Status: ready-for-dev
|
|
4
|
+
|
|
5
|
+
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
+
|
|
7
|
+
## Story
|
|
8
|
+
|
|
9
|
+
As a **developer**,
|
|
10
|
+
I want a test framework configured with initial tests for the agent registry module,
|
|
11
|
+
So that agent configuration changes are verified automatically.
|
|
12
|
+
|
|
13
|
+
## Acceptance Criteria
|
|
14
|
+
|
|
15
|
+
1. **Given** Node.js built-in test runner is configured in `package.json`
|
|
16
|
+
**When** `npm test` is executed
|
|
17
|
+
**Then** tests run and report results (exit 0 on pass, non-zero on failure)
|
|
18
|
+
|
|
19
|
+
2. **Given** tests exist for `agents.js`
|
|
20
|
+
**When** the test suite runs
|
|
21
|
+
**Then** it verifies:
|
|
22
|
+
- All 11 agents are registered with required fields (`id`, `name`, `version`, `category`, `description`, `getProjectPath`, `getGlobalPath`, `fileExtension`, `template`, `instructionFiles`)
|
|
23
|
+
- `getProjectPath()` returns a string containing the agent's expected directory name
|
|
24
|
+
- `getGlobalPath()` returns a valid path for the current OS
|
|
25
|
+
- `resourceMap` is defined for agents that need it (currently only `cline`)
|
|
26
|
+
- No duplicate agent `id` values exist in the registry
|
|
27
|
+
- `getAgent(id)` returns the correct agent object
|
|
28
|
+
- `getAllAgents()` returns all 11 agents
|
|
29
|
+
- `getAgentsByCategory('ide')` returns 7 agents, `getAgentsByCategory('bmad')` returns 4 agents
|
|
30
|
+
|
|
31
|
+
## Tasks / Subtasks
|
|
32
|
+
|
|
33
|
+
- [ ] Task 1: Configure Node.js built-in test runner (AC: #1)
|
|
34
|
+
- [ ] 1.1: Replace the current placeholder test script in `package.json:11` with `node --test tests/`
|
|
35
|
+
- [ ] 1.2: Verify `node --test` works with the project's minimum Node.js version (`>=16.0.0` per `package.json:33`) — Note: `node --test` requires Node 18+. If minimum version must stay at 16, consider `node --test tests/*.test.js` with a version check
|
|
36
|
+
- [ ] 1.3: Create `tests/` directory at project root
|
|
37
|
+
- [ ] 1.4: Run `npm test` — verify it discovers and runs test files (even if empty initially)
|
|
38
|
+
- [ ] Task 2: Write agents.js tests (AC: #2)
|
|
39
|
+
- [ ] 2.1: Create `tests/agents.test.js`
|
|
40
|
+
- [ ] 2.2: Test: `getAllAgents()` returns exactly 11 agents
|
|
41
|
+
- [ ] 2.3: Test: every agent has all required fields (`id`, `name`, `version`, `category`, `description`, `getProjectPath`, `getGlobalPath`, `fileExtension`, `template`, `instructionFiles`)
|
|
42
|
+
- [ ] 2.4: Test: `getProjectPath()` returns a string for each agent
|
|
43
|
+
- [ ] 2.5: Test: `getGlobalPath()` returns a string for each agent
|
|
44
|
+
- [ ] 2.6: Test: no duplicate `id` values across agents
|
|
45
|
+
- [ ] 2.7: Test: `getAgent('claude-code')` returns agent with `name: 'Claude Code'`
|
|
46
|
+
- [ ] 2.8: Test: `getAgent('nonexistent')` returns `undefined`
|
|
47
|
+
- [ ] 2.9: Test: `getAgentsByCategory('ide')` returns 7 agents
|
|
48
|
+
- [ ] 2.10: Test: `getAgentsByCategory('bmad')` returns 4 agents
|
|
49
|
+
- [ ] 2.11: Test: `cline` agent has `resourceMap` with `references` and `assets` keys
|
|
50
|
+
- [ ] 2.12: Test: agents without `resourceMap` don't have the property (or it's undefined)
|
|
51
|
+
- [ ] 2.13: Test: all `instructionFiles` entries are non-empty strings
|
|
52
|
+
|
|
53
|
+
## Dev Notes
|
|
54
|
+
|
|
55
|
+
### Architecture Compliance
|
|
56
|
+
|
|
57
|
+
- **Test location:** `tests/` directory at project root, mirroring source structure. Co-located tests are not used. [Source: architecture.md#Structure-Patterns]
|
|
58
|
+
- **No new runtime dependencies:** The test runner is built into Node.js. No Jest, Mocha, or Vitest needed. [Source: architecture.md#Anti-Patterns]
|
|
59
|
+
- **Test framework decision:** Architecture recommends Node.js built-in test runner (no dependencies, aligns with minimal approach). [Source: architecture.md#Infrastructure-Deployment]
|
|
60
|
+
|
|
61
|
+
### Node.js Built-in Test Runner
|
|
62
|
+
|
|
63
|
+
Use `node:test` module (available since Node 18.x, stable in Node 20+):
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
const { describe, it } = require('node:test');
|
|
67
|
+
const assert = require('node:assert');
|
|
68
|
+
const { getAgent, getAllAgents, getAgentsByCategory } = require('../lib/agents');
|
|
69
|
+
|
|
70
|
+
describe('agents registry', () => {
|
|
71
|
+
it('should have 11 agents', () => {
|
|
72
|
+
assert.strictEqual(getAllAgents().length, 11);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Run with: `node --test tests/`
|
|
78
|
+
|
|
79
|
+
### Node.js Version Consideration
|
|
80
|
+
|
|
81
|
+
Current `package.json` specifies `"node": ">=16.0.0"`. The built-in test runner requires Node 18+. Options:
|
|
82
|
+
1. **Recommended:** Bump minimum to `>=18.0.0` (Node 16 EOL was September 2023 — well past)
|
|
83
|
+
2. **Alternative:** Keep >=16 but note tests require 18+ (add check in test script)
|
|
84
|
+
|
|
85
|
+
### Current Test Script
|
|
86
|
+
|
|
87
|
+
The existing `package.json` test script is a placeholder:
|
|
88
|
+
```json
|
|
89
|
+
"test": "node -e \"const {listSkills,listAgents}=require('./lib/installer'); console.log('Skills:',listSkills().length,'Agents:',listAgents().length)\""
|
|
90
|
+
```
|
|
91
|
+
This should be replaced with the proper test runner command.
|
|
92
|
+
|
|
93
|
+
### Exported Functions from agents.js
|
|
94
|
+
|
|
95
|
+
From [agents.js:256-272](lib/agents.js#L256-L272):
|
|
96
|
+
- `getAgent(agentId)` — returns single agent by id
|
|
97
|
+
- `getAllAgents()` — returns full array (11 agents)
|
|
98
|
+
- `getAgentsByCategory(category)` — filtered by 'ide' or 'bmad'
|
|
99
|
+
|
|
100
|
+
### Agent Registry Schema (from actual code)
|
|
101
|
+
|
|
102
|
+
Every agent object has these fields (verified from [agents.js:17-253](lib/agents.js#L17-L253)):
|
|
103
|
+
- `id` (string) — unique identifier (e.g., 'claude-code', 'copilot')
|
|
104
|
+
- `name` (string) — display name (e.g., 'Claude Code', 'GitHub Copilot')
|
|
105
|
+
- `version` (string) — semver (e.g., '1.0.0')
|
|
106
|
+
- `category` (string) — 'ide' or 'bmad'
|
|
107
|
+
- `description` (string) — brief description
|
|
108
|
+
- `getProjectPath` (function) — returns project-level skills directory path
|
|
109
|
+
- `getGlobalPath` (function) — returns global/user-level skills directory path
|
|
110
|
+
- `fileExtension` (string) — '.md' for all current agents
|
|
111
|
+
- `template` (string) — 'claude-code', 'cline', or 'generic'
|
|
112
|
+
- `instructionFiles` (array of strings) — instruction file paths
|
|
113
|
+
|
|
114
|
+
Optional:
|
|
115
|
+
- `resourceMap` (object) — only on `cline` agent (maps 'references' → 'docs', 'assets' → 'templates')
|
|
116
|
+
|
|
117
|
+
### Critical Guardrails
|
|
118
|
+
|
|
119
|
+
- **No new npm dependencies** — use Node.js built-in `node:test` and `node:assert` only
|
|
120
|
+
- **Tests must not modify the file system** — agents.js is pure data + functions, no side effects
|
|
121
|
+
- **Do not modify `lib/agents.js`** — tests should validate existing behavior, not change it
|
|
122
|
+
|
|
123
|
+
### Project Structure Notes
|
|
124
|
+
|
|
125
|
+
- Files to create: `tests/agents.test.js`
|
|
126
|
+
- Files to modify: `package.json` (update test script, optionally bump engine version)
|
|
127
|
+
- No changes to `lib/` source files
|
|
128
|
+
|
|
129
|
+
### References
|
|
130
|
+
|
|
131
|
+
- [Source: _bmad-output/planning-artifacts/epics.md#Epic-7] — Story 7.1 definition
|
|
132
|
+
- [Source: _bmad-output/planning-artifacts/architecture.md#Structure-Patterns] — Tests directory location
|
|
133
|
+
- [Source: _bmad-output/planning-artifacts/architecture.md#Infrastructure-Deployment] — Test framework recommendation
|
|
134
|
+
- [Source: lib/agents.js] — Agent registry (11 agents, 272 lines, 3 exported functions)
|
|
135
|
+
|
|
136
|
+
## Dev Agent Record
|
|
137
|
+
|
|
138
|
+
### Agent Model Used
|
|
139
|
+
|
|
140
|
+
### Debug Log References
|
|
141
|
+
|
|
142
|
+
### Completion Notes List
|
|
143
|
+
|
|
144
|
+
### File List
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Story 7.2: Add Tests for installer.js Core Operations
|
|
2
|
+
|
|
3
|
+
Status: ready-for-dev
|
|
4
|
+
|
|
5
|
+
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
+
<!-- Dependency: Story 7-1 must be completed first (test framework setup) -->
|
|
7
|
+
|
|
8
|
+
## Story
|
|
9
|
+
|
|
10
|
+
As a **developer**,
|
|
11
|
+
I want tests covering the installer engine's core operations,
|
|
12
|
+
So that skill installation, manifest management, and MANIFEST.yaml generation are protected against regressions.
|
|
13
|
+
|
|
14
|
+
## Acceptance Criteria
|
|
15
|
+
|
|
16
|
+
1. **Given** tests exist for `installer.js`
|
|
17
|
+
**When** the test suite runs
|
|
18
|
+
**Then** it verifies:
|
|
19
|
+
- Skill discovery scans the `skills/` directory and finds all valid skills
|
|
20
|
+
- Template resolution follows priority chain (agent-specific → generic → SKILL.md)
|
|
21
|
+
- Manifest read/write operations are atomic (no partial states)
|
|
22
|
+
- MANIFEST.yaml generation produces valid YAML from installed skills
|
|
23
|
+
- Additive-only installation does not remove existing agent configurations (NFR5)
|
|
24
|
+
|
|
25
|
+
2. **Given** a test skill directory is set up in a temp directory
|
|
26
|
+
**When** install operations are tested
|
|
27
|
+
**Then** files are written to the temp directory, not actual agent config directories
|
|
28
|
+
|
|
29
|
+
## Tasks / Subtasks
|
|
30
|
+
|
|
31
|
+
- [ ] Task 1: Create test fixtures (AC: #2)
|
|
32
|
+
- [ ] 1.1: Create `tests/fixtures/` directory for test skill data
|
|
33
|
+
- [ ] 1.2: Create a minimal test skill: `tests/fixtures/test-skill/skill.json` + `SKILL.md`
|
|
34
|
+
- [ ] 1.3: Create a test skill with templates: `tests/fixtures/test-skill-with-templates/` including `templates/claude-code.md` and `templates/generic.md`
|
|
35
|
+
- [ ] 1.4: Create a test skill with resources: `tests/fixtures/test-skill-with-resources/` including `references/` and `assets/` directories
|
|
36
|
+
- [ ] Task 2: Test skill discovery functions (AC: #1)
|
|
37
|
+
- [ ] 2.1: Create `tests/installer.test.js`
|
|
38
|
+
- [ ] 2.2: Test: `listSkills()` returns an array of skill objects (currently 28 skills)
|
|
39
|
+
- [ ] 2.3: Test: each skill object has required fields from `skill.json` (name, version, description, category)
|
|
40
|
+
- [ ] 2.4: Test: `listAgents()` returns the same as `getAllAgents()` from agents.js
|
|
41
|
+
- [ ] 2.5: Test: `getInstalledSkillInfo()` returns null/undefined for non-installed skills
|
|
42
|
+
- [ ] Task 3: Test manifest operations (AC: #1)
|
|
43
|
+
- [ ] 3.1: Test: `readManifest()` returns empty manifest for non-existent path
|
|
44
|
+
- [ ] 3.2: Test: `writeManifest()` creates valid JSON file
|
|
45
|
+
- [ ] 3.3: Test: `ensureManifest()` creates manifest entry for agent+scope
|
|
46
|
+
- [ ] 3.4: Test: `getManifestAgents()` returns agent IDs from manifest
|
|
47
|
+
- [ ] 3.5: Test: manifest write → read roundtrip preserves data
|
|
48
|
+
- [ ] 3.6: All manifest tests use `os.tmpdir()` temp directory, cleaned up after
|
|
49
|
+
- [ ] Task 4: Test MANIFEST.yaml generation (AC: #1)
|
|
50
|
+
- [ ] 4.1: Test: `generateSkillsManifest()` produces a file ending in `.yaml`
|
|
51
|
+
- [ ] 4.2: Test: generated MANIFEST.yaml content includes skill names and metadata
|
|
52
|
+
- [ ] 4.3: Use temp directory for generation output
|
|
53
|
+
- [ ] Task 5: Test semver comparison (AC: #1)
|
|
54
|
+
- [ ] 5.1: Test: `compareSemver('1.0.0', '1.0.0')` returns 0
|
|
55
|
+
- [ ] 5.2: Test: `compareSemver('1.0.0', '2.0.0')` returns -1
|
|
56
|
+
- [ ] 5.3: Test: `compareSemver('2.0.0', '1.0.0')` returns 1
|
|
57
|
+
- [ ] 5.4: Test: `compareSemver('1.0.1', '1.0.0')` returns 1
|
|
58
|
+
|
|
59
|
+
## Dev Notes
|
|
60
|
+
|
|
61
|
+
### Architecture Compliance
|
|
62
|
+
|
|
63
|
+
- **Test location:** `tests/installer.test.js` in the tests directory [Source: architecture.md#Structure-Patterns]
|
|
64
|
+
- **Temp directory isolation:** All file-writing tests must use `os.tmpdir()` or `fs.mkdtempSync()`. Never write to actual agent config directories or the project's `skills/` directory during tests. [Source: AC #2]
|
|
65
|
+
- **No mocking the database:** Tests should use real file system operations in temp directories, not mocked fs. [Source: architecture.md — integration test philosophy]
|
|
66
|
+
|
|
67
|
+
### installer.js Exported Functions
|
|
68
|
+
|
|
69
|
+
From [installer.js:10-591](lib/installer.js) — 16 functions, key ones for testing:
|
|
70
|
+
|
|
71
|
+
**Pure/stateless (easy to test):**
|
|
72
|
+
- `listSkills()` (line 178) — scans `skills/` directory, returns array of skill metadata
|
|
73
|
+
- `listAgents()` (line 204) — delegates to agents.js `getAllAgents()`
|
|
74
|
+
- `compareSemver(a, b)` (line 166) — pure comparison function
|
|
75
|
+
- `getPackageVersion()` (line 10) — reads package.json version
|
|
76
|
+
|
|
77
|
+
**Manifest operations (need temp dir):**
|
|
78
|
+
- `readManifest(installPath)` (line 17) — reads `.ma-agents.json`
|
|
79
|
+
- `writeManifest(installPath, manifest)` (line 29) — writes `.ma-agents.json`
|
|
80
|
+
- `ensureManifest(installPath, agentId, scope)` (line 34) — creates manifest structure
|
|
81
|
+
- `getManifestAgents(manifest)` (line 59) — extracts agent IDs from manifest
|
|
82
|
+
- `getInstalledSkillInfo(installPath, skillId)` (line 67) — reads installed skill version
|
|
83
|
+
|
|
84
|
+
**File-writing operations (need temp dir + careful isolation):**
|
|
85
|
+
- `generateSkillsManifest(installPath)` (line 75) — generates MANIFEST.yaml
|
|
86
|
+
- `performInstall(skillId, skill, agent, installPath)` (line 210) — copies skill files
|
|
87
|
+
- `installSkill(skillId, agentIds, ...)` (line 278) — full install orchestration
|
|
88
|
+
|
|
89
|
+
**Note:** `performInstall` and `installSkill` involve complex file operations and agent path resolution. Consider testing these in Story 7.2 only at the unit level (manifest + discovery), deferring full integration install tests if they require too much setup.
|
|
90
|
+
|
|
91
|
+
### Test Fixture Skill Schema
|
|
92
|
+
|
|
93
|
+
Minimal `skill.json` for test fixtures:
|
|
94
|
+
```json
|
|
95
|
+
{
|
|
96
|
+
"name": "test-skill",
|
|
97
|
+
"version": "1.0.0",
|
|
98
|
+
"description": "Test skill for automated testing",
|
|
99
|
+
"category": "testing",
|
|
100
|
+
"tags": ["test"],
|
|
101
|
+
"always_load": false
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Critical Guardrails
|
|
106
|
+
|
|
107
|
+
- **Never write to real agent directories** — all file operations in temp dirs only
|
|
108
|
+
- **Clean up temp dirs after each test** — use `t.after()` or `after()` hooks
|
|
109
|
+
- **No new npm dependencies** — use `node:test`, `node:assert`, `node:fs`, `node:os`, `node:path`
|
|
110
|
+
- **Do not modify `lib/installer.js`** — tests validate existing behavior
|
|
111
|
+
|
|
112
|
+
### Project Structure Notes
|
|
113
|
+
|
|
114
|
+
- Files to create: `tests/installer.test.js`, `tests/fixtures/test-skill/` (skill.json + SKILL.md), `tests/fixtures/test-skill-with-templates/`
|
|
115
|
+
- No changes to `lib/` source files
|
|
116
|
+
|
|
117
|
+
### References
|
|
118
|
+
|
|
119
|
+
- [Source: _bmad-output/planning-artifacts/epics.md#Epic-7] — Story 7.2 definition
|
|
120
|
+
- [Source: _bmad-output/planning-artifacts/architecture.md#Structure-Patterns] — Test directory structure
|
|
121
|
+
- [Source: lib/installer.js] — Installer module (591 lines, 16 functions)
|
|
122
|
+
- [Source: _bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md] — Prerequisite story
|
|
123
|
+
|
|
124
|
+
## Dev Agent Record
|
|
125
|
+
|
|
126
|
+
### Agent Model Used
|
|
127
|
+
|
|
128
|
+
### Debug Log References
|
|
129
|
+
|
|
130
|
+
### Completion Notes List
|
|
131
|
+
|
|
132
|
+
### File List
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Story 7.3: Add Tests for bmad.js Pipeline Ordering
|
|
2
|
+
|
|
3
|
+
Status: ready-for-dev
|
|
4
|
+
|
|
5
|
+
<!-- Note: Validation is optional. Run validate-create-story for quality check before dev-story. -->
|
|
6
|
+
<!-- Dependency: Story 7-1 must be completed first (test framework setup) -->
|
|
7
|
+
|
|
8
|
+
## Story
|
|
9
|
+
|
|
10
|
+
As a **developer**,
|
|
11
|
+
I want tests verifying the BMAD pipeline executes stages in strict order,
|
|
12
|
+
So that customization ordering bugs are caught before release.
|
|
13
|
+
|
|
14
|
+
## Acceptance Criteria
|
|
15
|
+
|
|
16
|
+
1. **Given** tests exist for `bmad.js`
|
|
17
|
+
**When** the test suite runs
|
|
18
|
+
**Then** it verifies:
|
|
19
|
+
- The 6-stage BMAD pipeline executes in correct order
|
|
20
|
+
- YAML configs are applied before recompile
|
|
21
|
+
- Workflows, templates, and agents are applied after recompile
|
|
22
|
+
- Pipeline failure at any stage prevents subsequent stages from executing
|
|
23
|
+
|
|
24
|
+
## Tasks / Subtasks
|
|
25
|
+
|
|
26
|
+
- [ ] Task 1: Analyze bmad.js for testable functions (AC: #1)
|
|
27
|
+
- [ ] 1.1: Map the 6-stage BMAD pipeline stages in `applyCustomizations()` (line 59)
|
|
28
|
+
- [ ] 1.2: Identify which functions are exported vs internal
|
|
29
|
+
- [ ] 1.3: Determine testability — `bmad.js` calls `npx bmad-method install` as a subprocess; tests must NOT trigger real BMAD installs
|
|
30
|
+
- [ ] 1.4: Decide approach: test internal logic without triggering `child_process.exec` calls, or mock the exec calls
|
|
31
|
+
- [ ] Task 2: Create bmad.js tests (AC: #1)
|
|
32
|
+
- [ ] 2.1: Create `tests/bmad.test.js`
|
|
33
|
+
- [ ] 2.2: Test: `isBmadInstalled()` returns false for empty directory (use temp dir)
|
|
34
|
+
- [ ] 2.3: Test: `isBmadInstalled()` returns true for directory containing `_bmad/` folder
|
|
35
|
+
- [ ] 2.4: Test: exported functions exist (`installBmad`, `updateBmad`, `applyCustomizations`, `isBmadInstalled`, `registerMilWorkflows`)
|
|
36
|
+
- [ ] 2.5: Test: `applyCustomizations()` processes config files in correct order (YAML configs before workflows/templates/agents)
|
|
37
|
+
- [ ] 2.6: Test: customization file discovery — verify `fs.readdirSync` on `lib/bmad-customizations/` returns expected files
|
|
38
|
+
- [ ] 2.7: Test: `lib/bmad-workflows/` directory exists and contains expected workflow content
|
|
39
|
+
- [ ] 2.8: Test: `lib/mil498-templates/` directory exists and contains template files
|
|
40
|
+
- [ ] Task 3: Test pipeline ordering logic (AC: #1)
|
|
41
|
+
- [ ] 3.1: Verify the `applyCustomizations()` function processes in this order:
|
|
42
|
+
1. YAML config files (`.customize.yaml`)
|
|
43
|
+
2. Recompile trigger
|
|
44
|
+
3. Workflow customizations
|
|
45
|
+
4. Template customizations
|
|
46
|
+
5. Agent customizations
|
|
47
|
+
- [ ] 3.2: Create a spy/tracker to verify execution order without triggering real file copies
|
|
48
|
+
- [ ] 3.3: Test that the function signature matches expected parameters: `(projectRoot, modules, tools, selectedAgentIds)`
|
|
49
|
+
|
|
50
|
+
## Dev Notes
|
|
51
|
+
|
|
52
|
+
### Architecture Compliance
|
|
53
|
+
|
|
54
|
+
- **Test location:** `tests/bmad.test.js` [Source: architecture.md#Structure-Patterns]
|
|
55
|
+
- **Pipeline ordering is critical:** The 6-stage BMAD pipeline (NFR8) has strict ordering requirements. YAML configs MUST be applied before recompile, and workflows/templates/agents MUST be applied after. [Source: architecture.md#Pipeline-Architecture]
|
|
56
|
+
- **No real BMAD installs:** Tests must NOT call `npx bmad-method install` — this would modify the actual project's `_bmad/` directory. [Source: test isolation principle]
|
|
57
|
+
|
|
58
|
+
### bmad.js Module Structure
|
|
59
|
+
|
|
60
|
+
From [bmad.js:1-250](lib/bmad.js) — 250 lines, 5 exported functions:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
isBmadInstalled(projectRoot) — line 9 — checks for _bmad/ directory
|
|
64
|
+
installBmad(modules, tools, projectRoot) — line 13 — runs npx bmad-method install
|
|
65
|
+
updateBmad(modules, tools, projectRoot) — line 36 — runs npx bmad-method update
|
|
66
|
+
applyCustomizations(projectRoot, ...) — line 59 — 6-stage pipeline
|
|
67
|
+
registerMilWorkflows(projectRoot) — line 170 — MIL-498 workflow registration
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Testing Challenge: Subprocess Calls
|
|
71
|
+
|
|
72
|
+
`installBmad()` and `updateBmad()` spawn child processes via `exec('npx bmad-method install ...')`. These functions are **not suitable for unit testing** without mocking `child_process`.
|
|
73
|
+
|
|
74
|
+
**Approach options:**
|
|
75
|
+
1. **Test only pure logic:** Focus on `isBmadInstalled()`, file discovery in `applyCustomizations()`, and function signatures. Skip subprocess-dependent functions.
|
|
76
|
+
2. **Mock child_process:** Intercept `exec` calls to verify command construction without executing. More complex but validates the pipeline.
|
|
77
|
+
3. **Hybrid:** Test what we can without mocking, defer subprocess testing to integration tests.
|
|
78
|
+
|
|
79
|
+
**Recommended:** Option 1 (pure logic) for this story. Focus on `isBmadInstalled()`, customization file discovery, and pipeline stage ordering verification.
|
|
80
|
+
|
|
81
|
+
### Pipeline Stage Ordering in applyCustomizations()
|
|
82
|
+
|
|
83
|
+
The function at line 59 applies customizations in this order:
|
|
84
|
+
1. Config YAML files → `lib/bmad-customizations/` configs
|
|
85
|
+
2. Recompile step → triggers BMAD recompile
|
|
86
|
+
3. Workflows → `lib/bmad-workflows/` content
|
|
87
|
+
4. Templates → `lib/mil498-templates/` content
|
|
88
|
+
5. Agent files → agent customize.yaml files
|
|
89
|
+
|
|
90
|
+
Verify ordering by checking the function's code flow, not by executing it.
|
|
91
|
+
|
|
92
|
+
### Critical Guardrails
|
|
93
|
+
|
|
94
|
+
- **Never trigger real BMAD installs** during tests — no `npx bmad-method` execution
|
|
95
|
+
- **Use temp directories** for `isBmadInstalled()` tests
|
|
96
|
+
- **No new npm dependencies** — use `node:test` and `node:assert` only
|
|
97
|
+
- **Do not modify `lib/bmad.js`** — tests validate existing behavior
|
|
98
|
+
|
|
99
|
+
### Project Structure Notes
|
|
100
|
+
|
|
101
|
+
- Files to create: `tests/bmad.test.js`
|
|
102
|
+
- No changes to `lib/` source files
|
|
103
|
+
|
|
104
|
+
### References
|
|
105
|
+
|
|
106
|
+
- [Source: _bmad-output/planning-artifacts/epics.md#Epic-7] — Story 7.3 definition
|
|
107
|
+
- [Source: _bmad-output/planning-artifacts/architecture.md#Pipeline-Architecture] — BMAD 6-stage pipeline, NFR8
|
|
108
|
+
- [Source: lib/bmad.js] — BMAD module (250 lines, 5 exported functions)
|
|
109
|
+
- [Source: _bmad-output/implementation-artifacts/7-1-test-infrastructure-setup.md] — Prerequisite story
|
|
110
|
+
|
|
111
|
+
## Dev Agent Record
|
|
112
|
+
|
|
113
|
+
### Agent Model Used
|
|
114
|
+
|
|
115
|
+
### Debug Log References
|
|
116
|
+
|
|
117
|
+
### Completion Notes List
|
|
118
|
+
|
|
119
|
+
### File List
|