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,177 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Scenario tests for Design Thinking Coach agent
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../.."))
|
|
9
|
+
|
|
10
|
+
from app.cis.agents.design_thinking_coach import (
|
|
11
|
+
DesignThinkingCoach,
|
|
12
|
+
DesignThinkingCoachRequest,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def test_design_thinking_full_process():
|
|
17
|
+
"""Test full design thinking process."""
|
|
18
|
+
agent = DesignThinkingCoach()
|
|
19
|
+
request = DesignThinkingCoachRequest(
|
|
20
|
+
challenge="Improve online shopping experience", phase="full"
|
|
21
|
+
)
|
|
22
|
+
result = await agent.process(request)
|
|
23
|
+
assert result["success"] == True
|
|
24
|
+
assert result["agent"] == "Maya"
|
|
25
|
+
assert result["challenge"] == "Improve online shopping experience"
|
|
26
|
+
assert result["phase"] == "full"
|
|
27
|
+
assert "process" in result
|
|
28
|
+
assert "activities" in result
|
|
29
|
+
print("✓ test_design_thinking_full_process passed")
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
async def test_design_thinking_empathize_phase():
|
|
33
|
+
"""Test design thinking with empathize phase."""
|
|
34
|
+
agent = DesignThinkingCoach()
|
|
35
|
+
request = DesignThinkingCoachRequest(
|
|
36
|
+
challenge="Redesign mobile app navigation",
|
|
37
|
+
phase="empathize",
|
|
38
|
+
target_users="Millennial shoppers",
|
|
39
|
+
)
|
|
40
|
+
result = await agent.process(request)
|
|
41
|
+
assert result["success"] == True
|
|
42
|
+
assert result["phase"] == "empathize"
|
|
43
|
+
assert result["target_users"] == "Millennial shoppers"
|
|
44
|
+
# Check that empathize activities are included
|
|
45
|
+
activities = result["activities"]
|
|
46
|
+
assert any(a["phase"] == "Empathize" for a in activities)
|
|
47
|
+
print("✓ test_design_thinking_empathize_phase passed")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
async def test_design_thinking_ideate_phase():
|
|
51
|
+
"""Test design thinking with ideate phase."""
|
|
52
|
+
agent = DesignThinkingCoach()
|
|
53
|
+
request = DesignThinkingCoachRequest(
|
|
54
|
+
challenge="Create new product features", phase="ideate"
|
|
55
|
+
)
|
|
56
|
+
result = await agent.process(request)
|
|
57
|
+
assert result["success"] == True
|
|
58
|
+
assert result["phase"] == "ideate"
|
|
59
|
+
# Check that ideate activities are included
|
|
60
|
+
activities = result["activities"]
|
|
61
|
+
assert any(a["phase"] == "Ideate" for a in activities)
|
|
62
|
+
print("✓ test_design_thinking_ideate_phase passed")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
async def test_design_thinking_with_constraints():
|
|
66
|
+
"""Test design thinking with constraints."""
|
|
67
|
+
agent = DesignThinkingCoach()
|
|
68
|
+
request = DesignThinkingCoachRequest(
|
|
69
|
+
challenge="Design sustainable packaging",
|
|
70
|
+
phase="full",
|
|
71
|
+
constraints="Budget limited, must use recycled materials",
|
|
72
|
+
goals="Reduce environmental impact",
|
|
73
|
+
)
|
|
74
|
+
result = await agent.process(request)
|
|
75
|
+
assert result["success"] == True
|
|
76
|
+
assert result["constraints"] == "Budget limited, must use recycled materials"
|
|
77
|
+
assert result["goals"] == "Reduce environmental impact"
|
|
78
|
+
print("✓ test_design_thinking_with_constraints passed")
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async def test_design_thinking_process_structure():
|
|
82
|
+
"""Test that process structure is generated correctly."""
|
|
83
|
+
agent = DesignThinkingCoach()
|
|
84
|
+
request = DesignThinkingCoachRequest(challenge="Improve customer service")
|
|
85
|
+
result = await agent.process(request)
|
|
86
|
+
assert result["success"] == True
|
|
87
|
+
process = result["process"]
|
|
88
|
+
assert "approach" in process
|
|
89
|
+
if result["phase"] == "full":
|
|
90
|
+
assert "phases" in process
|
|
91
|
+
phases = process["phases"]
|
|
92
|
+
assert "empathize" in phases
|
|
93
|
+
assert "define" in phases
|
|
94
|
+
assert "ideate" in phases
|
|
95
|
+
assert "prototype" in phases
|
|
96
|
+
assert "test" in phases
|
|
97
|
+
print("✓ test_design_thinking_process_structure passed")
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
async def test_design_thinking_activities():
|
|
101
|
+
"""Test that activities are created for each phase."""
|
|
102
|
+
agent = DesignThinkingCoach()
|
|
103
|
+
request = DesignThinkingCoachRequest(
|
|
104
|
+
challenge="Create new user onboarding flow", phase="full"
|
|
105
|
+
)
|
|
106
|
+
result = await agent.process(request)
|
|
107
|
+
assert result["success"] == True
|
|
108
|
+
activities = result["activities"]
|
|
109
|
+
assert len(activities) >= 5
|
|
110
|
+
# Check activity structure
|
|
111
|
+
for activity in activities:
|
|
112
|
+
assert "phase" in activity
|
|
113
|
+
assert "activity" in activity
|
|
114
|
+
assert "description" in activity
|
|
115
|
+
assert "duration" in activity
|
|
116
|
+
print("✓ test_design_thinking_activities passed")
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
async def test_design_thinking_facilitation():
|
|
120
|
+
"""Test that facilitation guidance is provided."""
|
|
121
|
+
agent = DesignThinkingCoach()
|
|
122
|
+
request = DesignThinkingCoachRequest(challenge="Redesign website homepage")
|
|
123
|
+
result = await agent.process(request)
|
|
124
|
+
assert result["success"] == True
|
|
125
|
+
facilitation = result["facilitation"]
|
|
126
|
+
assert "mindset" in facilitation
|
|
127
|
+
assert "tips" in facilitation
|
|
128
|
+
assert "common_pitfalls" in facilitation
|
|
129
|
+
assert "success_metrics" in facilitation
|
|
130
|
+
assert len(facilitation["mindset"]) > 0
|
|
131
|
+
assert len(facilitation["tips"]) > 0
|
|
132
|
+
print("✓ test_design_thinking_facilitation passed")
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
async def test_design_thinking_principles():
|
|
136
|
+
"""Test that design thinking principles are included."""
|
|
137
|
+
agent = DesignThinkingCoach()
|
|
138
|
+
request = DesignThinkingCoachRequest(challenge="Improve product usability")
|
|
139
|
+
result = await agent.process(request)
|
|
140
|
+
assert result["success"] == True
|
|
141
|
+
principles = result["principles"]
|
|
142
|
+
assert len(principles) > 0
|
|
143
|
+
assert "Design is about THEM not us" in principles
|
|
144
|
+
print("✓ test_design_thinking_principles passed")
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
async def test_design_thinking_missing_challenge():
|
|
148
|
+
"""Test design thinking with missing challenge."""
|
|
149
|
+
agent = DesignThinkingCoach()
|
|
150
|
+
request = DesignThinkingCoachRequest(challenge="")
|
|
151
|
+
result = await agent.process(request)
|
|
152
|
+
assert result["success"] == False
|
|
153
|
+
assert "error" in result
|
|
154
|
+
print("✓ test_design_thinking_missing_challenge passed")
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
async def main():
|
|
158
|
+
"""Run all tests."""
|
|
159
|
+
print("Running Design Thinking Coach agent tests...\n")
|
|
160
|
+
|
|
161
|
+
await test_design_thinking_full_process()
|
|
162
|
+
await test_design_thinking_empathize_phase()
|
|
163
|
+
await test_design_thinking_ideate_phase()
|
|
164
|
+
await test_design_thinking_with_constraints()
|
|
165
|
+
await test_design_thinking_process_structure()
|
|
166
|
+
await test_design_thinking_activities()
|
|
167
|
+
await test_design_thinking_facilitation()
|
|
168
|
+
await test_design_thinking_principles()
|
|
169
|
+
await test_design_thinking_missing_challenge()
|
|
170
|
+
|
|
171
|
+
print("\n✅ All Design Thinking Coach tests passed!")
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
if __name__ == "__main__":
|
|
175
|
+
import asyncio
|
|
176
|
+
|
|
177
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Scenario tests for Innovation Strategist agent
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../.."))
|
|
9
|
+
|
|
10
|
+
from app.cis.agents.innovation_strategist import (
|
|
11
|
+
InnovationStrategist,
|
|
12
|
+
InnovationStrategistRequest,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def test_innovation_strategy_basic():
|
|
17
|
+
"""Test basic innovation strategy."""
|
|
18
|
+
agent = InnovationStrategist()
|
|
19
|
+
request = InnovationStrategistRequest(
|
|
20
|
+
market_context="E-commerce industry", goals="disruption"
|
|
21
|
+
)
|
|
22
|
+
result = await agent.process(request)
|
|
23
|
+
assert result["success"] == True
|
|
24
|
+
assert result["agent"] == "Victor"
|
|
25
|
+
assert result["market_context"] == "E-commerce industry"
|
|
26
|
+
assert result["goals"] == "disruption"
|
|
27
|
+
assert "market_analysis" in result
|
|
28
|
+
assert "framework_analysis" in result
|
|
29
|
+
assert "opportunities" in result
|
|
30
|
+
print("✓ test_innovation_strategy_basic passed")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
async def test_innovation_strategy_with_offering():
|
|
34
|
+
"""Test innovation strategy with current offering."""
|
|
35
|
+
agent = InnovationStrategist()
|
|
36
|
+
request = InnovationStrategistRequest(
|
|
37
|
+
market_context="Food delivery market",
|
|
38
|
+
current_offering="Traditional restaurant delivery service",
|
|
39
|
+
goals="disruption",
|
|
40
|
+
timeframe="medium-term",
|
|
41
|
+
)
|
|
42
|
+
result = await agent.process(request)
|
|
43
|
+
assert result["success"] == True
|
|
44
|
+
assert result["current_offering"] == "Traditional restaurant delivery service"
|
|
45
|
+
assert result["timeframe"] == "medium-term"
|
|
46
|
+
print("✓ test_innovation_strategy_with_offering passed")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
async def test_innovation_strategy_short_term():
|
|
50
|
+
"""Test innovation strategy with short-term timeframe."""
|
|
51
|
+
agent = InnovationStrategist()
|
|
52
|
+
request = InnovationStrategistRequest(
|
|
53
|
+
market_context="Mobile app market", goals="growth", timeframe="short-term"
|
|
54
|
+
)
|
|
55
|
+
result = await agent.process(request)
|
|
56
|
+
assert result["success"] == True
|
|
57
|
+
assert result["timeframe"] == "short-term"
|
|
58
|
+
roadmap = result["roadmap"]
|
|
59
|
+
assert "focus" in roadmap
|
|
60
|
+
assert "phases" in roadmap
|
|
61
|
+
print("✓ test_innovation_strategy_short_term passed")
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
async def test_innovation_strategy_long_term():
|
|
65
|
+
"""Test innovation strategy with long-term timeframe."""
|
|
66
|
+
agent = InnovationStrategist()
|
|
67
|
+
request = InnovationStrategistRequest(
|
|
68
|
+
market_context="Automotive industry",
|
|
69
|
+
goals="transformation",
|
|
70
|
+
timeframe="long-term",
|
|
71
|
+
)
|
|
72
|
+
result = await agent.process(request)
|
|
73
|
+
assert result["success"] == True
|
|
74
|
+
assert result["timeframe"] == "long-term"
|
|
75
|
+
roadmap = result["roadmap"]
|
|
76
|
+
assert "focus" in roadmap
|
|
77
|
+
assert "phases" in roadmap
|
|
78
|
+
print("✓ test_innovation_strategy_long_term passed")
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
async def test_innovation_strategy_with_constraints():
|
|
82
|
+
"""Test innovation strategy with constraints."""
|
|
83
|
+
agent = InnovationStrategist()
|
|
84
|
+
request = InnovationStrategistRequest(
|
|
85
|
+
market_context="Healthcare technology",
|
|
86
|
+
current_offering="Basic telemedicine platform",
|
|
87
|
+
goals="disruption",
|
|
88
|
+
constraints="Regulatory compliance required, limited funding",
|
|
89
|
+
timeframe="medium-term",
|
|
90
|
+
)
|
|
91
|
+
result = await agent.process(request)
|
|
92
|
+
assert result["success"] == True
|
|
93
|
+
assert result["constraints"] == "Regulatory compliance required, limited funding"
|
|
94
|
+
print("✓ test_innovation_strategy_with_constraints passed")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
async def test_innovation_strategy_frameworks():
|
|
98
|
+
"""Test that strategic frameworks are applied."""
|
|
99
|
+
agent = InnovationStrategist()
|
|
100
|
+
request = InnovationStrategistRequest(market_context="SaaS market")
|
|
101
|
+
result = await agent.process(request)
|
|
102
|
+
assert result["success"] == True
|
|
103
|
+
frameworks = result["framework_analysis"]
|
|
104
|
+
assert "jobs_to_be_done" in frameworks
|
|
105
|
+
assert "blue_ocean_strategy" in frameworks
|
|
106
|
+
assert "business_model_innovation" in frameworks
|
|
107
|
+
print("✓ test_innovation_strategy_frameworks passed")
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
async def test_innovation_strategy_opportunities():
|
|
111
|
+
"""Test that innovation opportunities are identified."""
|
|
112
|
+
agent = InnovationStrategist()
|
|
113
|
+
request = InnovationStrategistRequest(market_context="Fintech industry")
|
|
114
|
+
result = await agent.process(request)
|
|
115
|
+
assert result["success"] == True
|
|
116
|
+
opportunities = result["opportunities"]
|
|
117
|
+
assert len(opportunities) > 0
|
|
118
|
+
# Check opportunity structure
|
|
119
|
+
for opportunity in opportunities:
|
|
120
|
+
assert "opportunity" in opportunity
|
|
121
|
+
assert "description" in opportunity
|
|
122
|
+
assert "potential_impact" in opportunity
|
|
123
|
+
assert "feasibility" in opportunity
|
|
124
|
+
assert "time_to_market" in opportunity
|
|
125
|
+
print("✓ test_innovation_strategy_opportunities passed")
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
async def test_innovation_strategy_roadmap():
|
|
129
|
+
"""Test that strategic roadmap is created."""
|
|
130
|
+
agent = InnovationStrategist()
|
|
131
|
+
request = InnovationStrategistRequest(
|
|
132
|
+
market_context="Retail industry", timeframe="medium-term"
|
|
133
|
+
)
|
|
134
|
+
result = await agent.process(request)
|
|
135
|
+
assert result["success"] == True
|
|
136
|
+
roadmap = result["roadmap"]
|
|
137
|
+
assert "focus" in roadmap
|
|
138
|
+
assert "phases" in roadmap
|
|
139
|
+
phases = roadmap["phases"]
|
|
140
|
+
assert len(phases) > 0
|
|
141
|
+
# Check phase structure
|
|
142
|
+
for phase in phases:
|
|
143
|
+
assert "phase" in phase
|
|
144
|
+
assert "activities" in phase
|
|
145
|
+
print("✓ test_innovation_strategy_roadmap passed")
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
async def test_innovation_strategy_principles():
|
|
149
|
+
"""Test that innovation principles are included."""
|
|
150
|
+
agent = InnovationStrategist()
|
|
151
|
+
request = InnovationStrategistRequest(market_context="Technology sector")
|
|
152
|
+
result = await agent.process(request)
|
|
153
|
+
assert result["success"] == True
|
|
154
|
+
principles = result["principles"]
|
|
155
|
+
assert len(principles) > 0
|
|
156
|
+
assert "Markets reward genuine new value" in principles
|
|
157
|
+
print("✓ test_innovation_strategy_principles passed")
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
async def test_innovation_strategy_missing_context():
|
|
161
|
+
"""Test innovation strategy with missing market context."""
|
|
162
|
+
agent = InnovationStrategist()
|
|
163
|
+
request = InnovationStrategistRequest(market_context="")
|
|
164
|
+
result = await agent.process(request)
|
|
165
|
+
assert result["success"] == False
|
|
166
|
+
assert "error" in result
|
|
167
|
+
print("✓ test_innovation_strategy_missing_context passed")
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
async def main():
|
|
171
|
+
"""Run all tests."""
|
|
172
|
+
print("Running Innovation Strategist agent tests...\n")
|
|
173
|
+
|
|
174
|
+
await test_innovation_strategy_basic()
|
|
175
|
+
await test_innovation_strategy_with_offering()
|
|
176
|
+
await test_innovation_strategy_short_term()
|
|
177
|
+
await test_innovation_strategy_long_term()
|
|
178
|
+
await test_innovation_strategy_with_constraints()
|
|
179
|
+
await test_innovation_strategy_frameworks()
|
|
180
|
+
await test_innovation_strategy_opportunities()
|
|
181
|
+
await test_innovation_strategy_roadmap()
|
|
182
|
+
await test_innovation_strategy_principles()
|
|
183
|
+
await test_innovation_strategy_missing_context()
|
|
184
|
+
|
|
185
|
+
print("\n✅ All Innovation Strategist tests passed!")
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
if __name__ == "__main__":
|
|
189
|
+
import asyncio
|
|
190
|
+
|
|
191
|
+
asyncio.run(main())
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Scenario tests for Presentation Master agent
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
import os
|
|
7
|
+
|
|
8
|
+
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../../.."))
|
|
9
|
+
|
|
10
|
+
from app.cis.agents.presentation_master import (
|
|
11
|
+
PresentationMaster,
|
|
12
|
+
PresentationMasterRequest,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def test_presentation_slide_deck():
|
|
17
|
+
"""Test slide deck presentation."""
|
|
18
|
+
agent = PresentationMaster()
|
|
19
|
+
request = PresentationMasterRequest(
|
|
20
|
+
presentation_type="slide-deck",
|
|
21
|
+
topic="Company quarterly review",
|
|
22
|
+
audience="Board of directors",
|
|
23
|
+
style="professional",
|
|
24
|
+
)
|
|
25
|
+
result = await agent.process(request)
|
|
26
|
+
assert result["success"] == True
|
|
27
|
+
assert result["agent"] == "Caravaggio"
|
|
28
|
+
assert result["presentation_type"] == "slide-deck"
|
|
29
|
+
assert result["topic"] == "Company quarterly review"
|
|
30
|
+
assert result["audience"] == "Board of directors"
|
|
31
|
+
assert "structure" in result
|
|
32
|
+
assert "visual_design" in result
|
|
33
|
+
print("✓ test_presentation_slide_deck passed")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
async def test_presentation_youtube_explainer():
|
|
37
|
+
"""Test YouTube explainer presentation."""
|
|
38
|
+
agent = PresentationMaster()
|
|
39
|
+
request = PresentationMasterRequest(
|
|
40
|
+
presentation_type="youtube-explainer",
|
|
41
|
+
topic="How blockchain works",
|
|
42
|
+
audience="General public",
|
|
43
|
+
style="engaging",
|
|
44
|
+
length=8,
|
|
45
|
+
)
|
|
46
|
+
result = await agent.process(request)
|
|
47
|
+
assert result["success"] == True
|
|
48
|
+
assert result["presentation_type"] == "youtube-explainer"
|
|
49
|
+
assert result["length"] == 8
|
|
50
|
+
structure = result["structure"]
|
|
51
|
+
assert structure["type"] == "Video explainer layout"
|
|
52
|
+
print("✓ test_presentation_youtube_explainer passed")
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
async def test_presentation_pitch_deck():
|
|
56
|
+
"""Test pitch deck presentation."""
|
|
57
|
+
agent = PresentationMaster()
|
|
58
|
+
request = PresentationMasterRequest(
|
|
59
|
+
presentation_type="pitch-deck",
|
|
60
|
+
topic="AI-powered health monitoring app",
|
|
61
|
+
audience="Venture capitalists",
|
|
62
|
+
style="bold",
|
|
63
|
+
key_messages=[
|
|
64
|
+
"Revolutionary technology",
|
|
65
|
+
"Large market opportunity",
|
|
66
|
+
"Strong team",
|
|
67
|
+
],
|
|
68
|
+
)
|
|
69
|
+
result = await agent.process(request)
|
|
70
|
+
assert result["success"] == True
|
|
71
|
+
assert result["presentation_type"] == "pitch-deck"
|
|
72
|
+
assert result["key_messages"] == [
|
|
73
|
+
"Revolutionary technology",
|
|
74
|
+
"Large market opportunity",
|
|
75
|
+
"Strong team",
|
|
76
|
+
]
|
|
77
|
+
structure = result["structure"]
|
|
78
|
+
assert structure["type"] == "Investor pitch presentation"
|
|
79
|
+
print("✓ test_presentation_pitch_deck passed")
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
async def test_presentation_conference_talk():
|
|
83
|
+
"""Test conference talk presentation."""
|
|
84
|
+
agent = PresentationMaster()
|
|
85
|
+
request = PresentationMasterRequest(
|
|
86
|
+
presentation_type="conference-talk",
|
|
87
|
+
topic="The future of remote work",
|
|
88
|
+
audience="HR professionals",
|
|
89
|
+
style="professional",
|
|
90
|
+
length=30,
|
|
91
|
+
)
|
|
92
|
+
result = await agent.process(request)
|
|
93
|
+
assert result["success"] == True
|
|
94
|
+
assert result["presentation_type"] == "conference-talk"
|
|
95
|
+
assert result["length"] == 30
|
|
96
|
+
structure = result["structure"]
|
|
97
|
+
assert structure["type"] == "Conference or workshop presentation"
|
|
98
|
+
print("✓ test_presentation_conference_talk passed")
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
async def test_presentation_infographic():
|
|
102
|
+
"""Test infographic presentation."""
|
|
103
|
+
agent = PresentationMaster()
|
|
104
|
+
request = PresentationMasterRequest(
|
|
105
|
+
presentation_type="infographic",
|
|
106
|
+
topic="Climate change statistics",
|
|
107
|
+
audience="General public",
|
|
108
|
+
style="bold",
|
|
109
|
+
)
|
|
110
|
+
result = await agent.process(request)
|
|
111
|
+
assert result["success"] == True
|
|
112
|
+
assert result["presentation_type"] == "infographic"
|
|
113
|
+
structure = result["structure"]
|
|
114
|
+
assert structure["type"] == "Information visualization"
|
|
115
|
+
print("✓ test_presentation_infographic passed")
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
async def test_presentation_visual_metaphor():
|
|
119
|
+
"""Test visual metaphor presentation."""
|
|
120
|
+
agent = PresentationMaster()
|
|
121
|
+
request = PresentationMasterRequest(
|
|
122
|
+
presentation_type="visual-metaphor",
|
|
123
|
+
topic="Software development process",
|
|
124
|
+
audience="New developers",
|
|
125
|
+
style="playful",
|
|
126
|
+
)
|
|
127
|
+
result = await agent.process(request)
|
|
128
|
+
assert result["success"] == True
|
|
129
|
+
assert result["presentation_type"] == "visual-metaphor"
|
|
130
|
+
structure = result["structure"]
|
|
131
|
+
assert structure["type"] == "Conceptual illustration"
|
|
132
|
+
print("✓ test_presentation_visual_metaphor passed")
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
async def test_presentation_concept_visual():
|
|
136
|
+
"""Test concept visual presentation."""
|
|
137
|
+
agent = PresentationMaster()
|
|
138
|
+
request = PresentationMasterRequest(
|
|
139
|
+
presentation_type="concept-visual",
|
|
140
|
+
topic="Team collaboration",
|
|
141
|
+
audience="Company employees",
|
|
142
|
+
style="engaging",
|
|
143
|
+
)
|
|
144
|
+
result = await agent.process(request)
|
|
145
|
+
assert result["success"] == True
|
|
146
|
+
assert result["presentation_type"] == "concept-visual"
|
|
147
|
+
structure = result["structure"]
|
|
148
|
+
assert structure["type"] == "Single expressive image"
|
|
149
|
+
print("✓ test_presentation_concept_visual passed")
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
async def test_presentation_visual_design():
|
|
153
|
+
"""Test that visual design guidelines are provided."""
|
|
154
|
+
agent = PresentationMaster()
|
|
155
|
+
request = PresentationMasterRequest(
|
|
156
|
+
presentation_type="slide-deck", topic="Product launch"
|
|
157
|
+
)
|
|
158
|
+
result = await agent.process(request)
|
|
159
|
+
assert result["success"] == True
|
|
160
|
+
visual_design = result["visual_design"]
|
|
161
|
+
assert "visual_hierarchy" in visual_design
|
|
162
|
+
assert "color_palette" in visual_design
|
|
163
|
+
assert "typography" in visual_design
|
|
164
|
+
assert "layout_principles" in visual_design
|
|
165
|
+
print("✓ test_presentation_visual_design passed")
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
async def test_presentation_content_guidance():
|
|
169
|
+
"""Test that content guidance is provided."""
|
|
170
|
+
agent = PresentationMaster()
|
|
171
|
+
request = PresentationMasterRequest(
|
|
172
|
+
presentation_type="slide-deck", topic="Marketing strategy"
|
|
173
|
+
)
|
|
174
|
+
result = await agent.process(request)
|
|
175
|
+
assert result["success"] == True
|
|
176
|
+
content_guidance = result["content_guidance"]
|
|
177
|
+
assert "storytelling" in content_guidance
|
|
178
|
+
assert "content_principles" in content_guidance
|
|
179
|
+
assert "engagement_techniques" in content_guidance
|
|
180
|
+
print("✓ test_presentation_content_guidance passed")
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
async def test_presentation_principles():
|
|
184
|
+
"""Test that presentation principles are included."""
|
|
185
|
+
agent = PresentationMaster()
|
|
186
|
+
request = PresentationMasterRequest(
|
|
187
|
+
presentation_type="slide-deck", topic="Annual report"
|
|
188
|
+
)
|
|
189
|
+
result = await agent.process(request)
|
|
190
|
+
assert result["success"] == True
|
|
191
|
+
principles = result["principles"]
|
|
192
|
+
assert len(principles) > 0
|
|
193
|
+
assert "Know your audience" in principles[0]
|
|
194
|
+
print("✓ test_presentation_principles passed")
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
async def test_presentation_missing_type():
|
|
198
|
+
"""Test presentation with missing type."""
|
|
199
|
+
agent = PresentationMaster()
|
|
200
|
+
request = PresentationMasterRequest(presentation_type="", topic="Some topic")
|
|
201
|
+
result = await agent.process(request)
|
|
202
|
+
assert result["success"] == False
|
|
203
|
+
assert "error" in result
|
|
204
|
+
print("✓ test_presentation_missing_type passed")
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
async def test_presentation_missing_topic():
|
|
208
|
+
"""Test presentation with missing topic."""
|
|
209
|
+
agent = PresentationMaster()
|
|
210
|
+
request = PresentationMasterRequest(presentation_type="slide-deck", topic="")
|
|
211
|
+
result = await agent.process(request)
|
|
212
|
+
assert result["success"] == False
|
|
213
|
+
assert "error" in result
|
|
214
|
+
print("✓ test_presentation_missing_topic passed")
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
async def main():
|
|
218
|
+
"""Run all tests."""
|
|
219
|
+
print("Running Presentation Master agent tests...\n")
|
|
220
|
+
|
|
221
|
+
await test_presentation_slide_deck()
|
|
222
|
+
await test_presentation_youtube_explainer()
|
|
223
|
+
await test_presentation_pitch_deck()
|
|
224
|
+
await test_presentation_conference_talk()
|
|
225
|
+
await test_presentation_infographic()
|
|
226
|
+
await test_presentation_visual_metaphor()
|
|
227
|
+
await test_presentation_concept_visual()
|
|
228
|
+
await test_presentation_visual_design()
|
|
229
|
+
await test_presentation_content_guidance()
|
|
230
|
+
await test_presentation_principles()
|
|
231
|
+
await test_presentation_missing_type()
|
|
232
|
+
await test_presentation_missing_topic()
|
|
233
|
+
|
|
234
|
+
print("\n✅ All Presentation Master tests passed!")
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
if __name__ == "__main__":
|
|
238
|
+
import asyncio
|
|
239
|
+
|
|
240
|
+
asyncio.run(main())
|