ma-agents 3.4.7 → 3.4.9
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/.opencode/skills/.ma-agents.json +134 -134
- package/.opencode/skills/add-sprint/SKILL.md +207 -0
- package/.opencode/skills/add-sprint/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/add-to-sprint/SKILL.md +189 -0
- package/.opencode/skills/add-to-sprint/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/bmad-advanced-elicitation/SKILL.md +137 -0
- package/.opencode/skills/bmad-advanced-elicitation/methods.csv +51 -0
- package/.opencode/skills/bmad-agent-analyst/SKILL.md +56 -0
- package/.opencode/skills/bmad-agent-analyst/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-architect/SKILL.md +52 -0
- package/.opencode/skills/bmad-agent-architect/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-dev/SKILL.md +62 -0
- package/.opencode/skills/bmad-agent-dev/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-pm/SKILL.md +57 -0
- package/.opencode/skills/bmad-agent-pm/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-qa/SKILL.md +59 -0
- package/.opencode/skills/bmad-agent-qa/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-quick-flow-solo-dev/SKILL.md +51 -0
- package/.opencode/skills/bmad-agent-quick-flow-solo-dev/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-sm/SKILL.md +53 -0
- package/.opencode/skills/bmad-agent-sm/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-tech-writer/SKILL.md +55 -0
- package/.opencode/skills/bmad-agent-tech-writer/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-agent-tech-writer/explain-concept.md +20 -0
- package/.opencode/skills/bmad-agent-tech-writer/mermaid-gen.md +20 -0
- package/.opencode/skills/bmad-agent-tech-writer/validate-doc.md +19 -0
- package/.opencode/skills/bmad-agent-tech-writer/write-document.md +20 -0
- package/.opencode/skills/bmad-agent-ux-designer/SKILL.md +53 -0
- package/.opencode/skills/bmad-agent-ux-designer/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-brainstorming/SKILL.md +6 -0
- package/.opencode/skills/bmad-brainstorming/brain-methods.csv +62 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-01-session-setup.md +214 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-01b-continue.md +124 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-02a-user-selected.md +229 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +239 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-02c-random-selection.md +211 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +266 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-03-technique-execution.md +401 -0
- package/.opencode/skills/bmad-brainstorming/steps/step-04-idea-organization.md +305 -0
- package/.opencode/skills/bmad-brainstorming/template.md +15 -0
- package/.opencode/skills/bmad-brainstorming/workflow.md +53 -0
- package/.opencode/skills/bmad-check-implementation-readiness/SKILL.md +6 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/.opencode/skills/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
- package/.opencode/skills/bmad-check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/.opencode/skills/bmad-check-implementation-readiness/workflow.md +49 -0
- package/.opencode/skills/bmad-cis-design-thinking/SKILL.md +6 -0
- package/.opencode/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +1 -0
- package/.opencode/skills/bmad-cis-design-thinking/design-methods.csv +31 -0
- package/.opencode/skills/bmad-cis-design-thinking/template.md +111 -0
- package/.opencode/skills/bmad-cis-design-thinking/workflow.md +242 -0
- package/.opencode/skills/bmad-cis-innovation-strategy/SKILL.md +6 -0
- package/.opencode/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +1 -0
- package/.opencode/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +31 -0
- package/.opencode/skills/bmad-cis-innovation-strategy/template.md +189 -0
- package/.opencode/skills/bmad-cis-innovation-strategy/workflow.md +315 -0
- package/.opencode/skills/bmad-cis-problem-solving/SKILL.md +6 -0
- package/.opencode/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +1 -0
- package/.opencode/skills/bmad-cis-problem-solving/solving-methods.csv +31 -0
- package/.opencode/skills/bmad-cis-problem-solving/template.md +165 -0
- package/.opencode/skills/bmad-cis-problem-solving/workflow.md +291 -0
- package/.opencode/skills/bmad-cis-storytelling/SKILL.md +6 -0
- package/.opencode/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +1 -0
- package/.opencode/skills/bmad-cis-storytelling/story-types.csv +26 -0
- package/.opencode/skills/bmad-cis-storytelling/template.md +113 -0
- package/.opencode/skills/bmad-cis-storytelling/workflow.md +321 -0
- package/.opencode/skills/bmad-code-review/SKILL.md +6 -0
- package/.opencode/skills/bmad-code-review/steps/step-01-gather-context.md +62 -0
- package/.opencode/skills/bmad-code-review/steps/step-02-review.md +34 -0
- package/.opencode/skills/bmad-code-review/steps/step-03-triage.md +49 -0
- package/.opencode/skills/bmad-code-review/steps/step-04-present.md +129 -0
- package/.opencode/skills/bmad-code-review/workflow.md +55 -0
- package/.opencode/skills/bmad-correct-course/SKILL.md +6 -0
- package/.opencode/skills/bmad-correct-course/checklist.md +288 -0
- package/.opencode/skills/bmad-correct-course/workflow.md +267 -0
- package/.opencode/skills/bmad-create-architecture/SKILL.md +6 -0
- package/.opencode/skills/bmad-create-architecture/architecture-decision-template.md +12 -0
- package/.opencode/skills/bmad-create-architecture/data/domain-complexity.csv +13 -0
- package/.opencode/skills/bmad-create-architecture/data/project-types.csv +7 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-01-init.md +153 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-01b-continue.md +173 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-02-context.md +224 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-03-starter.md +329 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-04-decisions.md +318 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-05-patterns.md +359 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-06-structure.md +379 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-07-validation.md +359 -0
- package/.opencode/skills/bmad-create-architecture/steps/step-08-complete.md +76 -0
- package/.opencode/skills/bmad-create-architecture/workflow.md +38 -0
- package/.opencode/skills/bmad-create-epics-and-stories/SKILL.md +6 -0
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/.opencode/skills/bmad-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
- package/.opencode/skills/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
- package/.opencode/skills/bmad-create-epics-and-stories/workflow.md +53 -0
- package/.opencode/skills/bmad-create-prd/SKILL.md +6 -0
- package/.opencode/skills/bmad-create-prd/data/domain-complexity.csv +15 -0
- package/.opencode/skills/bmad-create-prd/data/prd-purpose.md +197 -0
- package/.opencode/skills/bmad-create-prd/data/project-types.csv +11 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-01-init.md +178 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-01b-continue.md +161 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-02-discovery.md +208 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-02b-vision.md +142 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-02c-executive-summary.md +158 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-03-success.md +214 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-04-journeys.md +201 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-05-domain.md +194 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-06-innovation.md +211 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-07-project-type.md +222 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-08-scoping.md +216 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-09-functional.md +219 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-10-nonfunctional.md +230 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-11-polish.md +221 -0
- package/.opencode/skills/bmad-create-prd/steps-c/step-12-complete.md +115 -0
- package/.opencode/skills/bmad-create-prd/templates/prd-template.md +10 -0
- package/.opencode/skills/bmad-create-prd/workflow.md +62 -0
- package/.opencode/skills/bmad-create-story/SKILL.md +6 -0
- package/.opencode/skills/bmad-create-story/checklist.md +357 -0
- package/.opencode/skills/bmad-create-story/discover-inputs.md +88 -0
- package/.opencode/skills/bmad-create-story/template.md +49 -0
- package/.opencode/skills/bmad-create-story/workflow.md +380 -0
- package/.opencode/skills/bmad-create-ux-design/SKILL.md +6 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-01-init.md +135 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-01b-continue.md +127 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-02-discovery.md +190 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-03-core-experience.md +217 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-04-emotional-response.md +220 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-05-inspiration.md +235 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-06-design-system.md +253 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-07-defining-experience.md +255 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-08-visual-foundation.md +225 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-09-design-directions.md +225 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-10-user-journeys.md +242 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-11-component-strategy.md +249 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-12-ux-patterns.md +238 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
- package/.opencode/skills/bmad-create-ux-design/steps/step-14-complete.md +171 -0
- package/.opencode/skills/bmad-create-ux-design/ux-design-template.md +13 -0
- package/.opencode/skills/bmad-create-ux-design/workflow.md +36 -0
- package/.opencode/skills/bmad-dev-story/SKILL.md +6 -0
- package/.opencode/skills/bmad-dev-story/checklist.md +80 -0
- package/.opencode/skills/bmad-dev-story/workflow.md +450 -0
- package/.opencode/skills/bmad-distillator/SKILL.md +178 -0
- package/.opencode/skills/bmad-distillator/agents/distillate-compressor.md +116 -0
- package/.opencode/skills/bmad-distillator/agents/round-trip-reconstructor.md +68 -0
- package/.opencode/skills/bmad-distillator/resources/compression-rules.md +51 -0
- package/.opencode/skills/bmad-distillator/resources/distillate-format-reference.md +227 -0
- package/.opencode/skills/bmad-distillator/resources/splitting-strategy.md +78 -0
- package/.opencode/skills/bmad-distillator/scripts/analyze_sources.py +300 -0
- package/.opencode/skills/bmad-distillator/scripts/tests/test_analyze_sources.py +204 -0
- package/.opencode/skills/bmad-document-project/SKILL.md +6 -0
- package/.opencode/skills/bmad-document-project/checklist.md +245 -0
- package/.opencode/skills/bmad-document-project/documentation-requirements.csv +12 -0
- package/.opencode/skills/bmad-document-project/instructions.md +128 -0
- package/.opencode/skills/bmad-document-project/templates/deep-dive-template.md +345 -0
- package/.opencode/skills/bmad-document-project/templates/index-template.md +169 -0
- package/.opencode/skills/bmad-document-project/templates/project-overview-template.md +103 -0
- package/.opencode/skills/bmad-document-project/templates/project-scan-report-schema.json +160 -0
- package/.opencode/skills/bmad-document-project/templates/source-tree-template.md +135 -0
- package/.opencode/skills/bmad-document-project/workflow.md +27 -0
- package/.opencode/skills/bmad-document-project/workflows/deep-dive-instructions.md +299 -0
- package/.opencode/skills/bmad-document-project/workflows/deep-dive-workflow.md +34 -0
- package/.opencode/skills/bmad-document-project/workflows/full-scan-instructions.md +1107 -0
- package/.opencode/skills/bmad-document-project/workflows/full-scan-workflow.md +34 -0
- package/.opencode/skills/bmad-domain-research/SKILL.md +6 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-01-init.md +137 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-05-technical-trends.md +234 -0
- package/.opencode/skills/bmad-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
- package/.opencode/skills/bmad-domain-research/research.template.md +29 -0
- package/.opencode/skills/bmad-domain-research/workflow.md +49 -0
- package/.opencode/skills/bmad-edit-prd/SKILL.md +6 -0
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01-discovery.md +242 -0
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-02-review.md +245 -0
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-03-edit.md +250 -0
- package/.opencode/skills/bmad-edit-prd/steps-e/step-e-04-complete.md +165 -0
- package/.opencode/skills/bmad-edit-prd/workflow.md +63 -0
- package/.opencode/skills/bmad-editorial-review-prose/SKILL.md +86 -0
- package/.opencode/skills/bmad-editorial-review-structure/SKILL.md +179 -0
- package/.opencode/skills/bmad-generate-project-context/SKILL.md +6 -0
- package/.opencode/skills/bmad-generate-project-context/project-context-template.md +21 -0
- package/.opencode/skills/bmad-generate-project-context/steps/step-01-discover.md +186 -0
- package/.opencode/skills/bmad-generate-project-context/steps/step-02-generate.md +321 -0
- package/.opencode/skills/bmad-generate-project-context/steps/step-03-complete.md +278 -0
- package/.opencode/skills/bmad-generate-project-context/workflow.md +43 -0
- package/.opencode/skills/bmad-help/SKILL.md +73 -0
- package/.opencode/skills/bmad-index-docs/SKILL.md +66 -0
- package/.opencode/skills/bmad-init/SKILL.md +100 -0
- package/.opencode/skills/bmad-init/resources/core-module.yaml +25 -0
- package/.opencode/skills/bmad-init/scripts/bmad_init.py +593 -0
- package/.opencode/skills/bmad-init/scripts/tests/test_bmad_init.py +329 -0
- package/.opencode/skills/bmad-ma-agent-cyber/SKILL.md +49 -0
- package/.opencode/skills/bmad-ma-agent-cyber/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-ma-agent-devops/SKILL.md +49 -0
- package/.opencode/skills/bmad-ma-agent-devops/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-ma-agent-mil498/.gitkeep +0 -0
- package/.opencode/skills/bmad-ma-agent-mil498/SKILL.md +53 -0
- package/.opencode/skills/bmad-ma-agent-mil498/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-ma-agent-ml/.gitkeep +0 -0
- package/.opencode/skills/bmad-ma-agent-ml/SKILL.md +59 -0
- package/.opencode/skills/bmad-ma-agent-ml/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-ma-agent-sre/.gitkeep +0 -0
- package/.opencode/skills/bmad-ma-agent-sre/SKILL.md +49 -0
- package/.opencode/skills/bmad-ma-agent-sre/bmad-skill-manifest.yaml +11 -0
- package/.opencode/skills/bmad-market-research/SKILL.md +6 -0
- package/.opencode/skills/bmad-market-research/research.template.md +29 -0
- package/.opencode/skills/bmad-market-research/steps/step-01-init.md +184 -0
- package/.opencode/skills/bmad-market-research/steps/step-02-customer-behavior.md +239 -0
- package/.opencode/skills/bmad-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/.opencode/skills/bmad-market-research/steps/step-04-customer-decisions.md +261 -0
- package/.opencode/skills/bmad-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/.opencode/skills/bmad-market-research/steps/step-06-research-completion.md +478 -0
- package/.opencode/skills/bmad-market-research/workflow.md +49 -0
- package/.opencode/skills/bmad-party-mode/SKILL.md +6 -0
- package/.opencode/skills/bmad-party-mode/steps/step-01-agent-loading.md +138 -0
- package/.opencode/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/.opencode/skills/bmad-party-mode/steps/step-03-graceful-exit.md +167 -0
- package/.opencode/skills/bmad-party-mode/workflow.md +190 -0
- package/.opencode/skills/bmad-product-brief/SKILL.md +87 -0
- package/.opencode/skills/bmad-product-brief/agents/artifact-analyzer.md +60 -0
- package/.opencode/skills/bmad-product-brief/agents/opportunity-reviewer.md +44 -0
- package/.opencode/skills/bmad-product-brief/agents/skeptic-reviewer.md +44 -0
- package/.opencode/skills/bmad-product-brief/agents/web-researcher.md +49 -0
- package/.opencode/skills/bmad-product-brief/bmad-manifest.json +17 -0
- package/.opencode/skills/bmad-product-brief/prompts/contextual-discovery.md +57 -0
- package/.opencode/skills/bmad-product-brief/prompts/draft-and-review.md +86 -0
- package/.opencode/skills/bmad-product-brief/prompts/finalize.md +75 -0
- package/.opencode/skills/bmad-product-brief/prompts/guided-elicitation.md +70 -0
- package/.opencode/skills/bmad-product-brief/resources/brief-template.md +60 -0
- package/.opencode/skills/bmad-qa-generate-e2e-tests/SKILL.md +6 -0
- package/.opencode/skills/bmad-qa-generate-e2e-tests/checklist.md +33 -0
- package/.opencode/skills/bmad-qa-generate-e2e-tests/workflow.md +136 -0
- package/.opencode/skills/bmad-quick-dev/SKILL.md +6 -0
- package/.opencode/skills/bmad-quick-dev/spec-template.md +88 -0
- package/.opencode/skills/bmad-quick-dev/step-01-clarify-and-route.md +64 -0
- package/.opencode/skills/bmad-quick-dev/step-02-plan.md +35 -0
- package/.opencode/skills/bmad-quick-dev/step-03-implement.md +37 -0
- package/.opencode/skills/bmad-quick-dev/step-04-review.md +49 -0
- package/.opencode/skills/bmad-quick-dev/step-05-present.md +63 -0
- package/.opencode/skills/bmad-quick-dev/step-oneshot.md +49 -0
- package/.opencode/skills/bmad-quick-dev/workflow.md +79 -0
- package/.opencode/skills/bmad-retrospective/SKILL.md +6 -0
- package/.opencode/skills/bmad-retrospective/workflow.md +1479 -0
- package/.opencode/skills/bmad-review-adversarial-general/SKILL.md +37 -0
- package/.opencode/skills/bmad-review-edge-case-hunter/SKILL.md +67 -0
- package/.opencode/skills/bmad-shard-doc/SKILL.md +105 -0
- package/.opencode/skills/bmad-sprint-planning/SKILL.md +6 -0
- package/.opencode/skills/bmad-sprint-planning/checklist.md +33 -0
- package/.opencode/skills/bmad-sprint-planning/sprint-status-template.yaml +56 -0
- package/.opencode/skills/bmad-sprint-planning/workflow.md +263 -0
- package/.opencode/skills/bmad-sprint-status/SKILL.md +6 -0
- package/.opencode/skills/bmad-sprint-status/workflow.md +261 -0
- package/.opencode/skills/bmad-technical-research/SKILL.md +6 -0
- package/.opencode/skills/bmad-technical-research/research.template.md +29 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-01-init.md +137 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-02-technical-overview.md +239 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/.opencode/skills/bmad-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
- package/.opencode/skills/bmad-technical-research/workflow.md +50 -0
- package/.opencode/skills/bmad-validate-prd/SKILL.md +6 -0
- package/.opencode/skills/bmad-validate-prd/data/domain-complexity.csv +15 -0
- package/.opencode/skills/bmad-validate-prd/data/prd-purpose.md +197 -0
- package/.opencode/skills/bmad-validate-prd/data/project-types.csv +11 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-01-discovery.md +221 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
- package/.opencode/skills/bmad-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
- package/.opencode/skills/bmad-validate-prd/workflow.md +62 -0
- package/.opencode/skills/cleanup-done/.gitkeep +0 -0
- package/.opencode/skills/create-bug-story/.gitkeep +0 -0
- package/.opencode/skills/create-bug-story/SKILL.md +263 -0
- package/.opencode/skills/create-bug-story/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-generate-certs/.gitkeep +0 -0
- package/.opencode/skills/cyber-generate-certs/SKILL.md +27 -0
- package/.opencode/skills/cyber-generate-certs/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-immunity-estimation/.gitkeep +0 -0
- package/.opencode/skills/cyber-immunity-estimation/SKILL.md +29 -0
- package/.opencode/skills/cyber-immunity-estimation/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-security-audit/.gitkeep +0 -0
- package/.opencode/skills/cyber-security-audit/SKILL.md +27 -0
- package/.opencode/skills/cyber-security-audit/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-vault-secrets/.gitkeep +0 -0
- package/.opencode/skills/cyber-vault-secrets/SKILL.md +28 -0
- package/.opencode/skills/cyber-vault-secrets/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-verify-docker-users/.gitkeep +0 -0
- package/.opencode/skills/cyber-verify-docker-users/SKILL.md +23 -0
- package/.opencode/skills/cyber-verify-docker-users/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-verify-image-signature/.gitkeep +0 -0
- package/.opencode/skills/cyber-verify-image-signature/SKILL.md +22 -0
- package/.opencode/skills/cyber-verify-image-signature/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/cyber-vulnerability-scan/.gitkeep +0 -0
- package/.opencode/skills/cyber-vulnerability-scan/SKILL.md +28 -0
- package/.opencode/skills/cyber-vulnerability-scan/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/devops-configure-infrastructure/.gitkeep +0 -0
- package/.opencode/skills/devops-configure-infrastructure/SKILL.md +27 -0
- package/.opencode/skills/devops-configure-infrastructure/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/devops-disconnected-deployment/.gitkeep +0 -0
- package/.opencode/skills/devops-disconnected-deployment/SKILL.md +27 -0
- package/.opencode/skills/devops-disconnected-deployment/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/devops-docker-compose-setup/.gitkeep +0 -0
- package/.opencode/skills/devops-docker-compose-setup/SKILL.md +26 -0
- package/.opencode/skills/devops-docker-compose-setup/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/devops-manage-helm/.gitkeep +0 -0
- package/.opencode/skills/devops-manage-helm/SKILL.md +28 -0
- package/.opencode/skills/devops-manage-helm/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/devops-sign-docker-image/.gitkeep +0 -0
- package/.opencode/skills/devops-sign-docker-image/SKILL.md +24 -0
- package/.opencode/skills/devops-sign-docker-image/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/generate-backlog/.gitkeep +0 -0
- package/.opencode/skills/mil498-ocd/.gitkeep +0 -0
- package/.opencode/skills/mil498-ocd/SKILL.md +30 -0
- package/.opencode/skills/mil498-ocd/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-ocd/prompts/01-discover-project-artifacts.md +26 -0
- package/.opencode/skills/mil498-ocd/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-ocd/prompts/03-generate-document.md +90 -0
- package/.opencode/skills/mil498-ocd/prompts/04-validate.md +14 -0
- package/.opencode/skills/mil498-ocd/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-ocd/prompts/06-save.md +15 -0
- package/.opencode/skills/mil498-ocd/template.md +169 -0
- package/.opencode/skills/mil498-sdd/.gitkeep +0 -0
- package/.opencode/skills/mil498-sdd/SKILL.md +30 -0
- package/.opencode/skills/mil498-sdd/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-sdd/prompts/01-discover-project-artifacts.md +50 -0
- package/.opencode/skills/mil498-sdd/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-sdd/prompts/03-generate-document.md +98 -0
- package/.opencode/skills/mil498-sdd/prompts/04-validate.md +16 -0
- package/.opencode/skills/mil498-sdd/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-sdd/prompts/06-save.md +19 -0
- package/.opencode/skills/mil498-sdd/template.md +163 -0
- package/.opencode/skills/mil498-sdp/.gitkeep +0 -0
- package/.opencode/skills/mil498-sdp/SKILL.md +30 -0
- package/.opencode/skills/mil498-sdp/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-sdp/prompts/01-discover-project-artifacts.md +32 -0
- package/.opencode/skills/mil498-sdp/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-sdp/prompts/03-generate-document.md +187 -0
- package/.opencode/skills/mil498-sdp/prompts/04-validate.md +13 -0
- package/.opencode/skills/mil498-sdp/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-sdp/prompts/06-save.md +14 -0
- package/.opencode/skills/mil498-sdp/template.md +307 -0
- package/.opencode/skills/mil498-srs/.gitkeep +0 -0
- package/.opencode/skills/mil498-srs/SKILL.md +30 -0
- package/.opencode/skills/mil498-srs/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-srs/prompts/01-discover-project-artifacts.md +42 -0
- package/.opencode/skills/mil498-srs/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-srs/prompts/03-generate-document.md +100 -0
- package/.opencode/skills/mil498-srs/prompts/04-validate.md +16 -0
- package/.opencode/skills/mil498-srs/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-srs/prompts/06-save.md +18 -0
- package/.opencode/skills/mil498-srs/template.md +219 -0
- package/.opencode/skills/mil498-ssdd/.gitkeep +0 -0
- package/.opencode/skills/mil498-ssdd/SKILL.md +32 -0
- package/.opencode/skills/mil498-ssdd/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-ssdd/prompts/01-discover-project-artifacts.md +32 -0
- package/.opencode/skills/mil498-ssdd/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-ssdd/prompts/03-csci-discovery-interview.md +43 -0
- package/.opencode/skills/mil498-ssdd/prompts/04-generate-document.md +96 -0
- package/.opencode/skills/mil498-ssdd/prompts/05-validate.md +14 -0
- package/.opencode/skills/mil498-ssdd/prompts/06-review.md +16 -0
- package/.opencode/skills/mil498-ssdd/prompts/07-save.md +16 -0
- package/.opencode/skills/mil498-ssdd/template.md +154 -0
- package/.opencode/skills/mil498-sss/.gitkeep +0 -0
- package/.opencode/skills/mil498-sss/SKILL.md +31 -0
- package/.opencode/skills/mil498-sss/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-sss/prompts/01-discover-project-artifacts.md +31 -0
- package/.opencode/skills/mil498-sss/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-sss/prompts/03-generate-document.md +108 -0
- package/.opencode/skills/mil498-sss/prompts/04-validate.md +16 -0
- package/.opencode/skills/mil498-sss/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-sss/prompts/06-save.md +15 -0
- package/.opencode/skills/mil498-sss/template.md +225 -0
- package/.opencode/skills/mil498-std/.gitkeep +0 -0
- package/.opencode/skills/mil498-std/SKILL.md +30 -0
- package/.opencode/skills/mil498-std/bmad-skill-manifest.yaml +5 -0
- package/.opencode/skills/mil498-std/prompts/01-discover-project-artifacts.md +42 -0
- package/.opencode/skills/mil498-std/prompts/02-load-template.md +10 -0
- package/.opencode/skills/mil498-std/prompts/03-generate-document.md +117 -0
- package/.opencode/skills/mil498-std/prompts/04-validate.md +15 -0
- package/.opencode/skills/mil498-std/prompts/05-review.md +15 -0
- package/.opencode/skills/mil498-std/prompts/06-save.md +15 -0
- package/.opencode/skills/mil498-std/template.md +188 -0
- package/.opencode/skills/ml-advise/.gitkeep +0 -0
- package/.opencode/skills/ml-advise/SKILL.md +76 -0
- package/.opencode/skills/ml-advise/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-advise/skill.json +7 -0
- package/.opencode/skills/ml-analysis/.gitkeep +0 -0
- package/.opencode/skills/ml-analysis/SKILL.md +60 -0
- package/.opencode/skills/ml-analysis/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-analysis/skill.json +7 -0
- package/.opencode/skills/ml-architecture/.gitkeep +0 -0
- package/.opencode/skills/ml-architecture/SKILL.md +55 -0
- package/.opencode/skills/ml-architecture/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-architecture/skill.json +7 -0
- package/.opencode/skills/ml-detailed-design/.gitkeep +0 -0
- package/.opencode/skills/ml-detailed-design/SKILL.md +67 -0
- package/.opencode/skills/ml-detailed-design/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-detailed-design/skill.json +7 -0
- package/.opencode/skills/ml-eda/.gitkeep +0 -0
- package/.opencode/skills/ml-eda/SKILL.md +56 -0
- package/.opencode/skills/ml-eda/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-eda/scripts/baseline_classifier.py +522 -0
- package/.opencode/skills/ml-eda/scripts/class_weights_calculator.py +295 -0
- package/.opencode/skills/ml-eda/scripts/clustering_explorer.py +383 -0
- package/.opencode/skills/ml-eda/scripts/eda_analyzer.py +654 -0
- package/.opencode/skills/ml-eda/skill.json +7 -0
- package/.opencode/skills/ml-experiment/.gitkeep +0 -0
- package/.opencode/skills/ml-experiment/SKILL.md +74 -0
- package/.opencode/skills/ml-experiment/assets/advanced_trainer_configs.py +430 -0
- package/.opencode/skills/ml-experiment/assets/quick_trainer_setup.py +233 -0
- package/.opencode/skills/ml-experiment/assets/template_datamodule.py +219 -0
- package/.opencode/skills/ml-experiment/assets/template_gnn_module.py +341 -0
- package/.opencode/skills/ml-experiment/assets/template_lightning_module.py +158 -0
- package/.opencode/skills/ml-experiment/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-experiment/skill.json +7 -0
- package/.opencode/skills/ml-hparam/.gitkeep +0 -0
- package/.opencode/skills/ml-hparam/SKILL.md +81 -0
- package/.opencode/skills/ml-hparam/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-hparam/skill.json +7 -0
- package/.opencode/skills/ml-ideation/.gitkeep +0 -0
- package/.opencode/skills/ml-ideation/SKILL.md +50 -0
- package/.opencode/skills/ml-ideation/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-ideation/scripts/validate_ml_prd.py +287 -0
- package/.opencode/skills/ml-ideation/skill.json +7 -0
- package/.opencode/skills/ml-infra/.gitkeep +0 -0
- package/.opencode/skills/ml-infra/SKILL.md +58 -0
- package/.opencode/skills/ml-infra/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-infra/skill.json +7 -0
- package/.opencode/skills/ml-retrospective/.gitkeep +0 -0
- package/.opencode/skills/ml-retrospective/SKILL.md +63 -0
- package/.opencode/skills/ml-retrospective/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-retrospective/skill.json +7 -0
- package/.opencode/skills/ml-revision/.gitkeep +0 -0
- package/.opencode/skills/ml-revision/SKILL.md +82 -0
- package/.opencode/skills/ml-revision/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-revision/skill.json +7 -0
- package/.opencode/skills/ml-techspec/.gitkeep +0 -0
- package/.opencode/skills/ml-techspec/SKILL.md +80 -0
- package/.opencode/skills/ml-techspec/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/ml-techspec/skill.json +7 -0
- package/.opencode/skills/modify-sprint/.gitkeep +0 -0
- package/.opencode/skills/modify-sprint/SKILL.md +322 -0
- package/.opencode/skills/modify-sprint/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/prioritize-backlog/.gitkeep +0 -0
- package/.opencode/skills/project-context-expansion/.gitkeep +0 -0
- package/.opencode/skills/project-context-expansion/SKILL.md +238 -0
- package/.opencode/skills/project-context-expansion/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/remove-from-sprint/.gitkeep +0 -0
- package/.opencode/skills/sprint-status-view/.gitkeep +0 -0
- package/.opencode/skills/sprint-status-view/SKILL.md +263 -0
- package/.opencode/skills/sprint-status-view/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-check-deployment-status/.gitkeep +0 -0
- package/.opencode/skills/sre-check-deployment-status/SKILL.md +32 -0
- package/.opencode/skills/sre-check-deployment-status/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-check-secrets/.gitkeep +0 -0
- package/.opencode/skills/sre-check-secrets/SKILL.md +23 -0
- package/.opencode/skills/sre-check-secrets/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-check-system-status/.gitkeep +0 -0
- package/.opencode/skills/sre-check-system-status/SKILL.md +27 -0
- package/.opencode/skills/sre-check-system-status/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-day-2-ops/.gitkeep +0 -0
- package/.opencode/skills/sre-day-2-ops/SKILL.md +26 -0
- package/.opencode/skills/sre-day-2-ops/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-deployment-strategies/.gitkeep +0 -0
- package/.opencode/skills/sre-deployment-strategies/SKILL.md +28 -0
- package/.opencode/skills/sre-deployment-strategies/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-fix-deployments/.gitkeep +0 -0
- package/.opencode/skills/sre-fix-deployments/SKILL.md +25 -0
- package/.opencode/skills/sre-fix-deployments/bmad-skill-manifest.yaml +3 -0
- package/.opencode/skills/sre-gitops-status/.gitkeep +0 -0
- package/.opencode/skills/sre-gitops-status/SKILL.md +25 -0
- package/.opencode/skills/sre-gitops-status/bmad-skill-manifest.yaml +3 -0
- package/.roo/skills/.ma-agents.json +134 -134
- package/bin/cli.js +25 -10
- package/lib/agents.js +21 -51
- package/lib/bmad-extension/module-help.csv +4 -21
- package/lib/bmad-extension/skills/add-sprint/SKILL.md +40 -126
- package/lib/bmad-extension/skills/add-to-sprint/SKILL.md +142 -116
- package/lib/bmad-extension/skills/create-bug-story/SKILL.md +7 -75
- package/lib/bmad-extension/skills/modify-sprint/SKILL.md +0 -63
- package/lib/bmad-extension/skills/sprint-status-view/SKILL.md +138 -199
- package/lib/bmad-extension/workflows/add-sprint/workflow.md +39 -129
- package/lib/bmad-extension/workflows/add-to-sprint/workflow.md +205 -3
- package/lib/bmad-extension/workflows/modify-sprint/workflow.md +0 -5
- package/lib/bmad-extension/workflows/sprint-status-view/workflow.md +192 -3
- package/lib/installer.js +13 -5
- package/package.json +1 -1
- /package/{lib/bmad-extension/skills/cleanup-done → .opencode/skills/add-sprint}/.gitkeep +0 -0
- /package/{lib/bmad-extension/skills/generate-backlog → .opencode/skills/add-to-sprint}/.gitkeep +0 -0
- /package/{lib/bmad-extension/skills/prioritize-backlog → .opencode/skills/bmad-ma-agent-cyber}/.gitkeep +0 -0
- /package/{lib/bmad-extension/skills/remove-from-sprint → .opencode/skills/bmad-ma-agent-devops}/.gitkeep +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/cleanup-done/SKILL.md +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/cleanup-done/bmad-skill-manifest.yaml +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/generate-backlog/SKILL.md +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/generate-backlog/bmad-skill-manifest.yaml +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/prioritize-backlog/SKILL.md +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/prioritize-backlog/bmad-skill-manifest.yaml +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/remove-from-sprint/SKILL.md +0 -0
- /package/{lib/bmad-extension → .opencode}/skills/remove-from-sprint/bmad-skill-manifest.yaml +0 -0
|
@@ -1,38 +1,16 @@
|
|
|
1
|
-
<!-- IMPORTANT: This file must be kept in sync with lib/bmad-extension/skills/add-sprint/SKILL.md
|
|
2
|
-
SKILL.md is the authoritative source (resolved via skill:add-sprint in module-help.csv).
|
|
3
|
-
This workflow.md is a legacy copy. Any changes should be made to SKILL.md first, then synced here. -->
|
|
4
|
-
|
|
5
1
|
# Add Sprint Workflow
|
|
6
2
|
|
|
7
|
-
Guided workflow to create a new sprint
|
|
3
|
+
Guided workflow to create a new sprint with capacity limits for realistic sprint planning.
|
|
8
4
|
|
|
9
5
|
<workflow>
|
|
10
6
|
|
|
11
|
-
<step n="1" goal="Gather
|
|
12
|
-
<action>Ask the user for the sprint number</action>
|
|
13
|
-
<ask>What is the sprint number? (
|
|
14
|
-
<action>Store
|
|
15
|
-
<
|
|
16
|
-
<action>
|
|
17
|
-
<
|
|
18
|
-
<output>❌ Invalid sprint number: "{{sprint_number_input}}". Must be a positive integer (1-9999), no leading zeros.</output>
|
|
19
|
-
<goto step="1" />
|
|
20
|
-
</check>
|
|
21
|
-
<action>Store as {{sprint_number}} (integer)</action>
|
|
22
|
-
<action>Construct {{sprint_id}} = "sprint-{{sprint_number}}"</action>
|
|
23
|
-
|
|
24
|
-
<!-- Smart default name: detect naming patterns from existing sprints -->
|
|
25
|
-
<action>Glob `_bmad-output/implementation-artifacts/sprints/sprint-*.yaml` to discover existing sprint files</action>
|
|
26
|
-
<action>If existing sprints found, read the `name` field from the most recent one (highest sprint number)</action>
|
|
27
|
-
<action>Infer a smart default name:
|
|
28
|
-
- If previous name follows a sequential pattern with a numeric suffix (e.g., "app04"), suggest the next increment (e.g., "app05")
|
|
29
|
-
- If previous name follows a date pattern (e.g., "2026-W14"), suggest the next date interval
|
|
30
|
-
- If previous name is "Sprint {n}", suggest "Sprint {{sprint_number}}"
|
|
31
|
-
- If no pattern detected or no existing sprints, default to "Sprint {{sprint_number}}"
|
|
32
|
-
</action>
|
|
33
|
-
<ask>Sprint name? (press Enter for "{{default_name}}", or type a custom name):</ask>
|
|
34
|
-
<action>If user presses Enter or leaves blank, set {{sprint_name}} = "{{default_name}}"</action>
|
|
35
|
-
<action>If user provides input, store as {{sprint_name}}</action>
|
|
7
|
+
<step n="1" goal="Gather sprint number and name">
|
|
8
|
+
<action>Ask the user for the sprint number (e.g., 1, 2, 3)</action>
|
|
9
|
+
<ask>What is the sprint number? (e.g., 1)</ask>
|
|
10
|
+
<action>Store as {{sprint_number}}</action>
|
|
11
|
+
<ask>What is the sprint name? (e.g., "Sprint 1 — Foundation") — press Enter to use "Sprint {{sprint_number}}"</ask>
|
|
12
|
+
<action>If user presses Enter or leaves blank, default to "Sprint {{sprint_number}}"</action>
|
|
13
|
+
<action>Store as {{sprint_name}}</action>
|
|
36
14
|
</step>
|
|
37
15
|
|
|
38
16
|
<step n="2" goal="Gather capacity as positive integer">
|
|
@@ -47,71 +25,32 @@ Guided workflow to create a new sprint entity with capacity limits, optional ISO
|
|
|
47
25
|
<action>Store as {{capacity}} (integer)</action>
|
|
48
26
|
</step>
|
|
49
27
|
|
|
50
|
-
<step n="
|
|
51
|
-
<action>Explain: start
|
|
52
|
-
<ask>Optional — Sprint start date
|
|
53
|
-
<action>Store
|
|
54
|
-
<
|
|
55
|
-
|
|
56
|
-
<action>Verify {{start_input}} resolves to a real calendar date (reject impossible dates like 2026-02-30, 2026-13-45, etc.)</action>
|
|
57
|
-
<check if="{{start_input}} fails date validation">
|
|
58
|
-
<output>❌ Invalid date: "{{start_input}}". Must be a valid date in YYYY-MM-DD format (e.g., 2026-04-01).</output>
|
|
59
|
-
<goto step="3a" />
|
|
60
|
-
</check>
|
|
61
|
-
</check>
|
|
62
|
-
<action>Store as {{start_date}} (valid ISO date string, or empty string "" if skipped)</action>
|
|
63
|
-
</step>
|
|
64
|
-
|
|
65
|
-
<step n="3b" goal="Gather optional end date (ISO format)">
|
|
66
|
-
<ask>Optional — Sprint end date (YYYY-MM-DD, press Enter to skip):</ask>
|
|
67
|
-
<action>Store input as {{end_input}}</action>
|
|
68
|
-
<check if="{{end_input}} is not empty">
|
|
69
|
-
<action>Validate {{end_input}} matches regex `^\d{4}-\d{2}-\d{2}$`</action>
|
|
70
|
-
<action>Verify {{end_input}} resolves to a real calendar date</action>
|
|
71
|
-
<check if="{{end_input}} fails date validation">
|
|
72
|
-
<output>❌ Invalid date: "{{end_input}}". Must be a valid date in YYYY-MM-DD format (e.g., 2026-04-14).</output>
|
|
73
|
-
<goto step="3b" />
|
|
74
|
-
</check>
|
|
75
|
-
</check>
|
|
76
|
-
<action>Store as {{end_date}} (valid ISO date string, or empty string "" if skipped)</action>
|
|
77
|
-
|
|
78
|
-
<check if="both {{start_date}} and {{end_date}} are non-empty AND {{start_date}} > {{end_date}}">
|
|
79
|
-
<output>❌ Invalid date range: start date ({{start_date}}) is after end date ({{end_date}}). Start must be on or before end.</output>
|
|
80
|
-
<goto step="3a" />
|
|
81
|
-
</check>
|
|
28
|
+
<step n="3" goal="Gather optional start and end context">
|
|
29
|
+
<action>Explain: start/end context can be dates (e.g., "2026-03-18") or milestone descriptions (e.g., "Q1 Planning Complete")</action>
|
|
30
|
+
<ask>Optional — Sprint start context (date or milestone, press Enter to skip):</ask>
|
|
31
|
+
<action>Store as {{start_context}} (empty string if skipped)</action>
|
|
32
|
+
<ask>Optional — Sprint end context (date or milestone, press Enter to skip):</ask>
|
|
33
|
+
<action>Store as {{end_context}} (empty string if skipped)</action>
|
|
82
34
|
</step>
|
|
83
35
|
|
|
84
36
|
<step n="4" goal="Confirm and validate all inputs">
|
|
85
37
|
<output>
|
|
86
38
|
## Sprint Summary — Please Confirm
|
|
87
39
|
|
|
88
|
-
- **Sprint
|
|
89
|
-
- **Sprint Name:**
|
|
90
|
-
- **Status:** planning
|
|
40
|
+
- **Sprint Number:** {{sprint_number}}
|
|
41
|
+
- **Sprint Name:** {{sprint_name}}
|
|
91
42
|
- **Capacity (max items):** {{capacity}}
|
|
92
|
-
- **Start
|
|
93
|
-
- **End
|
|
94
|
-
- **
|
|
95
|
-
- **Output File:** `_bmad-output/implementation-artifacts/sprints/{{sprint_id}}.yaml`
|
|
43
|
+
- **Start Context:** {{start_context}} *(empty if skipped)*
|
|
44
|
+
- **End Context:** {{end_context}} *(empty if skipped)*
|
|
45
|
+
- **Output File:** `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`
|
|
96
46
|
</output>
|
|
97
47
|
<ask>Confirm creation? [y] Yes / [n] Cancel / [e] Edit a field:</ask>
|
|
98
48
|
<check if="user selects 'e'">
|
|
99
49
|
<ask>Which field to edit? (number / name / capacity / start / end)</ask>
|
|
100
50
|
<check if="field == 'number'">
|
|
101
|
-
<ask>New sprint number
|
|
102
|
-
<action>Store
|
|
103
|
-
<action>
|
|
104
|
-
<check if="{{sprint_number_input}} fails validation">
|
|
105
|
-
<output>❌ Invalid sprint number: "{{sprint_number_input}}". Must be a positive integer (1-9999), no leading zeros.</output>
|
|
106
|
-
<goto step="4" />
|
|
107
|
-
</check>
|
|
108
|
-
<action>Store as {{sprint_number}} (integer)</action>
|
|
109
|
-
<action>Construct {{sprint_id}} = "sprint-{{sprint_number}}"</action>
|
|
110
|
-
<action>If sprint name was using previous default "Sprint {old_n}", update to "Sprint {{sprint_number}}"</action>
|
|
111
|
-
<action>Check if file exists at `_bmad-output/implementation-artifacts/sprints/{{sprint_id}}.yaml`</action>
|
|
112
|
-
<check if="file already exists at new path">
|
|
113
|
-
<output>⚠️ A sprint entity already exists at `_bmad-output/implementation-artifacts/sprints/{{sprint_id}}.yaml`. You will be prompted to overwrite at creation.</output>
|
|
114
|
-
</check>
|
|
51
|
+
<ask>New sprint number:</ask>
|
|
52
|
+
<action>Store as {{sprint_number}}</action>
|
|
53
|
+
<action>If sprint name was auto-defaulted to the old "Sprint {n}", update it to "Sprint {{sprint_number}}"</action>
|
|
115
54
|
<goto step="4" />
|
|
116
55
|
</check>
|
|
117
56
|
<check if="field == 'name'">
|
|
@@ -120,74 +59,45 @@ Guided workflow to create a new sprint entity with capacity limits, optional ISO
|
|
|
120
59
|
<goto step="4" />
|
|
121
60
|
</check>
|
|
122
61
|
<check if="field == 'capacity'"><goto step="2" /></check>
|
|
123
|
-
<check if="field == 'start'"><goto step="
|
|
124
|
-
<check if="field == 'end'"><goto step="
|
|
125
|
-
<check if="field is not recognized">
|
|
126
|
-
<output>❌ Unrecognized field: "{{field}}". Valid options: number, name, capacity, start, end.</output>
|
|
127
|
-
<goto step="4" />
|
|
128
|
-
</check>
|
|
62
|
+
<check if="field == 'start'"><goto step="3" /></check>
|
|
63
|
+
<check if="field == 'end'"><goto step="3" /></check>
|
|
129
64
|
</check>
|
|
130
65
|
<check if="user selects 'n'">
|
|
131
66
|
<output>❌ Sprint creation cancelled.</output>
|
|
132
67
|
<action>Exit workflow</action>
|
|
133
68
|
</check>
|
|
134
|
-
<check if="user input is not 'y', 'n', or 'e'">
|
|
135
|
-
<output>❌ Unrecognized option: "{{user_input}}". Please enter [y] Yes, [n] Cancel, or [e] Edit a field.</output>
|
|
136
|
-
<goto step="4" />
|
|
137
|
-
</check>
|
|
138
69
|
</step>
|
|
139
70
|
|
|
140
|
-
<step n="5" goal="Generate sprint
|
|
141
|
-
<action>Determine output path: `_bmad-output/implementation-artifacts/
|
|
142
|
-
<action>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
<check if="file already exists at new path">
|
|
147
|
-
<anchor id="overwrite_prompt" />
|
|
148
|
-
<output>⚠️ A sprint entity already exists at `_bmad-output/implementation-artifacts/sprints/{{sprint_id}}.yaml`.</output>
|
|
149
|
-
<ask>Overwrite existing sprint? [y] Yes / [n] Cancel:</ask>
|
|
71
|
+
<step n="5" goal="Generate sprint artifact file">
|
|
72
|
+
<action>Determine output path: `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`</action>
|
|
73
|
+
<action>Check if file already exists at output path</action>
|
|
74
|
+
<check if="file already exists">
|
|
75
|
+
<output>⚠️ A sprint plan already exists at `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`.</output>
|
|
76
|
+
<ask>Overwrite existing sprint plan? [y] Yes / [n] Cancel:</ask>
|
|
150
77
|
<check if="user selects 'n'">
|
|
151
|
-
<output>❌ Sprint creation cancelled to preserve existing sprint.</output>
|
|
78
|
+
<output>❌ Sprint creation cancelled to preserve existing sprint plan.</output>
|
|
152
79
|
<action>Exit workflow</action>
|
|
153
80
|
</check>
|
|
154
|
-
<check if="user input is not 'y' or 'n'">
|
|
155
|
-
<output>❌ Unrecognized option: "{{user_input}}". Please enter [y] Yes or [n] Cancel.</output>
|
|
156
|
-
<goto anchor="overwrite_prompt" />
|
|
157
|
-
</check>
|
|
158
81
|
</check>
|
|
159
|
-
|
|
160
|
-
<!-- Advisory check for old-format file -->
|
|
161
|
-
<action>Check if file exists at old path: `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`</action>
|
|
162
|
-
<check if="old-format file exists">
|
|
163
|
-
<output>ℹ️ **Note:** An old-format sprint file exists at `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`. The new sprint will be created at the new path. The old file is NOT auto-migrated — review or remove it manually if no longer needed.</output>
|
|
164
|
-
</check>
|
|
165
|
-
|
|
166
82
|
<action>Get current ISO timestamp for created_date and last_modified</action>
|
|
167
|
-
<action>Write sprint
|
|
83
|
+
<action>Write sprint artifact YAML to `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml` with this structure:
|
|
168
84
|
|
|
169
85
|
```yaml
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
status: planning
|
|
86
|
+
sprint_number: {{sprint_number}}
|
|
87
|
+
sprint_name: "{{sprint_name}}"
|
|
173
88
|
capacity: {{capacity}}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
89
|
+
assigned_items: []
|
|
90
|
+
status: planning
|
|
91
|
+
start_context: "{{start_context}}"
|
|
92
|
+
end_context: "{{end_context}}"
|
|
177
93
|
created_date: "{{current_iso_timestamp}}"
|
|
178
94
|
last_modified: "{{current_iso_timestamp}}"
|
|
179
95
|
```
|
|
180
|
-
|
|
181
|
-
**YAML output rules:**
|
|
182
|
-
- Always quote the `name` field to handle special characters
|
|
183
|
-
- `start` and `end` are empty string `""` if skipped
|
|
184
|
-
- `items` is always empty array `[]` at creation
|
|
185
|
-
- `status` is always `planning` at creation (never `active` or `closed`)
|
|
186
96
|
</action>
|
|
187
97
|
<output>
|
|
188
98
|
✅ **Sprint created successfully!**
|
|
189
99
|
|
|
190
|
-
- **File:** `_bmad-output/implementation-artifacts/
|
|
100
|
+
- **File:** `_bmad-output/implementation-artifacts/sprint-plan-{{sprint_number}}.yaml`
|
|
191
101
|
- **Sprint:** {{sprint_name}}
|
|
192
102
|
- **Capacity:** {{capacity}} items
|
|
193
103
|
- **Status:** planning
|
|
@@ -1,4 +1,206 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- Resolved via skill:add-to-sprint in module-help.csv -->
|
|
1
|
+
# Add-to-Sprint Workflow
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
Guided workflow to assign backlog items (stories + bugs) to a sprint using multi-criteria prioritization.
|
|
4
|
+
|
|
5
|
+
<workflow>
|
|
6
|
+
|
|
7
|
+
<step n="1a" goal="Discover user story backlog items from sprint-status.yaml">
|
|
8
|
+
<action>Read `_bmad-output/implementation-artifacts/sprint-status.yaml` — authoritative source for user story execution status</action>
|
|
9
|
+
<action>Parse the development_status section. For each entry:
|
|
10
|
+
- Skip epic keys (keys matching `epic-*`)
|
|
11
|
+
- Skip retrospective keys (keys ending with `-retrospective`)
|
|
12
|
+
- Collect story keys and their current status (backlog, ready-for-dev, in-progress, review, done)
|
|
13
|
+
</action>
|
|
14
|
+
<action>Store as {{user_stories}} — list of objects with: key, status</action>
|
|
15
|
+
<action>Infer story title from key (e.g., `12-1-add-sprint-workflow` → "Add Sprint Workflow")</action>
|
|
16
|
+
</step>
|
|
17
|
+
|
|
18
|
+
<step n="1b" goal="Discover bug story backlog items">
|
|
19
|
+
<action>Glob `_bmad-output/implementation-artifacts/bug-*.md` to discover all bug story files</action>
|
|
20
|
+
<check if="no bug files found">
|
|
21
|
+
<action>Set {{bug_stories}} = [] (empty list)</action>
|
|
22
|
+
</check>
|
|
23
|
+
<check if="bug files found">
|
|
24
|
+
<action>For each bug file, parse YAML frontmatter to extract: `type`, `severity`, `title`</action>
|
|
25
|
+
<action>Store as {{bug_stories}} — list of objects with: file, type (bug), severity, title</action>
|
|
26
|
+
</check>
|
|
27
|
+
</step>
|
|
28
|
+
|
|
29
|
+
<step n="1c" goal="Filter out items already assigned to any sprint">
|
|
30
|
+
<action>Glob `_bmad-output/implementation-artifacts/sprint-plan-*.yaml` to discover all existing sprint artifact files</action>
|
|
31
|
+
<action>For each sprint file found, read its assigned_items list</action>
|
|
32
|
+
<action>Build {{all_assigned_items}} = flat set of every item identifier (story keys and bug basenames) across ALL sprint plans</action>
|
|
33
|
+
<action>Filter {{user_stories}}: remove any story whose key is present in {{all_assigned_items}}</action>
|
|
34
|
+
<action>Filter {{bug_stories}}: remove any bug whose file basename is present in {{all_assigned_items}}</action>
|
|
35
|
+
<action>Items already assigned to any sprint will NOT appear in the backlog — this prevents duplicate assignment</action>
|
|
36
|
+
<check if="no sprint files found">
|
|
37
|
+
<action>Set {{all_assigned_items}} = [] — no filtering needed when no sprints exist yet</action>
|
|
38
|
+
</check>
|
|
39
|
+
</step>
|
|
40
|
+
|
|
41
|
+
<step n="2" goal="Present flat backlog combining stories and bugs">
|
|
42
|
+
<action>Combine {{user_stories}} and {{bug_stories}} into a flat backlog list</action>
|
|
43
|
+
<action>Stories and bugs are peers — no epic grouping (FR65)</action>
|
|
44
|
+
<output>
|
|
45
|
+
## 📋 Backlog Items
|
|
46
|
+
|
|
47
|
+
| # | ID / File | Title | Type | Status/Severity |
|
|
48
|
+
|---|---|---|---|---|
|
|
49
|
+
{{#each backlog_items}}
|
|
50
|
+
| {{@index+1}} | {{id}} | {{title}} | {{type}} | {{status_or_severity}} |
|
|
51
|
+
{{/each}}
|
|
52
|
+
|
|
53
|
+
*Total: {{story_count}} stories, {{bug_count}} bugs*
|
|
54
|
+
</output>
|
|
55
|
+
</step>
|
|
56
|
+
|
|
57
|
+
<step n="3" goal="List available sprints and select target sprint">
|
|
58
|
+
<action>Glob `_bmad-output/implementation-artifacts/sprint-plan-*.yaml` to discover all sprint artifact files</action>
|
|
59
|
+
<check if="no sprint files found">
|
|
60
|
+
<output>❌ No sprint plans found. Run `/add-sprint` first to create a sprint before assigning items.</output>
|
|
61
|
+
<action>Exit workflow</action>
|
|
62
|
+
</check>
|
|
63
|
+
<action>For each sprint file found, read and extract: sprint_number, sprint_name, capacity, assigned_items count, status</action>
|
|
64
|
+
<output>
|
|
65
|
+
## 🏃 Available Sprints
|
|
66
|
+
|
|
67
|
+
| # | Sprint | Status | Capacity | Assigned | Remaining |
|
|
68
|
+
|---|---|---|---|---|---|
|
|
69
|
+
{{#each sprints}}
|
|
70
|
+
| {{@index+1}} | {{sprint_name}} | {{status}} | {{capacity}} | {{assigned_count}} | {{remaining}} |
|
|
71
|
+
{{/each}}
|
|
72
|
+
</output>
|
|
73
|
+
<ask>Select target sprint (enter number):</ask>
|
|
74
|
+
<action>Store selected sprint data as {{target_sprint}}</action>
|
|
75
|
+
</step>
|
|
76
|
+
|
|
77
|
+
<step n="4" goal="Display current sprint capacity usage">
|
|
78
|
+
<action>Calculate: {{assigned_count}} = length of {{target_sprint.assigned_items}}</action>
|
|
79
|
+
<action>Calculate: {{remaining_capacity}} = {{target_sprint.capacity}} - {{assigned_count}}</action>
|
|
80
|
+
<output>
|
|
81
|
+
## Sprint Capacity: {{target_sprint.sprint_name}}
|
|
82
|
+
|
|
83
|
+
- **Capacity:** {{target_sprint.capacity}} items
|
|
84
|
+
- **Assigned:** {{assigned_count}} items
|
|
85
|
+
- **Remaining:** {{remaining_capacity}} slots
|
|
86
|
+
|
|
87
|
+
{{#if remaining_capacity <= 0}}
|
|
88
|
+
⚠️ This sprint is **at or over capacity**. Adding items will exceed the limit.
|
|
89
|
+
{{/if}}
|
|
90
|
+
</output>
|
|
91
|
+
</step>
|
|
92
|
+
|
|
93
|
+
<step n="5" goal="Select candidate items for this sprint">
|
|
94
|
+
<ask>Which backlog items do you want to consider for this sprint? Enter item numbers (comma-separated), or "all" to evaluate the full backlog:</ask>
|
|
95
|
+
<check if="user enters 'all'">
|
|
96
|
+
<action>Set {{candidate_items}} = all items in {{backlog_items}} (the full filtered backlog list from step 2)</action>
|
|
97
|
+
</check>
|
|
98
|
+
<check if="user enters item numbers">
|
|
99
|
+
<action>Resolve the entered numbers against the backlog table from step 2 and set {{candidate_items}} = those specific items</action>
|
|
100
|
+
</check>
|
|
101
|
+
</step>
|
|
102
|
+
|
|
103
|
+
<step n="6" goal="Multi-criteria prioritization guidance">
|
|
104
|
+
<action>For each item in {{candidate_items}}, evaluate and score across criteria:
|
|
105
|
+
- **Business value:** High (H) / Medium (M) / Low (L) — impact on users or project goals
|
|
106
|
+
- **Dependency status:** Blocked (blocked by another item) / Blocking (blocks other items) / Independent
|
|
107
|
+
- **Severity** (bugs only): Critical / High / Medium / Low — N/A for stories
|
|
108
|
+
- **Effort estimation:** Small (S ≤ 1 day) / Medium (M 2–3 days) / Large (L 4+ days)
|
|
109
|
+
</action>
|
|
110
|
+
<action>Generate a ranked ordering recommendation, factoring in:
|
|
111
|
+
1. Blocking dependencies first (items that unlock others)
|
|
112
|
+
2. High business value + low/medium effort (quick wins)
|
|
113
|
+
3. Critical/High bugs ahead of Medium/Low bugs
|
|
114
|
+
4. Avoid blocked items unless capacity allows waiting
|
|
115
|
+
</action>
|
|
116
|
+
<output>
|
|
117
|
+
## 🎯 Prioritization Analysis
|
|
118
|
+
|
|
119
|
+
| Rank | ID / File | Title | Type | Business Value | Dependencies | Severity | Effort | Rationale |
|
|
120
|
+
|---|---|---|---|---|---|---|---|---|
|
|
121
|
+
{{#each ranked_items}}
|
|
122
|
+
| {{rank}} | {{id}} | {{title}} | {{type}} | {{business_value}} | {{dependency_status}} | {{severity}} | {{effort}} | {{rationale}} |
|
|
123
|
+
{{/each}}
|
|
124
|
+
|
|
125
|
+
**Recommended selection** (up to {{remaining_capacity}} items to stay within capacity): {{recommended_selection}}
|
|
126
|
+
</output>
|
|
127
|
+
</step>
|
|
128
|
+
|
|
129
|
+
<step n="7" goal="User confirms or adjusts ranking">
|
|
130
|
+
<ask>Review the ranking above. Options:
|
|
131
|
+
- [c] Confirm recommended selection as-is
|
|
132
|
+
- [m] Modify selection (specify item numbers to include)
|
|
133
|
+
- [r] Re-rank items (provide new priority order)
|
|
134
|
+
- [x] Cancel without assigning
|
|
135
|
+
|
|
136
|
+
Choice:</ask>
|
|
137
|
+
<check if="user selects 'x'">
|
|
138
|
+
<output>❌ Assignment cancelled — no changes made.</output>
|
|
139
|
+
<action>Exit workflow</action>
|
|
140
|
+
</check>
|
|
141
|
+
<check if="user selects 'm'">
|
|
142
|
+
<ask>Enter item numbers to assign (comma-separated):</ask>
|
|
143
|
+
<action>Update {{confirmed_items}} with user selection</action>
|
|
144
|
+
</check>
|
|
145
|
+
<check if="user selects 'r'">
|
|
146
|
+
<ask>Enter item numbers in your preferred priority order (comma-separated). Only items you include will be assigned — items not listed will be excluded from this session and remain in the unassigned backlog:</ask>
|
|
147
|
+
<action>Set {{confirmed_items}} = only the items matching the user-provided numbers, in the order provided. Items from {{candidate_items}} NOT mentioned are excluded from assignment in this session (they remain available in the backlog for future sprints).</action>
|
|
148
|
+
</check>
|
|
149
|
+
<check if="user selects 'c'">
|
|
150
|
+
<action>Set {{confirmed_items}} = recommended selection</action>
|
|
151
|
+
</check>
|
|
152
|
+
<action>Store confirmed ranking in {{confirmed_ranking}} for auditability (included in workflow output)</action>
|
|
153
|
+
</step>
|
|
154
|
+
|
|
155
|
+
<step n="8" goal="Assign selected items to sprint with capacity enforcement">
|
|
156
|
+
<action>For each item in {{confirmed_items}}, in confirmed ranking order:</action>
|
|
157
|
+
<action>Re-calculate current assigned count (in case multiple items are being added)</action>
|
|
158
|
+
<check if="assigning this item would exceed capacity">
|
|
159
|
+
<output>⚠️ **Capacity Warning:** Adding "{{item.title}}" would bring assigned items to {{new_count}}/{{target_sprint.capacity}} — exceeding sprint capacity by {{overage}}.</output>
|
|
160
|
+
<ask>Options:
|
|
161
|
+
- [a] Add anyway (over-capacity acknowledged)
|
|
162
|
+
- [s] Skip this item
|
|
163
|
+
- [m] Modify sprint capacity first via `/modify-sprint`
|
|
164
|
+
|
|
165
|
+
Choice:</ask>
|
|
166
|
+
<check if="user selects 's'">
|
|
167
|
+
<action>Skip this item — do not add to sprint. Continue to next item in the {{confirmed_items}} loop.</action>
|
|
168
|
+
</check>
|
|
169
|
+
<check if="user selects 'm'">
|
|
170
|
+
<output>💡 Run `/modify-sprint` to increase capacity for {{target_sprint.sprint_name}}, then re-run `/add-to-sprint`.</output>
|
|
171
|
+
<action>Exit workflow</action>
|
|
172
|
+
</check>
|
|
173
|
+
</check>
|
|
174
|
+
<action>Add item identifier to {{target_sprint.assigned_items}} list in the sprint-plan-{{target_sprint.sprint_number}}.yaml artifact</action>
|
|
175
|
+
<action>Item identifier format: story key for user stories (e.g., `12-1-add-sprint-workflow`), file basename for bugs (e.g., `bug-login-crash`)</action>
|
|
176
|
+
</step>
|
|
177
|
+
|
|
178
|
+
<step n="9" goal="Persist changes and display confirmed ranking for auditability">
|
|
179
|
+
<action>Update `_bmad-output/implementation-artifacts/sprint-plan-{{target_sprint.sprint_number}}.yaml`:
|
|
180
|
+
- Update `assigned_items` list with all newly assigned item identifiers
|
|
181
|
+
- Update `last_modified` to current ISO timestamp
|
|
182
|
+
</action>
|
|
183
|
+
<action>**Do NOT modify sprint-status.yaml** — sprint membership is exclusively tracked in sprint-plan-{n}.yaml</action>
|
|
184
|
+
<output>
|
|
185
|
+
## ✅ Assignment Complete
|
|
186
|
+
|
|
187
|
+
**Sprint:** {{target_sprint.sprint_name}}
|
|
188
|
+
**Items assigned this session:** {{assigned_this_session}}
|
|
189
|
+
|
|
190
|
+
### Confirmed Ranking (Audit Record)
|
|
191
|
+
|
|
192
|
+
| Rank | ID | Title | Type | Business Value | Dependencies | Severity | Effort |
|
|
193
|
+
|---|---|---|---|---|---|---|---|
|
|
194
|
+
{{#each confirmed_ranking}}
|
|
195
|
+
| {{rank}} | {{id}} | {{title}} | {{type}} | {{business_value}} | {{dependency_status}} | {{severity}} | {{effort}} |
|
|
196
|
+
{{/each}}
|
|
197
|
+
|
|
198
|
+
**Updated Capacity:** {{new_assigned_count}}/{{target_sprint.capacity}} items used ({{new_remaining}} remaining)
|
|
199
|
+
|
|
200
|
+
**Next Steps:**
|
|
201
|
+
- Use `/modify-sprint` to adjust capacity or remove items
|
|
202
|
+
- Use `/sprint-status-view` to view the full sprint with all assigned items
|
|
203
|
+
</output>
|
|
204
|
+
</step>
|
|
205
|
+
|
|
206
|
+
</workflow>
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
<!-- DEPRECATED: This workflow references the old sprint-plan-{n}.yaml format.
|
|
2
|
-
It will be reworked in Story 17.4. Use /add-sprint to create sprints in the new format. -->
|
|
3
|
-
|
|
4
|
-
> **DEPRECATED:** This workflow references the old `sprint-plan-{n}.yaml` format. It will be reworked in Story 17.4. Use `/add-sprint` to create sprints in the new format.
|
|
5
|
-
|
|
6
1
|
# Modify Sprint Workflow
|
|
7
2
|
|
|
8
3
|
Guided workflow to modify an existing sprint — add/remove items, change capacity, update metadata.
|
|
@@ -1,4 +1,193 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- Resolved via skill:sprint-status-view in module-help.csv -->
|
|
1
|
+
# Sprint Status View Workflow
|
|
3
2
|
|
|
4
|
-
|
|
3
|
+
Extension workflow that displays sprint progress with assigned items (stories + bugs), type distinction, and remaining capacity.
|
|
4
|
+
|
|
5
|
+
> **Architecture mandate:** This workflow is a NEW extension at `lib/bmad-extension/workflows/sprint-status-view/`. It does NOT modify any files under `_bmad/bmm/workflows/`.
|
|
6
|
+
|
|
7
|
+
<workflow>
|
|
8
|
+
|
|
9
|
+
<step n="1" goal="Discover all sprint artifact files">
|
|
10
|
+
<action>Glob `_bmad-output/implementation-artifacts/sprint-plan-*.yaml` to discover all sprint artifact files</action>
|
|
11
|
+
<check if="no sprint files found">
|
|
12
|
+
<output>
|
|
13
|
+
ℹ️ **No Sprints Found**
|
|
14
|
+
|
|
15
|
+
No sprint plan files exist yet (`sprint-plan-*.yaml`).
|
|
16
|
+
|
|
17
|
+
**To get started:**
|
|
18
|
+
- Run `/add-sprint` to create your first sprint
|
|
19
|
+
- Run `/add-to-sprint` to assign backlog items to it
|
|
20
|
+
</output>
|
|
21
|
+
<action>Exit workflow</action>
|
|
22
|
+
</check>
|
|
23
|
+
<action>For each sprint file found, read the full YAML content and store as {{sprint_plans}} list</action>
|
|
24
|
+
<action>Sort {{sprint_plans}} by sprint_number ascending</action>
|
|
25
|
+
</step>
|
|
26
|
+
|
|
27
|
+
<step n="2" goal="Load sprint-status.yaml for user story execution statuses">
|
|
28
|
+
<action>Read `_bmad-output/implementation-artifacts/sprint-status.yaml`</action>
|
|
29
|
+
<check if="file not found">
|
|
30
|
+
<output>⚠️ `sprint-status.yaml` not found. User story execution statuses will not be available. Run `/sprint-planning` to initialize.</output>
|
|
31
|
+
<action>Set {{story_status_map}} = {} (empty — will show data integrity warnings per missing item)</action>
|
|
32
|
+
</check>
|
|
33
|
+
<check if="file found">
|
|
34
|
+
<action>Parse development_status section into {{story_status_map}} — key: story key, value: status</action>
|
|
35
|
+
<action>Exclude epic-* keys and *-retrospective keys from the map</action>
|
|
36
|
+
</check>
|
|
37
|
+
</step>
|
|
38
|
+
|
|
39
|
+
<step n="3" goal="Discover bug stories for type/severity data">
|
|
40
|
+
<action>Glob `_bmad-output/implementation-artifacts/bug-*.md` to discover all bug story files</action>
|
|
41
|
+
<check if="no bug files found">
|
|
42
|
+
<action>Set {{bug_metadata_map}} = {} (empty)</action>
|
|
43
|
+
</check>
|
|
44
|
+
<check if="bug files found">
|
|
45
|
+
<action>For each bug file, parse YAML frontmatter to extract: type, severity, title</action>
|
|
46
|
+
<action>Build {{bug_metadata_map}} — key: file basename (e.g., `bug-login-crash`), value: {severity, title}</action>
|
|
47
|
+
</check>
|
|
48
|
+
</step>
|
|
49
|
+
|
|
50
|
+
<step n="4" goal="Display sprint status for each sprint">
|
|
51
|
+
<action>For each sprint in {{sprint_plans}} (in order):</action>
|
|
52
|
+
<action>Calculate: {{assigned_count}} = length(sprint.assigned_items)</action>
|
|
53
|
+
<action>Calculate: {{remaining_capacity}} = sprint.capacity - {{assigned_count}}</action>
|
|
54
|
+
|
|
55
|
+
<action>For each item identifier in sprint.assigned_items, resolve item details:
|
|
56
|
+
|
|
57
|
+
**If item is a story (key matches regex `^\d+-\d+-.+`):**
|
|
58
|
+
- Look up status in {{story_status_map}}[item_key]
|
|
59
|
+
- If NOT found in {{story_status_map}}:
|
|
60
|
+
→ Record as DATA INTEGRITY WARNING: "Item {item_key} has no status entry in sprint-status.yaml — run /sprint-planning to initialize status tracking for this item."
|
|
61
|
+
→ Display item with marker: ⚠️ [status unknown]
|
|
62
|
+
- If found: display with current status label
|
|
63
|
+
|
|
64
|
+
**If item is a bug (key matches regex `^bug-.+`):**
|
|
65
|
+
- Look up in {{bug_metadata_map}}[item_key]
|
|
66
|
+
- If NOT found: display with title as item_key, severity as "unknown"
|
|
67
|
+
- If found: display with title and severity from frontmatter
|
|
68
|
+
- Bug execution status: use `status` from bug file frontmatter if present; otherwise "not-started"
|
|
69
|
+
|
|
70
|
+
**If item matches neither pattern:** display as type "Unknown" with raw identifier as title
|
|
71
|
+
</action>
|
|
72
|
+
|
|
73
|
+
<output>
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## 🏃 {{sprint.sprint_name}} (Sprint {{sprint.sprint_number}})
|
|
77
|
+
|
|
78
|
+
**Status:** {{sprint.status}} | **Capacity:** {{sprint.capacity}} items | **Assigned:** {{assigned_count}} | **Remaining:** {{remaining_capacity}}
|
|
79
|
+
{{#if sprint.start_context}}**Start:** {{sprint.start_context}}{{/if}} {{#if sprint.end_context}}| **End:** {{sprint.end_context}}{{/if}}
|
|
80
|
+
|
|
81
|
+
{{#if over_capacity}}
|
|
82
|
+
⚠️ **Over capacity by {{overage}} item(s)**
|
|
83
|
+
{{/if}}
|
|
84
|
+
|
|
85
|
+
### Assigned Items
|
|
86
|
+
|
|
87
|
+
| Item | Title | Type | Status / Severity |
|
|
88
|
+
|---|---|---|---|
|
|
89
|
+
{{#each resolved_items}}
|
|
90
|
+
{{#if is_story}}
|
|
91
|
+
| {{item_key}} | {{title}} | 📋 Story | {{status}} |
|
|
92
|
+
{{/if}}
|
|
93
|
+
{{#if is_bug}}
|
|
94
|
+
| {{item_key}} | {{title}} | 🐛 Bug | Severity: {{severity}} / {{bug_status}} |
|
|
95
|
+
{{/if}}
|
|
96
|
+
{{/each}}
|
|
97
|
+
|
|
98
|
+
{{#if data_integrity_warnings}}
|
|
99
|
+
**⚠️ Data Integrity Warnings:**
|
|
100
|
+
{{#each data_integrity_warnings}}
|
|
101
|
+
- {{this}}
|
|
102
|
+
{{/each}}
|
|
103
|
+
{{/if}}
|
|
104
|
+
|
|
105
|
+
{{#if assigned_items_empty}}
|
|
106
|
+
*(No items assigned to this sprint)*
|
|
107
|
+
{{/if}}
|
|
108
|
+
</output>
|
|
109
|
+
</step>
|
|
110
|
+
|
|
111
|
+
<step n="5" goal="Display unassigned backlog summary">
|
|
112
|
+
<action>Collect all item keys from {{story_status_map}} that are NOT in any sprint's assigned_items list — these are unassigned user stories</action>
|
|
113
|
+
<action>Collect all bug basenames from {{bug_metadata_map}} that are NOT in any sprint's assigned_items list — these are unassigned bugs</action>
|
|
114
|
+
<action>Count unassigned stories by status: {{unassigned_by_status}}</action>
|
|
115
|
+
<output>
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 📦 Unassigned Backlog
|
|
119
|
+
|
|
120
|
+
### 📋 Unassigned Stories
|
|
121
|
+
|
|
122
|
+
| Status | Count |
|
|
123
|
+
|---|---|
|
|
124
|
+
| backlog | {{count_backlog}} |
|
|
125
|
+
| ready-for-dev | {{count_ready}} |
|
|
126
|
+
| in-progress | {{count_in_progress}} |
|
|
127
|
+
| review | {{count_review}} |
|
|
128
|
+
| done | {{count_done}} |
|
|
129
|
+
|
|
130
|
+
*Total unassigned stories: {{total_unassigned}}*
|
|
131
|
+
|
|
132
|
+
### 🐛 Unassigned Bugs
|
|
133
|
+
|
|
134
|
+
{{#if unassigned_bugs}}
|
|
135
|
+
| ID / File | Title | Severity |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
{{#each unassigned_bugs}}
|
|
138
|
+
| {{id}} | {{title}} | {{severity}} |
|
|
139
|
+
{{/each}}
|
|
140
|
+
{{else}}
|
|
141
|
+
*(No unassigned bugs)*
|
|
142
|
+
{{/if}}
|
|
143
|
+
|
|
144
|
+
**Tip:** Use `/add-to-sprint` to assign unassigned items to a sprint.
|
|
145
|
+
</output>
|
|
146
|
+
</step>
|
|
147
|
+
|
|
148
|
+
<step n="6" goal="Offer next actions">
|
|
149
|
+
<ask>Options:
|
|
150
|
+
1. Show full unassigned backlog item list (IDs + titles + statuses)
|
|
151
|
+
2. Add items to a sprint — run `/add-to-sprint`
|
|
152
|
+
3. Modify a sprint — run `/modify-sprint`
|
|
153
|
+
4. Create a new sprint — run `/add-sprint`
|
|
154
|
+
5. Exit
|
|
155
|
+
|
|
156
|
+
Choice:</ask>
|
|
157
|
+
<check if="choice == 1">
|
|
158
|
+
<action>For each unassigned story key in {{story_status_map}} not assigned to any sprint, display: key, inferred title, status</action>
|
|
159
|
+
<action>For each unassigned bug in {{bug_metadata_map}} not assigned to any sprint, display: id, title, severity</action>
|
|
160
|
+
<output>
|
|
161
|
+
### Full Unassigned Backlog
|
|
162
|
+
|
|
163
|
+
**Stories:**
|
|
164
|
+
| Key | Title | Status |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
{{#each unassigned_story_items}}
|
|
167
|
+
| {{key}} | {{title}} | {{status}} |
|
|
168
|
+
{{/each}}
|
|
169
|
+
|
|
170
|
+
**Bugs:**
|
|
171
|
+
| ID | Title | Severity |
|
|
172
|
+
|---|---|---|
|
|
173
|
+
{{#each unassigned_bugs}}
|
|
174
|
+
| {{id}} | {{title}} | {{severity}} |
|
|
175
|
+
{{/each}}
|
|
176
|
+
</output>
|
|
177
|
+
<goto step="6" />
|
|
178
|
+
</check>
|
|
179
|
+
<check if="choice == 2">
|
|
180
|
+
<output>▶️ Run `/add-to-sprint` to assign backlog items to a sprint.</output>
|
|
181
|
+
</check>
|
|
182
|
+
<check if="choice == 3">
|
|
183
|
+
<output>▶️ Run `/modify-sprint` to add/remove items or change sprint settings.</output>
|
|
184
|
+
</check>
|
|
185
|
+
<check if="choice == 4">
|
|
186
|
+
<output>▶️ Run `/add-sprint` to create a new sprint.</output>
|
|
187
|
+
</check>
|
|
188
|
+
<check if="choice == 5">
|
|
189
|
+
<action>Exit workflow</action>
|
|
190
|
+
</check>
|
|
191
|
+
</step>
|
|
192
|
+
|
|
193
|
+
</workflow>
|