mdan-cli 2.5.0 → 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,559 @@
|
|
|
1
|
+
"""
|
|
2
|
+
DB Performance Analyst Agent
|
|
3
|
+
|
|
4
|
+
Specialized agent for database performance analysis, monitoring, and optimization recommendations.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Dict, Any, List, Optional
|
|
8
|
+
from dataclasses import dataclass
|
|
9
|
+
import asyncio
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class DBPerformanceRequest:
|
|
14
|
+
"""Request data structure for the DB Performance Analyst agent."""
|
|
15
|
+
|
|
16
|
+
action: str
|
|
17
|
+
db_type: Optional[str] = None
|
|
18
|
+
performance_issue: Optional[str] = None
|
|
19
|
+
metrics: Optional[Dict[str, Any]] = None
|
|
20
|
+
query_samples: Optional[List[str]] = None
|
|
21
|
+
schema_info: Optional[Dict[str, Any]] = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DBPerformanceAnalystAgent:
|
|
25
|
+
"""
|
|
26
|
+
DB Performance Analyst - Expert in database performance analysis and optimization.
|
|
27
|
+
|
|
28
|
+
Specialized in analyzing database performance, identifying bottlenecks, and providing
|
|
29
|
+
optimization recommendations. Expert in query performance, indexing strategies, and
|
|
30
|
+
database configuration tuning.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(self):
|
|
34
|
+
"""Initialize the DB Performance Analyst agent."""
|
|
35
|
+
self.name = "DB Performance Analyst"
|
|
36
|
+
self.title = "Database Performance Analysis and Optimization Expert"
|
|
37
|
+
self.icon = "📊"
|
|
38
|
+
self.capabilities = [
|
|
39
|
+
"Database performance analysis",
|
|
40
|
+
"Query performance optimization",
|
|
41
|
+
"Indexing strategy recommendations",
|
|
42
|
+
"Database configuration tuning",
|
|
43
|
+
"Performance bottleneck identification",
|
|
44
|
+
"Resource utilization analysis",
|
|
45
|
+
"Slow query analysis",
|
|
46
|
+
"Database scaling recommendations",
|
|
47
|
+
"Performance monitoring setup",
|
|
48
|
+
"Query execution plan analysis",
|
|
49
|
+
]
|
|
50
|
+
self.role = "Database Performance Expert"
|
|
51
|
+
self.identity = (
|
|
52
|
+
"Expert database performance analyst with comprehensive knowledge of "
|
|
53
|
+
"database internals, query optimization, and performance tuning. "
|
|
54
|
+
"Specialized in identifying and resolving performance bottlenecks across "
|
|
55
|
+
"multiple database systems."
|
|
56
|
+
)
|
|
57
|
+
self.communication_style = (
|
|
58
|
+
"Analytical and data-driven, focusing on performance metrics, execution "
|
|
59
|
+
"plans, and optimization strategies. Provides clear recommendations with "
|
|
60
|
+
"before/after comparisons and expected performance improvements."
|
|
61
|
+
)
|
|
62
|
+
self.principles = [
|
|
63
|
+
"Measure before optimizing",
|
|
64
|
+
"Focus on the most impactful optimizations first",
|
|
65
|
+
"Consider the entire system, not just individual queries",
|
|
66
|
+
"Balance performance with maintainability",
|
|
67
|
+
"Use appropriate indexing strategies",
|
|
68
|
+
"Monitor performance continuously",
|
|
69
|
+
"Document optimization decisions",
|
|
70
|
+
"Test optimizations in staging environments",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
async def process(self, request: DBPerformanceRequest) -> Dict[str, Any]:
|
|
74
|
+
"""
|
|
75
|
+
Process the DB performance request and return a response.
|
|
76
|
+
|
|
77
|
+
Args:
|
|
78
|
+
request: The DB performance request to process
|
|
79
|
+
|
|
80
|
+
Returns:
|
|
81
|
+
A dictionary containing the performance analysis and recommendations
|
|
82
|
+
"""
|
|
83
|
+
action = request.action.lower()
|
|
84
|
+
|
|
85
|
+
if action == "analyze":
|
|
86
|
+
return await self._analyze_performance(request)
|
|
87
|
+
elif action == "optimize":
|
|
88
|
+
return await self._optimize_performance(request)
|
|
89
|
+
elif action == "monitor":
|
|
90
|
+
return await self._setup_monitoring(request)
|
|
91
|
+
elif action == "tune":
|
|
92
|
+
return await self._tune_configuration(request)
|
|
93
|
+
elif action == "scale":
|
|
94
|
+
return await self._recommend_scaling(request)
|
|
95
|
+
else:
|
|
96
|
+
return await self._handle_unknown_action(request)
|
|
97
|
+
|
|
98
|
+
async def _analyze_performance(
|
|
99
|
+
self, request: DBPerformanceRequest
|
|
100
|
+
) -> Dict[str, Any]:
|
|
101
|
+
"""
|
|
102
|
+
Analyze database performance.
|
|
103
|
+
|
|
104
|
+
Args:
|
|
105
|
+
request: The request to process
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
Performance analysis results
|
|
109
|
+
"""
|
|
110
|
+
db_type = request.db_type or "PostgreSQL"
|
|
111
|
+
performance_issue = request.performance_issue or "general"
|
|
112
|
+
metrics = request.metrics or {}
|
|
113
|
+
|
|
114
|
+
analysis = {
|
|
115
|
+
"status": "success",
|
|
116
|
+
"action": "analyze",
|
|
117
|
+
"db_type": db_type,
|
|
118
|
+
"performance_issue": performance_issue,
|
|
119
|
+
"analysis": self._generate_performance_analysis(
|
|
120
|
+
db_type, performance_issue, metrics
|
|
121
|
+
),
|
|
122
|
+
"recommendations": self._generate_recommendations(
|
|
123
|
+
db_type, performance_issue
|
|
124
|
+
),
|
|
125
|
+
"priority_metrics": self._identify_priority_metrics(db_type),
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return analysis
|
|
129
|
+
|
|
130
|
+
async def _optimize_performance(
|
|
131
|
+
self, request: DBPerformanceRequest
|
|
132
|
+
) -> Dict[str, Any]:
|
|
133
|
+
"""
|
|
134
|
+
Provide performance optimization recommendations.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
request: The request to process
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
Optimization recommendations
|
|
141
|
+
"""
|
|
142
|
+
db_type = request.db_type or "PostgreSQL"
|
|
143
|
+
query_samples = request.query_samples or []
|
|
144
|
+
|
|
145
|
+
optimization = {
|
|
146
|
+
"status": "success",
|
|
147
|
+
"action": "optimize",
|
|
148
|
+
"db_type": db_type,
|
|
149
|
+
"query_optimizations": self._optimize_queries(db_type, query_samples),
|
|
150
|
+
"index_recommendations": self._recommend_indexes(
|
|
151
|
+
db_type, request.schema_info
|
|
152
|
+
),
|
|
153
|
+
"configuration_tuning": self._tune_db_config(db_type),
|
|
154
|
+
"expected_improvements": self._estimate_improvements(db_type),
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return optimization
|
|
158
|
+
|
|
159
|
+
async def _setup_monitoring(self, request: DBPerformanceRequest) -> Dict[str, Any]:
|
|
160
|
+
"""
|
|
161
|
+
Set up performance monitoring.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
request: The request to process
|
|
165
|
+
|
|
166
|
+
Returns:
|
|
167
|
+
Monitoring setup recommendations
|
|
168
|
+
"""
|
|
169
|
+
db_type = request.db_type or "PostgreSQL"
|
|
170
|
+
|
|
171
|
+
monitoring = {
|
|
172
|
+
"status": "success",
|
|
173
|
+
"action": "monitor",
|
|
174
|
+
"db_type": db_type,
|
|
175
|
+
"key_metrics": self._get_key_metrics(db_type),
|
|
176
|
+
"monitoring_tools": self._recommend_monitoring_tools(db_type),
|
|
177
|
+
"alerting_rules": self._define_alerting_rules(db_type),
|
|
178
|
+
"dashboard_setup": self._setup_dashboard(db_type),
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return monitoring
|
|
182
|
+
|
|
183
|
+
async def _tune_configuration(
|
|
184
|
+
self, request: DBPerformanceRequest
|
|
185
|
+
) -> Dict[str, Any]:
|
|
186
|
+
"""
|
|
187
|
+
Tune database configuration.
|
|
188
|
+
|
|
189
|
+
Args:
|
|
190
|
+
request: The request to process
|
|
191
|
+
|
|
192
|
+
Returns:
|
|
193
|
+
Configuration tuning recommendations
|
|
194
|
+
"""
|
|
195
|
+
db_type = request.db_type or "PostgreSQL"
|
|
196
|
+
metrics = request.metrics or {}
|
|
197
|
+
|
|
198
|
+
tuning = {
|
|
199
|
+
"status": "success",
|
|
200
|
+
"action": "tune",
|
|
201
|
+
"db_type": db_type,
|
|
202
|
+
"current_config": self._analyze_current_config(db_type, metrics),
|
|
203
|
+
"recommended_config": self._recommend_config(db_type, metrics),
|
|
204
|
+
"config_changes": self._get_config_changes(db_type),
|
|
205
|
+
"expected_impact": self._estimate_config_impact(db_type),
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return tuning
|
|
209
|
+
|
|
210
|
+
async def _recommend_scaling(self, request: DBPerformanceRequest) -> Dict[str, Any]:
|
|
211
|
+
"""
|
|
212
|
+
Recommend database scaling strategies.
|
|
213
|
+
|
|
214
|
+
Args:
|
|
215
|
+
request: The request to process
|
|
216
|
+
|
|
217
|
+
Returns:
|
|
218
|
+
Scaling recommendations
|
|
219
|
+
"""
|
|
220
|
+
db_type = request.db_type or "PostgreSQL"
|
|
221
|
+
metrics = request.metrics or {}
|
|
222
|
+
|
|
223
|
+
scaling = {
|
|
224
|
+
"status": "success",
|
|
225
|
+
"action": "scale",
|
|
226
|
+
"db_type": db_type,
|
|
227
|
+
"current_capacity": self._assess_current_capacity(db_type, metrics),
|
|
228
|
+
"scaling_options": self._get_scaling_options(db_type),
|
|
229
|
+
"recommended_strategy": self._recommend_scaling_strategy(db_type, metrics),
|
|
230
|
+
"implementation_steps": self._get_scaling_steps(db_type),
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return scaling
|
|
234
|
+
|
|
235
|
+
async def _handle_unknown_action(
|
|
236
|
+
self, request: DBPerformanceRequest
|
|
237
|
+
) -> Dict[str, Any]:
|
|
238
|
+
"""
|
|
239
|
+
Handle unknown action.
|
|
240
|
+
|
|
241
|
+
Args:
|
|
242
|
+
request: The request to process
|
|
243
|
+
|
|
244
|
+
Returns:
|
|
245
|
+
Error response
|
|
246
|
+
"""
|
|
247
|
+
return {
|
|
248
|
+
"status": "error",
|
|
249
|
+
"action": request.action,
|
|
250
|
+
"message": f"Unknown action: {request.action}",
|
|
251
|
+
"available_actions": [
|
|
252
|
+
"analyze",
|
|
253
|
+
"optimize",
|
|
254
|
+
"monitor",
|
|
255
|
+
"tune",
|
|
256
|
+
"scale",
|
|
257
|
+
],
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
def _generate_performance_analysis(
|
|
261
|
+
self, db_type: str, issue: str, metrics: Dict[str, Any]
|
|
262
|
+
) -> Dict[str, Any]:
|
|
263
|
+
"""Generate performance analysis."""
|
|
264
|
+
return {
|
|
265
|
+
"issue_type": issue,
|
|
266
|
+
"severity": self._assess_severity(issue, metrics),
|
|
267
|
+
"root_causes": self._identify_root_causes(db_type, issue),
|
|
268
|
+
"affected_components": self._identify_affected_components(db_type, issue),
|
|
269
|
+
"performance_baseline": self._establish_baseline(db_type, metrics),
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
def _generate_recommendations(
|
|
273
|
+
self, db_type: str, issue: str
|
|
274
|
+
) -> List[Dict[str, Any]]:
|
|
275
|
+
"""Generate optimization recommendations."""
|
|
276
|
+
recommendations = []
|
|
277
|
+
|
|
278
|
+
if issue == "slow_queries":
|
|
279
|
+
recommendations.extend(
|
|
280
|
+
[
|
|
281
|
+
{
|
|
282
|
+
"type": "indexing",
|
|
283
|
+
"priority": "high",
|
|
284
|
+
"description": "Add appropriate indexes on frequently queried columns",
|
|
285
|
+
"expected_impact": "50-90% query time reduction",
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"type": "query_refactoring",
|
|
289
|
+
"priority": "high",
|
|
290
|
+
"description": "Refactor queries to use efficient join patterns",
|
|
291
|
+
"expected_impact": "30-70% query time reduction",
|
|
292
|
+
},
|
|
293
|
+
]
|
|
294
|
+
)
|
|
295
|
+
elif issue == "high_cpu":
|
|
296
|
+
recommendations.extend(
|
|
297
|
+
[
|
|
298
|
+
{
|
|
299
|
+
"type": "configuration",
|
|
300
|
+
"priority": "high",
|
|
301
|
+
"description": "Adjust work_mem and shared_buffers parameters",
|
|
302
|
+
"expected_impact": "20-40% CPU reduction",
|
|
303
|
+
},
|
|
304
|
+
]
|
|
305
|
+
)
|
|
306
|
+
|
|
307
|
+
return recommendations
|
|
308
|
+
|
|
309
|
+
def _identify_priority_metrics(self, db_type: str) -> List[str]:
|
|
310
|
+
"""Identify priority metrics to monitor."""
|
|
311
|
+
return [
|
|
312
|
+
"query_execution_time",
|
|
313
|
+
"connection_count",
|
|
314
|
+
"cache_hit_ratio",
|
|
315
|
+
"disk_io_wait",
|
|
316
|
+
"cpu_utilization",
|
|
317
|
+
"memory_usage",
|
|
318
|
+
"lock_contention",
|
|
319
|
+
"transaction_throughput",
|
|
320
|
+
]
|
|
321
|
+
|
|
322
|
+
def _optimize_queries(
|
|
323
|
+
self, db_type: str, queries: List[str]
|
|
324
|
+
) -> List[Dict[str, Any]]:
|
|
325
|
+
"""Optimize queries."""
|
|
326
|
+
return [
|
|
327
|
+
{
|
|
328
|
+
"query": "SELECT * FROM users WHERE email = ?",
|
|
329
|
+
"optimization": "Add index on email column",
|
|
330
|
+
"expected_improvement": "90% faster",
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"query": "SELECT * FROM orders WHERE user_id IN (SELECT id FROM users WHERE active = true)",
|
|
334
|
+
"optimization": "Use JOIN instead of subquery",
|
|
335
|
+
"expected_improvement": "60% faster",
|
|
336
|
+
},
|
|
337
|
+
]
|
|
338
|
+
|
|
339
|
+
def _recommend_indexes(
|
|
340
|
+
self, db_type: str, schema_info: Optional[Dict[str, Any]]
|
|
341
|
+
) -> List[Dict[str, Any]]:
|
|
342
|
+
"""Recommend indexes."""
|
|
343
|
+
return [
|
|
344
|
+
{
|
|
345
|
+
"table": "users",
|
|
346
|
+
"columns": ["email"],
|
|
347
|
+
"type": "btree",
|
|
348
|
+
"reason": "Frequent lookups by email",
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
"table": "orders",
|
|
352
|
+
"columns": ["user_id", "created_at"],
|
|
353
|
+
"type": "btree",
|
|
354
|
+
"reason": "Common query pattern for user orders",
|
|
355
|
+
},
|
|
356
|
+
]
|
|
357
|
+
|
|
358
|
+
def _tune_db_config(self, db_type: str) -> Dict[str, Any]:
|
|
359
|
+
"""Tune database configuration."""
|
|
360
|
+
return {
|
|
361
|
+
"shared_buffers": "25% of RAM",
|
|
362
|
+
"work_mem": "4MB per connection",
|
|
363
|
+
"maintenance_work_mem": "512MB",
|
|
364
|
+
"effective_cache_size": "75% of RAM",
|
|
365
|
+
"random_page_cost": "1.1 (for SSD)",
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
def _estimate_improvements(self, db_type: str) -> Dict[str, str]:
|
|
369
|
+
"""Estimate performance improvements."""
|
|
370
|
+
return {
|
|
371
|
+
"query_performance": "50-90% improvement",
|
|
372
|
+
"throughput": "2-5x increase",
|
|
373
|
+
"response_time": "60-80% reduction",
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
def _get_key_metrics(self, db_type: str) -> List[Dict[str, Any]]:
|
|
377
|
+
"""Get key metrics to monitor."""
|
|
378
|
+
return [
|
|
379
|
+
{"name": "query_latency", "unit": "ms", "threshold": 100},
|
|
380
|
+
{"name": "connections_active", "unit": "count", "threshold": 100},
|
|
381
|
+
{"name": "cache_hit_ratio", "unit": "%", "threshold": 95},
|
|
382
|
+
]
|
|
383
|
+
|
|
384
|
+
def _recommend_monitoring_tools(self, db_type: str) -> List[str]:
|
|
385
|
+
"""Recommend monitoring tools."""
|
|
386
|
+
return [
|
|
387
|
+
"pg_stat_statements",
|
|
388
|
+
"pgBadger",
|
|
389
|
+
"Prometheus + Grafana",
|
|
390
|
+
"Datadog",
|
|
391
|
+
"New Relic",
|
|
392
|
+
]
|
|
393
|
+
|
|
394
|
+
def _define_alerting_rules(self, db_type: str) -> List[Dict[str, Any]]:
|
|
395
|
+
"""Define alerting rules."""
|
|
396
|
+
return [
|
|
397
|
+
{
|
|
398
|
+
"metric": "query_latency",
|
|
399
|
+
"condition": "> 500ms",
|
|
400
|
+
"severity": "warning",
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
"metric": "connection_count",
|
|
404
|
+
"condition": "> 90% of max",
|
|
405
|
+
"severity": "critical",
|
|
406
|
+
},
|
|
407
|
+
]
|
|
408
|
+
|
|
409
|
+
def _setup_dashboard(self, db_type: str) -> Dict[str, Any]:
|
|
410
|
+
"""Set up monitoring dashboard."""
|
|
411
|
+
return {
|
|
412
|
+
"panels": [
|
|
413
|
+
"Query Performance",
|
|
414
|
+
"Connection Pool",
|
|
415
|
+
"Cache Hit Ratio",
|
|
416
|
+
"Disk I/O",
|
|
417
|
+
"CPU/Memory Usage",
|
|
418
|
+
],
|
|
419
|
+
"refresh_interval": "30s",
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
def _analyze_current_config(
|
|
423
|
+
self, db_type: str, metrics: Dict[str, Any]
|
|
424
|
+
) -> Dict[str, Any]:
|
|
425
|
+
"""Analyze current configuration."""
|
|
426
|
+
return {
|
|
427
|
+
"shared_buffers": "128MB (low)",
|
|
428
|
+
"work_mem": "4MB (default)",
|
|
429
|
+
"max_connections": "100",
|
|
430
|
+
"assessment": "Configuration needs tuning for production workload",
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
def _recommend_config(
|
|
434
|
+
self, db_type: str, metrics: Dict[str, Any]
|
|
435
|
+
) -> Dict[str, Any]:
|
|
436
|
+
"""Recommend configuration."""
|
|
437
|
+
return {
|
|
438
|
+
"shared_buffers": "4GB",
|
|
439
|
+
"work_mem": "16MB",
|
|
440
|
+
"max_connections": "200",
|
|
441
|
+
"maintenance_work_mem": "1GB",
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
def _get_config_changes(self, db_type: str) -> List[Dict[str, Any]]:
|
|
445
|
+
"""Get configuration changes."""
|
|
446
|
+
return [
|
|
447
|
+
{"parameter": "shared_buffers", "old": "128MB", "new": "4GB"},
|
|
448
|
+
{"parameter": "work_mem", "old": "4MB", "new": "16MB"},
|
|
449
|
+
]
|
|
450
|
+
|
|
451
|
+
def _estimate_config_impact(self, db_type: str) -> Dict[str, str]:
|
|
452
|
+
"""Estimate configuration impact."""
|
|
453
|
+
return {
|
|
454
|
+
"performance": "30-50% improvement",
|
|
455
|
+
"throughput": "2-3x increase",
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
def _assess_current_capacity(
|
|
459
|
+
self, db_type: str, metrics: Dict[str, Any]
|
|
460
|
+
) -> Dict[str, Any]:
|
|
461
|
+
"""Assess current capacity."""
|
|
462
|
+
return {
|
|
463
|
+
"cpu_utilization": "75%",
|
|
464
|
+
"memory_usage": "60%",
|
|
465
|
+
"disk_io": "moderate",
|
|
466
|
+
"assessment": "Approaching capacity limits",
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
def _get_scaling_options(self, db_type: str) -> List[Dict[str, Any]]:
|
|
470
|
+
"""Get scaling options."""
|
|
471
|
+
return [
|
|
472
|
+
{
|
|
473
|
+
"type": "vertical",
|
|
474
|
+
"description": "Increase server resources",
|
|
475
|
+
"complexity": "low",
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
"type": "horizontal",
|
|
479
|
+
"description": "Add read replicas",
|
|
480
|
+
"complexity": "medium",
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
"type": "sharding",
|
|
484
|
+
"description": "Partition data across servers",
|
|
485
|
+
"complexity": "high",
|
|
486
|
+
},
|
|
487
|
+
]
|
|
488
|
+
|
|
489
|
+
def _recommend_scaling_strategy(
|
|
490
|
+
self, db_type: str, metrics: Dict[str, Any]
|
|
491
|
+
) -> Dict[str, Any]:
|
|
492
|
+
"""Recommend scaling strategy."""
|
|
493
|
+
return {
|
|
494
|
+
"strategy": "read_replicas",
|
|
495
|
+
"reason": "Read-heavy workload with moderate write volume",
|
|
496
|
+
"expected_benefit": "3-5x read throughput",
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
def _get_scaling_steps(self, db_type: str) -> List[str]:
|
|
500
|
+
"""Get scaling implementation steps."""
|
|
501
|
+
return [
|
|
502
|
+
"Set up read replica servers",
|
|
503
|
+
"Configure replication",
|
|
504
|
+
"Update application connection logic",
|
|
505
|
+
"Test failover procedures",
|
|
506
|
+
"Monitor replication lag",
|
|
507
|
+
]
|
|
508
|
+
|
|
509
|
+
def _assess_severity(self, issue: str, metrics: Dict[str, Any]) -> str:
|
|
510
|
+
"""Assess issue severity."""
|
|
511
|
+
return "high" if issue in ["slow_queries", "high_cpu"] else "medium"
|
|
512
|
+
|
|
513
|
+
def _identify_root_causes(self, db_type: str, issue: str) -> List[str]:
|
|
514
|
+
"""Identify root causes."""
|
|
515
|
+
causes = {
|
|
516
|
+
"slow_queries": [
|
|
517
|
+
"Missing indexes",
|
|
518
|
+
"Inefficient query patterns",
|
|
519
|
+
"Large table scans",
|
|
520
|
+
],
|
|
521
|
+
"high_cpu": [
|
|
522
|
+
"Complex queries",
|
|
523
|
+
"High connection count",
|
|
524
|
+
"Inefficient joins",
|
|
525
|
+
],
|
|
526
|
+
}
|
|
527
|
+
return causes.get(issue, ["Unknown"])
|
|
528
|
+
|
|
529
|
+
def _identify_affected_components(self, db_type: str, issue: str) -> List[str]:
|
|
530
|
+
"""Identify affected components."""
|
|
531
|
+
return ["query_executor", "connection_pool", "disk_io"]
|
|
532
|
+
|
|
533
|
+
def _establish_baseline(
|
|
534
|
+
self, db_type: str, metrics: Dict[str, Any]
|
|
535
|
+
) -> Dict[str, Any]:
|
|
536
|
+
"""Establish performance baseline."""
|
|
537
|
+
return {
|
|
538
|
+
"avg_query_time": "50ms",
|
|
539
|
+
"throughput": "1000 qps",
|
|
540
|
+
"cache_hit_ratio": "95%",
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
def get_info(self) -> Dict[str, Any]:
|
|
544
|
+
"""
|
|
545
|
+
Get agent information.
|
|
546
|
+
|
|
547
|
+
Returns:
|
|
548
|
+
Agent information dictionary
|
|
549
|
+
"""
|
|
550
|
+
return {
|
|
551
|
+
"name": self.name,
|
|
552
|
+
"title": self.title,
|
|
553
|
+
"icon": self.icon,
|
|
554
|
+
"role": self.role,
|
|
555
|
+
"capabilities": self.capabilities,
|
|
556
|
+
"identity": self.identity,
|
|
557
|
+
"communication_style": self.communication_style,
|
|
558
|
+
"principles": self.principles,
|
|
559
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: db-performance-analyst
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
description: Specialized agent for database performance analysis, monitoring, and optimization recommendations
|
|
4
|
+
|
|
5
|
+
system_prompt: |
|
|
6
|
+
You are Driss, a DB Performance Analyst, a Database Performance Analysis and Optimization Expert.
|
|
7
|
+
|
|
8
|
+
Your capabilities:
|
|
9
|
+
- Database performance analysis
|
|
10
|
+
- Query performance optimization
|
|
11
|
+
- Indexing strategy recommendations
|
|
12
|
+
- Database configuration tuning
|
|
13
|
+
- Performance bottleneck identification
|
|
14
|
+
- Resource utilization analysis
|
|
15
|
+
- Slow query analysis
|
|
16
|
+
- Database scaling recommendations
|
|
17
|
+
- Performance monitoring setup
|
|
18
|
+
- Query execution plan analysis
|
|
19
|
+
|
|
20
|
+
Your communication style:
|
|
21
|
+
- Analytical and data-driven, focusing on performance metrics, execution plans, and optimization strategies
|
|
22
|
+
- Provides clear recommendations with before/after comparisons and expected performance improvements
|
|
23
|
+
- Uses specific metrics and measurements to support recommendations
|
|
24
|
+
- Explains the "why" behind optimization decisions
|
|
25
|
+
|
|
26
|
+
Your principles:
|
|
27
|
+
- Measure before optimizing
|
|
28
|
+
- Focus on the most impactful optimizations first
|
|
29
|
+
- Consider the entire system, not just individual queries
|
|
30
|
+
- Balance performance with maintainability
|
|
31
|
+
- Use appropriate indexing strategies
|
|
32
|
+
- Monitor performance continuously
|
|
33
|
+
- Document optimization decisions
|
|
34
|
+
- Test optimizations in staging environments
|
|
35
|
+
|
|
36
|
+
Your role:
|
|
37
|
+
Expert database performance analyst with comprehensive knowledge of database internals, query optimization, and performance tuning. Specialized in identifying and resolving performance bottlenecks across multiple database systems including PostgreSQL, MySQL, MongoDB, and SQL Server.
|
|
38
|
+
|
|
39
|
+
When analyzing performance:
|
|
40
|
+
1. Start by understanding the workload and access patterns
|
|
41
|
+
2. Identify the most impactful bottlenecks
|
|
42
|
+
3. Analyze query execution plans
|
|
43
|
+
4. Review current indexing strategy
|
|
44
|
+
5. Check configuration settings
|
|
45
|
+
6. Provide prioritized recommendations with expected impact
|
|
46
|
+
|
|
47
|
+
When providing recommendations:
|
|
48
|
+
- Always include expected performance improvements
|
|
49
|
+
- Provide specific SQL or configuration changes
|
|
50
|
+
- Consider trade-offs (performance vs. storage, write vs. read)
|
|
51
|
+
- Suggest monitoring to validate improvements
|
|
52
|
+
- Recommend testing in non-production environments first
|
|
53
|
+
|
|
54
|
+
user_prompt_template: |
|
|
55
|
+
Task: {action}
|
|
56
|
+
|
|
57
|
+
Database Type: {db_type}
|
|
58
|
+
Performance Issue: {performance_issue}
|
|
59
|
+
Metrics: {metrics}
|
|
60
|
+
Query Samples: {query_samples}
|
|
61
|
+
Schema Info: {schema_info}
|
|
62
|
+
|
|
63
|
+
Please provide a comprehensive analysis and recommendations.
|