mdan-cli 2.5.1 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment/code_review_guidelines.yaml +271 -0
- package/.claude/skills/bmad-os-audit-file-refs/SKILL.md +6 -0
- package/.claude/skills/bmad-os-audit-file-refs/prompts/instructions.md +59 -0
- package/.claude/skills/bmad-os-changelog-social/SKILL.md +177 -0
- package/.claude/skills/bmad-os-changelog-social/examples/discord-example.md +53 -0
- package/.claude/skills/bmad-os-changelog-social/examples/linkedin-example.md +49 -0
- package/.claude/skills/bmad-os-changelog-social/examples/twitter-example.md +55 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/SKILL.md +6 -0
- package/.claude/skills/bmad-os-diataxis-style-fix/prompts/instructions.md +229 -0
- package/.claude/skills/bmad-os-draft-changelog/SKILL.md +6 -0
- package/.claude/skills/bmad-os-draft-changelog/prompts/instructions.md +82 -0
- package/.claude/skills/bmad-os-gh-triage/SKILL.md +6 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/agent-prompt.md +60 -0
- package/.claude/skills/bmad-os-gh-triage/prompts/instructions.md +74 -0
- package/.claude/skills/bmad-os-release-module/SKILL.md +6 -0
- package/.claude/skills/bmad-os-release-module/prompts/instructions.md +53 -0
- package/.claude/skills/bmad-os-review-pr/SKILL.md +6 -0
- package/.claude/skills/bmad-os-review-pr/prompts/instructions.md +231 -0
- package/.claude/skills/bmad-os-root-cause-analysis/SKILL.md +12 -0
- package/.claude/skills/bmad-os-root-cause-analysis/prompts/instructions.md +74 -0
- package/.coderabbit.yaml +85 -0
- package/.github/CODE_OF_CONDUCT.md +128 -0
- package/.github/FUNDING.yaml +15 -0
- package/.github/ISSUE_TEMPLATE/bug-report.yaml +124 -0
- package/.github/ISSUE_TEMPLATE/config.yaml +8 -0
- package/.github/ISSUE_TEMPLATE/documentation.yaml +55 -0
- package/.github/ISSUE_TEMPLATE/feature-request.md +22 -0
- package/.github/ISSUE_TEMPLATE/issue.md +32 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
- package/.github/scripts/discord-helpers.sh +34 -0
- package/.github/workflows/coderabbit-review.yaml +22 -0
- package/.github/workflows/discord.yaml +90 -0
- package/.github/workflows/docs.yaml +64 -0
- package/.github/workflows/quality.yaml +116 -0
- package/.husky/pre-commit +20 -0
- package/.markdownlint-cli2.yaml +41 -0
- package/.nvmrc +1 -0
- package/.prettierignore +12 -0
- package/.vscode/settings.json +96 -0
- package/AGENTS.md +227 -165
- package/AGENTS_LIST.md +946 -0
- package/ARCHITECTURE.md +590 -0
- package/CHANGELOG.md +1770 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +512 -0
- package/CONTRIBUTORS.md +32 -0
- package/INSTALL.md +246 -0
- package/LICENSE +30 -0
- package/README.md +133 -194
- package/RELEASE_NOTES.md +246 -0
- package/SECURITY.md +85 -0
- package/TRADEMARK.md +55 -0
- package/USAGE.md +368 -0
- package/Wordmark.png +0 -0
- package/app/__init__.py +5 -0
- package/app/cis/agents/__init__.py +31 -0
- package/app/cis/agents/brainstorming-coach/__init__.py +3 -0
- package/app/cis/agents/brainstorming-coach/agent.py +162 -0
- package/app/cis/agents/brainstorming-coach/prompt.yaml +53 -0
- package/app/cis/agents/creative-problem-solver/__init__.py +3 -0
- package/app/cis/agents/creative-problem-solver/agent.py +233 -0
- package/app/cis/agents/creative-problem-solver/prompt.yaml +74 -0
- package/app/cis/agents/design-thinking-coach/__init__.py +3 -0
- package/app/cis/agents/design-thinking-coach/agent.py +241 -0
- package/app/cis/agents/design-thinking-coach/prompt.yaml +77 -0
- package/app/cis/agents/innovation-strategist/__init__.py +3 -0
- package/app/cis/agents/innovation-strategist/agent.py +271 -0
- package/app/cis/agents/innovation-strategist/prompt.yaml +70 -0
- package/app/cis/agents/presentation-master/__init__.py +3 -0
- package/app/cis/agents/presentation-master/agent.py +420 -0
- package/app/cis/agents/presentation-master/prompt.yaml +62 -0
- package/app/cis/agents/storyteller/__init__.py +3 -0
- package/app/cis/agents/storyteller/agent.py +303 -0
- package/app/cis/agents/storyteller/prompt.yaml +99 -0
- package/app/core/__init__.py +5 -0
- package/app/core/agents/__init__.py +5 -0
- package/app/core/agents/mdan-master/__init__.py +7 -0
- package/app/core/agents/mdan-master/agent.py +302 -0
- package/app/core/agents/mdan-master/prompt.yaml +105 -0
- package/app/mmb/agents/__init__.py +24 -0
- package/app/mmb/agents/agent-builder/__init__.py +5 -0
- package/app/mmb/agents/agent-builder/agent.py +261 -0
- package/app/mmb/agents/agent-builder/prompt.yaml +48 -0
- package/app/mmb/agents/module-builder/__init__.py +5 -0
- package/app/mmb/agents/module-builder/agent.py +299 -0
- package/app/mmb/agents/module-builder/prompt.yaml +50 -0
- package/app/mmb/agents/workflow-builder/__init__.py +5 -0
- package/app/mmb/agents/workflow-builder/agent.py +318 -0
- package/app/mmb/agents/workflow-builder/prompt.yaml +52 -0
- package/app/mmm/agents/__init__.py +48 -0
- package/app/mmm/agents/analyst/__init__.py +7 -0
- package/app/mmm/agents/analyst/agent.py +384 -0
- package/app/mmm/agents/analyst/prompt.yaml +62 -0
- package/app/mmm/agents/architect/__init__.py +7 -0
- package/app/mmm/agents/architect/agent.py +300 -0
- package/app/mmm/agents/architect/prompt.yaml +66 -0
- package/app/mmm/agents/dev/__init__.py +7 -0
- package/app/mmm/agents/dev/agent.py +285 -0
- package/app/mmm/agents/dev/prompt.yaml +62 -0
- package/app/mmm/agents/pm/__init__.py +7 -0
- package/app/mmm/agents/pm/agent.py +417 -0
- package/app/mmm/agents/pm/prompt.yaml +64 -0
- package/app/mmm/agents/qa/__init__.py +7 -0
- package/app/mmm/agents/qa/agent.py +267 -0
- package/app/mmm/agents/qa/prompt.yaml +67 -0
- package/app/mmm/agents/quick-flow-solo-dev/__init__.py +7 -0
- package/app/mmm/agents/quick-flow-solo-dev/agent.py +319 -0
- package/app/mmm/agents/quick-flow-solo-dev/prompt.yaml +60 -0
- package/app/mmm/agents/sm/__init__.py +7 -0
- package/app/mmm/agents/sm/agent.py +357 -0
- package/app/mmm/agents/sm/prompt.yaml +61 -0
- package/app/mmm/agents/tech-writer/__init__.py +7 -0
- package/app/mmm/agents/tech-writer/agent.py +420 -0
- package/app/mmm/agents/tech-writer/prompt.yaml +70 -0
- package/app/mmm/agents/ux-designer/__init__.py +14 -0
- package/app/mmm/agents/ux-designer/agent.py +412 -0
- package/app/mmm/agents/ux-designer/prompt.yaml +37 -0
- package/app/packs/__init__.py +32 -0
- package/app/packs/db-optimization/__init__.py +13 -0
- package/app/packs/db-optimization/agents/__init__.py +11 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/__init__.py +5 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/agent.py +559 -0
- package/app/packs/db-optimization/agents/db-performance-analyst/prompt.yaml +63 -0
- package/app/packs/db-optimization/agents/indexing-specialist/__init__.py +5 -0
- package/app/packs/db-optimization/agents/indexing-specialist/agent.py +713 -0
- package/app/packs/db-optimization/agents/indexing-specialist/prompt.yaml +92 -0
- package/app/packs/db-optimization/agents/query-optimizer/__init__.py +5 -0
- package/app/packs/db-optimization/agents/query-optimizer/agent.py +566 -0
- package/app/packs/db-optimization/agents/query-optimizer/prompt.yaml +74 -0
- package/app/packs/devops-azure/__init__.py +13 -0
- package/app/packs/devops-azure/agents/__init__.py +11 -0
- package/app/packs/devops-azure/agents/azure-specialist/__init__.py +5 -0
- package/app/packs/devops-azure/agents/azure-specialist/agent.py +584 -0
- package/app/packs/devops-azure/agents/azure-specialist/prompt.yaml +301 -0
- package/app/packs/devops-azure/agents/cicd-architect/__init__.py +5 -0
- package/app/packs/devops-azure/agents/cicd-architect/agent.py +665 -0
- package/app/packs/devops-azure/agents/cicd-architect/prompt.yaml +409 -0
- package/app/packs/devops-azure/agents/devops-engineer/__init__.py +5 -0
- package/app/packs/devops-azure/agents/devops-engineer/agent.py +545 -0
- package/app/packs/devops-azure/agents/devops-engineer/prompt.yaml +263 -0
- package/app/packs/fintech/__init__.py +13 -0
- package/app/packs/fintech/agents/__init__.py +11 -0
- package/app/packs/fintech/agents/compliance-officer/__init__.py +5 -0
- package/app/packs/fintech/agents/compliance-officer/agent.py +449 -0
- package/app/packs/fintech/agents/compliance-officer/prompt.yaml +135 -0
- package/app/packs/fintech/agents/financial-analyst/__init__.py +5 -0
- package/app/packs/fintech/agents/financial-analyst/agent.py +392 -0
- package/app/packs/fintech/agents/financial-analyst/prompt.yaml +143 -0
- package/app/packs/fintech/agents/risk-manager/__init__.py +5 -0
- package/app/packs/fintech/agents/risk-manager/agent.py +664 -0
- package/app/packs/fintech/agents/risk-manager/prompt.yaml +240 -0
- package/app/tea/agents/tea/__init__.py +9 -0
- package/app/tea/agents/tea/agent.py +689 -0
- package/app/tea/agents/tea/prompt.yaml +100 -0
- package/banner-bmad-method.png +0 -0
- package/docs/404.md +9 -0
- package/docs/_STYLE_GUIDE.md +370 -0
- package/docs/explanation/advanced-elicitation.md +49 -0
- package/docs/explanation/adversarial-review.md +59 -0
- package/docs/explanation/brainstorming.md +33 -0
- package/docs/explanation/established-projects-faq.md +50 -0
- package/docs/explanation/party-mode.md +59 -0
- package/docs/explanation/preventing-agent-conflicts.md +112 -0
- package/docs/explanation/project-context.md +157 -0
- package/docs/explanation/quick-flow.md +73 -0
- package/docs/explanation/why-solutioning-matters.md +77 -0
- package/docs/how-to/customize-bmad.md +172 -0
- package/docs/how-to/established-projects.md +117 -0
- package/docs/how-to/get-answers-about-bmad.md +134 -0
- package/docs/how-to/install-bmad.md +97 -0
- package/docs/how-to/non-interactive-installation.md +171 -0
- package/docs/how-to/project-context.md +136 -0
- package/docs/how-to/quick-fixes.md +123 -0
- package/docs/how-to/shard-large-documents.md +78 -0
- package/docs/how-to/upgrade-to-v6.md +97 -0
- package/docs/index.md +59 -0
- package/docs/reference/agents.md +28 -0
- package/docs/reference/commands.md +151 -0
- package/docs/reference/modules.md +76 -0
- package/docs/reference/testing.md +106 -0
- package/docs/reference/workflow-map.md +89 -0
- package/docs/roadmap.mdx +136 -0
- package/docs/tutorials/getting-started.md +286 -0
- package/eslint.config.mjs +141 -0
- package/package.json +106 -37
- package/prettier.config.mjs +32 -0
- package/prompts/cis/brainstorming-coach.yaml +53 -0
- package/prompts/cis/creative-problem-solver.yaml +74 -0
- package/prompts/cis/design-thinking-coach.yaml +77 -0
- package/prompts/cis/innovation-strategist.yaml +70 -0
- package/prompts/cis/presentation-master.yaml +62 -0
- package/prompts/cis/storyteller.yaml +99 -0
- package/prompts/core/mdan-master.yaml +105 -0
- package/prompts/mmb/agent-builder.yaml +48 -0
- package/prompts/mmb/module-builder.yaml +50 -0
- package/prompts/mmb/workflow-builder.yaml +52 -0
- package/prompts/mmm/analyst.yaml +62 -0
- package/prompts/mmm/architect.yaml +66 -0
- package/prompts/mmm/dev.yaml +62 -0
- package/prompts/mmm/pm.yaml +64 -0
- package/prompts/mmm/qa.yaml +67 -0
- package/prompts/mmm/quick-flow-solo-dev.yaml +60 -0
- package/prompts/mmm/sm.yaml +61 -0
- package/prompts/mmm/tech-writer.yaml +70 -0
- package/prompts/mmm/ux-designer.yaml +33 -0
- package/prompts/packs/db-optimization/db-performance-analyst.yaml +63 -0
- package/prompts/packs/db-optimization/indexing-specialist.yaml +92 -0
- package/prompts/packs/db-optimization/query-optimizer.yaml +74 -0
- package/prompts/packs/devops-azure/azure-specialist.yaml +301 -0
- package/prompts/packs/devops-azure/cicd-architect.yaml +409 -0
- package/prompts/packs/devops-azure/devops-engineer.yaml +263 -0
- package/prompts/packs/fintech/compliance-officer.yaml +135 -0
- package/prompts/packs/fintech/financial-analyst.yaml +143 -0
- package/prompts/packs/fintech/risk-manager.yaml +240 -0
- package/prompts/tea/tea.yaml +100 -0
- package/prompts.json +237 -0
- package/src/bmm/agents/analyst.agent.yaml +43 -0
- package/src/bmm/agents/architect.agent.yaml +29 -0
- package/src/bmm/agents/dev.agent.yaml +38 -0
- package/src/bmm/agents/pm.agent.yaml +44 -0
- package/src/bmm/agents/qa.agent.yaml +58 -0
- package/src/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
- package/src/bmm/agents/sm.agent.yaml +37 -0
- package/src/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/src/bmm/agents/tech-writer/tech-writer.agent.yaml +46 -0
- package/src/bmm/agents/ux-designer.agent.yaml +27 -0
- package/src/bmm/data/project-context-template.md +26 -0
- package/src/bmm/module-help.csv +31 -0
- package/src/bmm/module.yaml +50 -0
- package/src/bmm/teams/default-party.csv +20 -0
- package/src/bmm/teams/team-fullstack.yaml +12 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/src/bmm/workflows/1-analysis/create-product-brief/workflow.md +57 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/src/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +444 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/src/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
- package/src/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +233 -0
- package/src/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +487 -0
- package/src/bmm/workflows/1-analysis/research/workflow-domain-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-market-research.md +54 -0
- package/src/bmm/workflows/1-analysis/research/workflow-technical-research.md +54 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01-init.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-01b-continue.md +152 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02-discovery.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02b-vision.md +154 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-02c-executive-summary.md +170 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-03-success.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-04-journeys.md +213 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-05-domain.md +207 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-06-innovation.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-07-project-type.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-08-scoping.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-09-functional.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-10-nonfunctional.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-11-polish.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-c/step-12-complete.md +124 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01-discovery.md +247 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-02-review.md +249 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-03-edit.md +253 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-e/step-e-04-complete.md +168 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +226 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +231 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/templates/prd-template.md +10 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-create-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-edit-prd.md +65 -0
- package/src/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +63 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/src/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +42 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +184 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +172 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +173 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +133 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +245 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +129 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/src/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +54 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +13 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +173 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +329 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/src/bmm/workflows/3-solutioning/create-architecture/workflow.md +49 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/src/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +58 -0
- package/src/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/src/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/src/bmm/workflows/4-implementation/code-review/workflow.yaml +43 -0
- package/src/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/src/bmm/workflows/4-implementation/correct-course/instructions.md +207 -0
- package/src/bmm/workflows/4-implementation/correct-course/workflow.yaml +53 -0
- package/src/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/src/bmm/workflows/4-implementation/create-story/instructions.xml +346 -0
- package/src/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/src/bmm/workflows/4-implementation/create-story/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/src/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/src/bmm/workflows/4-implementation/dev-story/workflow.yaml +20 -0
- package/src/bmm/workflows/4-implementation/retrospective/instructions.md +1444 -0
- package/src/bmm/workflows/4-implementation/retrospective/workflow.yaml +52 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/instructions.md +226 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/src/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +47 -0
- package/src/bmm/workflows/4-implementation/sprint-status/instructions.md +230 -0
- package/src/bmm/workflows/4-implementation/sprint-status/workflow.yaml +25 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +174 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +118 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +111 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +104 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +146 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +143 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +126 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +200 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/src/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/src/bmm/workflows/document-project/checklist.md +245 -0
- package/src/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/src/bmm/workflows/document-project/instructions.md +130 -0
- package/src/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/src/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/src/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/src/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/src/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/src/bmm/workflows/document-project/workflow.yaml +22 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/src/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/src/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/src/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/src/bmm/workflows/generate-project-context/project-context-template.md +21 -0
- package/src/bmm/workflows/generate-project-context/steps/step-01-discover.md +184 -0
- package/src/bmm/workflows/generate-project-context/steps/step-02-generate.md +318 -0
- package/src/bmm/workflows/generate-project-context/steps/step-03-complete.md +278 -0
- package/src/bmm/workflows/generate-project-context/workflow.md +49 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/checklist.md +33 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/instructions.md +110 -0
- package/src/bmm/workflows/qa-generate-e2e-tests/workflow.yaml +42 -0
- package/src/core/agents/bmad-master.agent.yaml +30 -0
- package/src/core/module-help.csv +9 -0
- package/src/core/module.yaml +25 -0
- package/src/core/tasks/editorial-review-prose.xml +102 -0
- package/src/core/tasks/editorial-review-structure.xml +208 -0
- package/src/core/tasks/help.md +86 -0
- package/src/core/tasks/index-docs.xml +65 -0
- package/src/core/tasks/review-adversarial-general.xml +49 -0
- package/src/core/tasks/shard-doc.xml +108 -0
- package/src/core/tasks/workflow.xml +235 -0
- package/src/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/src/core/workflows/advanced-elicitation/workflow.xml +118 -0
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/src/core/workflows/brainstorming/template.md +15 -0
- package/src/core/workflows/brainstorming/workflow.md +58 -0
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/src/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +168 -0
- package/src/core/workflows/party-mode/workflow.md +194 -0
- package/src/utility/agent-components/activation-rules.txt +6 -0
- package/src/utility/agent-components/activation-steps.txt +14 -0
- package/src/utility/agent-components/agent-command-header.md +1 -0
- package/src/utility/agent-components/agent.customize.template.yaml +41 -0
- package/src/utility/agent-components/handler-action.txt +4 -0
- package/src/utility/agent-components/handler-data.txt +5 -0
- package/src/utility/agent-components/handler-exec.txt +6 -0
- package/src/utility/agent-components/handler-multi.txt +14 -0
- package/src/utility/agent-components/handler-tmpl.txt +5 -0
- package/src/utility/agent-components/handler-validate-workflow.txt +7 -0
- package/src/utility/agent-components/handler-workflow.txt +10 -0
- package/src/utility/agent-components/menu-handlers.txt +6 -0
- package/test/README.md +295 -0
- package/test/adversarial-review-tests/README.md +56 -0
- package/test/adversarial-review-tests/sample-content.md +46 -0
- package/test/adversarial-review-tests/test-cases.yaml +103 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/actions-as-string.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/critical-actions/empty-string-in-actions.agent.yaml +30 -0
- package/test/fixtures/agent-schema/invalid/menu/empty-menu.agent.yaml +22 -0
- package/test/fixtures/agent-schema/invalid/menu/missing-menu.agent.yaml +20 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/empty-command-target.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-commands/no-command-target.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/camel-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/duplicate-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/empty-trigger.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/leading-asterisk.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/snake-case.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/trigger-with-spaces.agent.yaml +25 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-module-string.agent.yaml +26 -0
- package/test/fixtures/agent-schema/invalid/metadata/empty-name.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/metadata/extra-metadata-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/metadata/missing-id.agent.yaml +23 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-principles-array.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/persona/empty-string-in-principles.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/extra-persona-fields.agent.yaml +27 -0
- package/test/fixtures/agent-schema/invalid/persona/missing-role.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/prompts/empty-content.agent.yaml +29 -0
- package/test/fixtures/agent-schema/invalid/prompts/extra-prompt-fields.agent.yaml +31 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-content.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/prompts/missing-id.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/empty-file.agent.yaml +5 -0
- package/test/fixtures/agent-schema/invalid/top-level/extra-top-level-keys.agent.yaml +28 -0
- package/test/fixtures/agent-schema/invalid/top-level/missing-agent-key.agent.yaml +11 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/invalid-indentation.agent.yaml +19 -0
- package/test/fixtures/agent-schema/invalid/yaml-errors/malformed-yaml.agent.yaml +18 -0
- package/test/fixtures/agent-schema/valid/critical-actions/empty-critical-actions.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/critical-actions/no-critical-actions.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/critical-actions/valid-critical-actions.agent.yaml +27 -0
- package/test/fixtures/agent-schema/valid/menu/multiple-menu-items.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu/single-menu-item.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +38 -0
- package/test/fixtures/agent-schema/valid/menu-commands/multiple-commands.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +31 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/kebab-case-triggers.agent.yaml +34 -0
- package/test/fixtures/agent-schema/valid/metadata/core-agent-with-module.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/empty-module-name-in-path.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/malformed-path-treated-as-core.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-correct.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/metadata/module-agent-missing-module.agent.yaml +23 -0
- package/test/fixtures/agent-schema/valid/metadata/wrong-module-value.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/persona/complete-persona.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/empty-prompts.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/prompts/no-prompts.agent.yaml +22 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-minimal.agent.yaml +28 -0
- package/test/fixtures/agent-schema/valid/prompts/valid-prompts-with-description.agent.yaml +30 -0
- package/test/fixtures/agent-schema/valid/top-level/minimal-core-agent.agent.yaml +24 -0
- package/test/fixtures/file-refs-csv/invalid/all-empty-workflow.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/empty-data.csv +1 -0
- package/test/fixtures/file-refs-csv/invalid/no-workflow-column.csv +3 -0
- package/test/fixtures/file-refs-csv/invalid/unresolvable-vars.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/bmm-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/core-style.csv +3 -0
- package/test/fixtures/file-refs-csv/valid/minimal.csv +2 -0
- package/test/test-agent-schema.js +387 -0
- package/test/test-cli-integration.sh +159 -0
- package/test/test-file-refs-csv.js +133 -0
- package/test/test-installation-components.js +212 -0
- package/test/test-rehype-plugins.mjs +1050 -0
- package/test/unit-test-schema.js +133 -0
- package/tests/run_all_tests.py +80 -0
- package/tests/scenarios/cis/brainstorming-coach.test.py +150 -0
- package/tests/scenarios/cis/creative-problem-solver.test.py +167 -0
- package/tests/scenarios/cis/design-thinking-coach.test.py +177 -0
- package/tests/scenarios/cis/innovation-strategist.test.py +191 -0
- package/tests/scenarios/cis/presentation-master.test.py +240 -0
- package/tests/scenarios/cis/storyteller.test.py +324 -0
- package/tests/scenarios/core/mdan-master.test.py +281 -0
- package/tests/scenarios/mmb/agent-builder.test.py +124 -0
- package/tests/scenarios/mmb/module-builder.test.py +124 -0
- package/tests/scenarios/mmb/workflow-builder.test.py +124 -0
- package/tests/scenarios/mmm/analyst.test.py +138 -0
- package/tests/scenarios/mmm/architect.test.py +138 -0
- package/tests/scenarios/mmm/dev.test.py +138 -0
- package/tests/scenarios/mmm/pm.test.py +138 -0
- package/tests/scenarios/mmm/qa.test.py +138 -0
- package/tests/scenarios/mmm/quick-flow-solo-dev.test.py +138 -0
- package/tests/scenarios/mmm/sm.test.py +138 -0
- package/tests/scenarios/mmm/tech-writer.test.py +138 -0
- package/tests/scenarios/mmm/ux-designer.test.py +294 -0
- package/tests/scenarios/packs/db-optimization/db-performance-analyst.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/indexing-specialist.test.py +108 -0
- package/tests/scenarios/packs/db-optimization/query-optimizer.test.py +106 -0
- package/tests/scenarios/packs/devops-azure/azure-specialist.test.py +125 -0
- package/tests/scenarios/packs/devops-azure/cicd-architect.test.py +122 -0
- package/tests/scenarios/packs/devops-azure/devops-engineer.test.py +128 -0
- package/tests/scenarios/packs/fintech/compliance-officer.test.py +165 -0
- package/tests/scenarios/packs/fintech/financial-analyst.test.py +184 -0
- package/tests/scenarios/packs/fintech/risk-manager.test.py +171 -0
- package/tests/scenarios/tea/tea.test.py +346 -0
- package/tests/simple_cis_test.py +285 -0
- package/tests/simple_db_optimization_test.py +199 -0
- package/tests/simple_devops_test.py +193 -0
- package/tests/simple_fintech_test.py +205 -0
- package/tests/simple_mmb_test.py +103 -0
- package/tests/simple_mmm_test.py +159 -0
- package/tests/simple_tea_test.py +80 -0
- package/tests/simple_test.py +111 -0
- package/tests/simple_ux_designer_test.py +144 -0
- package/tests/validate_yaml.py +86 -0
- package/tools/bmad-npx-wrapper.js +38 -0
- package/tools/build-docs.mjs +463 -0
- package/tools/cli/README.md +60 -0
- package/tools/cli/bmad-cli.js +106 -0
- package/tools/cli/commands/install.js +87 -0
- package/tools/cli/commands/status.js +65 -0
- package/tools/cli/commands/uninstall.js +167 -0
- package/tools/cli/external-official-modules.yaml +53 -0
- package/tools/cli/installers/install-messages.yaml +39 -0
- package/tools/cli/installers/lib/core/config-collector.js +1285 -0
- package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
- package/tools/cli/installers/lib/core/dependency-resolver.js +743 -0
- package/tools/cli/installers/lib/core/detector.js +223 -0
- package/tools/cli/installers/lib/core/ide-config-manager.js +157 -0
- package/tools/cli/installers/lib/core/installer.js +3162 -0
- package/tools/cli/installers/lib/core/manifest-generator.js +1081 -0
- package/tools/cli/installers/lib/core/manifest.js +1038 -0
- package/tools/cli/installers/lib/custom/handler.js +358 -0
- package/tools/cli/installers/lib/ide/_base-ide.js +665 -0
- package/tools/cli/installers/lib/ide/_config-driven.js +634 -0
- package/tools/cli/installers/lib/ide/codex.js +440 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +699 -0
- package/tools/cli/installers/lib/ide/kilo.js +269 -0
- package/tools/cli/installers/lib/ide/manager.js +342 -0
- package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
- package/tools/cli/installers/lib/ide/platform-codes.yaml +243 -0
- package/tools/cli/installers/lib/ide/rovodev.js +257 -0
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +180 -0
- package/tools/cli/installers/lib/ide/shared/bmad-artifacts.js +174 -0
- package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
- package/tools/cli/installers/lib/ide/shared/path-utils.js +299 -0
- package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +366 -0
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +318 -0
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow-yaml.md +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow-yaml.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +13 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +16 -0
- package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
- package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
- package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +13 -0
- package/tools/cli/installers/lib/ide/templates/workflow-commander.md +5 -0
- package/tools/cli/installers/lib/message-loader.js +83 -0
- package/tools/cli/installers/lib/modules/external-manager.js +136 -0
- package/tools/cli/installers/lib/modules/manager.js +1498 -0
- package/tools/cli/lib/activation-builder.js +165 -0
- package/tools/cli/lib/agent/compiler.js +525 -0
- package/tools/cli/lib/agent/installer.js +680 -0
- package/tools/cli/lib/agent/template-engine.js +152 -0
- package/tools/cli/lib/agent-analyzer.js +109 -0
- package/tools/cli/lib/agent-party-generator.js +194 -0
- package/tools/cli/lib/cli-utils.js +182 -0
- package/tools/cli/lib/config.js +213 -0
- package/tools/cli/lib/file-ops.js +204 -0
- package/tools/cli/lib/platform-codes.js +116 -0
- package/tools/cli/lib/project-root.js +77 -0
- package/tools/cli/lib/prompts.js +809 -0
- package/tools/cli/lib/ui.js +1936 -0
- package/tools/cli/lib/xml-handler.js +177 -0
- package/tools/cli/lib/xml-to-markdown.js +82 -0
- package/tools/cli/lib/yaml-format.js +245 -0
- package/tools/cli/lib/yaml-xml-builder.js +587 -0
- package/tools/docs/_prompt-external-modules-page.md +59 -0
- package/tools/docs/fix-refs.md +91 -0
- package/tools/fix-doc-links.js +285 -0
- package/tools/format-workflow-md.js +263 -0
- package/tools/lib/xml-utils.js +13 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/tools/platform-codes.yaml +157 -0
- package/tools/schema/agent.js +491 -0
- package/tools/validate-agent-schema.js +110 -0
- package/tools/validate-doc-links.js +407 -0
- package/tools/validate-file-refs.js +554 -0
- package/tools/validate-svg-changes.sh +356 -0
- package/website/README.md +75 -0
- package/website/astro.config.mjs +136 -0
- package/website/public/favicon.ico +0 -0
- package/website/public/img/bmad-dark.png +0 -0
- package/website/public/img/bmad-light.png +0 -0
- package/website/public/workflow-map-diagram.html +361 -0
- package/website/src/components/Banner.astro +62 -0
- package/website/src/components/Header.astro +96 -0
- package/website/src/components/MobileMenuFooter.astro +33 -0
- package/website/src/content/config.ts +6 -0
- package/website/src/lib/site-url.mjs +25 -0
- package/website/src/pages/404.astro +11 -0
- package/website/src/pages/robots.txt.ts +48 -0
- package/website/src/rehype-base-paths.js +112 -0
- package/website/src/rehype-markdown-links.js +119 -0
- package/website/src/styles/custom.css +805 -0
- package/.mcp.json +0 -46
- package/agents/AGENTS-REGISTRY.md +0 -215
- package/agents/architect.md +0 -160
- package/agents/dev.md +0 -166
- package/agents/devops.md +0 -230
- package/agents/doc.md +0 -189
- package/agents/learn.md +0 -377
- package/agents/product.md +0 -124
- package/agents/security.md +0 -168
- package/agents/test.md +0 -209
- package/agents/ux.md +0 -207
- package/cli/mdan.js +0 -628
- package/cli/mdan.py +0 -316
- package/cli/mdan.sh +0 -724
- package/cli/postinstall.js +0 -4
- package/core/orchestrator.md +0 -238
- package/core/universal-envelope.md +0 -160
- package/install.sh +0 -91
- package/integrations/all-integrations.md +0 -300
- package/integrations/claude.md +0 -46
- package/integrations/cursor.md +0 -74
- package/integrations/mcp.md +0 -153
- package/integrations/windsurf.md +0 -48
- package/memory/MDAN-STATE.template.json +0 -44
- package/memory/MEMORY-SYSTEM.md +0 -197
- package/phases/01-discover.md +0 -136
- package/phases/02-design.md +0 -147
- package/phases/03-build.md +0 -113
- package/phases/04-verify.md +0 -107
- package/phases/05-ship.md +0 -156
- package/skills/find-skills/skill.md +0 -133
- package/templates/ARCHITECTURE.md +0 -186
- package/templates/CHANGELOG.md +0 -41
- package/templates/MDAN-KNOWLEDGE.md +0 -73
- package/templates/PRD.md +0 -120
- package/templates/SECURITY-REVIEW.md +0 -99
- package/templates/TEST-PLAN.md +0 -97
- package/templates/prompts/README.md +0 -108
- package/templates/prompts/dev-agent.yaml +0 -85
- package/templates/prompts/orchestrator.yaml +0 -97
- package/templates/prompts.json +0 -81
- package/templates/tests/evaluations/README.md +0 -80
- package/templates/tests/evaluations/classification_eval.md +0 -136
- package/templates/tests/evaluations/rag_eval.md +0 -116
- package/templates/tests/scenarios/README.md +0 -62
- package/templates/tests/scenarios/basic_authentication.test.md +0 -82
- package/templates/tests/scenarios/user_registration.test.md +0 -107
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Scenario tests for the Dev agent."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
from mmm.agents.dev.agent import Dev
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def test_dev_feature_implementation():
|
|
14
|
+
"""Test feature implementation capability."""
|
|
15
|
+
agent = Dev()
|
|
16
|
+
|
|
17
|
+
result = await agent.process(
|
|
18
|
+
"Implement a user authentication feature with login and registration"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
assert result is not None
|
|
22
|
+
assert len(result) > 0
|
|
23
|
+
assert "implement" in result.lower() or "code" in result.lower()
|
|
24
|
+
print("✓ test_dev_feature_implementation passed")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_dev_bug_fixing():
|
|
28
|
+
"""Test bug fixing capability."""
|
|
29
|
+
agent = Dev()
|
|
30
|
+
|
|
31
|
+
result = await agent.process(
|
|
32
|
+
"Fix a bug where the application crashes when uploading large files"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
assert result is not None
|
|
36
|
+
assert len(result) > 0
|
|
37
|
+
assert "fix" in result.lower() or "bug" in result.lower()
|
|
38
|
+
print("✓ test_dev_bug_fixing passed")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def test_dev_code_refactoring():
|
|
42
|
+
"""Test code refactoring capability."""
|
|
43
|
+
agent = Dev()
|
|
44
|
+
|
|
45
|
+
result = await agent.process(
|
|
46
|
+
"Refactor a monolithic user service into smaller, more maintainable modules"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
assert "refactor" in result.lower() or "improve" in result.lower()
|
|
52
|
+
print("✓ test_dev_code_refactoring passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_dev_api_development():
|
|
56
|
+
"""Test API development capability."""
|
|
57
|
+
agent = Dev()
|
|
58
|
+
|
|
59
|
+
result = await agent.process(
|
|
60
|
+
"Develop RESTful API endpoints for managing products in an e-commerce system"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "api" in result.lower() or "endpoint" in result.lower()
|
|
66
|
+
print("✓ test_dev_api_development passed")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def test_dev_database_integration():
|
|
70
|
+
"""Test database integration capability."""
|
|
71
|
+
agent = Dev()
|
|
72
|
+
|
|
73
|
+
result = await agent.process(
|
|
74
|
+
"Integrate PostgreSQL database with a Node.js application using Prisma ORM"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert "database" in result.lower() or "integration" in result.lower()
|
|
80
|
+
print("✓ test_dev_database_integration passed")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def test_dev_testing():
|
|
84
|
+
"""Test testing capability."""
|
|
85
|
+
agent = Dev()
|
|
86
|
+
|
|
87
|
+
result = await agent.process(
|
|
88
|
+
"Write unit tests for a user service with authentication and authorization"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
assert result is not None
|
|
92
|
+
assert len(result) > 0
|
|
93
|
+
assert "test" in result.lower() or "testing" in result.lower()
|
|
94
|
+
print("✓ test_dev_testing passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_dev_code_review():
|
|
98
|
+
"""Test code review capability."""
|
|
99
|
+
agent = Dev()
|
|
100
|
+
|
|
101
|
+
result = await agent.process(
|
|
102
|
+
"Review a pull request for a new feature and provide feedback on code quality and best practices"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert len(result) > 0
|
|
107
|
+
assert "review" in result.lower() or "feedback" in result.lower()
|
|
108
|
+
print("✓ test_dev_code_review passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
async def main():
|
|
112
|
+
"""Run all scenario tests."""
|
|
113
|
+
print("Running Dev agent scenario tests...\n")
|
|
114
|
+
|
|
115
|
+
tests = [
|
|
116
|
+
test_dev_feature_implementation,
|
|
117
|
+
test_dev_bug_fixing,
|
|
118
|
+
test_dev_code_refactoring,
|
|
119
|
+
test_dev_api_development,
|
|
120
|
+
test_dev_database_integration,
|
|
121
|
+
test_dev_testing,
|
|
122
|
+
test_dev_code_review,
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for test in tests:
|
|
126
|
+
try:
|
|
127
|
+
await test()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f"✗ {test.__name__} failed: {e}")
|
|
130
|
+
import traceback
|
|
131
|
+
|
|
132
|
+
traceback.print_exc()
|
|
133
|
+
|
|
134
|
+
print("\nAll Dev agent scenario tests completed!")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Scenario tests for the PM agent."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
from mmm.agents.pm.agent import PM
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def test_pm_project_planning():
|
|
14
|
+
"""Test project planning capability."""
|
|
15
|
+
agent = PM()
|
|
16
|
+
|
|
17
|
+
result = await agent.process(
|
|
18
|
+
"Create a project plan for building a mobile banking application with a 6-month timeline"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
assert result is not None
|
|
22
|
+
assert len(result) > 0
|
|
23
|
+
assert "project" in result.lower() or "plan" in result.lower()
|
|
24
|
+
print("✓ test_pm_project_planning passed")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_pm_backlog_management():
|
|
28
|
+
"""Test backlog management capability."""
|
|
29
|
+
agent = PM()
|
|
30
|
+
|
|
31
|
+
result = await agent.process(
|
|
32
|
+
"Organize and prioritize the product backlog for an e-commerce platform"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
assert result is not None
|
|
36
|
+
assert len(result) > 0
|
|
37
|
+
assert "backlog" in result.lower() or "priorit" in result.lower()
|
|
38
|
+
print("✓ test_pm_backlog_management passed")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def test_pm_sprint_planning():
|
|
42
|
+
"""Test sprint planning capability."""
|
|
43
|
+
agent = PM()
|
|
44
|
+
|
|
45
|
+
result = await agent.process(
|
|
46
|
+
"Plan a 2-week sprint for a development team working on a task management application"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
assert "sprint" in result.lower() or "iteration" in result.lower()
|
|
52
|
+
print("✓ test_pm_sprint_planning passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_pm_stakeholder_communication():
|
|
56
|
+
"""Test stakeholder communication capability."""
|
|
57
|
+
agent = PM()
|
|
58
|
+
|
|
59
|
+
result = await agent.process(
|
|
60
|
+
"Prepare a status report for stakeholders on the progress of a healthcare system project"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "stakeholder" in result.lower() or "report" in result.lower()
|
|
66
|
+
print("✓ test_pm_stakeholder_communication passed")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def test_pm_risk_management():
|
|
70
|
+
"""Test risk management capability."""
|
|
71
|
+
agent = PM()
|
|
72
|
+
|
|
73
|
+
result = await agent.process(
|
|
74
|
+
"Identify and mitigate risks for a critical financial system migration project"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert "risk" in result.lower() or "mitigat" in result.lower()
|
|
80
|
+
print("✓ test_pm_risk_management passed")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def test_pm_resource_allocation():
|
|
84
|
+
"""Test resource allocation capability."""
|
|
85
|
+
agent = PM()
|
|
86
|
+
|
|
87
|
+
result = await agent.process(
|
|
88
|
+
"Allocate resources for a team of 8 developers working on multiple concurrent projects"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
assert result is not None
|
|
92
|
+
assert len(result) > 0
|
|
93
|
+
assert "resource" in result.lower() or "team" in result.lower()
|
|
94
|
+
print("✓ test_pm_resource_allocation passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_pm_roadmap_creation():
|
|
98
|
+
"""Test roadmap creation capability."""
|
|
99
|
+
agent = PM()
|
|
100
|
+
|
|
101
|
+
result = await agent.process(
|
|
102
|
+
"Create a product roadmap for a SaaS platform for the next 12 months"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert len(result) > 0
|
|
107
|
+
assert "roadmap" in result.lower() or "timeline" in result.lower()
|
|
108
|
+
print("✓ test_pm_roadmap_creation passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
async def main():
|
|
112
|
+
"""Run all scenario tests."""
|
|
113
|
+
print("Running PM agent scenario tests...\n")
|
|
114
|
+
|
|
115
|
+
tests = [
|
|
116
|
+
test_pm_project_planning,
|
|
117
|
+
test_pm_backlog_management,
|
|
118
|
+
test_pm_sprint_planning,
|
|
119
|
+
test_pm_stakeholder_communication,
|
|
120
|
+
test_pm_risk_management,
|
|
121
|
+
test_pm_resource_allocation,
|
|
122
|
+
test_pm_roadmap_creation,
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for test in tests:
|
|
126
|
+
try:
|
|
127
|
+
await test()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f"✗ {test.__name__} failed: {e}")
|
|
130
|
+
import traceback
|
|
131
|
+
|
|
132
|
+
traceback.print_exc()
|
|
133
|
+
|
|
134
|
+
print("\nAll PM agent scenario tests completed!")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Scenario tests for the QA agent."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
from mmm.agents.qa.agent import QA
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def test_qa_test_plan_creation():
|
|
14
|
+
"""Test test plan creation capability."""
|
|
15
|
+
agent = QA()
|
|
16
|
+
|
|
17
|
+
result = await agent.process(
|
|
18
|
+
"Create a comprehensive test plan for a user authentication system"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
assert result is not None
|
|
22
|
+
assert len(result) > 0
|
|
23
|
+
assert "test plan" in result.lower() or "testing" in result.lower()
|
|
24
|
+
print("✓ test_qa_test_plan_creation passed")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_qa_test_case_design():
|
|
28
|
+
"""Test test case design capability."""
|
|
29
|
+
agent = QA()
|
|
30
|
+
|
|
31
|
+
result = await agent.process(
|
|
32
|
+
"Design test cases for a shopping cart feature with various edge cases"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
assert result is not None
|
|
36
|
+
assert len(result) > 0
|
|
37
|
+
assert "test case" in result.lower() or "scenario" in result.lower()
|
|
38
|
+
print("✓ test_qa_test_case_design passed")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def test_qa_automated_testing():
|
|
42
|
+
"""Test automated testing capability."""
|
|
43
|
+
agent = QA()
|
|
44
|
+
|
|
45
|
+
result = await agent.process(
|
|
46
|
+
"Create automated tests for a REST API using Cypress or Playwright"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
assert "automated" in result.lower() or "automation" in result.lower()
|
|
52
|
+
print("✓ test_qa_automated_testing passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_qa_bug_reporting():
|
|
56
|
+
"""Test bug reporting capability."""
|
|
57
|
+
agent = QA()
|
|
58
|
+
|
|
59
|
+
result = await agent.process(
|
|
60
|
+
"Report a bug found during testing with detailed steps to reproduce"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "bug" in result.lower() or "issue" in result.lower()
|
|
66
|
+
print("✓ test_qa_bug_reporting passed")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def test_qa_regression_testing():
|
|
70
|
+
"""Test regression testing capability."""
|
|
71
|
+
agent = QA()
|
|
72
|
+
|
|
73
|
+
result = await agent.process(
|
|
74
|
+
"Design a regression testing strategy for a major application update"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert "regression" in result.lower() or "regress" in result.lower()
|
|
80
|
+
print("✓ test_qa_regression_testing passed")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def test_qa_performance_testing():
|
|
84
|
+
"""Test performance testing capability."""
|
|
85
|
+
agent = QA()
|
|
86
|
+
|
|
87
|
+
result = await agent.process(
|
|
88
|
+
"Design performance tests for a high-traffic e-commerce website"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
assert result is not None
|
|
92
|
+
assert len(result) > 0
|
|
93
|
+
assert "performance" in result.lower() or "load" in result.lower()
|
|
94
|
+
print("✓ test_qa_performance_testing passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_qa_security_testing():
|
|
98
|
+
"""Test security testing capability."""
|
|
99
|
+
agent = QA()
|
|
100
|
+
|
|
101
|
+
result = await agent.process(
|
|
102
|
+
"Design security tests for a financial application handling sensitive data"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert len(result) > 0
|
|
107
|
+
assert "security" in result.lower() or "vulnerability" in result.lower()
|
|
108
|
+
print("✓ test_qa_security_testing passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
async def main():
|
|
112
|
+
"""Run all scenario tests."""
|
|
113
|
+
print("Running QA agent scenario tests...\n")
|
|
114
|
+
|
|
115
|
+
tests = [
|
|
116
|
+
test_qa_test_plan_creation,
|
|
117
|
+
test_qa_test_case_design,
|
|
118
|
+
test_qa_automated_testing,
|
|
119
|
+
test_qa_bug_reporting,
|
|
120
|
+
test_qa_regression_testing,
|
|
121
|
+
test_qa_performance_testing,
|
|
122
|
+
test_qa_security_testing,
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for test in tests:
|
|
126
|
+
try:
|
|
127
|
+
await test()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f"✗ {test.__name__} failed: {e}")
|
|
130
|
+
import traceback
|
|
131
|
+
|
|
132
|
+
traceback.print_exc()
|
|
133
|
+
|
|
134
|
+
print("\nAll QA agent scenario tests completed!")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Scenario tests for the Quick Flow Solo Dev agent."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
from mmm.agents.quick_flow_solo_dev.agent import QuickFlowSoloDev
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def test_quick_flow_full_feature():
|
|
14
|
+
"""Test full feature development capability."""
|
|
15
|
+
agent = QuickFlowSoloDev()
|
|
16
|
+
|
|
17
|
+
result = await agent.process(
|
|
18
|
+
"Build a complete user authentication feature with login, registration, and password reset"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
assert result is not None
|
|
22
|
+
assert len(result) > 0
|
|
23
|
+
assert "feature" in result.lower() or "implement" in result.lower()
|
|
24
|
+
print("✓ test_quick_flow_full_feature passed")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_quick_flow_rapid_prototyping():
|
|
28
|
+
"""Test rapid prototyping capability."""
|
|
29
|
+
agent = QuickFlowSoloDev()
|
|
30
|
+
|
|
31
|
+
result = await agent.process(
|
|
32
|
+
"Create a quick prototype for a dashboard with charts and data visualization"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
assert result is not None
|
|
36
|
+
assert len(result) > 0
|
|
37
|
+
assert "prototype" in result.lower() or "dashboard" in result.lower()
|
|
38
|
+
print("✓ test_quick_flow_rapid_prototyping passed")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def test_quick_flow_mvp_development():
|
|
42
|
+
"""Test MVP development capability."""
|
|
43
|
+
agent = QuickFlowSoloDev()
|
|
44
|
+
|
|
45
|
+
result = await agent.process(
|
|
46
|
+
"Build an MVP for a task management application with basic CRUD operations"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
assert "mvp" in result.lower() or "minimum viable" in result.lower()
|
|
52
|
+
print("✓ test_quick_flow_mvp_development passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_quick_flow_end_to_end():
|
|
56
|
+
"""Test end-to-end development capability."""
|
|
57
|
+
agent = QuickFlowSoloDev()
|
|
58
|
+
|
|
59
|
+
result = await agent.process(
|
|
60
|
+
"Develop a complete blog application from backend to frontend with authentication"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "end-to-end" in result.lower() or "complete" in result.lower()
|
|
66
|
+
print("✓ test_quick_flow_end_to_end passed")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def test_quick_flow_bug_fixing():
|
|
70
|
+
"""Test quick bug fixing capability."""
|
|
71
|
+
agent = QuickFlowSoloDev()
|
|
72
|
+
|
|
73
|
+
result = await agent.process(
|
|
74
|
+
"Quickly fix a critical bug preventing users from logging in to the application"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert "fix" in result.lower() or "bug" in result.lower()
|
|
80
|
+
print("✓ test_quick_flow_bug_fixing passed")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def test_quick_flow_feature_iteration():
|
|
84
|
+
"""Test feature iteration capability."""
|
|
85
|
+
agent = QuickFlowSoloDev()
|
|
86
|
+
|
|
87
|
+
result = await agent.process(
|
|
88
|
+
"Iterate on an existing feature to add new functionality based on user feedback"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
assert result is not None
|
|
92
|
+
assert len(result) > 0
|
|
93
|
+
assert "iterate" in result.lower() or "improve" in result.lower()
|
|
94
|
+
print("✓ test_quick_flow_feature_iteration passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_quick_flow_deployment():
|
|
98
|
+
"""Test deployment capability."""
|
|
99
|
+
agent = QuickFlowSoloDev()
|
|
100
|
+
|
|
101
|
+
result = await agent.process(
|
|
102
|
+
"Prepare and deploy a web application to production with proper configuration"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert len(result) > 0
|
|
107
|
+
assert "deploy" in result.lower() or "production" in result.lower()
|
|
108
|
+
print("✓ test_quick_flow_deployment passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
async def main():
|
|
112
|
+
"""Run all scenario tests."""
|
|
113
|
+
print("Running Quick Flow Solo Dev agent scenario tests...\n")
|
|
114
|
+
|
|
115
|
+
tests = [
|
|
116
|
+
test_quick_flow_full_feature,
|
|
117
|
+
test_quick_flow_rapid_prototyping,
|
|
118
|
+
test_quick_flow_mvp_development,
|
|
119
|
+
test_quick_flow_end_to_end,
|
|
120
|
+
test_quick_flow_bug_fixing,
|
|
121
|
+
test_quick_flow_feature_iteration,
|
|
122
|
+
test_quick_flow_deployment,
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for test in tests:
|
|
126
|
+
try:
|
|
127
|
+
await test()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f"✗ {test.__name__} failed: {e}")
|
|
130
|
+
import traceback
|
|
131
|
+
|
|
132
|
+
traceback.print_exc()
|
|
133
|
+
|
|
134
|
+
print("\nAll Quick Flow Solo Dev agent scenario tests completed!")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Scenario tests for the Scrum Master agent."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import sys
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
# Add the app directory to the path
|
|
8
|
+
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "app"))
|
|
9
|
+
|
|
10
|
+
from mmm.agents.sm.agent import SM
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
async def test_sm_sprint_facilitation():
|
|
14
|
+
"""Test sprint facilitation capability."""
|
|
15
|
+
agent = SM()
|
|
16
|
+
|
|
17
|
+
result = await agent.process(
|
|
18
|
+
"Facilitate a sprint planning meeting for a team of 6 developers"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
assert result is not None
|
|
22
|
+
assert len(result) > 0
|
|
23
|
+
assert "sprint" in result.lower() or "planning" in result.lower()
|
|
24
|
+
print("✓ test_sm_sprint_facilitation passed")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
async def test_sm_daily_standup():
|
|
28
|
+
"""Test daily standup facilitation capability."""
|
|
29
|
+
agent = SM()
|
|
30
|
+
|
|
31
|
+
result = await agent.process(
|
|
32
|
+
"Facilitate a daily standup meeting and help the team identify blockers"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
assert result is not None
|
|
36
|
+
assert len(result) > 0
|
|
37
|
+
assert "standup" in result.lower() or "daily" in result.lower()
|
|
38
|
+
print("✓ test_sm_daily_standup passed")
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
async def test_sm_retrospective():
|
|
42
|
+
"""Test retrospective facilitation capability."""
|
|
43
|
+
agent = SM()
|
|
44
|
+
|
|
45
|
+
result = await agent.process(
|
|
46
|
+
"Facilitate a sprint retrospective to help the team improve their processes"
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
assert result is not None
|
|
50
|
+
assert len(result) > 0
|
|
51
|
+
assert "retrospective" in result.lower() or "improve" in result.lower()
|
|
52
|
+
print("✓ test_sm_retrospective passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_sm_team_coaching():
|
|
56
|
+
"""Test team coaching capability."""
|
|
57
|
+
agent = SM()
|
|
58
|
+
|
|
59
|
+
result = await agent.process(
|
|
60
|
+
"Coach a team on agile best practices and help them become more self-organizing"
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
assert result is not None
|
|
64
|
+
assert len(result) > 0
|
|
65
|
+
assert "coach" in result.lower() or "agile" in result.lower()
|
|
66
|
+
print("✓ test_sm_team_coaching passed")
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
async def test_sm_blocker_resolution():
|
|
70
|
+
"""Test blocker resolution capability."""
|
|
71
|
+
agent = SM()
|
|
72
|
+
|
|
73
|
+
result = await agent.process(
|
|
74
|
+
"Help the team identify and resolve blockers preventing them from completing their sprint goals"
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
assert result is not None
|
|
78
|
+
assert len(result) > 0
|
|
79
|
+
assert "blocker" in result.lower() or "impediment" in result.lower()
|
|
80
|
+
print("✓ test_sm_blocker_resolution passed")
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
async def test_sm_velocity_tracking():
|
|
84
|
+
"""Test velocity tracking capability."""
|
|
85
|
+
agent = SM()
|
|
86
|
+
|
|
87
|
+
result = await agent.process(
|
|
88
|
+
"Track and analyze team velocity to help with future sprint planning"
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
assert result is not None
|
|
92
|
+
assert len(result) > 0
|
|
93
|
+
assert "velocity" in result.lower() or "metric" in result.lower()
|
|
94
|
+
print("✓ test_sm_velocity_tracking passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_sm_process_improvement():
|
|
98
|
+
"""Test process improvement capability."""
|
|
99
|
+
agent = SM()
|
|
100
|
+
|
|
101
|
+
result = await agent.process(
|
|
102
|
+
"Identify areas for process improvement and suggest changes to make the team more efficient"
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
assert result is not None
|
|
106
|
+
assert len(result) > 0
|
|
107
|
+
assert "process" in result.lower() or "improvement" in result.lower()
|
|
108
|
+
print("✓ test_sm_process_improvement passed")
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
async def main():
|
|
112
|
+
"""Run all scenario tests."""
|
|
113
|
+
print("Running Scrum Master agent scenario tests...\n")
|
|
114
|
+
|
|
115
|
+
tests = [
|
|
116
|
+
test_sm_sprint_facilitation,
|
|
117
|
+
test_sm_daily_standup,
|
|
118
|
+
test_sm_retrospective,
|
|
119
|
+
test_sm_team_coaching,
|
|
120
|
+
test_sm_blocker_resolution,
|
|
121
|
+
test_sm_velocity_tracking,
|
|
122
|
+
test_sm_process_improvement,
|
|
123
|
+
]
|
|
124
|
+
|
|
125
|
+
for test in tests:
|
|
126
|
+
try:
|
|
127
|
+
await test()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
print(f"✗ {test.__name__} failed: {e}")
|
|
130
|
+
import traceback
|
|
131
|
+
|
|
132
|
+
traceback.print_exc()
|
|
133
|
+
|
|
134
|
+
print("\nAll Scrum Master agent scenario tests completed!")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
if __name__ == "__main__":
|
|
138
|
+
asyncio.run(main())
|