bmad-method 6.0.0-alpha.14 → 6.0.0-alpha.16
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/.coderabbit.yaml +36 -0
- package/{CODE_OF_CONDUCT.md → .github/CODE_OF_CONDUCT.md} +4 -4
- package/CHANGELOG.md +168 -409
- package/README.md +4 -1
- package/docs/agent-customization-guide.md +7 -7
- package/docs/custom-content-installation.md +245 -0
- package/docs/ide-info/crush.md +1 -1
- package/docs/ide-info/cursor.md +7 -7
- package/docs/ide-info/iflow.md +3 -3
- package/docs/ide-info/opencode.md +1 -1
- package/docs/index.md +2 -2
- package/docs/installers-bundlers/ide-injections.md +2 -2
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +29 -28
- package/docs/v4-to-v6-upgrade.md +10 -10
- package/docs/web-bundles-gemini-gpt-guide.md +2 -2
- package/package.json +1 -1
- package/src/core/_module-installer/installer.js +1 -1
- package/src/core/agents/bmad-master.agent.yaml +5 -5
- package/src/core/agents/bmad-web-orchestrator.agent.xml +6 -6
- package/src/core/{_module-installer/install-config.yaml → module.yaml} +0 -7
- package/src/core/resources/excalidraw/README.md +4 -4
- package/src/core/tasks/advanced-elicitation.xml +3 -3
- package/src/core/tasks/index-docs.xml +1 -1
- package/src/core/tasks/validate-workflow.xml +1 -1
- package/src/core/tasks/workflow.xml +4 -4
- package/src/core/tools/shard-doc.xml +1 -1
- package/src/core/workflows/brainstorming/workflow.md +2 -2
- package/src/core/workflows/party-mode/steps/step-01-agent-loading.md +2 -2
- package/src/core/workflows/party-mode/workflow.md +4 -4
- package/src/modules/bmb/README.md +2 -2
- package/src/modules/bmb/_module-installer/installer.js +1 -1
- package/src/modules/bmb/agents/bmad-builder.agent.yaml +15 -15
- package/src/modules/bmb/docs/agents/agent-compilation.md +2 -2
- package/src/modules/bmb/docs/agents/agent-menu-patterns.md +22 -22
- package/src/modules/bmb/docs/agents/expert-agent-architecture.md +1 -1
- package/src/modules/bmb/docs/agents/index.md +2 -2
- package/src/modules/bmb/docs/agents/module-agent-architecture.md +50 -51
- package/src/modules/bmb/docs/agents/understanding-agent-types.md +3 -3
- package/src/modules/bmb/docs/workflows/architecture.md +1 -1
- package/src/modules/bmb/docs/workflows/common-workflow-tools.csv +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-file.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/step-template.md +3 -3
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +2 -2
- package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
- package/src/modules/bmb/{_module-installer/install-config.yaml → module.yaml} +0 -1
- package/src/modules/bmb/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/reference/agents/module-examples/security-engineer.agent.yaml +5 -5
- package/src/modules/bmb/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/README.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/security-engineer.agent.yaml +6 -6
- package/src/modules/bmb/workflows/create-agent/data/reference/agents/module-examples/trend-analyst.agent.yaml +7 -7
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01-init.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-01b-continue.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-02-profile.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-03-assessment.md +3 -3
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-04-strategy.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-05-shopping.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/steps/step-06-prep-schedule.md +5 -5
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-agent/data/validation-complete.md +5 -5
- package/src/modules/bmb/workflows/create-agent/steps/step-01-brainstorm.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-02-discover.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-03-persona.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-04-commands.md +7 -7
- package/src/modules/bmb/workflows/create-agent/steps/step-05-name.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-06-build.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-07-validate.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-08-setup.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-09-customize.md +4 -4
- package/src/modules/bmb/workflows/create-agent/steps/step-10-build-tools.md +3 -3
- package/src/modules/bmb/workflows/create-agent/steps/step-11-celebrate.md +3 -3
- package/src/modules/bmb/workflows/create-agent/workflow.md +13 -13
- package/src/modules/bmb/workflows/create-module/steps/step-01-init.md +2 -2
- package/src/modules/bmb/workflows/create-module/steps/step-02-concept.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-03-components.md +4 -4
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +6 -6
- package/src/modules/bmb/workflows/create-module/steps/step-05-config.md +5 -5
- package/src/modules/bmb/workflows/create-module/steps/step-06-agents.md +6 -6
- package/src/modules/bmb/workflows/create-module/steps/step-07-workflows.md +3 -3
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +12 -12
- package/src/modules/bmb/workflows/create-module/steps/step-09-documentation.md +6 -5
- package/src/modules/bmb/workflows/create-module/steps/step-10-roadmap.md +6 -5
- package/src/modules/bmb/workflows/create-module/steps/step-11-validate.md +7 -7
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +7 -7
- package/src/modules/bmb/workflows/create-module/templates/installer.template.js +1 -1
- package/src/modules/bmb/workflows/create-module/templates/{install-config.template.yaml → module.template.yaml} +1 -1
- package/src/modules/bmb/workflows/create-module/validation.md +3 -3
- package/src/modules/bmb/workflows/create-module/workflow.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/steps/step-01-init.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-02-gather.md +5 -5
- package/src/modules/bmb/workflows/create-workflow/steps/step-03-tools-configuration.md +4 -4
- package/src/modules/bmb/workflows/create-workflow/steps/step-04-plan-review.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-05-output-format-design.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-06-design.md +10 -10
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +13 -13
- package/src/modules/bmb/workflows/create-workflow/steps/step-08-review.md +3 -3
- package/src/modules/bmb/workflows/create-workflow/steps/step-09-complete.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-agent/steps/step-01-discover-intent.md +3 -3
- package/src/modules/bmb/workflows/edit-agent/steps/step-02-analyze-agent.md +13 -13
- package/src/modules/bmb/workflows/edit-agent/steps/step-03-propose-changes.md +5 -5
- package/src/modules/bmb/workflows/edit-agent/steps/step-04-apply-changes.md +3 -3
- package/src/modules/bmb/workflows/edit-agent/steps/step-05-validate.md +5 -5
- package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-workflow/steps/step-01-analyze.md +4 -4
- package/src/modules/bmb/workflows/edit-workflow/steps/step-02-discover.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-03-improve.md +6 -6
- package/src/modules/bmb/workflows/edit-workflow/steps/step-04-validate.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/steps/step-05-compliance-check.md +3 -3
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-01-validate-goal.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +5 -5
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-03-step-validation.md +6 -6
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-04-file-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-05-intent-spectrum-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-06-web-subprocess-validation.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-07-holistic-analysis.md +4 -4
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-08-generate-report.md +3 -3
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
- package/src/modules/bmb/workflows-legacy/edit-module/README.md +2 -2
- package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +2 -2
- package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +4 -4
- package/src/modules/bmb/workflows-legacy/edit-module/workflow.yaml +10 -10
- package/src/modules/bmb/workflows-legacy/module-brief/README.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
- package/src/modules/bmb/workflows-legacy/module-brief/workflow.yaml +4 -4
- package/src/modules/bmgd/README.md +3 -2
- package/src/modules/bmgd/agents/game-architect.agent.yaml +6 -6
- package/src/modules/bmgd/agents/game-designer.agent.yaml +7 -7
- package/src/modules/bmgd/agents/game-dev.agent.yaml +9 -9
- package/src/modules/bmgd/agents/game-scrum-master.agent.yaml +21 -21
- package/src/modules/bmgd/{_module-installer/install-config.yaml → module.yaml} +0 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/workflow.yaml +9 -9
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/workflow.yaml +8 -8
- package/src/modules/bmgd/workflows/2-design/gdd/instructions-gdd.md +4 -4
- package/src/modules/bmgd/workflows/2-design/gdd/workflow.yaml +30 -30
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +1 -1
- package/src/modules/bmgd/workflows/2-design/narrative/workflow.yaml +5 -5
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +1 -1
- package/src/modules/bmgd/workflows/3-technical/game-architecture/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/code-review/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/correct-course/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/correct-course/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/correct-course/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/create-story/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/create-story/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/dev-story/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/epic-tech-context/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +3 -3
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-context/checklist.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-context/context-template.xml +1 -1
- package/src/modules/bmgd/workflows/4-production/story-context/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/story-context/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-done/instructions.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-done/workflow.yaml +2 -2
- package/src/modules/bmgd/workflows/4-production/story-ready/instructions.md +1 -1
- package/src/modules/bmgd/workflows/4-production/story-ready/workflow.yaml +2 -2
- package/src/modules/bmm/_module-installer/installer.js +1 -1
- package/src/modules/bmm/_module-installer/platform-specifics/claude-code.js +1 -1
- package/src/modules/bmm/_module-installer/platform-specifics/windsurf.js +1 -1
- package/src/modules/bmm/agents/analyst.agent.yaml +8 -8
- package/src/modules/bmm/agents/architect.agent.yaml +8 -8
- package/src/modules/bmm/agents/dev.agent.yaml +3 -3
- package/src/modules/bmm/agents/pm.agent.yaml +8 -8
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +5 -5
- package/src/modules/bmm/agents/sm.agent.yaml +9 -9
- package/src/modules/bmm/agents/tea.agent.yaml +13 -13
- package/src/modules/bmm/agents/tech-writer.agent.yaml +9 -9
- package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -6
- package/src/modules/bmm/docs/README.md +0 -25
- package/src/modules/bmm/docs/agents-guide.md +4 -4
- package/src/modules/bmm/docs/brownfield-guide.md +4 -4
- package/src/modules/bmm/docs/enterprise-agentic-development.md +3 -3
- package/src/modules/bmm/docs/faq.md +1 -1
- package/src/modules/bmm/docs/party-mode.md +3 -3
- package/src/modules/bmm/docs/quick-start.md +1 -1
- package/src/modules/bmm/docs/test-architecture.md +3 -3
- package/src/modules/bmm/docs/workflow-document-project-reference.md +1 -1
- package/src/modules/bmm/docs/workflows-implementation.md +0 -100
- package/src/modules/bmm/{_module-installer/install-config.yaml → module.yaml} +1 -2
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-02-vision.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-03-users.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-04-metrics.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-05-scope.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/steps/step-06-complete.md +5 -3
- package/src/modules/bmm/workflows/1-analysis/product-brief/workflow.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01-init.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-01b-continue.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-02-discovery.md +3 -3
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +8 -8
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +12 -12
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +10 -10
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +7 -7
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +9 -9
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-11-complete.md +1 -1
- package/src/modules/bmm/workflows/2-plan-workflows/prd/workflow.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-02-context.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-03-starter.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-04-decisions.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-05-patterns.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-06-structure.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-07-validation.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/architecture/steps/step-08-complete.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/architecture/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-01-document-discovery.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-02-prd-analysis.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-03-epic-coverage-validation.md +6 -6
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-04-ux-alignment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-05-epic-quality-review.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/steps/step-06-final-assessment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/implementation-readiness/workflow.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/instructions.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/code-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/checklist.md +1 -1
- package/src/modules/bmm/workflows/4-implementation/correct-course/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/correct-course/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/checklist.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +2 -2
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +3 -3
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +7 -7
- package/src/modules/bmm/workflows/diagrams/create-dataflow/instructions.md +1 -1
- package/src/modules/bmm/workflows/diagrams/create-dataflow/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-diagram/instructions.md +2 -2
- package/src/modules/bmm/workflows/diagrams/create-diagram/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-flowchart/instructions.md +2 -2
- package/src/modules/bmm/workflows/diagrams/create-flowchart/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/diagrams/create-wireframe/instructions.md +1 -1
- package/src/modules/bmm/workflows/diagrams/create-wireframe/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/instructions.md +5 -5
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/document-project/workflows/deep-dive.yaml +5 -5
- package/src/modules/bmm/workflows/document-project/workflows/full-scan.yaml +5 -5
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +2 -2
- package/src/modules/bmm/workflows/generate-project-context/workflow.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/automate/instructions.md +2 -2
- package/src/modules/bmm/workflows/testarch/automate/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/ci/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/framework/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/framework/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/nfr-assess/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/nfr-assess/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +3 -3
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-design/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/test-review/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-review/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +6 -6
- package/src/modules/bmm/workflows/testarch/trace/workflow.yaml +2 -2
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +1 -1
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/workflow-status/instructions.md +3 -3
- package/src/modules/bmm/workflows/workflow-status/project-levels.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +2 -2
- package/src/modules/cis/README.md +1 -1
- package/src/modules/cis/_module-installer/installer.js +1 -1
- package/src/modules/cis/agents/README.md +1 -1
- package/src/modules/cis/agents/brainstorming-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/creative-problem-solver.agent.yaml +4 -4
- package/src/modules/cis/agents/design-thinking-coach.agent.yaml +4 -4
- package/src/modules/cis/agents/innovation-strategist.agent.yaml +4 -4
- package/src/modules/cis/agents/presentation-master.agent.yaml +3 -3
- package/src/modules/cis/agents/storyteller.agent.yaml +4 -4
- package/src/modules/cis/{_module-installer/install-config.yaml → module.yaml} +0 -1
- package/src/modules/cis/workflows/README.md +1 -1
- package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
- package/src/modules/cis/workflows/design-thinking/workflow.yaml +7 -7
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
- package/src/modules/cis/workflows/innovation-strategy/workflow.yaml +7 -7
- package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
- package/src/modules/cis/workflows/problem-solving/workflow.yaml +7 -7
- package/src/modules/cis/workflows/storytelling/instructions.md +2 -2
- package/src/modules/cis/workflows/storytelling/workflow.yaml +7 -7
- package/src/utility/models/agent-activation-ide.xml +3 -3
- package/src/utility/models/agent-activation-web.xml +3 -3
- package/src/utility/models/fragments/activation-steps.xml +1 -1
- package/src/utility/models/fragments/handler-validate-workflow.xml +1 -1
- package/src/utility/models/fragments/handler-workflow.xml +1 -1
- package/src/utility/models/fragments/web-bundle-activation-steps.xml +3 -3
- package/tools/cli/README.md +23 -23
- package/tools/cli/bundlers/web-bundler.js +23 -33
- package/tools/cli/commands/build.js +5 -5
- package/tools/cli/installers/lib/core/config-collector.js +33 -20
- package/tools/cli/installers/lib/core/custom-module-cache.js +251 -0
- package/tools/cli/installers/lib/core/detector.js +8 -4
- package/tools/cli/installers/lib/core/installer.js +885 -98
- package/tools/cli/installers/lib/core/manifest-generator.js +177 -14
- package/tools/cli/installers/lib/core/manifest.js +47 -0
- package/tools/cli/installers/lib/custom/handler.js +147 -20
- package/tools/cli/installers/lib/ide/_base-ide.js +14 -14
- package/tools/cli/installers/lib/ide/gemini.js +4 -4
- package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +2 -2
- package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +3 -3
- package/tools/cli/installers/lib/ide/templates/agent-command-template.md +1 -1
- package/tools/cli/installers/lib/ide/templates/gemini-agent-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/gemini-task-command.toml +3 -3
- package/tools/cli/installers/lib/ide/templates/workflow-command-template.md +1 -1
- package/tools/cli/installers/lib/modules/manager.js +99 -53
- package/tools/cli/lib/agent/compiler.js +6 -14
- package/tools/cli/lib/agent/installer.js +4 -3
- package/tools/cli/lib/cli-utils.js +21 -4
- package/tools/cli/lib/ui.js +496 -12
- package/tools/cli/regenerate-manifests.js +3 -4
- package/tools/maintainer/review-pr-README.md +55 -0
- package/tools/maintainer/review-pr.md +242 -0
- package/tools/migrate-custom-module-paths.js +124 -0
- package/bmad-method-6.0.0-alpha.14.tgz +0 -0
- package/docs/custom-agent-installation.md +0 -137
- package/example-custom-content/README.md +0 -4
- package/example-custom-content/agents/commit-poet/commit-poet.agent.yaml +0 -129
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/instructions.md +0 -70
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +0 -111
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +0 -70
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +0 -114
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +0 -134
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +0 -161
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +0 -103
- package/example-custom-content/agents/toolsmith/toolsmith-sidecar/memories.md +0 -17
- package/example-custom-content/agents/toolsmith/toolsmith.agent.yaml +0 -109
- package/example-custom-content/custom.yaml +0 -3
- package/example-custom-content/workflows/quiz-master/steps/step-01-init.md +0 -168
- package/example-custom-content/workflows/quiz-master/steps/step-02-q1.md +0 -155
- package/example-custom-content/workflows/quiz-master/steps/step-03-q2.md +0 -89
- package/example-custom-content/workflows/quiz-master/steps/step-04-q3.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-05-q4.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-06-q5.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-07-q6.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-08-q7.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-09-q8.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-10-q9.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-11-q10.md +0 -36
- package/example-custom-content/workflows/quiz-master/steps/step-12-results.md +0 -150
- package/example-custom-content/workflows/quiz-master/templates/csv-headers.template +0 -1
- package/example-custom-content/workflows/quiz-master/workflow-plan-quiz-master.md +0 -269
- package/example-custom-content/workflows/quiz-master/workflow.md +0 -54
- package/example-custom-content/workflows/wassup/workflow.md +0 -26
- package/example-custom-module/mwm/README.md +0 -4
- package/example-custom-module/mwm/_module-installer/install-config.yaml +0 -27
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/cognitive-distortions.md +0 -47
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach-sidecar/thought-records.md +0 -17
- package/example-custom-module/mwm/agents/cbt-coach/cbt-coach.agent.yaml +0 -150
- package/example-custom-module/mwm/agents/crisis-navigator.agent.yaml +0 -137
- package/example-custom-module/mwm/agents/meditation-guide.agent.yaml +0 -137
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/insights.md +0 -13
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/instructions.md +0 -30
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/memories.md +0 -13
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion-sidecar/patterns.md +0 -17
- package/example-custom-module/mwm/agents/wellness-companion/wellness-companion.agent.yaml +0 -124
- package/example-custom-module/mwm/workflows/cbt-thought-record/README.md +0 -31
- package/example-custom-module/mwm/workflows/cbt-thought-record/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/crisis-support/README.md +0 -31
- package/example-custom-module/mwm/workflows/crisis-support/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/daily-checkin/README.md +0 -32
- package/example-custom-module/mwm/workflows/daily-checkin/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/guided-meditation/README.md +0 -31
- package/example-custom-module/mwm/workflows/guided-meditation/workflow.md +0 -45
- package/example-custom-module/mwm/workflows/wellness-journal/README.md +0 -31
- package/example-custom-module/mwm/workflows/wellness-journal/workflow.md +0 -45
|
@@ -4,7 +4,7 @@ description: "Craft compelling narratives using proven story frameworks and tech
|
|
|
4
4
|
author: "BMad"
|
|
5
5
|
|
|
6
6
|
# Critical variables load from config_source
|
|
7
|
-
config_source: "{project-root}/
|
|
7
|
+
config_source: "{project-root}/.bmad/cis/config.yaml"
|
|
8
8
|
output_folder: "{config_source}:output_folder"
|
|
9
9
|
user_name: "{config_source}:user_name"
|
|
10
10
|
communication_language: "{config_source}:communication_language"
|
|
@@ -14,7 +14,7 @@ date: system-generated
|
|
|
14
14
|
# Example: data="{path}/brand-info.md" provides brand context
|
|
15
15
|
|
|
16
16
|
# Module path and component files
|
|
17
|
-
installed_path: "{project-root}/
|
|
17
|
+
installed_path: "{project-root}/.bmad/cis/workflows/storytelling"
|
|
18
18
|
template: "{installed_path}/template.md"
|
|
19
19
|
instructions: "{installed_path}/instructions.md"
|
|
20
20
|
|
|
@@ -30,9 +30,9 @@ web_bundle:
|
|
|
30
30
|
name: "storytelling"
|
|
31
31
|
description: "Craft compelling narratives using proven story frameworks and techniques. This workflow guides users through structured narrative development, applying appropriate story frameworks to create emotionally resonant and engaging stories for any purpose."
|
|
32
32
|
author: "BMad"
|
|
33
|
-
instructions: "
|
|
34
|
-
template: "
|
|
33
|
+
instructions: ".bmad/cis/workflows/storytelling/instructions.md"
|
|
34
|
+
template: ".bmad/cis/workflows/storytelling/template.md"
|
|
35
35
|
web_bundle_files:
|
|
36
|
-
- "
|
|
37
|
-
- "
|
|
38
|
-
- "
|
|
36
|
+
- ".bmad/cis/workflows/storytelling/instructions.md"
|
|
37
|
+
- ".bmad/cis/workflows/storytelling/template.md"
|
|
38
|
+
- ".bmad/cis/workflows/storytelling/story-types.csv"
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<activation critical="MANDATORY">
|
|
2
2
|
<init>
|
|
3
3
|
<step n="1">Load persona from this current file containing this activation you are reading now</step>
|
|
4
|
-
<step n="2">Override with {project-root}/
|
|
4
|
+
<step n="2">Override with {project-root}/.bmad/_cfg/agents/{agent-filename} if exists (replace, not merge)</step>
|
|
5
5
|
<step n="3">Execute critical-actions section if present in current agent XML</step>
|
|
6
6
|
<step n="4">Show greeting + numbered list of ALL commands IN ORDER from current agent's cmds section</step>
|
|
7
7
|
<step n="5">CRITICAL HALT. AWAIT user input. NEVER continue without it.</step>
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<handlers>
|
|
13
13
|
<handler type="progressive-workflow">
|
|
14
14
|
When command has: run-progressive-workflow="path/to/x.yaml" You MUST:
|
|
15
|
-
1. CRITICAL: Always LOAD {project-root}/
|
|
15
|
+
1. CRITICAL: Always LOAD {project-root}/.bmad/core/tasks/workflow.xml
|
|
16
16
|
2. READ its entire contents - the is the CORE OS for EXECUTING workflows
|
|
17
17
|
3. Pass the yaml path as 'workflow-config' parameter to those instructions
|
|
18
18
|
4. Follow workflow.xml instructions EXACTLY as written
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
</handler>
|
|
21
21
|
<handler type="validate-workflow">
|
|
22
22
|
When command has: validate-workflow="path/to/workflow.yaml" You MUST:
|
|
23
|
-
1. You MUST LOAD the file at: {project-root}/
|
|
23
|
+
1. You MUST LOAD the file at: {project-root}/.bmad/core/tasks/validate-workflow.xml
|
|
24
24
|
2. READ its entire contents and EXECUTE all instructions in that file
|
|
25
25
|
3. Pass the workflow, and also check the workflow location for a checklist.md to pass as the checklist
|
|
26
26
|
4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
<bundled-files critical="MANDATORY">
|
|
8
8
|
<access-method>
|
|
9
9
|
All dependencies are bundled within this XML file as <file> elements with CDATA content.
|
|
10
|
-
When you need to access a file path like "
|
|
11
|
-
1. Find the <file id="
|
|
10
|
+
When you need to access a file path like ".bmad/core/tasks/workflow.xml":
|
|
11
|
+
1. Find the <file id=".bmad/core/tasks/workflow.xml"> element in this document
|
|
12
12
|
2. Extract the content from within the CDATA section
|
|
13
13
|
3. Use that content as if you read it from the filesystem
|
|
14
14
|
</access-method>
|
|
15
15
|
<rules>
|
|
16
16
|
<rule>NEVER attempt to read files from filesystem - all files are bundled in this XML</rule>
|
|
17
|
-
<rule>File paths starting with "
|
|
17
|
+
<rule>File paths starting with ".bmad/" or "{project-root}/.bmad/" refer to <file id="..."> elements</rule>
|
|
18
18
|
<rule>When instructions reference a file path, locate the corresponding <file> element by matching the id attribute</rule>
|
|
19
19
|
<rule>YAML files are bundled with only their web_bundle section content (flattened to root level)</rule>
|
|
20
20
|
</rules>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<step n="1">Load persona from this current agent file (already in context)</step>
|
|
2
2
|
<step n="2">🚨 IMMEDIATE ACTION REQUIRED - BEFORE ANY OUTPUT:
|
|
3
|
-
- Load and read {project-root}/{
|
|
3
|
+
- Load and read {project-root}/.bmad/{{module}}/config.yaml NOW
|
|
4
4
|
- Store ALL fields as session variables: {user_name}, {communication_language}, {output_folder}
|
|
5
5
|
- VERIFY: If config not loaded, STOP and report error to user
|
|
6
6
|
- DO NOT PROCEED to step 3 until config is successfully loaded and variables stored</step>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<handler type="validate-workflow">
|
|
2
2
|
When command has: validate-workflow="path/to/workflow.yaml"
|
|
3
|
-
1. You MUST LOAD the file at: {project-root}/
|
|
3
|
+
1. You MUST LOAD the file at: {project-root}/.bmad/core/tasks/validate-workflow.xml
|
|
4
4
|
2. READ its entire contents and EXECUTE all instructions in that file
|
|
5
5
|
3. Pass the workflow, and also check the workflow yaml validation property to find and load the validation schema to pass as the checklist
|
|
6
6
|
4. The workflow should try to identify the file to validate based on checklist context or else you will ask the user to specify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<handler type="workflow">
|
|
2
2
|
When menu item has: workflow="path/to/workflow.yaml"
|
|
3
|
-
1. CRITICAL: Always LOAD {project-root}/
|
|
3
|
+
1. CRITICAL: Always LOAD {project-root}/.bmad/core/tasks/workflow.xml
|
|
4
4
|
2. Read the complete file - this is the CORE OS for executing BMAD workflows
|
|
5
5
|
3. Pass the yaml path as 'workflow-config' parameter to those instructions
|
|
6
6
|
4. Execute workflow.xml instructions precisely following all steps
|
|
@@ -10,14 +10,14 @@
|
|
|
10
10
|
<bundled-files critical="MANDATORY">
|
|
11
11
|
<access-method>
|
|
12
12
|
All dependencies are bundled within this XML file as <file> elements with CDATA content.
|
|
13
|
-
When you need to access a file path like "
|
|
14
|
-
1. Find the <file id="
|
|
13
|
+
When you need to access a file path like ".bmad/core/tasks/workflow.xml":
|
|
14
|
+
1. Find the <file id=".bmad/core/tasks/workflow.xml"> element in this document
|
|
15
15
|
2. Extract the content from within the CDATA section
|
|
16
16
|
3. Use that content as if you read it from the filesystem
|
|
17
17
|
</access-method>
|
|
18
18
|
<rules>
|
|
19
19
|
<rule>NEVER attempt to read files from filesystem - all files are bundled in this XML</rule>
|
|
20
|
-
<rule>File paths starting with "
|
|
20
|
+
<rule>File paths starting with ".bmad/" refer to <file id="..."> elements</rule>
|
|
21
21
|
<rule>When instructions reference a file path, locate the corresponding <file> element by matching the id attribute</rule>
|
|
22
22
|
<rule>YAML files are bundled with only their web_bundle section content (flattened to root level)</rule>
|
|
23
23
|
</rules>
|
package/tools/cli/README.md
CHANGED
|
@@ -98,14 +98,14 @@ The installer is a multi-stage system that handles agent compilation, IDE integr
|
|
|
98
98
|
```
|
|
99
99
|
1. Collect User Input
|
|
100
100
|
- Target directory, modules, IDEs
|
|
101
|
-
- Custom module configuration (via
|
|
101
|
+
- Custom module configuration (via module.yaml)
|
|
102
102
|
|
|
103
103
|
2. Pre-Installation
|
|
104
104
|
- Validate target, check conflicts, backup existing installations
|
|
105
105
|
- Resolve module dependencies (4-pass system)
|
|
106
106
|
|
|
107
107
|
3. Install Core + Modules
|
|
108
|
-
- Copy files to {target}/
|
|
108
|
+
- Copy files to {target}/.bmad/
|
|
109
109
|
- Compile agents: YAML → Markdown/XML (forWebBundle: false)
|
|
110
110
|
- Merge customize.yaml files if they exist
|
|
111
111
|
- Inject activation blocks based on agent capabilities
|
|
@@ -131,7 +131,7 @@ The installer is a multi-stage system that handles agent compilation, IDE integr
|
|
|
131
131
|
|
|
132
132
|
```
|
|
133
133
|
{target}/
|
|
134
|
-
├──
|
|
134
|
+
├── .bmad/
|
|
135
135
|
│ ├── core/ # Always installed
|
|
136
136
|
│ ├── {module}/ # Selected modules
|
|
137
137
|
│ │ ├── agents/ # Compiled .md files
|
|
@@ -183,12 +183,12 @@ The installer supports **15 IDE environments** through a base-derived architectu
|
|
|
183
183
|
|
|
184
184
|
### Custom Module Configuration
|
|
185
185
|
|
|
186
|
-
Modules define interactive configuration menus via `
|
|
186
|
+
Modules define interactive configuration menus via `module.yaml` files in their `_module-installer/` directories.
|
|
187
187
|
|
|
188
188
|
**Config File Location**:
|
|
189
189
|
|
|
190
|
-
- Core: `src/core/
|
|
191
|
-
- Modules: `src/modules/{module}/
|
|
190
|
+
- Core: `src/core/module.yaml`
|
|
191
|
+
- Modules: `src/modules/{module}/module.yaml`
|
|
192
192
|
|
|
193
193
|
**Configuration Types**:
|
|
194
194
|
|
|
@@ -239,7 +239,7 @@ Platform specifics are **IDE+module combination hooks** that execute custom logi
|
|
|
239
239
|
|
|
240
240
|
### Manifest System
|
|
241
241
|
|
|
242
|
-
The installer generates **5 manifest files** in `{target}/
|
|
242
|
+
The installer generates **5 manifest files** in `{target}/.bmad/_cfg/`:
|
|
243
243
|
|
|
244
244
|
**1. Installation Manifest** (`manifest.yaml`)
|
|
245
245
|
|
|
@@ -428,7 +428,7 @@ agent:
|
|
|
428
428
|
identity: 'You are an experienced PM...'
|
|
429
429
|
menu:
|
|
430
430
|
- trigger: '*create-brief'
|
|
431
|
-
workflow: '{project-root}/
|
|
431
|
+
workflow: '{project-root}/.bmad/bmm/workflows/.../workflow.yaml'
|
|
432
432
|
```
|
|
433
433
|
|
|
434
434
|
### Output: IDE (Markdown with XML)
|
|
@@ -441,7 +441,7 @@ agent:
|
|
|
441
441
|
```xml
|
|
442
442
|
<agent id="..." name="PM">
|
|
443
443
|
<activation critical="MANDATORY">
|
|
444
|
-
<step n="2">Load {project-root}/
|
|
444
|
+
<step n="2">Load {project-root}/.bmad/bmm/config.yaml at runtime</step>
|
|
445
445
|
...
|
|
446
446
|
</activation>
|
|
447
447
|
<persona>...</persona>
|
|
@@ -533,20 +533,20 @@ src/utility/models/fragments/
|
|
|
533
533
|
|
|
534
534
|
## Key Differences: Installation vs Bundling
|
|
535
535
|
|
|
536
|
-
| Aspect | Installation (IDE)
|
|
537
|
-
| ----------------------- |
|
|
538
|
-
| **Trigger** | `npm run install:bmad`
|
|
539
|
-
| **Entry Point** | `commands/install.js`
|
|
540
|
-
| **Compiler Flag** | `forWebBundle: false`
|
|
541
|
-
| **Output Format** | Markdown `.md`
|
|
542
|
-
| **Output Location** | `{target}
|
|
543
|
-
| **Customization** | Merges `customize.yaml`
|
|
544
|
-
| **Dependencies** | Referenced by path
|
|
545
|
-
| **Activation Fragment** | `activation-steps.xml`
|
|
546
|
-
| **Filesystem Access** | Required
|
|
547
|
-
| **Build Metadata** | Included (hash)
|
|
548
|
-
| **Path Format** | `{project-root}` placeholders
|
|
549
|
-
| **Use Case** | Local IDE development
|
|
536
|
+
| Aspect | Installation (IDE) | Bundling (Web) |
|
|
537
|
+
| ----------------------- | ----------------------------- | --------------------------------- |
|
|
538
|
+
| **Trigger** | `npm run install:bmad` | `npm run bundle` |
|
|
539
|
+
| **Entry Point** | `commands/install.js` | `bundlers/bundle-web.js` |
|
|
540
|
+
| **Compiler Flag** | `forWebBundle: false` | `forWebBundle: true` |
|
|
541
|
+
| **Output Format** | Markdown `.md` | Standalone XML `.xml` |
|
|
542
|
+
| **Output Location** | `{target}/.bmad/` + IDE dirs | `web-bundles/` |
|
|
543
|
+
| **Customization** | Merges `customize.yaml` | Base agents only |
|
|
544
|
+
| **Dependencies** | Referenced by path | Bundled inline (CDATA) |
|
|
545
|
+
| **Activation Fragment** | `activation-steps.xml` | `web-bundle-activation-steps.xml` |
|
|
546
|
+
| **Filesystem Access** | Required | Not needed |
|
|
547
|
+
| **Build Metadata** | Included (hash) | Excluded |
|
|
548
|
+
| **Path Format** | `{project-root}` placeholders | Stripped, wrapped as `<file>` |
|
|
549
|
+
| **Use Case** | Local IDE development | Web deployment |
|
|
550
550
|
|
|
551
551
|
**Activation Differences**:
|
|
552
552
|
|
|
@@ -29,7 +29,7 @@ class WebBundler {
|
|
|
29
29
|
|
|
30
30
|
// Temporary directory for generated manifests
|
|
31
31
|
this.tempDir = path.join(process.cwd(), '.bundler-temp');
|
|
32
|
-
this.tempManifestDir = path.join(this.tempDir, 'bmad', '_cfg');
|
|
32
|
+
this.tempManifestDir = path.join(this.tempDir, '.bmad', '_cfg');
|
|
33
33
|
|
|
34
34
|
// Bundle statistics
|
|
35
35
|
this.stats = {
|
|
@@ -531,9 +531,9 @@ class WebBundler {
|
|
|
531
531
|
}
|
|
532
532
|
|
|
533
533
|
// Parse paths to extract module and workflow location
|
|
534
|
-
// Support both {project-root}/bmad/... and {project-root}
|
|
535
|
-
const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(
|
|
536
|
-
const installMatch = installWorkflowPath.match(/\{project-root\}\/(
|
|
534
|
+
// Support both {project-root}/bmad/... and {project-root}/.bmad/... patterns
|
|
535
|
+
const sourceMatch = sourceWorkflowPath.match(/\{project-root\}\/(?:\.?bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
536
|
+
const installMatch = installWorkflowPath.match(/\{project-root\}\/(?:\.?bmad)\/([^/]+)\/workflows\/(.+)/);
|
|
537
537
|
|
|
538
538
|
if (!sourceMatch || !installMatch) {
|
|
539
539
|
continue;
|
|
@@ -584,9 +584,9 @@ class WebBundler {
|
|
|
584
584
|
let yamlContent = await fs.readFile(workflowYamlPath, 'utf8');
|
|
585
585
|
|
|
586
586
|
// Replace config_source with new module reference
|
|
587
|
-
// Support both old format (bmad) and new format (
|
|
588
|
-
const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(
|
|
589
|
-
const newConfigSource = `config_source: "{project-root}
|
|
587
|
+
// Support both old format (bmad) and new format (.bmad)
|
|
588
|
+
const configSourcePattern = /config_source:\s*["']?\{project-root\}\/(?:\.?bmad)\/[^/]+\/config\.yaml["']?/g;
|
|
589
|
+
const newConfigSource = `config_source: "{project-root}/.bmad/${newModuleName}/config.yaml"`;
|
|
590
590
|
|
|
591
591
|
const updatedYaml = yamlContent.replaceAll(configSourcePattern, newConfigSource);
|
|
592
592
|
await fs.writeFile(workflowYamlPath, updatedYaml, 'utf8');
|
|
@@ -723,7 +723,7 @@ class WebBundler {
|
|
|
723
723
|
/tools="([^"]+)"/g,
|
|
724
724
|
/knowledge="([^"]+)"/g,
|
|
725
725
|
/{project-root}\/([^"'\s<>]+)/g, // Legacy {project-root} paths
|
|
726
|
-
/\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after
|
|
726
|
+
/\bbmad\/([^"'\s<>]+)/g, // Direct bmad/ paths (after .bmad replacement)
|
|
727
727
|
];
|
|
728
728
|
|
|
729
729
|
for (const pattern of patterns) {
|
|
@@ -733,8 +733,8 @@ class WebBundler {
|
|
|
733
733
|
let filePath = match[1];
|
|
734
734
|
// Remove {project-root} prefix if present
|
|
735
735
|
filePath = filePath.replace(/^{project-root}\//, '');
|
|
736
|
-
// Remove
|
|
737
|
-
filePath = filePath.replace(
|
|
736
|
+
// Remove .bmad prefix if present (should be rare, mostly replaced already)
|
|
737
|
+
filePath = filePath.replace(/^.bmad\//, 'bmad/');
|
|
738
738
|
|
|
739
739
|
// For bmad/ pattern, prepend 'bmad/' since it was captured without it
|
|
740
740
|
if (pattern.source.includes(String.raw`\bbmad\/`)) {
|
|
@@ -760,8 +760,8 @@ class WebBundler {
|
|
|
760
760
|
while ((match = pattern.exec(xml)) !== null) {
|
|
761
761
|
let workflowPath = match[1];
|
|
762
762
|
workflowPath = workflowPath.replace(/^{project-root}\//, '');
|
|
763
|
-
// Remove
|
|
764
|
-
workflowPath = workflowPath.replace(
|
|
763
|
+
// Remove .bmad prefix if present and replace with bmad
|
|
764
|
+
workflowPath = workflowPath.replace(/^.bmad\//, 'bmad/');
|
|
765
765
|
|
|
766
766
|
// Skip obvious placeholder/example paths
|
|
767
767
|
if (workflowPath && workflowPath.endsWith('.yaml') && !workflowPath.includes('path/to/') && !workflowPath.includes('example')) {
|
|
@@ -851,7 +851,7 @@ class WebBundler {
|
|
|
851
851
|
if (deps) {
|
|
852
852
|
for (const dep of deps) {
|
|
853
853
|
let depPath = dep.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
|
|
854
|
-
depPath = depPath.replace(
|
|
854
|
+
depPath = depPath.replace(/^.bmad\//, 'bmad/');
|
|
855
855
|
if (depPath && !processed.has(depPath)) {
|
|
856
856
|
await this.processFileDependency(depPath, dependencies, processed, moduleName, warnings);
|
|
857
857
|
}
|
|
@@ -865,7 +865,7 @@ class WebBundler {
|
|
|
865
865
|
if (templates) {
|
|
866
866
|
for (const template of templates) {
|
|
867
867
|
let templatePath = template.replaceAll(/['"]/g, '').replace(/^{project-root}\//, '');
|
|
868
|
-
templatePath = templatePath.replace(
|
|
868
|
+
templatePath = templatePath.replace(/^.bmad\//, 'bmad/');
|
|
869
869
|
if (templatePath && !processed.has(templatePath)) {
|
|
870
870
|
await this.processFileDependency(templatePath, dependencies, processed, moduleName, warnings);
|
|
871
871
|
}
|
|
@@ -1053,13 +1053,13 @@ class WebBundler {
|
|
|
1053
1053
|
bundleYamlContent = yamlContent;
|
|
1054
1054
|
}
|
|
1055
1055
|
|
|
1056
|
-
// Process {project-root} and
|
|
1056
|
+
// Process {project-root} and .bmad references in the YAML content
|
|
1057
1057
|
bundleYamlContent = this.processProjectRootReferences(bundleYamlContent);
|
|
1058
1058
|
|
|
1059
1059
|
// Include the YAML file with only web_bundle content, wrapped in XML
|
|
1060
1060
|
// Process the workflow path to create a clean ID
|
|
1061
1061
|
let yamlId = workflowPath.replace(/^{project-root}\//, '');
|
|
1062
|
-
yamlId = yamlId.replace(
|
|
1062
|
+
yamlId = yamlId.replace(/^.bmad\//, 'bmad/');
|
|
1063
1063
|
const wrappedYaml = this.wrapContentInXml(bundleYamlContent, yamlId, 'yaml');
|
|
1064
1064
|
dependencies.set(yamlId, wrappedYaml);
|
|
1065
1065
|
|
|
@@ -1078,7 +1078,7 @@ class WebBundler {
|
|
|
1078
1078
|
for (const bundleFilePath of bundleFiles) {
|
|
1079
1079
|
// Process the file path to create a clean ID for checking if already processed
|
|
1080
1080
|
let cleanFilePath = bundleFilePath.replace(/^{project-root}\//, '');
|
|
1081
|
-
cleanFilePath = cleanFilePath.replace(
|
|
1081
|
+
cleanFilePath = cleanFilePath.replace(/^.bmad\//, 'bmad/');
|
|
1082
1082
|
|
|
1083
1083
|
if (processed.has(cleanFilePath)) {
|
|
1084
1084
|
continue;
|
|
@@ -1087,7 +1087,7 @@ class WebBundler {
|
|
|
1087
1087
|
const bundleActualPath = this.resolveFilePath(bundleFilePath, moduleName);
|
|
1088
1088
|
|
|
1089
1089
|
if (!bundleActualPath || !(await fs.pathExists(bundleActualPath))) {
|
|
1090
|
-
// Use the cleaned path in warnings (with
|
|
1090
|
+
// Use the cleaned path in warnings (with .bmad replaced)
|
|
1091
1091
|
warnings.push(cleanFilePath);
|
|
1092
1092
|
continue;
|
|
1093
1093
|
}
|
|
@@ -1136,7 +1136,7 @@ class WebBundler {
|
|
|
1136
1136
|
}
|
|
1137
1137
|
|
|
1138
1138
|
let fileContent = await fs.readFile(actualPath, 'utf8');
|
|
1139
|
-
// Process {project-root} and
|
|
1139
|
+
// Process {project-root} and .bmad references
|
|
1140
1140
|
fileContent = this.processProjectRootReferences(fileContent);
|
|
1141
1141
|
const wrappedContent = this.wrapContentInXml(fileContent, coreWorkflowPath, 'xml');
|
|
1142
1142
|
dependencies.set(coreWorkflowPath, wrappedContent);
|
|
@@ -1162,7 +1162,7 @@ class WebBundler {
|
|
|
1162
1162
|
}
|
|
1163
1163
|
|
|
1164
1164
|
let fileContent = await fs.readFile(actualPath, 'utf8');
|
|
1165
|
-
// Process {project-root} and
|
|
1165
|
+
// Process {project-root} and .bmad references
|
|
1166
1166
|
fileContent = this.processProjectRootReferences(fileContent);
|
|
1167
1167
|
const fileExt = path.extname(actualPath).toLowerCase().replace('.', '');
|
|
1168
1168
|
const wrappedContent = this.wrapContentInXml(fileContent, filePath, fileExt);
|
|
@@ -1196,8 +1196,8 @@ class WebBundler {
|
|
|
1196
1196
|
async processWildcardDependency(pattern, dependencies, processed, moduleName, warnings = []) {
|
|
1197
1197
|
// Remove {project-root} prefix
|
|
1198
1198
|
pattern = pattern.replace(/^{project-root}\//, '');
|
|
1199
|
-
// Replace
|
|
1200
|
-
pattern = pattern.replace(
|
|
1199
|
+
// Replace .bmad with bmad
|
|
1200
|
+
pattern = pattern.replace(/^.bmad\//, 'bmad/');
|
|
1201
1201
|
|
|
1202
1202
|
// Get directory and file pattern
|
|
1203
1203
|
const lastSlash = pattern.lastIndexOf('/');
|
|
@@ -1265,9 +1265,6 @@ class WebBundler {
|
|
|
1265
1265
|
resolveFilePath(filePath, moduleName) {
|
|
1266
1266
|
// Remove {project-root} prefix
|
|
1267
1267
|
filePath = filePath.replace(/^{project-root}\//, '');
|
|
1268
|
-
// Replace {bmad_folder} with bmad
|
|
1269
|
-
filePath = filePath.replace(/^{bmad_folder}\//, 'bmad/');
|
|
1270
|
-
filePath = filePath.replace(/^{bmad_folder}$/, 'bmad');
|
|
1271
1268
|
|
|
1272
1269
|
// Check temp directory first for _cfg files
|
|
1273
1270
|
if (filePath.startsWith('bmad/_cfg/')) {
|
|
@@ -1278,11 +1275,6 @@ class WebBundler {
|
|
|
1278
1275
|
}
|
|
1279
1276
|
}
|
|
1280
1277
|
|
|
1281
|
-
// Handle different path patterns for bmad files
|
|
1282
|
-
// bmad/cis/tasks/brain-session.md -> src/modules/cis/tasks/brain-session.md
|
|
1283
|
-
// bmad/core/tasks/create-doc.md -> src/core/tasks/create-doc.md
|
|
1284
|
-
// bmad/bmm/templates/brief.md -> src/modules/bmm/templates/brief.md
|
|
1285
|
-
|
|
1286
1278
|
let actualPath = filePath;
|
|
1287
1279
|
|
|
1288
1280
|
if (filePath.startsWith('bmad/')) {
|
|
@@ -1334,15 +1326,13 @@ class WebBundler {
|
|
|
1334
1326
|
}
|
|
1335
1327
|
|
|
1336
1328
|
/**
|
|
1337
|
-
* Process and remove {project-root} references
|
|
1329
|
+
* Process and remove {project-root} references
|
|
1338
1330
|
*/
|
|
1339
1331
|
processProjectRootReferences(content) {
|
|
1340
1332
|
// Remove {project-root}/ prefix (with slash)
|
|
1341
1333
|
content = content.replaceAll('{project-root}/', '');
|
|
1342
1334
|
// Also remove {project-root} without slash
|
|
1343
1335
|
content = content.replaceAll('{project-root}', '');
|
|
1344
|
-
// Replace {bmad_folder} with bmad
|
|
1345
|
-
content = content.replaceAll('{bmad_folder}', 'bmad');
|
|
1346
1336
|
return content;
|
|
1347
1337
|
}
|
|
1348
1338
|
|
|
@@ -80,7 +80,7 @@ module.exports = {
|
|
|
80
80
|
*/
|
|
81
81
|
async function buildAgent(projectDir, agentName) {
|
|
82
82
|
// First check standalone agents in bmad/agents/{agentname}/
|
|
83
|
-
const standaloneAgentDir = path.join(projectDir, 'bmad', 'agents', agentName);
|
|
83
|
+
const standaloneAgentDir = path.join(projectDir, '.bmad', 'agents', agentName);
|
|
84
84
|
let standaloneYamlPath = path.join(standaloneAgentDir, `${agentName}.agent.yaml`);
|
|
85
85
|
|
|
86
86
|
// If exact match doesn't exist, look for any .agent.yaml file in the directory
|
|
@@ -99,7 +99,7 @@ async function buildAgent(projectDir, agentName) {
|
|
|
99
99
|
// Build the standalone agent
|
|
100
100
|
console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
|
|
101
101
|
|
|
102
|
-
const customizePath = path.join(projectDir, 'bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
|
|
102
|
+
const customizePath = path.join(projectDir, '.bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
|
|
103
103
|
const customizeExists = await fs.pathExists(customizePath);
|
|
104
104
|
|
|
105
105
|
await builder.buildAgent(standaloneYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
@@ -109,7 +109,7 @@ async function buildAgent(projectDir, agentName) {
|
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
// Find the agent YAML file in .claude/commands/bmad/
|
|
112
|
-
const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad');
|
|
112
|
+
const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', '.bmad');
|
|
113
113
|
|
|
114
114
|
// Search all module directories for the agent
|
|
115
115
|
const modules = await fs.readdir(bmadCommandsDir);
|
|
@@ -149,7 +149,7 @@ async function buildAllAgents(projectDir) {
|
|
|
149
149
|
let builtCount = 0;
|
|
150
150
|
|
|
151
151
|
// First, build standalone agents in bmad/agents/
|
|
152
|
-
const standaloneAgentsDir = path.join(projectDir, 'bmad', 'agents');
|
|
152
|
+
const standaloneAgentsDir = path.join(projectDir, '.bmad', 'agents');
|
|
153
153
|
if (await fs.pathExists(standaloneAgentsDir)) {
|
|
154
154
|
console.log(chalk.cyan('\nBuilding standalone agents...'));
|
|
155
155
|
const agentDirs = await fs.readdir(standaloneAgentsDir);
|
|
@@ -177,7 +177,7 @@ async function buildAllAgents(projectDir) {
|
|
|
177
177
|
|
|
178
178
|
console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
|
|
179
179
|
|
|
180
|
-
const customizePath = path.join(projectDir, 'bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
|
|
180
|
+
const customizePath = path.join(projectDir, '.bmad', '_cfg', 'agents', `${agentName}.customize.yaml`);
|
|
181
181
|
const customizeExists = await fs.pathExists(customizePath);
|
|
182
182
|
|
|
183
183
|
await builder.buildAgent(agentYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
@@ -132,8 +132,12 @@ class ConfigCollector {
|
|
|
132
132
|
* Collect configuration for all modules
|
|
133
133
|
* @param {Array} modules - List of modules to configure (including 'core')
|
|
134
134
|
* @param {string} projectDir - Target project directory
|
|
135
|
+
* @param {Object} options - Additional options
|
|
136
|
+
* @param {Map} options.customModulePaths - Map of module ID to source path for custom modules
|
|
135
137
|
*/
|
|
136
|
-
async collectAllConfigurations(modules, projectDir) {
|
|
138
|
+
async collectAllConfigurations(modules, projectDir, options = {}) {
|
|
139
|
+
// Store custom module paths for use in collectModuleConfig
|
|
140
|
+
this.customModulePaths = options.customModulePaths || new Map();
|
|
137
141
|
await this.loadExistingConfig(projectDir);
|
|
138
142
|
|
|
139
143
|
// Check if core was already collected (e.g., in early collection phase)
|
|
@@ -183,24 +187,28 @@ class ConfigCollector {
|
|
|
183
187
|
|
|
184
188
|
// Load module's install config schema
|
|
185
189
|
// First, try the standard src/modules location
|
|
186
|
-
let installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', '
|
|
190
|
+
let installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'module.yaml');
|
|
191
|
+
let moduleConfigPath = path.join(getModulePath(moduleName), 'module.yaml');
|
|
187
192
|
|
|
188
193
|
// If not found in src/modules, we need to find it by searching the project
|
|
189
|
-
if (!(await fs.pathExists(installerConfigPath))) {
|
|
194
|
+
if (!(await fs.pathExists(installerConfigPath)) && !(await fs.pathExists(moduleConfigPath))) {
|
|
190
195
|
// Use the module manager to find the module source
|
|
191
196
|
const { ModuleManager } = require('../modules/manager');
|
|
192
197
|
const moduleManager = new ModuleManager();
|
|
193
198
|
const moduleSourcePath = await moduleManager.findModuleSource(moduleName);
|
|
194
199
|
|
|
195
200
|
if (moduleSourcePath) {
|
|
196
|
-
installerConfigPath = path.join(moduleSourcePath, '_module-installer', '
|
|
201
|
+
installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'module.yaml');
|
|
202
|
+
moduleConfigPath = path.join(moduleSourcePath, 'module.yaml');
|
|
197
203
|
}
|
|
198
204
|
}
|
|
199
205
|
|
|
200
206
|
let configPath = null;
|
|
201
207
|
let isCustomModule = false;
|
|
202
208
|
|
|
203
|
-
if (await fs.pathExists(
|
|
209
|
+
if (await fs.pathExists(moduleConfigPath)) {
|
|
210
|
+
configPath = moduleConfigPath;
|
|
211
|
+
} else if (await fs.pathExists(installerConfigPath)) {
|
|
204
212
|
configPath = installerConfigPath;
|
|
205
213
|
} else {
|
|
206
214
|
// Check if this is a custom module with custom.yaml
|
|
@@ -447,23 +455,37 @@ class ConfigCollector {
|
|
|
447
455
|
this.allAnswers = {};
|
|
448
456
|
}
|
|
449
457
|
// Load module's config
|
|
450
|
-
// First,
|
|
451
|
-
let installerConfigPath =
|
|
458
|
+
// First, check if we have a custom module path for this module
|
|
459
|
+
let installerConfigPath = null;
|
|
460
|
+
let moduleConfigPath = null;
|
|
461
|
+
|
|
462
|
+
if (this.customModulePaths && this.customModulePaths.has(moduleName)) {
|
|
463
|
+
const customPath = this.customModulePaths.get(moduleName);
|
|
464
|
+
installerConfigPath = path.join(customPath, '_module-installer', 'module.yaml');
|
|
465
|
+
moduleConfigPath = path.join(customPath, 'module.yaml');
|
|
466
|
+
} else {
|
|
467
|
+
// Try the standard src/modules location
|
|
468
|
+
installerConfigPath = path.join(getModulePath(moduleName), '_module-installer', 'module.yaml');
|
|
469
|
+
moduleConfigPath = path.join(getModulePath(moduleName), 'module.yaml');
|
|
470
|
+
}
|
|
452
471
|
|
|
453
|
-
// If not found in src/modules
|
|
454
|
-
if (!(await fs.pathExists(installerConfigPath))) {
|
|
472
|
+
// If not found in src/modules or custom paths, search the project
|
|
473
|
+
if (!(await fs.pathExists(installerConfigPath)) && !(await fs.pathExists(moduleConfigPath))) {
|
|
455
474
|
// Use the module manager to find the module source
|
|
456
475
|
const { ModuleManager } = require('../modules/manager');
|
|
457
476
|
const moduleManager = new ModuleManager();
|
|
458
477
|
const moduleSourcePath = await moduleManager.findModuleSource(moduleName);
|
|
459
478
|
|
|
460
479
|
if (moduleSourcePath) {
|
|
461
|
-
installerConfigPath = path.join(moduleSourcePath, '_module-installer', '
|
|
480
|
+
installerConfigPath = path.join(moduleSourcePath, '_module-installer', 'module.yaml');
|
|
481
|
+
moduleConfigPath = path.join(moduleSourcePath, 'module.yaml');
|
|
462
482
|
}
|
|
463
483
|
}
|
|
464
484
|
|
|
465
485
|
let configPath = null;
|
|
466
|
-
if (await fs.pathExists(
|
|
486
|
+
if (await fs.pathExists(moduleConfigPath)) {
|
|
487
|
+
configPath = moduleConfigPath;
|
|
488
|
+
} else if (await fs.pathExists(installerConfigPath)) {
|
|
467
489
|
configPath = installerConfigPath;
|
|
468
490
|
} else {
|
|
469
491
|
// No config for this module
|
|
@@ -674,15 +696,6 @@ class ConfigCollector {
|
|
|
674
696
|
}
|
|
675
697
|
}
|
|
676
698
|
|
|
677
|
-
// Special handling for bmad_folder: detect existing folder name
|
|
678
|
-
if (moduleName === 'core' && key === 'bmad_folder' && !existingValue && this.currentProjectDir) {
|
|
679
|
-
// Try to detect the existing BMAD folder name
|
|
680
|
-
const detectedFolder = await this.detectExistingBmadFolder(this.currentProjectDir);
|
|
681
|
-
if (detectedFolder) {
|
|
682
|
-
existingValue = detectedFolder;
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
|
|
686
699
|
// Special handling for user_name: default to system user
|
|
687
700
|
if (moduleName === 'core' && key === 'user_name' && !existingValue) {
|
|
688
701
|
item.default = this.getDefaultUsername();
|