bmad-method 6.0.0-alpha.12 → 6.0.0-alpha.13
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/.github/workflows/bundle-latest.yaml +79 -27
- package/CHANGELOG.md +159 -1
- package/README.md +3 -1
- package/custom/src/agents/commit-poet/commit-poet.agent.yaml +129 -0
- package/custom/src/agents/commit-poet/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/installation-guide.md +36 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/instructions.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +111 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +70 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +114 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +134 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +161 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +103 -0
- package/custom/src/agents/toolsmith/toolsmith-sidecar/memories.md +17 -0
- package/custom/src/agents/toolsmith/toolsmith.agent.yaml +108 -0
- package/docs/custom-agent-installation.md +31 -17
- package/docs/ide-info/rovo-dev.md +388 -0
- package/docs/index.md +6 -81
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +1 -1
- package/package.json +1 -1
- package/src/core/agents/bmad-master.agent.yaml +1 -1
- package/src/core/agents/bmad-web-orchestrator.agent.xml +1 -1
- package/src/core/tasks/advanced-elicitation-methods.csv +51 -21
- package/src/core/tasks/advanced-elicitation.xml +18 -8
- package/src/core/tasks/workflow.xml +36 -71
- package/src/core/workflows/brainstorming/brain-methods.csv +62 -36
- package/src/core/workflows/brainstorming/steps/step-01-session-setup.md +196 -0
- package/src/core/workflows/brainstorming/steps/step-01b-continue.md +121 -0
- package/src/core/workflows/brainstorming/steps/step-02a-user-selected.md +224 -0
- package/src/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +236 -0
- package/src/core/workflows/brainstorming/steps/step-02c-random-selection.md +208 -0
- package/src/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +263 -0
- package/src/core/workflows/brainstorming/steps/step-03-technique-execution.md +339 -0
- package/src/core/workflows/brainstorming/steps/step-04-idea-organization.md +302 -0
- package/src/core/workflows/brainstorming/template.md +13 -104
- package/src/core/workflows/brainstorming/workflow.md +51 -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 +203 -0
- package/src/core/workflows/party-mode/steps/step-03-graceful-exit.md +159 -0
- package/src/core/workflows/party-mode/workflow.md +207 -0
- package/src/modules/bmb/README.md +153 -86
- package/src/modules/bmb/_module-installer/install-config.yaml +3 -3
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +45 -31
- package/src/modules/bmb/docs/{agent-menu-patterns.md → agents/agent-menu-patterns.md} +1 -1
- package/src/modules/bmb/docs/agents/kb.csv +0 -0
- package/src/modules/bmb/docs/{module-agent-architecture.md → agents/module-agent-architecture.md} +1 -1
- package/src/modules/bmb/docs/{simple-agent-architecture.md → agents/simple-agent-architecture.md} +1 -1
- package/src/modules/bmb/docs/workflows/architecture.md +220 -0
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +19 -0
- package/src/modules/bmb/docs/workflows/csv-data-file-standards.md +206 -0
- package/src/modules/bmb/docs/workflows/index.md +45 -0
- package/src/modules/bmb/docs/workflows/intent-vs-prescriptive-spectrum.md +220 -0
- package/src/modules/bmb/docs/workflows/kb.csv +0 -0
- package/src/modules/bmb/docs/workflows/step-template.md +283 -0
- package/src/modules/bmb/docs/workflows/terms.md +97 -0
- package/src/modules/bmb/docs/workflows/workflow-template.md +152 -0
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +2 -2
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/info-and-installation-guide.md +17 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/README.md +3 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/README.md +242 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/breakthroughs.md +24 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/instructions.md +108 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/memories.md +46 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper-sidecar/mood-patterns.md +39 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/expert-examples/journal-keeper/journal-keeper.agent.yaml +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +50 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +53 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +57 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/README.md +223 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/simple-examples/commit-poet.agent.yaml +126 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/dietary-restrictions.csv +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/macro-calculator.csv +16 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/data/recipe-database.csv +28 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +177 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +150 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +164 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +152 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +182 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +167 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +194 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/assessment-section.md +25 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/nutrition-plan.md +68 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/prep-schedule-section.md +29 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/profile-section.md +47 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/shopping-section.md +37 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/templates/strategy-section.md +18 -0
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +305 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +145 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +210 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +260 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +237 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +231 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +224 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +234 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +179 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +197 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +180 -0
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +222 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_commands.md +21 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_persona.md +25 -0
- package/src/modules/bmb/workflows/create-agent/templates/agent_purpose_and_type.md +23 -0
- package/src/modules/bmb/workflows/create-agent/workflow.md +91 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +168 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +233 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-overview.md +127 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-core-tools.md +145 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-memory-requirements.md +136 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-external-tools.md +154 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-installation-guidance.md +159 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-tools-summary.md +167 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-design.md +239 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-10-plan-review.md +215 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-11-build.md +262 -0
- package/src/modules/bmb/workflows/create-workflow/steps/step-12-review.md +270 -0
- package/src/modules/bmb/workflows/create-workflow/templates/build-summary.md +36 -0
- package/src/modules/bmb/workflows/create-workflow/templates/completion-section.md +39 -0
- package/src/modules/bmb/workflows/create-workflow/templates/content-template.md +21 -0
- package/src/modules/bmb/workflows/create-workflow/templates/design-section.md +53 -0
- package/src/modules/bmb/workflows/create-workflow/templates/project-info.md +18 -0
- package/src/modules/bmb/workflows/create-workflow/templates/requirements-section.md +47 -0
- package/src/modules/bmb/workflows/create-workflow/templates/review-section.md +56 -0
- package/src/modules/bmb/workflows/create-workflow/templates/step-file.md +139 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow-plan.md +54 -0
- package/src/modules/bmb/workflows/create-workflow/templates/workflow.md +58 -0
- package/src/modules/bmb/workflows/create-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +134 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +202 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +157 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +150 -0
- package/src/modules/bmb/workflows/edit-agent/workflow.md +58 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +221 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +253 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +217 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +193 -0
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +245 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/completion-summary.md +75 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-goals.md +68 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/improvement-log.md +40 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/validation-results.md +51 -0
- package/src/modules/bmb/workflows/edit-workflow/templates/workflow-analysis.md +56 -0
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +58 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +152 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +243 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +274 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +295 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +264 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +360 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +258 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +301 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/templates/compliance-report.md +140 -0
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +58 -0
- package/src/modules/bmgd/agents/game-architect.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-designer.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-dev.agent.yaml +1 -1
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +1 -1
- package/src/modules/bmm/_module-installer/install-config.yaml +9 -15
- package/src/modules/bmm/agents/analyst.agent.yaml +14 -14
- package/src/modules/bmm/agents/architect.agent.yaml +12 -10
- package/src/modules/bmm/agents/dev.agent.yaml +20 -16
- package/src/modules/bmm/agents/pm.agent.yaml +13 -31
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +36 -0
- package/src/modules/bmm/agents/sm.agent.yaml +13 -31
- package/src/modules/bmm/agents/tea.agent.yaml +10 -7
- package/src/modules/bmm/agents/tech-writer.agent.yaml +7 -20
- package/src/modules/bmm/agents/ux-designer.agent.yaml +12 -10
- package/src/modules/bmm/data/README.md +29 -0
- package/src/modules/bmm/data/project-context-template.md +40 -0
- package/src/modules/bmm/docs/README.md +21 -9
- package/src/modules/bmm/docs/agents-guide.md +69 -23
- package/src/modules/bmm/docs/bmad-quick-flow.md +528 -0
- package/src/modules/bmm/docs/brownfield-guide.md +9 -10
- package/src/modules/bmm/docs/enterprise-agentic-development.md +1 -1
- package/src/modules/bmm/docs/glossary.md +5 -5
- package/src/modules/bmm/docs/images/workflow-method-greenfield.excalidraw +909 -1654
- package/src/modules/bmm/docs/images/workflow-method-greenfield.svg +2 -2
- package/src/modules/bmm/docs/quick-flow-solo-dev.md +337 -0
- package/src/modules/bmm/docs/scale-adaptive-system.md +5 -5
- package/src/modules/bmm/docs/test-architecture.md +84 -18
- package/src/modules/bmm/docs/workflows-analysis.md +36 -140
- package/src/modules/bmm/docs/workflows-implementation.md +32 -157
- package/src/modules/bmm/docs/workflows-planning.md +51 -212
- package/src/modules/bmm/docs/workflows-solutioning.md +24 -69
- package/src/modules/bmm/teams/default-party.csv +15 -14
- package/src/modules/bmm/teams/team-fullstack.yaml +0 -1
- package/src/modules/bmm/testarch/knowledge/api-request.md +303 -0
- package/src/modules/bmm/testarch/knowledge/auth-session.md +356 -0
- package/src/modules/bmm/testarch/knowledge/burn-in.md +273 -0
- package/src/modules/bmm/testarch/knowledge/file-utils.md +260 -0
- package/src/modules/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/src/modules/bmm/testarch/knowledge/intercept-network-call.md +280 -0
- package/src/modules/bmm/testarch/knowledge/log.md +294 -0
- package/src/modules/bmm/testarch/knowledge/network-error-monitor.md +272 -0
- package/src/modules/bmm/testarch/knowledge/network-recorder.md +265 -0
- package/src/modules/bmm/testarch/knowledge/overview.md +284 -0
- package/src/modules/bmm/testarch/knowledge/recurse.md +296 -0
- package/src/modules/bmm/testarch/tea-index.csv +11 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/product-brief.template.md +8 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +192 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +167 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +203 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +206 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +209 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +223 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +199 -0
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +58 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +228 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +205 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +233 -0
- package/src/modules/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +235 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +198 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +247 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +257 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +175 -0
- package/src/modules/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +16 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +136 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +246 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +200 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +237 -0
- package/src/modules/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +198 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +159 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +126 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +209 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +215 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +218 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +233 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +253 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +223 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +247 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +263 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +226 -0
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +6 -138
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +53 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/prd-template.md +5 -200
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +161 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +123 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +271 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +272 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +249 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +240 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +236 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +280 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +251 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +275 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +210 -0
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +61 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-decision-template.md +13 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/domain-complexity.csv +11 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/data/project-types.csv +7 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01-init.md +194 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-01b-continue.md +163 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +223 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +330 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +317 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +378 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +358 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +351 -0
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +48 -0
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/instructions.md +247 -476
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.yaml +8 -18
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +176 -0
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +4 -11
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +332 -214
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +324 -0
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +21 -34
- package/src/modules/bmm/workflows/4-implementation/dev-story/checklist.md +65 -23
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +406 -0
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +6 -37
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +4 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +115 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +26 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +25 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +105 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +29 -0
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +193 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +317 -0
- package/src/modules/bmm/workflows/generate-project-context/steps/step-03-complete.md +277 -0
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +48 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +23 -3
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +23 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +18 -1
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +27 -1
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +8 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +28 -8
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +66 -54
- package/src/modules/bmm/workflows/workflow-status/instructions.md +11 -4
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-brownfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/enterprise-greenfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-brownfield.yaml +3 -2
- package/src/modules/bmm/workflows/workflow-status/paths/method-greenfield.yaml +3 -2
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +3 -2
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +2 -1
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +2 -1
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +2 -1
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -2
- package/src/modules/cis/agents/storyteller.agent.yaml +2 -1
- package/src/modules/cis/teams/default-party.csv +6 -5
- package/src/utility/models/agent-activation-ide.xml +4 -4
- package/src/utility/models/agent-activation-web.xml +1 -11
- package/src/utility/models/fragments/activation-rules.xml +5 -6
- package/src/utility/models/fragments/handler-exec.xml +6 -5
- package/src/utility/models/fragments/handler-multi.xml +14 -0
- package/test/README.md +1 -1
- package/test/fixtures/agent-schema/valid/menu-commands/all-command-types.agent.yaml +1 -3
- package/tools/cli/README.md +1 -0
- package/tools/cli/bundlers/web-bundler.js +3 -14
- package/tools/cli/commands/agent-install.js +8 -8
- package/tools/cli/commands/cleanup.js +141 -0
- package/tools/cli/commands/install.js +48 -3
- package/tools/cli/installers/lib/core/config-collector.js +24 -0
- package/tools/cli/installers/lib/core/installer.js +612 -43
- package/tools/cli/installers/lib/ide/antigravity.js +51 -7
- package/tools/cli/installers/lib/ide/auggie.js +53 -0
- package/tools/cli/installers/lib/ide/claude-code.js +1 -6
- package/tools/cli/installers/lib/ide/cline.js +49 -0
- package/tools/cli/installers/lib/ide/codex.js +2 -2
- package/tools/cli/installers/lib/ide/crush.js +47 -0
- package/tools/cli/installers/lib/ide/gemini.js +47 -0
- package/tools/cli/installers/lib/ide/github-copilot.js +59 -48
- package/tools/cli/installers/lib/ide/iflow.js +47 -0
- package/tools/cli/installers/lib/ide/kilo.js +74 -0
- package/tools/cli/installers/lib/ide/qwen.js +54 -0
- package/tools/cli/installers/lib/ide/roo.js +71 -0
- package/tools/cli/installers/lib/ide/rovo-dev.js +290 -0
- package/tools/cli/installers/lib/ide/trae.js +47 -0
- package/tools/cli/lib/agent/compiler.js +156 -22
- package/tools/cli/lib/agent/installer.js +13 -3
- package/tools/cli/lib/agent-analyzer.js +46 -18
- package/tools/cli/lib/ui.js +204 -9
- package/tools/cli/lib/yaml-xml-builder.js +123 -24
- package/tools/platform-codes.yaml +12 -0
- package/tools/schema/agent.js +169 -20
- package/src/core/tasks/adv-elicit-methods.csv +0 -39
- package/src/core/workflows/brainstorming/README.md +0 -261
- package/src/core/workflows/brainstorming/instructions.md +0 -315
- package/src/core/workflows/brainstorming/workflow.yaml +0 -38
- package/src/core/workflows/party-mode/instructions.md +0 -183
- package/src/core/workflows/party-mode/workflow.yaml +0 -28
- package/src/modules/bmb/workflows/audit-workflow/checklist.md +0 -142
- package/src/modules/bmb/workflows/audit-workflow/instructions.md +0 -341
- package/src/modules/bmb/workflows/audit-workflow/template.md +0 -118
- package/src/modules/bmb/workflows/audit-workflow/workflow.yaml +0 -25
- package/src/modules/bmb/workflows/convert-legacy/README.md +0 -262
- package/src/modules/bmb/workflows/convert-legacy/checklist.md +0 -205
- package/src/modules/bmb/workflows/convert-legacy/instructions.md +0 -377
- package/src/modules/bmb/workflows/convert-legacy/workflow.yaml +0 -30
- package/src/modules/bmb/workflows/create-agent/instructions.md +0 -519
- package/src/modules/bmb/workflows/create-agent/workflow.yaml +0 -55
- package/src/modules/bmb/workflows/create-workflow/README.md +0 -277
- package/src/modules/bmb/workflows/create-workflow/brainstorm-context.md +0 -197
- package/src/modules/bmb/workflows/create-workflow/checklist.md +0 -94
- package/src/modules/bmb/workflows/create-workflow/instructions.md +0 -725
- package/src/modules/bmb/workflows/create-workflow/workflow-creation-guide.md +0 -1327
- package/src/modules/bmb/workflows/create-workflow/workflow-template/checklist.md +0 -24
- package/src/modules/bmb/workflows/create-workflow/workflow-template/instructions.md +0 -15
- package/src/modules/bmb/workflows/create-workflow/workflow-template/template.md +0 -9
- package/src/modules/bmb/workflows/create-workflow/workflow-template/workflow.yaml +0 -61
- package/src/modules/bmb/workflows/create-workflow/workflow.yaml +0 -41
- package/src/modules/bmb/workflows/edit-agent/README.md +0 -239
- package/src/modules/bmb/workflows/edit-agent/instructions.md +0 -654
- package/src/modules/bmb/workflows/edit-agent/workflow.yaml +0 -49
- package/src/modules/bmb/workflows/edit-workflow/README.md +0 -119
- package/src/modules/bmb/workflows/edit-workflow/checklist.md +0 -70
- package/src/modules/bmb/workflows/edit-workflow/instructions.md +0 -342
- package/src/modules/bmb/workflows/edit-workflow/workflow.yaml +0 -27
- package/src/modules/bmm/_module-installer/assets/bmm-kb.md +0 -1
- package/src/modules/bmm/_module-installer/assets/technical-decisions.md +0 -30
- package/src/modules/bmm/docs/quick-spec-flow.md +0 -652
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/instructions.md +0 -112
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/project-context.md +0 -25
- package/src/modules/bmm/workflows/1-analysis/brainstorm-project/workflow.yaml +0 -39
- package/src/modules/bmm/workflows/1-analysis/domain-research/instructions.md +0 -425
- package/src/modules/bmm/workflows/1-analysis/domain-research/template.md +0 -180
- package/src/modules/bmm/workflows/1-analysis/domain-research/workflow.yaml +0 -56
- package/src/modules/bmm/workflows/1-analysis/product-brief/checklist.md +0 -115
- package/src/modules/bmm/workflows/1-analysis/product-brief/instructions.md +0 -524
- package/src/modules/bmm/workflows/1-analysis/product-brief/template.md +0 -181
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.yaml +0 -61
- package/src/modules/bmm/workflows/1-analysis/research/checklist-deep-prompt.md +0 -144
- package/src/modules/bmm/workflows/1-analysis/research/checklist-technical.md +0 -249
- package/src/modules/bmm/workflows/1-analysis/research/checklist.md +0 -299
- package/src/modules/bmm/workflows/1-analysis/research/claude-code/injections.yaml +0 -114
- package/src/modules/bmm/workflows/1-analysis/research/instructions-deep-prompt.md +0 -438
- package/src/modules/bmm/workflows/1-analysis/research/instructions-market.md +0 -675
- package/src/modules/bmm/workflows/1-analysis/research/instructions-router.md +0 -134
- package/src/modules/bmm/workflows/1-analysis/research/instructions-technical.md +0 -534
- package/src/modules/bmm/workflows/1-analysis/research/template-deep-prompt.md +0 -94
- package/src/modules/bmm/workflows/1-analysis/research/template-market.md +0 -347
- package/src/modules/bmm/workflows/1-analysis/research/template-technical.md +0 -245
- package/src/modules/bmm/workflows/1-analysis/research/workflow.yaml +0 -62
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/checklist.md +0 -310
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/instructions.md +0 -1308
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.yaml +0 -93
- package/src/modules/bmm/workflows/2-plan-workflows/prd/checklist.md +0 -346
- package/src/modules/bmm/workflows/2-plan-workflows/prd/instructions.md +0 -703
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.yaml +0 -78
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/checklist.md +0 -217
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/epics-template.md +0 -74
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions-generate-stories.md +0 -436
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/instructions.md +0 -980
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/tech-spec-template.md +0 -181
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/user-story-template.md +0 -90
- package/src/modules/bmm/workflows/2-plan-workflows/tech-spec/workflow.yaml +0 -60
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-patterns.yaml +0 -321
- package/src/modules/bmm/workflows/3-solutioning/architecture/architecture-template.md +0 -103
- package/src/modules/bmm/workflows/3-solutioning/architecture/checklist.md +0 -240
- package/src/modules/bmm/workflows/3-solutioning/architecture/decision-catalog.yaml +0 -222
- package/src/modules/bmm/workflows/3-solutioning/architecture/instructions.md +0 -768
- package/src/modules/bmm/workflows/3-solutioning/architecture/pattern-categories.csv +0 -13
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.yaml +0 -100
- package/src/modules/bmm/workflows/4-implementation/code-review/backlog_template.md +0 -12
- package/src/modules/bmm/workflows/4-implementation/code-review/checklist.md +0 -22
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.md +0 -398
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.md +0 -256
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.md +0 -267
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/checklist.md +0 -17
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/instructions.md +0 -164
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/template.md +0 -76
- package/src/modules/bmm/workflows/4-implementation/epic-tech-context/workflow.yaml +0 -58
- package/src/modules/bmm/workflows/4-implementation/story-context/checklist.md +0 -16
- package/src/modules/bmm/workflows/4-implementation/story-context/context-template.xml +0 -34
- package/src/modules/bmm/workflows/4-implementation/story-context/instructions.md +0 -209
- package/src/modules/bmm/workflows/4-implementation/story-context/workflow.yaml +0 -63
- package/src/modules/bmm/workflows/4-implementation/story-done/instructions.md +0 -111
- package/src/modules/bmm/workflows/4-implementation/story-done/workflow.yaml +0 -28
- package/src/modules/bmm/workflows/4-implementation/story-ready/instructions.md +0 -117
- package/src/modules/bmm/workflows/4-implementation/story-ready/workflow.yaml +0 -25
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-brownfield.yaml +0 -58
- package/src/modules/bmm/workflows/workflow-status/paths/quick-flow-greenfield.yaml +0 -47
- /package/src/modules/bmb/docs/{agent-compilation.md → agents/agent-compilation.md} +0 -0
- /package/src/modules/bmb/docs/{expert-agent-architecture.md → agents/expert-agent-architecture.md} +0 -0
- /package/src/modules/bmb/docs/{index.md → agents/index.md} +0 -0
- /package/src/modules/bmb/docs/{understanding-agent-types.md → agents/understanding-agent-types.md} +0 -0
- /package/src/modules/bmb/reference/{readme.md → README.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{agent-validation-checklist.md → data/agent-validation-checklist.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{brainstorm-context.md → data/brainstorm-context.md} +0 -0
- /package/src/modules/bmb/workflows/create-agent/{communication-presets.csv → data/communication-presets.csv} +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/brainstorm-context.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/install-config.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/installer-templates/installer.js +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/module-structure.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/create-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/edit-module/workflow.yaml +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/README.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/checklist.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/instructions.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/template.md +0 -0
- /package/src/modules/bmb/{workflows → workflows-legacy}/module-brief/workflow.yaml +0 -0
- /package/src/modules/bmm/{workflows/techdoc → data}/documentation-standards.md +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
2
3
|
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
4
|
const chalk = require('chalk');
|
|
4
5
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
|
@@ -120,6 +121,52 @@ Part of the BMAD ${task.module.toUpperCase()} module.
|
|
|
120
121
|
console.log(chalk.dim(`Removed BMAD commands from iFlow CLI`));
|
|
121
122
|
}
|
|
122
123
|
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Install a custom agent launcher for iFlow
|
|
127
|
+
* @param {string} projectDir - Project directory
|
|
128
|
+
* @param {string} agentName - Agent name (e.g., "fred-commit-poet")
|
|
129
|
+
* @param {string} agentPath - Path to compiled agent (relative to project root)
|
|
130
|
+
* @param {Object} metadata - Agent metadata
|
|
131
|
+
* @returns {Object} Installation result
|
|
132
|
+
*/
|
|
133
|
+
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
|
|
134
|
+
const iflowDir = path.join(projectDir, this.configDir);
|
|
135
|
+
const bmadCommandsDir = path.join(iflowDir, this.commandsDir, 'bmad');
|
|
136
|
+
|
|
137
|
+
// Create .iflow/commands/bmad directory if it doesn't exist
|
|
138
|
+
await fs.ensureDir(bmadCommandsDir);
|
|
139
|
+
|
|
140
|
+
// Create custom agent launcher
|
|
141
|
+
const launcherContent = `# ${agentName} Custom Agent
|
|
142
|
+
|
|
143
|
+
**⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
|
|
144
|
+
|
|
145
|
+
This is a launcher for the custom BMAD agent "${agentName}".
|
|
146
|
+
|
|
147
|
+
## Usage
|
|
148
|
+
1. First run: \`${agentPath}\` to load the complete agent
|
|
149
|
+
2. Then use this command to activate ${agentName}
|
|
150
|
+
|
|
151
|
+
The agent will follow the persona and instructions from the main agent file.
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
*Generated by BMAD Method*`;
|
|
156
|
+
|
|
157
|
+
const fileName = `custom-${agentName.toLowerCase()}.md`;
|
|
158
|
+
const launcherPath = path.join(bmadCommandsDir, fileName);
|
|
159
|
+
|
|
160
|
+
// Write the launcher file
|
|
161
|
+
await fs.writeFile(launcherPath, launcherContent, 'utf8');
|
|
162
|
+
|
|
163
|
+
return {
|
|
164
|
+
ide: 'iflow',
|
|
165
|
+
path: path.relative(projectDir, launcherPath),
|
|
166
|
+
command: agentName,
|
|
167
|
+
type: 'custom-agent-launcher',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
123
170
|
}
|
|
124
171
|
|
|
125
172
|
module.exports = { IFlowSetup };
|
|
@@ -123,6 +123,9 @@ class KiloSetup extends BaseIdeSetup {
|
|
|
123
123
|
modeEntry += ` groups:\n`;
|
|
124
124
|
modeEntry += ` - read\n`;
|
|
125
125
|
modeEntry += ` - edit\n`;
|
|
126
|
+
modeEntry += ` - browser\n`;
|
|
127
|
+
modeEntry += ` - command\n`;
|
|
128
|
+
modeEntry += ` - mcp\n`;
|
|
126
129
|
|
|
127
130
|
return modeEntry;
|
|
128
131
|
}
|
|
@@ -170,6 +173,77 @@ class KiloSetup extends BaseIdeSetup {
|
|
|
170
173
|
console.log(chalk.dim(`Removed ${removedCount} BMAD modes from .kilocodemodes`));
|
|
171
174
|
}
|
|
172
175
|
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Install a custom agent launcher for Kilo
|
|
179
|
+
* @param {string} projectDir - Project directory
|
|
180
|
+
* @param {string} agentName - Agent name (e.g., "fred-commit-poet")
|
|
181
|
+
* @param {string} agentPath - Path to compiled agent (relative to project root)
|
|
182
|
+
* @param {Object} metadata - Agent metadata
|
|
183
|
+
* @returns {Object} Installation result
|
|
184
|
+
*/
|
|
185
|
+
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
|
|
186
|
+
const kilocodemodesPath = path.join(projectDir, this.configFile);
|
|
187
|
+
let existingContent = '';
|
|
188
|
+
|
|
189
|
+
// Read existing .kilocodemodes file
|
|
190
|
+
if (await this.pathExists(kilocodemodesPath)) {
|
|
191
|
+
existingContent = await this.readFile(kilocodemodesPath);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// Create custom agent mode entry
|
|
195
|
+
const slug = `bmad-custom-${agentName.toLowerCase()}`;
|
|
196
|
+
const modeEntry = ` - slug: ${slug}
|
|
197
|
+
name: 'BMAD Custom: ${agentName}'
|
|
198
|
+
description: |
|
|
199
|
+
Custom BMAD agent: ${agentName}
|
|
200
|
+
|
|
201
|
+
**⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
|
|
202
|
+
|
|
203
|
+
This is a launcher for the custom BMAD agent "${agentName}". The agent will follow the persona and instructions from the main agent file.
|
|
204
|
+
prompt: |
|
|
205
|
+
@${agentPath}
|
|
206
|
+
always: false
|
|
207
|
+
permissions: all
|
|
208
|
+
`;
|
|
209
|
+
|
|
210
|
+
// Check if mode already exists
|
|
211
|
+
if (existingContent.includes(slug)) {
|
|
212
|
+
return {
|
|
213
|
+
ide: 'kilo',
|
|
214
|
+
path: this.configFile,
|
|
215
|
+
command: agentName,
|
|
216
|
+
type: 'custom-agent-launcher',
|
|
217
|
+
alreadyExists: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// Build final content
|
|
222
|
+
let finalContent = '';
|
|
223
|
+
if (existingContent) {
|
|
224
|
+
// Find customModes section or add it
|
|
225
|
+
if (existingContent.includes('customModes:')) {
|
|
226
|
+
// Append to existing customModes
|
|
227
|
+
finalContent = existingContent + modeEntry;
|
|
228
|
+
} else {
|
|
229
|
+
// Add customModes section
|
|
230
|
+
finalContent = existingContent.trim() + '\n\ncustomModes:\n' + modeEntry;
|
|
231
|
+
}
|
|
232
|
+
} else {
|
|
233
|
+
// Create new .kilocodemodes file with customModes
|
|
234
|
+
finalContent = 'customModes:\n' + modeEntry;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Write .kilocodemodes file
|
|
238
|
+
await this.writeFile(kilocodemodesPath, finalContent);
|
|
239
|
+
|
|
240
|
+
return {
|
|
241
|
+
ide: 'kilo',
|
|
242
|
+
path: this.configFile,
|
|
243
|
+
command: slug,
|
|
244
|
+
type: 'custom-agent-launcher',
|
|
245
|
+
};
|
|
246
|
+
}
|
|
173
247
|
}
|
|
174
248
|
|
|
175
249
|
module.exports = { KiloSetup };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
2
3
|
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
4
|
const chalk = require('chalk');
|
|
4
5
|
const { getAgentsFromBmad, getTasksFromBmad } = require('./shared/bmad-artifacts');
|
|
@@ -313,6 +314,59 @@ ${prompt}
|
|
|
313
314
|
console.log(chalk.dim(`Removed old BMAD configuration from Qwen Code`));
|
|
314
315
|
}
|
|
315
316
|
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Install a custom agent launcher for Qwen
|
|
320
|
+
* @param {string} projectDir - Project directory
|
|
321
|
+
* @param {string} agentName - Agent name (e.g., "fred-commit-poet")
|
|
322
|
+
* @param {string} agentPath - Path to compiled agent (relative to project root)
|
|
323
|
+
* @param {Object} metadata - Agent metadata
|
|
324
|
+
* @returns {Object} Installation result
|
|
325
|
+
*/
|
|
326
|
+
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
|
|
327
|
+
const qwenDir = path.join(projectDir, this.configDir);
|
|
328
|
+
const commandsDir = path.join(qwenDir, this.commandsDir);
|
|
329
|
+
const bmadCommandsDir = path.join(commandsDir, this.bmadDir);
|
|
330
|
+
|
|
331
|
+
// Create .qwen/commands/BMad directory if it doesn't exist
|
|
332
|
+
await fs.ensureDir(bmadCommandsDir);
|
|
333
|
+
|
|
334
|
+
// Create custom agent launcher in TOML format (same pattern as regular agents)
|
|
335
|
+
const launcherContent = `# ${agentName} Custom Agent
|
|
336
|
+
|
|
337
|
+
**⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
|
|
338
|
+
|
|
339
|
+
This is a launcher for the custom BMAD agent "${agentName}".
|
|
340
|
+
|
|
341
|
+
## Usage
|
|
342
|
+
1. First run: \`${agentPath}\` to load the complete agent
|
|
343
|
+
2. Then use this command to activate ${agentName}
|
|
344
|
+
|
|
345
|
+
The agent will follow the persona and instructions from the main agent file.
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
*Generated by BMAD Method*`;
|
|
350
|
+
|
|
351
|
+
// Use Qwen's TOML conversion method
|
|
352
|
+
const tomlContent = this.processAgentLauncherContent(launcherContent, {
|
|
353
|
+
name: agentName,
|
|
354
|
+
module: 'custom',
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
const fileName = `custom-${agentName.toLowerCase()}.toml`;
|
|
358
|
+
const launcherPath = path.join(bmadCommandsDir, fileName);
|
|
359
|
+
|
|
360
|
+
// Write the launcher file
|
|
361
|
+
await fs.writeFile(launcherPath, tomlContent, 'utf8');
|
|
362
|
+
|
|
363
|
+
return {
|
|
364
|
+
ide: 'qwen',
|
|
365
|
+
path: path.relative(projectDir, launcherPath),
|
|
366
|
+
command: agentName,
|
|
367
|
+
type: 'custom-agent-launcher',
|
|
368
|
+
};
|
|
369
|
+
}
|
|
316
370
|
}
|
|
317
371
|
|
|
318
372
|
module.exports = { QwenSetup };
|
|
@@ -248,6 +248,77 @@ class RooSetup extends BaseIdeSetup {
|
|
|
248
248
|
console.log(chalk.dim(`Removed ${removedCount} BMAD modes from .roomodes`));
|
|
249
249
|
}
|
|
250
250
|
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Install a custom agent launcher for Roo
|
|
254
|
+
* @param {string} projectDir - Project directory
|
|
255
|
+
* @param {string} agentName - Agent name (e.g., "fred-commit-poet")
|
|
256
|
+
* @param {string} agentPath - Path to compiled agent (relative to project root)
|
|
257
|
+
* @param {Object} metadata - Agent metadata
|
|
258
|
+
* @returns {Object} Installation result
|
|
259
|
+
*/
|
|
260
|
+
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
|
|
261
|
+
const roomodesPath = path.join(projectDir, this.configFile);
|
|
262
|
+
let existingContent = '';
|
|
263
|
+
|
|
264
|
+
// Read existing .roomodes file
|
|
265
|
+
if (await this.pathExists(roomodesPath)) {
|
|
266
|
+
existingContent = await this.readFile(roomodesPath);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Create custom agent mode entry
|
|
270
|
+
const slug = `bmad-custom-${agentName.toLowerCase()}`;
|
|
271
|
+
const modeEntry = ` - slug: ${slug}
|
|
272
|
+
name: 'BMAD Custom: ${agentName}'
|
|
273
|
+
description: |
|
|
274
|
+
Custom BMAD agent: ${agentName}
|
|
275
|
+
|
|
276
|
+
**⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
|
|
277
|
+
|
|
278
|
+
This is a launcher for the custom BMAD agent "${agentName}". The agent will follow the persona and instructions from the main agent file.
|
|
279
|
+
prompt: |
|
|
280
|
+
@${agentPath}
|
|
281
|
+
always: false
|
|
282
|
+
permissions: all
|
|
283
|
+
`;
|
|
284
|
+
|
|
285
|
+
// Check if mode already exists
|
|
286
|
+
if (existingContent.includes(slug)) {
|
|
287
|
+
return {
|
|
288
|
+
ide: 'roo',
|
|
289
|
+
path: this.configFile,
|
|
290
|
+
command: agentName,
|
|
291
|
+
type: 'custom-agent-launcher',
|
|
292
|
+
alreadyExists: true,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// Build final content
|
|
297
|
+
let finalContent = '';
|
|
298
|
+
if (existingContent) {
|
|
299
|
+
// Find customModes section or add it
|
|
300
|
+
if (existingContent.includes('customModes:')) {
|
|
301
|
+
// Append to existing customModes
|
|
302
|
+
finalContent = existingContent + modeEntry;
|
|
303
|
+
} else {
|
|
304
|
+
// Add customModes section
|
|
305
|
+
finalContent = existingContent.trim() + '\n\ncustomModes:\n' + modeEntry;
|
|
306
|
+
}
|
|
307
|
+
} else {
|
|
308
|
+
// Create new .roomodes file with customModes
|
|
309
|
+
finalContent = 'customModes:\n' + modeEntry;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// Write .roomodes file
|
|
313
|
+
await this.writeFile(roomodesPath, finalContent);
|
|
314
|
+
|
|
315
|
+
return {
|
|
316
|
+
ide: 'roo',
|
|
317
|
+
path: this.configFile,
|
|
318
|
+
command: slug,
|
|
319
|
+
type: 'custom-agent-launcher',
|
|
320
|
+
};
|
|
321
|
+
}
|
|
251
322
|
}
|
|
252
323
|
|
|
253
324
|
module.exports = { RooSetup };
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
3
|
+
const chalk = require('chalk');
|
|
4
|
+
const { BaseIdeSetup } = require('./_base-ide');
|
|
5
|
+
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
|
6
|
+
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
|
|
7
|
+
const { TaskToolCommandGenerator } = require('./shared/task-tool-command-generator');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Rovo Dev IDE setup handler
|
|
11
|
+
*
|
|
12
|
+
* Installs BMAD agents as Rovo Dev subagents in .rovodev/subagents/
|
|
13
|
+
* Installs workflows and tasks/tools as reference guides in .rovodev/
|
|
14
|
+
* Rovo Dev automatically discovers agents and integrates with BMAD like other IDEs
|
|
15
|
+
*/
|
|
16
|
+
class RovoDevSetup extends BaseIdeSetup {
|
|
17
|
+
constructor() {
|
|
18
|
+
super('rovo-dev', 'Atlassian Rovo Dev', true); // preferred IDE
|
|
19
|
+
this.configDir = '.rovodev';
|
|
20
|
+
this.subagentsDir = 'subagents';
|
|
21
|
+
this.workflowsDir = 'workflows';
|
|
22
|
+
this.referencesDir = 'references';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Cleanup old BMAD installation before reinstalling
|
|
27
|
+
* @param {string} projectDir - Project directory
|
|
28
|
+
*/
|
|
29
|
+
async cleanup(projectDir) {
|
|
30
|
+
const rovoDevDir = path.join(projectDir, this.configDir);
|
|
31
|
+
|
|
32
|
+
if (!(await fs.pathExists(rovoDevDir))) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Clean BMAD agents from subagents directory
|
|
37
|
+
const subagentsDir = path.join(rovoDevDir, this.subagentsDir);
|
|
38
|
+
if (await fs.pathExists(subagentsDir)) {
|
|
39
|
+
const entries = await fs.readdir(subagentsDir);
|
|
40
|
+
const bmadFiles = entries.filter((file) => file.startsWith('bmad-') && file.endsWith('.md'));
|
|
41
|
+
|
|
42
|
+
for (const file of bmadFiles) {
|
|
43
|
+
await fs.remove(path.join(subagentsDir, file));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Clean BMAD workflows from workflows directory
|
|
48
|
+
const workflowsDir = path.join(rovoDevDir, this.workflowsDir);
|
|
49
|
+
if (await fs.pathExists(workflowsDir)) {
|
|
50
|
+
const entries = await fs.readdir(workflowsDir);
|
|
51
|
+
const bmadFiles = entries.filter((file) => file.startsWith('bmad-') && file.endsWith('.md'));
|
|
52
|
+
|
|
53
|
+
for (const file of bmadFiles) {
|
|
54
|
+
await fs.remove(path.join(workflowsDir, file));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Clean BMAD tasks/tools from references directory
|
|
59
|
+
const referencesDir = path.join(rovoDevDir, this.referencesDir);
|
|
60
|
+
if (await fs.pathExists(referencesDir)) {
|
|
61
|
+
const entries = await fs.readdir(referencesDir);
|
|
62
|
+
const bmadFiles = entries.filter((file) => file.startsWith('bmad-') && file.endsWith('.md'));
|
|
63
|
+
|
|
64
|
+
for (const file of bmadFiles) {
|
|
65
|
+
await fs.remove(path.join(referencesDir, file));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Setup Rovo Dev configuration
|
|
72
|
+
* @param {string} projectDir - Project directory
|
|
73
|
+
* @param {string} bmadDir - BMAD installation directory
|
|
74
|
+
* @param {Object} options - Setup options
|
|
75
|
+
*/
|
|
76
|
+
async setup(projectDir, bmadDir, options = {}) {
|
|
77
|
+
console.log(chalk.cyan(`Setting up ${this.name}...`));
|
|
78
|
+
|
|
79
|
+
// Clean up old BMAD installation first
|
|
80
|
+
await this.cleanup(projectDir);
|
|
81
|
+
|
|
82
|
+
// Create .rovodev directory structure
|
|
83
|
+
const rovoDevDir = path.join(projectDir, this.configDir);
|
|
84
|
+
const subagentsDir = path.join(rovoDevDir, this.subagentsDir);
|
|
85
|
+
const workflowsDir = path.join(rovoDevDir, this.workflowsDir);
|
|
86
|
+
const referencesDir = path.join(rovoDevDir, this.referencesDir);
|
|
87
|
+
|
|
88
|
+
await this.ensureDir(subagentsDir);
|
|
89
|
+
await this.ensureDir(workflowsDir);
|
|
90
|
+
await this.ensureDir(referencesDir);
|
|
91
|
+
|
|
92
|
+
// Generate and install agents
|
|
93
|
+
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
|
94
|
+
const { artifacts: agentArtifacts } = await agentGen.collectAgentArtifacts(bmadDir, options.selectedModules || []);
|
|
95
|
+
|
|
96
|
+
let agentCount = 0;
|
|
97
|
+
for (const artifact of agentArtifacts) {
|
|
98
|
+
const subagentFilename = `bmad-${artifact.module}-${artifact.name}.md`;
|
|
99
|
+
const targetPath = path.join(subagentsDir, subagentFilename);
|
|
100
|
+
const subagentContent = this.convertToRovoDevSubagent(artifact.content, artifact.name, artifact.module);
|
|
101
|
+
await this.writeFile(targetPath, subagentContent);
|
|
102
|
+
agentCount++;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Generate and install workflows
|
|
106
|
+
const workflowGen = new WorkflowCommandGenerator(this.bmadFolderName);
|
|
107
|
+
const { artifacts: workflowArtifacts, counts: workflowCounts } = await workflowGen.collectWorkflowArtifacts(bmadDir);
|
|
108
|
+
|
|
109
|
+
let workflowCount = 0;
|
|
110
|
+
for (const artifact of workflowArtifacts) {
|
|
111
|
+
if (artifact.type === 'workflow-command') {
|
|
112
|
+
const workflowFilename = path.basename(artifact.relativePath);
|
|
113
|
+
const targetPath = path.join(workflowsDir, workflowFilename);
|
|
114
|
+
await this.writeFile(targetPath, artifact.content);
|
|
115
|
+
workflowCount++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Generate and install tasks and tools
|
|
120
|
+
const taskToolGen = new TaskToolCommandGenerator();
|
|
121
|
+
const { tasks: taskCount, tools: toolCount } = await this.generateTaskToolReferences(bmadDir, referencesDir, taskToolGen);
|
|
122
|
+
|
|
123
|
+
// Summary output
|
|
124
|
+
console.log(chalk.green(`✓ ${this.name} configured:`));
|
|
125
|
+
console.log(chalk.dim(` - ${agentCount} agents installed to .rovodev/subagents/`));
|
|
126
|
+
if (workflowCount > 0) {
|
|
127
|
+
console.log(chalk.dim(` - ${workflowCount} workflows installed to .rovodev/workflows/`));
|
|
128
|
+
}
|
|
129
|
+
if (taskCount + toolCount > 0) {
|
|
130
|
+
console.log(
|
|
131
|
+
chalk.dim(` - ${taskCount + toolCount} tasks/tools installed to .rovodev/references/ (${taskCount} tasks, ${toolCount} tools)`),
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
console.log(chalk.yellow(`\n Note: Agents are automatically discovered by Rovo Dev`));
|
|
135
|
+
console.log(chalk.dim(` - Access agents by typing @ in Rovo Dev to see available options`));
|
|
136
|
+
console.log(chalk.dim(` - Workflows and references are available in .rovodev/ directory`));
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
success: true,
|
|
140
|
+
agents: agentCount,
|
|
141
|
+
workflows: workflowCount,
|
|
142
|
+
tasks: taskCount,
|
|
143
|
+
tools: toolCount,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Generate task and tool reference guides
|
|
149
|
+
* @param {string} bmadDir - BMAD directory
|
|
150
|
+
* @param {string} referencesDir - References directory
|
|
151
|
+
* @param {TaskToolCommandGenerator} taskToolGen - Generator instance
|
|
152
|
+
*/
|
|
153
|
+
async generateTaskToolReferences(bmadDir, referencesDir, taskToolGen) {
|
|
154
|
+
const tasks = await taskToolGen.loadTaskManifest(bmadDir);
|
|
155
|
+
const tools = await taskToolGen.loadToolManifest(bmadDir);
|
|
156
|
+
|
|
157
|
+
const standaloneTasks = tasks ? tasks.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
|
|
158
|
+
const standaloneTools = tools ? tools.filter((t) => t.standalone === 'true' || t.standalone === true) : [];
|
|
159
|
+
|
|
160
|
+
let taskCount = 0;
|
|
161
|
+
for (const task of standaloneTasks) {
|
|
162
|
+
const commandContent = taskToolGen.generateCommandContent(task, 'task');
|
|
163
|
+
const targetPath = path.join(referencesDir, `bmad-task-${task.module}-${task.name}.md`);
|
|
164
|
+
await this.writeFile(targetPath, commandContent);
|
|
165
|
+
taskCount++;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
let toolCount = 0;
|
|
169
|
+
for (const tool of standaloneTools) {
|
|
170
|
+
const commandContent = taskToolGen.generateCommandContent(tool, 'tool');
|
|
171
|
+
const targetPath = path.join(referencesDir, `bmad-tool-${tool.module}-${tool.name}.md`);
|
|
172
|
+
await this.writeFile(targetPath, commandContent);
|
|
173
|
+
toolCount++;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return { tasks: taskCount, tools: toolCount };
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Convert BMAD agent launcher to Rovo Dev subagent format
|
|
181
|
+
*
|
|
182
|
+
* Rovo Dev subagents use Markdown files with YAML frontmatter containing:
|
|
183
|
+
* - name: Unique identifier for the subagent
|
|
184
|
+
* - description: One-line description of the subagent's purpose
|
|
185
|
+
* - tools: Array of tools the subagent can use (optional)
|
|
186
|
+
* - model: Specific model for this subagent (optional)
|
|
187
|
+
* - load_memory: Whether to load memory files (optional, defaults to true)
|
|
188
|
+
*
|
|
189
|
+
* @param {string} launcherContent - Original agent launcher content
|
|
190
|
+
* @param {string} agentName - Name of the agent
|
|
191
|
+
* @param {string} moduleName - Name of the module
|
|
192
|
+
* @returns {string} Rovo Dev subagent-formatted content
|
|
193
|
+
*/
|
|
194
|
+
convertToRovoDevSubagent(launcherContent, agentName, moduleName) {
|
|
195
|
+
// Extract metadata from the launcher XML
|
|
196
|
+
const titleMatch = launcherContent.match(/title="([^"]+)"/);
|
|
197
|
+
const title = titleMatch ? titleMatch[1] : this.formatTitle(agentName);
|
|
198
|
+
|
|
199
|
+
const descriptionMatch = launcherContent.match(/description="([^"]+)"/);
|
|
200
|
+
const description = descriptionMatch ? descriptionMatch[1] : `BMAD agent: ${title}`;
|
|
201
|
+
|
|
202
|
+
const roleDefinitionMatch = launcherContent.match(/roleDefinition="([^"]+)"/);
|
|
203
|
+
const roleDefinition = roleDefinitionMatch ? roleDefinitionMatch[1] : `You are a specialized agent for ${title.toLowerCase()} tasks.`;
|
|
204
|
+
|
|
205
|
+
// Extract the main system prompt from the launcher (content after closing tags)
|
|
206
|
+
let systemPrompt = roleDefinition;
|
|
207
|
+
|
|
208
|
+
// Try to extract additional instructions from the launcher content
|
|
209
|
+
const instructionsMatch = launcherContent.match(/<instructions>([\s\S]*?)<\/instructions>/);
|
|
210
|
+
if (instructionsMatch) {
|
|
211
|
+
systemPrompt += '\n\n' + instructionsMatch[1].trim();
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// Build YAML frontmatter for Rovo Dev subagent
|
|
215
|
+
const frontmatter = {
|
|
216
|
+
name: `bmad-${moduleName}-${agentName}`,
|
|
217
|
+
description: description,
|
|
218
|
+
// Note: tools and model can be added by users in their .rovodev/subagents/*.md files
|
|
219
|
+
// We don't enforce specific tools since BMAD agents are flexible
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
// Create YAML frontmatter string with proper quoting for special characters
|
|
223
|
+
let yamlContent = '---\n';
|
|
224
|
+
yamlContent += `name: ${frontmatter.name}\n`;
|
|
225
|
+
// Quote description to handle colons and other special characters in YAML
|
|
226
|
+
yamlContent += `description: "${frontmatter.description.replaceAll('"', String.raw`\"`)}"\n`;
|
|
227
|
+
yamlContent += '---\n';
|
|
228
|
+
|
|
229
|
+
// Combine frontmatter with system prompt
|
|
230
|
+
const subagentContent = yamlContent + systemPrompt;
|
|
231
|
+
|
|
232
|
+
return subagentContent;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Detect whether Rovo Dev is already configured in the project
|
|
237
|
+
* @param {string} projectDir - Project directory
|
|
238
|
+
* @returns {boolean}
|
|
239
|
+
*/
|
|
240
|
+
async detect(projectDir) {
|
|
241
|
+
const rovoDevDir = path.join(projectDir, this.configDir);
|
|
242
|
+
|
|
243
|
+
if (!(await fs.pathExists(rovoDevDir))) {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
// Check for BMAD agents in subagents directory
|
|
248
|
+
const subagentsDir = path.join(rovoDevDir, this.subagentsDir);
|
|
249
|
+
if (await fs.pathExists(subagentsDir)) {
|
|
250
|
+
try {
|
|
251
|
+
const entries = await fs.readdir(subagentsDir);
|
|
252
|
+
if (entries.some((entry) => entry.startsWith('bmad-') && entry.endsWith('.md'))) {
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
} catch {
|
|
256
|
+
// Continue checking other directories
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// Check for BMAD workflows in workflows directory
|
|
261
|
+
const workflowsDir = path.join(rovoDevDir, this.workflowsDir);
|
|
262
|
+
if (await fs.pathExists(workflowsDir)) {
|
|
263
|
+
try {
|
|
264
|
+
const entries = await fs.readdir(workflowsDir);
|
|
265
|
+
if (entries.some((entry) => entry.startsWith('bmad-') && entry.endsWith('.md'))) {
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
} catch {
|
|
269
|
+
// Continue checking other directories
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Check for BMAD tasks/tools in references directory
|
|
274
|
+
const referencesDir = path.join(rovoDevDir, this.referencesDir);
|
|
275
|
+
if (await fs.pathExists(referencesDir)) {
|
|
276
|
+
try {
|
|
277
|
+
const entries = await fs.readdir(referencesDir);
|
|
278
|
+
if (entries.some((entry) => entry.startsWith('bmad-') && entry.endsWith('.md'))) {
|
|
279
|
+
return true;
|
|
280
|
+
}
|
|
281
|
+
} catch {
|
|
282
|
+
// Continue
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
module.exports = { RovoDevSetup };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const path = require('node:path');
|
|
2
|
+
const fs = require('fs-extra');
|
|
2
3
|
const { BaseIdeSetup } = require('./_base-ide');
|
|
3
4
|
const chalk = require('chalk');
|
|
4
5
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
|
@@ -261,6 +262,52 @@ Part of the BMAD ${workflow.module.toUpperCase()} module.
|
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
264
|
}
|
|
265
|
+
|
|
266
|
+
/**
|
|
267
|
+
* Install a custom agent launcher for Trae
|
|
268
|
+
* @param {string} projectDir - Project directory
|
|
269
|
+
* @param {string} agentName - Agent name (e.g., "fred-commit-poet")
|
|
270
|
+
* @param {string} agentPath - Path to compiled agent (relative to project root)
|
|
271
|
+
* @param {Object} metadata - Agent metadata
|
|
272
|
+
* @returns {Object} Installation result
|
|
273
|
+
*/
|
|
274
|
+
async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
|
|
275
|
+
const traeDir = path.join(projectDir, this.configDir);
|
|
276
|
+
const rulesDir = path.join(traeDir, this.rulesDir);
|
|
277
|
+
|
|
278
|
+
// Create .trae/rules directory if it doesn't exist
|
|
279
|
+
await fs.ensureDir(rulesDir);
|
|
280
|
+
|
|
281
|
+
// Create custom agent launcher
|
|
282
|
+
const launcherContent = `# ${agentName} Custom Agent
|
|
283
|
+
|
|
284
|
+
**⚠️ IMPORTANT**: Run @${agentPath} first to load the complete agent!
|
|
285
|
+
|
|
286
|
+
This is a launcher for the custom BMAD agent "${agentName}".
|
|
287
|
+
|
|
288
|
+
## Usage
|
|
289
|
+
1. First run: \`${agentPath}\` to load the complete agent
|
|
290
|
+
2. Then use this rule to activate ${agentName}
|
|
291
|
+
|
|
292
|
+
The agent will follow the persona and instructions from the main agent file.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
*Generated by BMAD Method*`;
|
|
297
|
+
|
|
298
|
+
const fileName = `bmad-agent-custom-${agentName.toLowerCase()}.md`;
|
|
299
|
+
const launcherPath = path.join(rulesDir, fileName);
|
|
300
|
+
|
|
301
|
+
// Write the launcher file
|
|
302
|
+
await fs.writeFile(launcherPath, launcherContent, 'utf8');
|
|
303
|
+
|
|
304
|
+
return {
|
|
305
|
+
ide: 'trae',
|
|
306
|
+
path: path.relative(projectDir, launcherPath),
|
|
307
|
+
command: agentName,
|
|
308
|
+
type: 'custom-agent-launcher',
|
|
309
|
+
};
|
|
310
|
+
}
|
|
264
311
|
}
|
|
265
312
|
|
|
266
313
|
module.exports = { TraeSetup };
|