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,689 @@
|
|
|
1
|
+
"""
|
|
2
|
+
TEA Agent
|
|
3
|
+
|
|
4
|
+
Master Test Architect and Quality Advisor specializing in risk-based testing,
|
|
5
|
+
fixture architecture, ATDD, API testing, backend services, UI automation,
|
|
6
|
+
CI/CD governance, and scalable quality gates.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from typing import Optional, Dict, Any, List
|
|
10
|
+
from dataclasses import dataclass
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclass
|
|
14
|
+
class TEARequest:
|
|
15
|
+
"""Request data structure for the TEA agent."""
|
|
16
|
+
|
|
17
|
+
task: str # teach-me-testing, test-framework, atdd, test-automate, test-design, test-trace, nfr-assess, continuous-integration, test-review
|
|
18
|
+
context: str
|
|
19
|
+
project_type: Optional[str] = None # web, mobile, api, microservices
|
|
20
|
+
tech_stack: Optional[List[str]] = (
|
|
21
|
+
None # playwright, cypress, pytest, junit, go-test, pact
|
|
22
|
+
)
|
|
23
|
+
ci_platform: Optional[str] = (
|
|
24
|
+
None # github-actions, gitlab-ci, jenkins, azure-devops, harness
|
|
25
|
+
)
|
|
26
|
+
risk_level: Optional[str] = "medium" # low, medium, high, critical
|
|
27
|
+
scope: Optional[str] = None # story, feature, epic, system
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class TEA:
|
|
31
|
+
"""
|
|
32
|
+
Master Test Architect and Quality Advisor.
|
|
33
|
+
|
|
34
|
+
Test architect specializing in risk-based testing, fixture architecture,
|
|
35
|
+
ATDD, API testing, backend services, UI automation, CI/CD governance,
|
|
36
|
+
and scalable quality gates. Equally proficient in pure API/service-layer
|
|
37
|
+
testing (pytest, JUnit, Go test, xUnit, RSpec) as in browser-based E2E
|
|
38
|
+
testing (Playwright, Cypress). Supports GitHub Actions, GitLab CI, Jenkins,
|
|
39
|
+
Azure DevOps, and Harness CI platforms.
|
|
40
|
+
|
|
41
|
+
Capabilities:
|
|
42
|
+
- Teach testing fundamentals through advanced practices
|
|
43
|
+
- Initialize production-ready test framework architecture
|
|
44
|
+
- Generate failing acceptance tests plus implementation checklist (ATDD)
|
|
45
|
+
- Generate prioritized API/E2E tests, fixtures, and DoD summary
|
|
46
|
+
- Risk assessment plus coverage strategy for system or epic scope
|
|
47
|
+
- Map requirements to tests and make quality gate decisions
|
|
48
|
+
- Assess NFRs and recommend actions
|
|
49
|
+
- Recommend and scaffold CI/CD quality pipeline
|
|
50
|
+
- Perform quality checks against written tests
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
def __init__(self):
|
|
54
|
+
"""Initialize the TEA agent."""
|
|
55
|
+
self.name = "Murat"
|
|
56
|
+
self.title = "Master Test Architect and Quality Advisor"
|
|
57
|
+
self.icon = "🧪"
|
|
58
|
+
|
|
59
|
+
async def process(self, request: TEARequest) -> Dict[str, Any]:
|
|
60
|
+
"""
|
|
61
|
+
Process the testing request and return expert guidance.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
request: The testing request containing task and parameters
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
A dictionary containing the testing guidance and recommendations
|
|
68
|
+
"""
|
|
69
|
+
# Validate request
|
|
70
|
+
if not request.task:
|
|
71
|
+
return {
|
|
72
|
+
"success": False,
|
|
73
|
+
"error": "Task is required for testing guidance",
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
# Route to appropriate handler based on task
|
|
77
|
+
task_handlers = {
|
|
78
|
+
"teach-me-testing": self._handle_teach_me_testing,
|
|
79
|
+
"test-framework": self._handle_test_framework,
|
|
80
|
+
"atdd": self._handle_atdd,
|
|
81
|
+
"test-automate": self._handle_test_automate,
|
|
82
|
+
"test-design": self._handle_test_design,
|
|
83
|
+
"test-trace": self._handle_test_trace,
|
|
84
|
+
"nfr-assess": self._handle_nfr_assess,
|
|
85
|
+
"continuous-integration": self._handle_continuous_integration,
|
|
86
|
+
"test-review": self._handle_test_review,
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
handler = task_handlers.get(request.task)
|
|
90
|
+
if not handler:
|
|
91
|
+
return {
|
|
92
|
+
"success": False,
|
|
93
|
+
"error": f"Unknown task: {request.task}",
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return await handler(request)
|
|
97
|
+
|
|
98
|
+
async def _handle_teach_me_testing(self, request: TEARequest) -> Dict[str, Any]:
|
|
99
|
+
"""Handle teach-me-testing task."""
|
|
100
|
+
return {
|
|
101
|
+
"success": True,
|
|
102
|
+
"task": "teach-me-testing",
|
|
103
|
+
"guidance": {
|
|
104
|
+
"title": "Interactive Learning Companion - Testing Fundamentals",
|
|
105
|
+
"description": "7 progressive sessions teaching testing fundamentals through advanced practices",
|
|
106
|
+
"sessions": [
|
|
107
|
+
{
|
|
108
|
+
"session": 1,
|
|
109
|
+
"title": "Testing Fundamentals",
|
|
110
|
+
"topics": [
|
|
111
|
+
"Why test? Risk and value",
|
|
112
|
+
"Test pyramid: unit > integration > E2E",
|
|
113
|
+
"Testing terminology and concepts",
|
|
114
|
+
"Writing your first test",
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"session": 2,
|
|
119
|
+
"title": "Test Design Principles",
|
|
120
|
+
"topics": [
|
|
121
|
+
"AAA pattern (Arrange-Act-Assert)",
|
|
122
|
+
"Test isolation and independence",
|
|
123
|
+
"Descriptive test names",
|
|
124
|
+
"One assertion per test",
|
|
125
|
+
],
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"session": 3,
|
|
129
|
+
"title": "API Testing",
|
|
130
|
+
"topics": [
|
|
131
|
+
"API testing vs UI testing",
|
|
132
|
+
"RESTful API testing with pytest",
|
|
133
|
+
"Contract testing with Pact",
|
|
134
|
+
"API test fixtures and data management",
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"session": 4,
|
|
139
|
+
"title": "UI Automation",
|
|
140
|
+
"topics": [
|
|
141
|
+
"Playwright vs Cypress comparison",
|
|
142
|
+
"Page Object Model",
|
|
143
|
+
"Handling async and waiting",
|
|
144
|
+
"Visual regression testing",
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"session": 5,
|
|
149
|
+
"title": "Test Architecture",
|
|
150
|
+
"topics": [
|
|
151
|
+
"Fixture design patterns",
|
|
152
|
+
"Test data management",
|
|
153
|
+
"Test organization and structure",
|
|
154
|
+
"Reusable test utilities",
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"session": 6,
|
|
159
|
+
"title": "ATDD and TDD",
|
|
160
|
+
"topics": [
|
|
161
|
+
"Acceptance Test-Driven Development",
|
|
162
|
+
"Test-Driven Development workflow",
|
|
163
|
+
"Writing failing tests first",
|
|
164
|
+
"Red-Green-Refactor cycle",
|
|
165
|
+
],
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"session": 7,
|
|
169
|
+
"title": "CI/CD and Quality Gates",
|
|
170
|
+
"topics": [
|
|
171
|
+
"Integrating tests into CI/CD",
|
|
172
|
+
"Quality gate strategies",
|
|
173
|
+
"Test reporting and metrics",
|
|
174
|
+
"Flakiness detection and prevention",
|
|
175
|
+
],
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
"recommendations": [
|
|
179
|
+
"Start with session 1 and progress sequentially",
|
|
180
|
+
"Practice each concept with hands-on exercises",
|
|
181
|
+
"Apply learnings to your current project",
|
|
182
|
+
"Review official documentation for your chosen tools",
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
async def _handle_test_framework(self, request: TEARequest) -> Dict[str, Any]:
|
|
188
|
+
"""Handle test-framework task."""
|
|
189
|
+
tech_stack = request.tech_stack or ["pytest"]
|
|
190
|
+
project_type = request.project_type or "web"
|
|
191
|
+
|
|
192
|
+
return {
|
|
193
|
+
"success": True,
|
|
194
|
+
"task": "test-framework",
|
|
195
|
+
"guidance": {
|
|
196
|
+
"title": "Production-Ready Test Framework Architecture",
|
|
197
|
+
"project_type": project_type,
|
|
198
|
+
"tech_stack": tech_stack,
|
|
199
|
+
"architecture": {
|
|
200
|
+
"structure": {
|
|
201
|
+
"tests/": "Root test directory",
|
|
202
|
+
"tests/unit/": "Unit tests",
|
|
203
|
+
"tests/integration/": "Integration tests",
|
|
204
|
+
"tests/e2e/": "End-to-end tests",
|
|
205
|
+
"tests/fixtures/": "Test fixtures and data",
|
|
206
|
+
"tests/utils/": "Reusable test utilities",
|
|
207
|
+
"tests/config/": "Test configuration",
|
|
208
|
+
},
|
|
209
|
+
"core_components": [
|
|
210
|
+
"Test runner configuration",
|
|
211
|
+
"Fixture management system",
|
|
212
|
+
"Test data factories",
|
|
213
|
+
"Assertion libraries",
|
|
214
|
+
"Mock/stub utilities",
|
|
215
|
+
"Test reporters",
|
|
216
|
+
],
|
|
217
|
+
},
|
|
218
|
+
"recommendations": [
|
|
219
|
+
f"Use {tech_stack[0]} as primary test framework",
|
|
220
|
+
"Implement Page Object Model for UI tests",
|
|
221
|
+
"Create reusable fixtures for common test scenarios",
|
|
222
|
+
"Set up test data factories for consistent test data",
|
|
223
|
+
"Configure test reporters for CI/CD integration",
|
|
224
|
+
],
|
|
225
|
+
},
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
async def _handle_atdd(self, request: TEARequest) -> Dict[str, Any]:
|
|
229
|
+
"""Handle ATDD task."""
|
|
230
|
+
return {
|
|
231
|
+
"success": True,
|
|
232
|
+
"task": "atdd",
|
|
233
|
+
"guidance": {
|
|
234
|
+
"title": "Acceptance Test-Driven Development",
|
|
235
|
+
"description": "Generate failing acceptance tests plus implementation checklist",
|
|
236
|
+
"process": [
|
|
237
|
+
"1. Collaborate with stakeholders to define acceptance criteria",
|
|
238
|
+
"2. Write failing acceptance tests before implementation",
|
|
239
|
+
"3. Create implementation checklist from test requirements",
|
|
240
|
+
"4. Implement features to make tests pass",
|
|
241
|
+
"5. Refactor and optimize implementation",
|
|
242
|
+
],
|
|
243
|
+
"acceptance_test_template": {
|
|
244
|
+
"given": "Preconditions and initial state",
|
|
245
|
+
"when": "Action or event being tested",
|
|
246
|
+
"then": "Expected outcome and assertions",
|
|
247
|
+
},
|
|
248
|
+
"implementation_checklist": [
|
|
249
|
+
"Review acceptance criteria",
|
|
250
|
+
"Identify required components and dependencies",
|
|
251
|
+
"Plan data model changes",
|
|
252
|
+
"Design API endpoints (if applicable)",
|
|
253
|
+
"Plan UI changes (if applicable)",
|
|
254
|
+
"Identify edge cases and error handling",
|
|
255
|
+
"Plan integration points",
|
|
256
|
+
],
|
|
257
|
+
"best_practices": [
|
|
258
|
+
"Write tests in business language (Gherkin)",
|
|
259
|
+
"Keep tests independent and isolated",
|
|
260
|
+
"Use descriptive test names",
|
|
261
|
+
"Test one behavior per test",
|
|
262
|
+
"Include edge cases and error scenarios",
|
|
263
|
+
],
|
|
264
|
+
},
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
async def _handle_test_automate(self, request: TEARequest) -> Dict[str, Any]:
|
|
268
|
+
"""Handle test-automate task."""
|
|
269
|
+
risk_level = request.risk_level or "medium"
|
|
270
|
+
scope = request.scope or "feature"
|
|
271
|
+
|
|
272
|
+
return {
|
|
273
|
+
"success": True,
|
|
274
|
+
"task": "test-automate",
|
|
275
|
+
"guidance": {
|
|
276
|
+
"title": "Test Automation Strategy",
|
|
277
|
+
"risk_level": risk_level,
|
|
278
|
+
"scope": scope,
|
|
279
|
+
"test_prioritization": {
|
|
280
|
+
"high_priority": [
|
|
281
|
+
"Critical user flows",
|
|
282
|
+
"Core business logic",
|
|
283
|
+
"API endpoints with high traffic",
|
|
284
|
+
"Security and authentication",
|
|
285
|
+
"Payment and financial transactions",
|
|
286
|
+
],
|
|
287
|
+
"medium_priority": [
|
|
288
|
+
"Secondary user flows",
|
|
289
|
+
"Data validation",
|
|
290
|
+
"Error handling",
|
|
291
|
+
"Integration points",
|
|
292
|
+
],
|
|
293
|
+
"low_priority": [
|
|
294
|
+
"UI edge cases",
|
|
295
|
+
"Non-critical features",
|
|
296
|
+
"Cosmetic elements",
|
|
297
|
+
],
|
|
298
|
+
},
|
|
299
|
+
"test_types": [
|
|
300
|
+
{
|
|
301
|
+
"type": "API Tests",
|
|
302
|
+
"description": "Service-layer testing for business logic",
|
|
303
|
+
"tools": ["pytest", "JUnit", "Go test", "RSpec"],
|
|
304
|
+
"priority": "high",
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
"type": "E2E Tests",
|
|
308
|
+
"description": "Full user journey testing",
|
|
309
|
+
"tools": ["Playwright", "Cypress"],
|
|
310
|
+
"priority": "medium",
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
"type": "Integration Tests",
|
|
314
|
+
"description": "Component interaction testing",
|
|
315
|
+
"tools": ["pytest", "JUnit"],
|
|
316
|
+
"priority": "high",
|
|
317
|
+
},
|
|
318
|
+
],
|
|
319
|
+
"definition_of_done": [
|
|
320
|
+
"All acceptance criteria covered by tests",
|
|
321
|
+
"Critical paths have automated tests",
|
|
322
|
+
"Edge cases identified and tested",
|
|
323
|
+
"Tests are stable and non-flaky",
|
|
324
|
+
"Tests integrated into CI/CD pipeline",
|
|
325
|
+
"Test coverage meets minimum threshold",
|
|
326
|
+
],
|
|
327
|
+
},
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
async def _handle_test_design(self, request: TEARequest) -> Dict[str, Any]:
|
|
331
|
+
"""Handle test-design task."""
|
|
332
|
+
risk_level = request.risk_level or "medium"
|
|
333
|
+
scope = request.scope or "epic"
|
|
334
|
+
|
|
335
|
+
return {
|
|
336
|
+
"success": True,
|
|
337
|
+
"task": "test-design",
|
|
338
|
+
"guidance": {
|
|
339
|
+
"title": "Test Design and Coverage Strategy",
|
|
340
|
+
"risk_level": risk_level,
|
|
341
|
+
"scope": scope,
|
|
342
|
+
"risk_assessment": {
|
|
343
|
+
"impact_factors": [
|
|
344
|
+
"User impact and frequency",
|
|
345
|
+
"Business criticality",
|
|
346
|
+
"Data sensitivity",
|
|
347
|
+
"Complexity and dependencies",
|
|
348
|
+
"Failure cost and recovery time",
|
|
349
|
+
],
|
|
350
|
+
"risk_matrix": {
|
|
351
|
+
"high_impact_high_frequency": "Comprehensive testing (unit + integration + E2E)",
|
|
352
|
+
"high_impact_low_frequency": "Focused testing (unit + integration)",
|
|
353
|
+
"low_impact_high_frequency": "Standard testing (unit + integration)",
|
|
354
|
+
"low_impact_low_frequency": "Basic testing (unit)",
|
|
355
|
+
},
|
|
356
|
+
},
|
|
357
|
+
"coverage_strategy": {
|
|
358
|
+
"unit_tests": {
|
|
359
|
+
"target": "80%+ coverage",
|
|
360
|
+
"focus": "Business logic, algorithms, data transformations",
|
|
361
|
+
},
|
|
362
|
+
"integration_tests": {
|
|
363
|
+
"target": "Critical paths covered",
|
|
364
|
+
"focus": "API endpoints, database interactions, external services",
|
|
365
|
+
},
|
|
366
|
+
"e2e_tests": {
|
|
367
|
+
"target": "Key user journeys",
|
|
368
|
+
"focus": "Happy paths, critical workflows, cross-feature scenarios",
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
"test_categories": [
|
|
372
|
+
"Functional testing",
|
|
373
|
+
"Performance testing",
|
|
374
|
+
"Security testing",
|
|
375
|
+
"Usability testing",
|
|
376
|
+
"Compatibility testing",
|
|
377
|
+
"Regression testing",
|
|
378
|
+
],
|
|
379
|
+
},
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
async def _handle_test_trace(self, request: TEARequest) -> Dict[str, Any]:
|
|
383
|
+
"""Handle test-trace task."""
|
|
384
|
+
return {
|
|
385
|
+
"success": True,
|
|
386
|
+
"task": "test-trace",
|
|
387
|
+
"guidance": {
|
|
388
|
+
"title": "Requirements to Tests Traceability",
|
|
389
|
+
"description": "Map requirements to tests and make quality gate decisions",
|
|
390
|
+
"phase_1_traceability": {
|
|
391
|
+
"steps": [
|
|
392
|
+
"1. Identify all requirements (user stories, acceptance criteria)",
|
|
393
|
+
"2. Create requirement-to-test mapping matrix",
|
|
394
|
+
"3. Tag tests with requirement IDs",
|
|
395
|
+
"4. Identify orphan requirements (no tests)",
|
|
396
|
+
"5. Identify orphan tests (no requirements)",
|
|
397
|
+
"6. Calculate coverage metrics",
|
|
398
|
+
],
|
|
399
|
+
"traceability_matrix": {
|
|
400
|
+
"requirement_id": "Unique identifier",
|
|
401
|
+
"requirement_description": "Brief description",
|
|
402
|
+
"test_ids": "List of test IDs covering this requirement",
|
|
403
|
+
"coverage_status": "covered / partial / not-covered",
|
|
404
|
+
"risk_level": "critical / high / medium / low",
|
|
405
|
+
},
|
|
406
|
+
},
|
|
407
|
+
"phase_2_quality_gate": {
|
|
408
|
+
"decision_criteria": [
|
|
409
|
+
"All critical requirements have tests",
|
|
410
|
+
"Coverage threshold met (e.g., 80%)",
|
|
411
|
+
"No high-risk requirements untested",
|
|
412
|
+
"All tests passing",
|
|
413
|
+
"No flaky tests in critical paths",
|
|
414
|
+
],
|
|
415
|
+
"gate_outcomes": {
|
|
416
|
+
"pass": "All criteria met - ready for release",
|
|
417
|
+
"conditional": "Minor gaps - document and proceed with monitoring",
|
|
418
|
+
"fail": "Critical gaps - block release until addressed",
|
|
419
|
+
},
|
|
420
|
+
},
|
|
421
|
+
"recommendations": [
|
|
422
|
+
"Maintain traceability throughout development",
|
|
423
|
+
"Update traceability matrix as requirements change",
|
|
424
|
+
"Use automated tools for traceability reporting",
|
|
425
|
+
"Review traceability in sprint reviews",
|
|
426
|
+
],
|
|
427
|
+
},
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async def _handle_nfr_assess(self, request: TEARequest) -> Dict[str, Any]:
|
|
431
|
+
"""Handle nfr-assess task."""
|
|
432
|
+
return {
|
|
433
|
+
"success": True,
|
|
434
|
+
"task": "nfr-assess",
|
|
435
|
+
"guidance": {
|
|
436
|
+
"title": "Non-Functional Requirements Assessment",
|
|
437
|
+
"description": "Assess NFRs and recommend testing actions",
|
|
438
|
+
"nfr_categories": [
|
|
439
|
+
{
|
|
440
|
+
"category": "Performance",
|
|
441
|
+
"metrics": [
|
|
442
|
+
"Response time",
|
|
443
|
+
"Throughput",
|
|
444
|
+
"Resource utilization",
|
|
445
|
+
],
|
|
446
|
+
"testing": ["Load testing", "Stress testing", "Spike testing"],
|
|
447
|
+
"tools": ["k6", "JMeter", "Locust"],
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"category": "Security",
|
|
451
|
+
"metrics": ["Vulnerability count", "Compliance score"],
|
|
452
|
+
"testing": [
|
|
453
|
+
"Penetration testing",
|
|
454
|
+
"Security scanning",
|
|
455
|
+
"Auth testing",
|
|
456
|
+
],
|
|
457
|
+
"tools": ["OWASP ZAP", "Burp Suite", "Snyk"],
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"category": "Reliability",
|
|
461
|
+
"metrics": ["Uptime", "MTBF", "MTTR"],
|
|
462
|
+
"testing": [
|
|
463
|
+
"Chaos engineering",
|
|
464
|
+
"Failover testing",
|
|
465
|
+
"Recovery testing",
|
|
466
|
+
],
|
|
467
|
+
"tools": ["Chaos Monkey", "Gremlin", "Pumba"],
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
"category": "Scalability",
|
|
471
|
+
"metrics": [
|
|
472
|
+
"Concurrent users",
|
|
473
|
+
"Data volume",
|
|
474
|
+
"Transaction rate",
|
|
475
|
+
],
|
|
476
|
+
"testing": ["Capacity planning", "Horizontal scaling tests"],
|
|
477
|
+
"tools": ["Kubernetes", "Docker Swarm", "AWS Auto Scaling"],
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"category": "Usability",
|
|
481
|
+
"metrics": [
|
|
482
|
+
"Task completion rate",
|
|
483
|
+
"User satisfaction",
|
|
484
|
+
"Error rate",
|
|
485
|
+
],
|
|
486
|
+
"testing": [
|
|
487
|
+
"Usability testing",
|
|
488
|
+
"A/B testing",
|
|
489
|
+
"Accessibility testing",
|
|
490
|
+
],
|
|
491
|
+
"tools": ["UserTesting", "Hotjar", "axe DevTools"],
|
|
492
|
+
},
|
|
493
|
+
],
|
|
494
|
+
"assessment_process": [
|
|
495
|
+
"1. Identify relevant NFRs for the system",
|
|
496
|
+
"2. Define measurable acceptance criteria",
|
|
497
|
+
"3. Design tests for each NFR",
|
|
498
|
+
"4. Establish baseline metrics",
|
|
499
|
+
"5. Run tests and collect data",
|
|
500
|
+
"6. Compare against acceptance criteria",
|
|
501
|
+
"7. Document findings and recommendations",
|
|
502
|
+
],
|
|
503
|
+
"recommendations": [
|
|
504
|
+
"Define NFRs early in the project",
|
|
505
|
+
"Make NFRs testable and measurable",
|
|
506
|
+
"Include NFR testing in CI/CD pipeline",
|
|
507
|
+
"Monitor NFRs in production",
|
|
508
|
+
],
|
|
509
|
+
},
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
async def _handle_continuous_integration(
|
|
513
|
+
self, request: TEARequest
|
|
514
|
+
) -> Dict[str, Any]:
|
|
515
|
+
"""Handle continuous-integration task."""
|
|
516
|
+
ci_platform = request.ci_platform or "github-actions"
|
|
517
|
+
tech_stack = request.tech_stack or ["pytest"]
|
|
518
|
+
|
|
519
|
+
return {
|
|
520
|
+
"success": True,
|
|
521
|
+
"task": "continuous-integration",
|
|
522
|
+
"guidance": {
|
|
523
|
+
"title": "CI/CD Quality Pipeline",
|
|
524
|
+
"ci_platform": ci_platform,
|
|
525
|
+
"tech_stack": tech_stack,
|
|
526
|
+
"pipeline_stages": [
|
|
527
|
+
{
|
|
528
|
+
"stage": "Lint & Format",
|
|
529
|
+
"tools": ["ESLint", "Prettier", "Black", "Flake8"],
|
|
530
|
+
"purpose": "Code quality and consistency",
|
|
531
|
+
},
|
|
532
|
+
{
|
|
533
|
+
"stage": "Unit Tests",
|
|
534
|
+
"tools": tech_stack,
|
|
535
|
+
"purpose": "Verify business logic",
|
|
536
|
+
"threshold": "80% coverage",
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
"stage": "Integration Tests",
|
|
540
|
+
"tools": tech_stack,
|
|
541
|
+
"purpose": "Verify component interactions",
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
"stage": "Build",
|
|
545
|
+
"tools": ["Docker", "Webpack", "Vite"],
|
|
546
|
+
"purpose": "Package application",
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"stage": "E2E Tests",
|
|
550
|
+
"tools": ["Playwright", "Cypress"],
|
|
551
|
+
"purpose": "Verify critical user journeys",
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
"stage": "Security Scan",
|
|
555
|
+
"tools": ["Snyk", "OWASP Dependency-Check"],
|
|
556
|
+
"purpose": "Identify vulnerabilities",
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"stage": "Deploy",
|
|
560
|
+
"tools": [ci_platform],
|
|
561
|
+
"purpose": "Deploy to staging/production",
|
|
562
|
+
},
|
|
563
|
+
],
|
|
564
|
+
"quality_gates": [
|
|
565
|
+
"All tests must pass",
|
|
566
|
+
"Coverage threshold must be met",
|
|
567
|
+
"No critical security vulnerabilities",
|
|
568
|
+
"No flaky tests allowed",
|
|
569
|
+
"Build time within acceptable limits",
|
|
570
|
+
],
|
|
571
|
+
"best_practices": [
|
|
572
|
+
"Run fast tests first (unit > integration > E2E)",
|
|
573
|
+
"Parallelize test execution",
|
|
574
|
+
"Cache dependencies to speed up builds",
|
|
575
|
+
"Use test result artifacts for debugging",
|
|
576
|
+
"Set up notifications for build failures",
|
|
577
|
+
"Monitor build metrics and trends",
|
|
578
|
+
],
|
|
579
|
+
},
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
async def _handle_test_review(self, request: TEARequest) -> Dict[str, Any]:
|
|
583
|
+
"""Handle test-review task."""
|
|
584
|
+
return {
|
|
585
|
+
"success": True,
|
|
586
|
+
"task": "test-review",
|
|
587
|
+
"guidance": {
|
|
588
|
+
"title": "Test Quality Review",
|
|
589
|
+
"description": "Perform quality check against written tests",
|
|
590
|
+
"review_criteria": {
|
|
591
|
+
"test_structure": [
|
|
592
|
+
"Tests follow AAA pattern (Arrange-Act-Assert)",
|
|
593
|
+
"Descriptive test names",
|
|
594
|
+
"Single responsibility per test",
|
|
595
|
+
"Proper test organization",
|
|
596
|
+
],
|
|
597
|
+
"test_isolation": [
|
|
598
|
+
"Tests are independent",
|
|
599
|
+
"No shared state between tests",
|
|
600
|
+
"Proper setup and teardown",
|
|
601
|
+
"Test data isolation",
|
|
602
|
+
],
|
|
603
|
+
"assertions": [
|
|
604
|
+
"Clear and meaningful assertions",
|
|
605
|
+
"Appropriate assertion methods",
|
|
606
|
+
"Testing behavior not implementation",
|
|
607
|
+
"Edge cases covered",
|
|
608
|
+
],
|
|
609
|
+
"maintainability": [
|
|
610
|
+
"DRY principle followed",
|
|
611
|
+
"Reusable fixtures and utilities",
|
|
612
|
+
"Clear test documentation",
|
|
613
|
+
"Easy to understand and modify",
|
|
614
|
+
],
|
|
615
|
+
"performance": [
|
|
616
|
+
"Tests run efficiently",
|
|
617
|
+
"No unnecessary waits or sleeps",
|
|
618
|
+
"Proper mocking of external dependencies",
|
|
619
|
+
"Parallel execution support",
|
|
620
|
+
],
|
|
621
|
+
},
|
|
622
|
+
"common_issues": [
|
|
623
|
+
"Flaky tests (intermittent failures)",
|
|
624
|
+
"Brittle tests (break with minor changes)",
|
|
625
|
+
"Slow tests (poor performance)",
|
|
626
|
+
"Over-mocking (testing nothing)",
|
|
627
|
+
"Testing implementation details",
|
|
628
|
+
"Missing edge cases",
|
|
629
|
+
"Poor test data management",
|
|
630
|
+
],
|
|
631
|
+
"recommendations": [
|
|
632
|
+
"Review tests as part of code review process",
|
|
633
|
+
"Use static analysis tools for test quality",
|
|
634
|
+
"Monitor test flakiness metrics",
|
|
635
|
+
"Refactor tests regularly",
|
|
636
|
+
"Keep test code quality as high as production code",
|
|
637
|
+
],
|
|
638
|
+
},
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
def _calculate_risk_score(self, impact: str, frequency: str) -> str:
|
|
642
|
+
"""Calculate risk score based on impact and frequency."""
|
|
643
|
+
risk_matrix = {
|
|
644
|
+
("high", "high"): "critical",
|
|
645
|
+
("high", "medium"): "high",
|
|
646
|
+
("high", "low"): "medium",
|
|
647
|
+
("medium", "high"): "high",
|
|
648
|
+
("medium", "medium"): "medium",
|
|
649
|
+
("medium", "low"): "low",
|
|
650
|
+
("low", "high"): "medium",
|
|
651
|
+
("low", "medium"): "low",
|
|
652
|
+
("low", "low"): "low",
|
|
653
|
+
}
|
|
654
|
+
return risk_matrix.get((impact, frequency), "medium")
|
|
655
|
+
|
|
656
|
+
def _get_test_recommendations(
|
|
657
|
+
self, risk_level: str, project_type: str
|
|
658
|
+
) -> List[str]:
|
|
659
|
+
"""Get test recommendations based on risk level and project type."""
|
|
660
|
+
recommendations = []
|
|
661
|
+
|
|
662
|
+
if risk_level in ["high", "critical"]:
|
|
663
|
+
recommendations.extend(
|
|
664
|
+
[
|
|
665
|
+
"Comprehensive test coverage required",
|
|
666
|
+
"Include performance and security testing",
|
|
667
|
+
"Implement chaos engineering for reliability",
|
|
668
|
+
"Continuous monitoring in production",
|
|
669
|
+
]
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
if project_type == "api":
|
|
673
|
+
recommendations.extend(
|
|
674
|
+
[
|
|
675
|
+
"Focus on API contract testing",
|
|
676
|
+
"Use Pact for consumer-driven contracts",
|
|
677
|
+
"Test all endpoints with various inputs",
|
|
678
|
+
]
|
|
679
|
+
)
|
|
680
|
+
elif project_type == "web":
|
|
681
|
+
recommendations.extend(
|
|
682
|
+
[
|
|
683
|
+
"Implement E2E tests for critical user flows",
|
|
684
|
+
"Use Playwright or Cypress for UI automation",
|
|
685
|
+
"Include visual regression testing",
|
|
686
|
+
]
|
|
687
|
+
)
|
|
688
|
+
|
|
689
|
+
return recommendations
|