bmad-method 6.0.0-alpha.19 → 6.0.0-alpha.20
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/docs.yaml +72 -0
- package/.github/workflows/quality.yaml +0 -3
- package/CHANGELOG.md +125 -0
- package/CONTRIBUTING.md +1 -3
- package/README.md +8 -7
- package/docs/agent-customization-guide.md +3 -3
- package/docs/custom-content-installation.md +1 -1
- package/docs/document-sharding-guide.md +2 -2
- package/docs/getting-started/installation.md +76 -0
- package/docs/ide-info/index.md +24 -0
- package/docs/ide-info/rovo-dev.md +14 -380
- package/docs/index.md +36 -45
- package/eslint.config.mjs +7 -2
- package/package.json +14 -8
- package/{docs → samples}/sample-custom-modules/README.md +1 -1
- package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/installers.md +2 -2
- package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/modules.md +1 -1
- package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-01-init.md +1 -1
- package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/workflow.md +1 -1
- package/src/core/tasks/review-adversarial-general.xml +41 -0
- package/src/modules/bmb/README.md +25 -0
- package/src/modules/bmb/docs/agents/expert-agent-architecture.md +3 -3
- package/src/modules/bmb/docs/agents/index.md +9 -9
- package/src/modules/bmb/docs/agents/simple-agent-architecture.md +1 -1
- package/src/modules/bmb/docs/agents/understanding-agent-types.md +1 -1
- package/src/modules/bmb/docs/{README.md → index.md} +10 -12
- package/src/modules/bmb/docs/workflows/index.md +6 -6
- package/src/modules/bmb/docs/workflows/templates/step-01-init-continuable-template.md +7 -7
- package/src/modules/bmb/docs/workflows/templates/step-1b-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/step-template.md +7 -7
- package/src/modules/bmb/docs/workflows/templates/workflow-template.md +1 -1
- package/src/modules/bmb/docs/workflows/templates/workflow.md +1 -1
- package/src/modules/bmb/reference/workflows/meal-prep-nutrition/workflow.md +1 -1
- package/src/modules/bmb/workflows/create-agent/data/reference/workflows/meal-prep-nutrition/workflow.md +1 -1
- package/src/modules/bmb/workflows/create-agent/templates/expert-agent.template.md +3 -3
- package/src/modules/bmb/workflows/create-module/steps/step-04-structure.md +1 -1
- package/src/modules/bmb/workflows/create-module/steps/step-08-installer.md +5 -5
- package/src/modules/bmb/workflows/create-module/templates/agent.template.md +1 -1
- package/src/modules/bmb/workflows/create-module/validation.md +2 -2
- package/src/modules/bmb/workflows/create-module/workflow.md +1 -1
- package/src/modules/bmb/workflows/create-workflow/steps/step-07-build.md +2 -2
- package/src/modules/bmb/workflows/create-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-agent/workflow.md +1 -1
- package/src/modules/bmb/workflows/edit-workflow/workflow.md +1 -1
- package/src/modules/bmb/workflows/workflow-compliance-check/steps/step-02-workflow-validation.md +1 -1
- package/src/modules/bmb/workflows/workflow-compliance-check/workflow.md +1 -1
- package/src/modules/bmb/workflows-legacy/edit-module/checklist.md +1 -1
- package/src/modules/bmb/workflows-legacy/edit-module/instructions.md +3 -3
- package/src/modules/bmb/workflows-legacy/module-brief/instructions.md +2 -2
- package/src/modules/bmgd/_module-installer/installer.js +2 -2
- package/src/modules/bmgd/agents/game-architect.agent.yaml +4 -0
- package/src/modules/bmgd/docs/{README.md → index.md} +2 -2
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/instructions.md +4 -4
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-01-init.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/brainstorm-game/steps/step-04-complete.md +1 -1
- package/src/modules/bmgd/workflows/1-preproduction/game-brief/instructions.md +4 -4
- package/src/modules/bmgd/workflows/2-design/narrative/instructions-narrative.md +4 -4
- package/src/modules/bmgd/workflows/2-design/narrative/steps/step-11-complete.md +1 -1
- package/src/modules/bmgd/workflows/3-technical/game-architecture/instructions.md +5 -5
- package/src/modules/bmgd/workflows/3-technical/game-architecture/steps/step-09-complete.md +60 -6
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/project-context-template.md +20 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-01-discover.md +201 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-02-generate.md +373 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/steps/step-03-complete.md +279 -0
- package/src/modules/bmgd/workflows/3-technical/generate-project-context/workflow.md +48 -0
- package/src/modules/bmgd/workflows/4-production/code-review/workflow.yaml +3 -3
- 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/workflow.yaml +3 -3
- package/src/modules/bmgd/workflows/4-production/dev-story/workflow.yaml +4 -4
- package/src/modules/bmgd/workflows/4-production/retrospective/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/retrospective/workflow.yaml +5 -5
- package/src/modules/bmgd/workflows/4-production/sprint-planning/instructions.md +11 -2
- package/src/modules/bmgd/workflows/4-production/sprint-planning/workflow.yaml +4 -4
- package/src/modules/bmgd/workflows/4-production/sprint-status/instructions.md +2 -2
- package/src/modules/bmgd/workflows/4-production/sprint-status/workflow.yaml +3 -3
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/instructions.md +3 -3
- package/src/modules/bmgd/workflows/bmgd-quick-flow/create-tech-spec/workflow.yaml +1 -1
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-dev/workflow.yaml +1 -1
- package/src/modules/bmgd/workflows/bmgd-quick-flow/quick-prototype/workflow.yaml +1 -1
- package/src/modules/bmgd/workflows/workflow-status/init/instructions.md +2 -2
- package/src/modules/bmgd/workflows/workflow-status/init/workflow.yaml +1 -1
- package/src/modules/bmgd/workflows/workflow-status/instructions.md +2 -2
- package/src/modules/bmm/README.md +5 -6
- package/src/modules/bmm/_module-installer/installer.js +2 -2
- package/src/modules/bmm/agents/analyst.agent.yaml +1 -1
- package/src/modules/bmm/agents/dev.agent.yaml +8 -4
- package/src/modules/bmm/agents/quick-flow-solo-dev.agent.yaml +8 -17
- package/src/modules/bmm/agents/sm.agent.yaml +6 -3
- package/src/modules/bmm/agents/tech-writer.agent.yaml +1 -1
- package/src/modules/bmm/agents/ux-designer.agent.yaml +6 -3
- package/src/modules/bmm/docs/agents-guide.md +83 -1026
- package/src/modules/bmm/docs/bmad-quick-flow.md +10 -32
- package/src/modules/bmm/docs/brownfield-guide.md +1 -1
- package/src/modules/bmm/docs/enterprise-agentic-development.md +1 -1
- package/src/modules/bmm/docs/{README.md → index.md} +7 -88
- package/src/modules/bmm/docs/quick-spec-flow.md +1 -1
- package/src/modules/bmm/docs/quick-start.md +7 -7
- package/src/modules/bmm/docs/scale-adaptive-system.md +1 -1
- package/src/modules/bmm/docs/test-architecture.md +13 -12
- package/src/modules/bmm/docs/workflows-solutioning.md +1 -1
- package/src/modules/bmm/module.yaml +11 -10
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +7 -5
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +2 -4
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +2 -2
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +7 -10
- package/src/modules/bmm/workflows/1-analysis/create-product-brief/workflow.md +3 -3
- package/src/modules/bmm/workflows/1-analysis/research/research.template.md +14 -0
- package/src/modules/bmm/workflows/1-analysis/research/workflow.md +8 -39
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +15 -15
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +5 -25
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +6 -6
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +5 -5
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +2 -2
- package/src/modules/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +3 -5
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-03-success.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-04-journeys.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-05-domain.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-06-innovation.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-07-project-type.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-08-scoping.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-09-functional.md +4 -4
- package/src/modules/bmm/workflows/2-plan-workflows/prd/steps/step-10-nonfunctional.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +0 -1
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +9 -21
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +2 -2
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +4 -4
- package/src/modules/bmm/workflows/3-solutioning/create-architecture/workflow.md +1 -1
- package/src/modules/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +8 -8
- 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/4-implementation/code-review/workflow.yaml +4 -4
- 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 +16 -14
- package/src/modules/bmm/workflows/4-implementation/create-story/instructions.xml +2 -12
- package/src/modules/bmm/workflows/4-implementation/create-story/workflow.yaml +4 -4
- package/src/modules/bmm/workflows/4-implementation/dev-story/instructions.xml +1 -1
- package/src/modules/bmm/workflows/4-implementation/dev-story/workflow.yaml +3 -3
- package/src/modules/bmm/workflows/4-implementation/retrospective/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/retrospective/workflow.yaml +5 -5
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +7 -6
- package/src/modules/bmm/workflows/4-implementation/sprint-status/instructions.md +2 -2
- package/src/modules/bmm/workflows/4-implementation/sprint-status/workflow.yaml +4 -3
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/instructions.md +4 -4
- package/src/modules/bmm/workflows/bmad-quick-flow/create-tech-spec/workflow.yaml +4 -2
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +51 -0
- package/src/modules/bmm/workflows/document-project/instructions.md +27 -28
- package/src/modules/bmm/workflows/document-project/workflow.yaml +2 -3
- package/src/modules/bmm/workflows/generate-project-context/project-context-template.md +2 -1
- package/src/modules/bmm/workflows/generate-project-context/steps/step-01-discover.md +5 -15
- package/src/modules/bmm/workflows/generate-project-context/steps/step-02-generate.md +2 -2
- package/src/modules/bmm/workflows/testarch/atdd/atdd-checklist-template.md +8 -7
- package/src/modules/bmm/workflows/testarch/atdd/checklist.md +1 -0
- package/src/modules/bmm/workflows/testarch/atdd/instructions.md +1 -0
- package/src/modules/bmm/workflows/testarch/automate/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/ci/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/ci/instructions.md +2 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +2 -0
- package/src/modules/bmm/workflows/testarch/test-design/checklist.md +3 -2
- package/src/modules/bmm/workflows/testarch/test-design/instructions.md +1 -1
- package/src/modules/bmm/workflows/testarch/test-design/test-design-template.md +9 -0
- package/src/modules/bmm/workflows/testarch/test-review/checklist.md +2 -0
- package/src/modules/bmm/workflows/testarch/test-review/test-review-template.md +2 -0
- package/src/modules/bmm/workflows/testarch/trace/checklist.md +1 -0
- package/src/modules/bmm/workflows/testarch/trace/instructions.md +2 -0
- package/src/modules/bmm/workflows/testarch/trace/trace-template.md +2 -0
- package/src/modules/bmm/workflows/workflow-status/init/instructions.md +2 -2
- package/src/modules/bmm/workflows/workflow-status/init/workflow.yaml +1 -1
- package/src/modules/bmm/workflows/workflow-status/instructions.md +2 -2
- package/src/modules/bmm/workflows/workflow-status/workflow.yaml +3 -1
- package/src/modules/cis/{readme.md → docs/index.md} +2 -6
- package/src/modules/cis/workflows/design-thinking/instructions.md +2 -2
- package/src/modules/cis/workflows/innovation-strategy/instructions.md +2 -2
- package/src/modules/cis/workflows/problem-solving/instructions.md +2 -2
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-invalid-format.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-mismatched-kebab.agent.yaml +24 -0
- package/test/fixtures/agent-schema/invalid/menu-triggers/compound-wrong-shortcut.agent.yaml +24 -0
- package/test/fixtures/agent-schema/valid/menu-triggers/compound-triggers.agent.yaml +30 -0
- package/tools/build-docs.js +630 -0
- package/tools/cli/commands/install.js +11 -5
- package/tools/cli/installers/install-messages.yaml +52 -0
- package/tools/cli/installers/lib/core/config-collector.js +25 -30
- package/tools/cli/installers/lib/message-loader.js +85 -0
- package/tools/cli/lib/ui.js +221 -41
- package/tools/schema/agent.js +68 -5
- package/website/css/custom.css +52 -0
- package/website/docusaurus.config.js +179 -0
- package/website/sidebars.js +157 -0
- package/website/src/pages/downloads.md +81 -0
- package/website/src/pages/index.js +50 -0
- package/website/static/favicon.ico +0 -0
- package/website/static/img/logo.svg +4 -0
- package/website/static/robots.txt +37 -0
- package/docs/installers-bundlers/ide-injections.md +0 -186
- package/docs/installers-bundlers/installers-modules-platforms-reference.md +0 -389
- package/src/modules/bmgd/README.md +0 -209
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/checklist.md +0 -25
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/instructions.md +0 -202
- package/src/modules/bmm/workflows/bmad-quick-flow/quick-dev/workflow.yaml +0 -33
- package/tools/cli/commands/build.js +0 -283
- package/tools/cli/commands/list.js +0 -40
- package/tools/cli/commands/status.js +0 -47
- package/tools/cli/commands/uninstall.js +0 -44
- package/tools/cli/commands/update.js +0 -28
- package/tools/validate-bundles.js +0 -87
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/README.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/commit-poet/commit-poet.agent.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/instructions.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/bundlers.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/deploy.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/docs.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/knowledge/tests.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith-sidecar/memories.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/agents/toolsmith/toolsmith.agent.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/module.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-02-q1.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-03-q2.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-04-q3.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-05-q4.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-06-q5.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-07-q6.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-08-q7.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-09-q8.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-10-q9.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-11-q10.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/steps/step-12-results.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/quiz-master/templates/csv-headers.template +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/README.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/meditation-guide.agent.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/foo.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/addition1.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/insights.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/instructions.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/memories.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion-sidecar/patterns.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/agents/wellness-companion/wellness-companion.agent.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/module.yaml +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/README.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/daily-checkin/workflow.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/README.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/guided-meditation/workflow.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/README.md +0 -0
- /package/{docs → samples}/sample-custom-modules/sample-wellness-module/workflows/wellness-journal/workflow.md +0 -0
|
@@ -1,283 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const path = require('node:path');
|
|
3
|
-
const fs = require('fs-extra');
|
|
4
|
-
const { YamlXmlBuilder } = require('../lib/yaml-xml-builder');
|
|
5
|
-
const { getProjectRoot } = require('../lib/project-root');
|
|
6
|
-
|
|
7
|
-
const builder = new YamlXmlBuilder();
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Find .claude directory by searching up from current directory
|
|
11
|
-
*/
|
|
12
|
-
async function findClaudeDir(startDir) {
|
|
13
|
-
let currentDir = startDir;
|
|
14
|
-
const root = path.parse(currentDir).root;
|
|
15
|
-
|
|
16
|
-
while (currentDir !== root) {
|
|
17
|
-
const claudeDir = path.join(currentDir, '.claude');
|
|
18
|
-
if (await fs.pathExists(claudeDir)) {
|
|
19
|
-
return claudeDir;
|
|
20
|
-
}
|
|
21
|
-
currentDir = path.dirname(currentDir);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
module.exports = {
|
|
28
|
-
command: 'build [agent]',
|
|
29
|
-
description: 'Build agent XML files from YAML sources',
|
|
30
|
-
options: [
|
|
31
|
-
['-a, --all', 'Build all agents'],
|
|
32
|
-
['-d, --directory <path>', 'Project directory', '.'],
|
|
33
|
-
],
|
|
34
|
-
action: async (agentName, options) => {
|
|
35
|
-
try {
|
|
36
|
-
let projectDir = path.resolve(options.directory);
|
|
37
|
-
|
|
38
|
-
// Auto-detect .claude directory (search up from current dir)
|
|
39
|
-
const claudeDir = await findClaudeDir(projectDir);
|
|
40
|
-
if (!claudeDir) {
|
|
41
|
-
console.log(chalk.yellow('\n⚠️ No .claude directory found'));
|
|
42
|
-
console.log(chalk.dim('Run this command from your project directory or'));
|
|
43
|
-
console.log(chalk.dim('use --directory flag to specify location'));
|
|
44
|
-
console.log(chalk.dim('\nExample: npx bmad-method build pm --directory /path/to/project'));
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// Use the directory containing .claude
|
|
49
|
-
projectDir = path.dirname(claudeDir);
|
|
50
|
-
console.log(chalk.dim(`Using project: ${projectDir}\n`));
|
|
51
|
-
|
|
52
|
-
console.log(chalk.cyan('🔨 Building Agent Files\n'));
|
|
53
|
-
|
|
54
|
-
if (options.all) {
|
|
55
|
-
// Build all agents
|
|
56
|
-
await buildAllAgents(projectDir);
|
|
57
|
-
} else if (agentName) {
|
|
58
|
-
// Build specific agent
|
|
59
|
-
await buildAgent(projectDir, agentName);
|
|
60
|
-
} else {
|
|
61
|
-
// No agent specified, list available agents
|
|
62
|
-
console.log(chalk.yellow('No agent specified. Use --all to build all agents or specify an agent name.'));
|
|
63
|
-
console.log(chalk.dim('\nAvailable agents:'));
|
|
64
|
-
await listAvailableAgents(projectDir);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
process.exit(0);
|
|
68
|
-
} catch (error) {
|
|
69
|
-
console.error(chalk.red('\nError:'), error.message);
|
|
70
|
-
if (process.env.DEBUG) {
|
|
71
|
-
console.error(error.stack);
|
|
72
|
-
}
|
|
73
|
-
process.exit(1);
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Build a specific agent
|
|
80
|
-
*/
|
|
81
|
-
async function buildAgent(projectDir, agentName) {
|
|
82
|
-
// First check standalone agents in bmad/agents/{agentname}/
|
|
83
|
-
const standaloneAgentDir = path.join(projectDir, '_bmad', 'agents', agentName);
|
|
84
|
-
let standaloneYamlPath = path.join(standaloneAgentDir, `${agentName}.agent.yaml`);
|
|
85
|
-
|
|
86
|
-
// If exact match doesn't exist, look for any .agent.yaml file in the directory
|
|
87
|
-
if (!(await fs.pathExists(standaloneYamlPath)) && (await fs.pathExists(standaloneAgentDir))) {
|
|
88
|
-
const files = await fs.readdir(standaloneAgentDir);
|
|
89
|
-
const agentFile = files.find((f) => f.endsWith('.agent.yaml'));
|
|
90
|
-
if (agentFile) {
|
|
91
|
-
standaloneYamlPath = path.join(standaloneAgentDir, agentFile);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (await fs.pathExists(standaloneYamlPath)) {
|
|
96
|
-
const yamlFileName = path.basename(standaloneYamlPath, '.agent.yaml');
|
|
97
|
-
const outputPath = path.join(standaloneAgentDir, `${yamlFileName}.md`);
|
|
98
|
-
|
|
99
|
-
// Build the standalone agent
|
|
100
|
-
console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
|
|
101
|
-
|
|
102
|
-
const customizePath = path.join(projectDir, '_bmad', '_config', 'agents', `${agentName}.customize.yaml`);
|
|
103
|
-
const customizeExists = await fs.pathExists(customizePath);
|
|
104
|
-
|
|
105
|
-
await builder.buildAgent(standaloneYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
106
|
-
|
|
107
|
-
console.log(chalk.green(` ✓ ${agentName} built successfully (standalone)`));
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Find the agent YAML file in .claude/commands/bmad/
|
|
112
|
-
const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', '_bmad');
|
|
113
|
-
|
|
114
|
-
// Search all module directories for the agent
|
|
115
|
-
const modules = await fs.readdir(bmadCommandsDir);
|
|
116
|
-
let found = false;
|
|
117
|
-
|
|
118
|
-
for (const module of modules) {
|
|
119
|
-
const agentYamlPath = path.join(bmadCommandsDir, module, 'agents', `${agentName}.agent.yaml`);
|
|
120
|
-
const outputPath = path.join(bmadCommandsDir, module, 'agents', `${agentName}.md`);
|
|
121
|
-
|
|
122
|
-
if (await fs.pathExists(agentYamlPath)) {
|
|
123
|
-
found = true;
|
|
124
|
-
|
|
125
|
-
// Build the agent
|
|
126
|
-
console.log(chalk.cyan(` Building ${agentName}...`));
|
|
127
|
-
|
|
128
|
-
const customizePath = path.join(projectDir, '.claude', '_config', 'agents', `${agentName}.customize.yaml`);
|
|
129
|
-
const customizeExists = await fs.pathExists(customizePath);
|
|
130
|
-
|
|
131
|
-
await builder.buildAgent(agentYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
132
|
-
|
|
133
|
-
console.log(chalk.green(` ✓ ${agentName} built successfully`));
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (!found) {
|
|
139
|
-
console.log(chalk.yellow(` ⚠️ Agent '${agentName}' not found`));
|
|
140
|
-
console.log(chalk.dim(' Available agents:'));
|
|
141
|
-
await listAvailableAgents(projectDir);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Build all agents
|
|
147
|
-
*/
|
|
148
|
-
async function buildAllAgents(projectDir) {
|
|
149
|
-
let builtCount = 0;
|
|
150
|
-
|
|
151
|
-
// First, build standalone agents in bmad/agents/
|
|
152
|
-
const standaloneAgentsDir = path.join(projectDir, '_bmad', 'agents');
|
|
153
|
-
if (await fs.pathExists(standaloneAgentsDir)) {
|
|
154
|
-
console.log(chalk.cyan('\nBuilding standalone agents...'));
|
|
155
|
-
const agentDirs = await fs.readdir(standaloneAgentsDir);
|
|
156
|
-
|
|
157
|
-
for (const agentDirName of agentDirs) {
|
|
158
|
-
const agentDir = path.join(standaloneAgentsDir, agentDirName);
|
|
159
|
-
|
|
160
|
-
// Skip if not a directory
|
|
161
|
-
const stat = await fs.stat(agentDir);
|
|
162
|
-
if (!stat.isDirectory()) {
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
// Find any .agent.yaml file in the directory
|
|
167
|
-
const files = await fs.readdir(agentDir);
|
|
168
|
-
const agentFile = files.find((f) => f.endsWith('.agent.yaml'));
|
|
169
|
-
|
|
170
|
-
if (!agentFile) {
|
|
171
|
-
continue;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
const agentYamlPath = path.join(agentDir, agentFile);
|
|
175
|
-
const agentName = path.basename(agentFile, '.agent.yaml');
|
|
176
|
-
const outputPath = path.join(agentDir, `${agentName}.md`);
|
|
177
|
-
|
|
178
|
-
console.log(chalk.cyan(` Building standalone agent ${agentName}...`));
|
|
179
|
-
|
|
180
|
-
const customizePath = path.join(projectDir, '_bmad', '_config', 'agents', `${agentName}.customize.yaml`);
|
|
181
|
-
const customizeExists = await fs.pathExists(customizePath);
|
|
182
|
-
|
|
183
|
-
await builder.buildAgent(agentYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
184
|
-
|
|
185
|
-
console.log(chalk.green(` ✓ ${agentName} (standalone)`));
|
|
186
|
-
builtCount++;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
// Then, build module agents in .claude/commands/bmad/
|
|
191
|
-
const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad');
|
|
192
|
-
if (await fs.pathExists(bmadCommandsDir)) {
|
|
193
|
-
console.log(chalk.cyan('\nBuilding module agents...'));
|
|
194
|
-
const modules = await fs.readdir(bmadCommandsDir);
|
|
195
|
-
|
|
196
|
-
for (const module of modules) {
|
|
197
|
-
const agentsDir = path.join(bmadCommandsDir, module, 'agents');
|
|
198
|
-
|
|
199
|
-
if (!(await fs.pathExists(agentsDir))) {
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const files = await fs.readdir(agentsDir);
|
|
204
|
-
|
|
205
|
-
for (const file of files) {
|
|
206
|
-
if (!file.endsWith('.agent.yaml')) {
|
|
207
|
-
continue;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
const agentName = file.replace('.agent.yaml', '');
|
|
211
|
-
const agentYamlPath = path.join(agentsDir, file);
|
|
212
|
-
const outputPath = path.join(agentsDir, `${agentName}.md`);
|
|
213
|
-
|
|
214
|
-
console.log(chalk.cyan(` Building ${agentName}...`));
|
|
215
|
-
|
|
216
|
-
const customizePath = path.join(projectDir, '.claude', '_config', 'agents', `${agentName}.customize.yaml`);
|
|
217
|
-
const customizeExists = await fs.pathExists(customizePath);
|
|
218
|
-
|
|
219
|
-
await builder.buildAgent(agentYamlPath, customizeExists ? customizePath : null, outputPath, { includeMetadata: true });
|
|
220
|
-
|
|
221
|
-
console.log(chalk.green(` ✓ ${agentName} (${module})`));
|
|
222
|
-
builtCount++;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
console.log(chalk.green(`\n✓ Built ${builtCount} agent(s)`));
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
/**
|
|
231
|
-
* List available agents
|
|
232
|
-
*/
|
|
233
|
-
async function listAvailableAgents(projectDir) {
|
|
234
|
-
// List standalone agents first
|
|
235
|
-
const standaloneAgentsDir = path.join(projectDir, 'bmad', 'agents');
|
|
236
|
-
if (await fs.pathExists(standaloneAgentsDir)) {
|
|
237
|
-
console.log(chalk.dim(' Standalone agents:'));
|
|
238
|
-
const agentDirs = await fs.readdir(standaloneAgentsDir);
|
|
239
|
-
|
|
240
|
-
for (const agentDirName of agentDirs) {
|
|
241
|
-
const agentDir = path.join(standaloneAgentsDir, agentDirName);
|
|
242
|
-
|
|
243
|
-
// Skip if not a directory
|
|
244
|
-
const stat = await fs.stat(agentDir);
|
|
245
|
-
if (!stat.isDirectory()) {
|
|
246
|
-
continue;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
// Find any .agent.yaml file in the directory
|
|
250
|
-
const files = await fs.readdir(agentDir);
|
|
251
|
-
const agentFile = files.find((f) => f.endsWith('.agent.yaml'));
|
|
252
|
-
|
|
253
|
-
if (agentFile) {
|
|
254
|
-
const agentName = path.basename(agentFile, '.agent.yaml');
|
|
255
|
-
console.log(chalk.dim(` - ${agentName} (in ${agentDirName}/)`));
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
// List module agents
|
|
261
|
-
const bmadCommandsDir = path.join(projectDir, '.claude', 'commands', 'bmad');
|
|
262
|
-
if (await fs.pathExists(bmadCommandsDir)) {
|
|
263
|
-
console.log(chalk.dim(' Module agents:'));
|
|
264
|
-
const modules = await fs.readdir(bmadCommandsDir);
|
|
265
|
-
|
|
266
|
-
for (const module of modules) {
|
|
267
|
-
const agentsDir = path.join(bmadCommandsDir, module, 'agents');
|
|
268
|
-
|
|
269
|
-
if (!(await fs.pathExists(agentsDir))) {
|
|
270
|
-
continue;
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
const files = await fs.readdir(agentsDir);
|
|
274
|
-
|
|
275
|
-
for (const file of files) {
|
|
276
|
-
if (file.endsWith('.agent.yaml')) {
|
|
277
|
-
const agentName = file.replace('.agent.yaml', '');
|
|
278
|
-
console.log(chalk.dim(` - ${agentName} (${module})`));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const { Installer } = require('../installers/lib/core/installer');
|
|
3
|
-
|
|
4
|
-
const installer = new Installer();
|
|
5
|
-
|
|
6
|
-
module.exports = {
|
|
7
|
-
command: 'list',
|
|
8
|
-
description: 'List available modules',
|
|
9
|
-
options: [],
|
|
10
|
-
action: async () => {
|
|
11
|
-
try {
|
|
12
|
-
const result = await installer.getAvailableModules();
|
|
13
|
-
const { modules, customModules } = result;
|
|
14
|
-
|
|
15
|
-
console.log(chalk.cyan('\n📦 Available BMAD Modules:\n'));
|
|
16
|
-
|
|
17
|
-
for (const module of modules) {
|
|
18
|
-
console.log(chalk.bold(` ${module.id}`));
|
|
19
|
-
console.log(chalk.dim(` ${module.description}`));
|
|
20
|
-
console.log(chalk.dim(` Version: ${module.version}`));
|
|
21
|
-
console.log();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (customModules && customModules.length > 0) {
|
|
25
|
-
console.log(chalk.cyan('\n🔧 Custom Modules:\n'));
|
|
26
|
-
for (const module of customModules) {
|
|
27
|
-
console.log(chalk.bold(` ${module.id}`));
|
|
28
|
-
console.log(chalk.dim(` ${module.description}`));
|
|
29
|
-
console.log(chalk.dim(` Version: ${module.version}`));
|
|
30
|
-
console.log();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
process.exit(0);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
console.error(chalk.red('Error:'), error.message);
|
|
37
|
-
process.exit(1);
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const { Installer } = require('../installers/lib/core/installer');
|
|
3
|
-
|
|
4
|
-
const installer = new Installer();
|
|
5
|
-
|
|
6
|
-
module.exports = {
|
|
7
|
-
command: 'status',
|
|
8
|
-
description: 'Show installation status',
|
|
9
|
-
options: [['-d, --directory <path>', 'Installation directory', '.']],
|
|
10
|
-
action: async (options) => {
|
|
11
|
-
try {
|
|
12
|
-
const status = await installer.getStatus(options.directory);
|
|
13
|
-
|
|
14
|
-
if (!status.installed) {
|
|
15
|
-
console.log(chalk.yellow('\n⚠️ No BMAD installation found in:'), options.directory);
|
|
16
|
-
console.log(chalk.dim('Run "bmad install" to set up BMAD Method'));
|
|
17
|
-
process.exit(0);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
console.log(chalk.cyan('\n📊 BMAD Installation Status\n'));
|
|
21
|
-
console.log(chalk.bold('Location:'), status.path);
|
|
22
|
-
console.log(chalk.bold('Version:'), status.version);
|
|
23
|
-
console.log(chalk.bold('Core:'), status.hasCore ? chalk.green('✓ Installed') : chalk.red('✗ Not installed'));
|
|
24
|
-
|
|
25
|
-
if (status.modules.length > 0) {
|
|
26
|
-
console.log(chalk.bold('\nModules:'));
|
|
27
|
-
for (const mod of status.modules) {
|
|
28
|
-
console.log(` ${chalk.green('✓')} ${mod.id} (v${mod.version})`);
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
console.log(chalk.bold('\nModules:'), chalk.dim('None installed'));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (status.ides.length > 0) {
|
|
35
|
-
console.log(chalk.bold('\nConfigured IDEs:'));
|
|
36
|
-
for (const ide of status.ides) {
|
|
37
|
-
console.log(` ${chalk.green('✓')} ${ide}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
process.exit(0);
|
|
42
|
-
} catch (error) {
|
|
43
|
-
console.error(chalk.red('Error:'), error.message);
|
|
44
|
-
process.exit(1);
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
};
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const path = require('node:path');
|
|
3
|
-
const { Installer } = require('../installers/lib/core/installer');
|
|
4
|
-
const { UI } = require('../lib/ui');
|
|
5
|
-
|
|
6
|
-
const installer = new Installer();
|
|
7
|
-
const ui = new UI();
|
|
8
|
-
|
|
9
|
-
module.exports = {
|
|
10
|
-
command: 'uninstall',
|
|
11
|
-
description: 'Remove BMAD installation',
|
|
12
|
-
options: [
|
|
13
|
-
['-d, --directory <path>', 'Installation directory', '.'],
|
|
14
|
-
['--force', 'Skip confirmation prompt'],
|
|
15
|
-
],
|
|
16
|
-
action: async (options) => {
|
|
17
|
-
try {
|
|
18
|
-
const bmadPath = path.join(options.directory, 'bmad');
|
|
19
|
-
|
|
20
|
-
if (!options.force) {
|
|
21
|
-
const { confirm } = await ui.prompt([
|
|
22
|
-
{
|
|
23
|
-
type: 'confirm',
|
|
24
|
-
name: 'confirm',
|
|
25
|
-
message: `Are you sure you want to remove BMAD from ${bmadPath}?`,
|
|
26
|
-
default: false,
|
|
27
|
-
},
|
|
28
|
-
]);
|
|
29
|
-
|
|
30
|
-
if (!confirm) {
|
|
31
|
-
console.log('Uninstall cancelled.');
|
|
32
|
-
process.exit(0);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
await installer.uninstall(options.directory);
|
|
37
|
-
console.log(chalk.green('\n✨ BMAD Method has been uninstalled.'));
|
|
38
|
-
process.exit(0);
|
|
39
|
-
} catch (error) {
|
|
40
|
-
console.error(chalk.red('Uninstall failed:'), error.message);
|
|
41
|
-
process.exit(1);
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
const chalk = require('chalk');
|
|
2
|
-
const { Installer } = require('../installers/lib/core/installer');
|
|
3
|
-
|
|
4
|
-
const installer = new Installer();
|
|
5
|
-
|
|
6
|
-
module.exports = {
|
|
7
|
-
command: 'update',
|
|
8
|
-
description: 'Update existing BMAD installation',
|
|
9
|
-
options: [
|
|
10
|
-
['-d, --directory <path>', 'Installation directory', '.'],
|
|
11
|
-
['--force', 'Force update, overwriting modified files'],
|
|
12
|
-
['--dry-run', 'Show what would be updated without making changes'],
|
|
13
|
-
],
|
|
14
|
-
action: async (options) => {
|
|
15
|
-
try {
|
|
16
|
-
await installer.update({
|
|
17
|
-
directory: options.directory,
|
|
18
|
-
force: options.force,
|
|
19
|
-
dryRun: options.dryRun,
|
|
20
|
-
});
|
|
21
|
-
console.log(chalk.green('\n✨ Update complete!'));
|
|
22
|
-
process.exit(0);
|
|
23
|
-
} catch (error) {
|
|
24
|
-
console.error(chalk.red('Update failed:'), error.message);
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
},
|
|
28
|
-
};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
const fs = require('fs-extra');
|
|
2
|
-
const path = require('node:path');
|
|
3
|
-
const xml2js = require('xml2js');
|
|
4
|
-
const chalk = require('chalk');
|
|
5
|
-
const glob = require('glob');
|
|
6
|
-
|
|
7
|
-
async function validateXmlFile(filePath) {
|
|
8
|
-
try {
|
|
9
|
-
const content = await fs.readFile(filePath, 'utf8');
|
|
10
|
-
await xml2js.parseStringPromise(content, {
|
|
11
|
-
strict: true,
|
|
12
|
-
explicitArray: false,
|
|
13
|
-
});
|
|
14
|
-
return { valid: true };
|
|
15
|
-
} catch (error) {
|
|
16
|
-
return { valid: false, error: error.message };
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
async function validateAllBundles() {
|
|
21
|
-
console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════'));
|
|
22
|
-
console.log(chalk.cyan.bold(' VALIDATING WEB BUNDLE XML FILES'));
|
|
23
|
-
console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
|
|
24
|
-
|
|
25
|
-
const bundlesDir = path.join(__dirname, '..', 'web-bundles');
|
|
26
|
-
|
|
27
|
-
// Find all XML files in web-bundles
|
|
28
|
-
const pattern = path.join(bundlesDir, '**/*.xml');
|
|
29
|
-
const files = glob.sync(pattern);
|
|
30
|
-
|
|
31
|
-
if (files.length === 0) {
|
|
32
|
-
console.log(chalk.yellow('No XML files found in web-bundles directory'));
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
console.log(`Found ${chalk.bold(files.length)} XML files to validate\n`);
|
|
37
|
-
|
|
38
|
-
let validCount = 0;
|
|
39
|
-
let invalidCount = 0;
|
|
40
|
-
const invalidFiles = [];
|
|
41
|
-
|
|
42
|
-
for (const file of files) {
|
|
43
|
-
const relativePath = path.relative(bundlesDir, file);
|
|
44
|
-
const result = await validateXmlFile(file);
|
|
45
|
-
|
|
46
|
-
if (result.valid) {
|
|
47
|
-
console.log(`${chalk.green('✓')} ${relativePath}`);
|
|
48
|
-
validCount++;
|
|
49
|
-
} else {
|
|
50
|
-
console.log(`${chalk.red('✗')} ${relativePath}`);
|
|
51
|
-
console.log(` ${chalk.red('→')} ${result.error}`);
|
|
52
|
-
invalidCount++;
|
|
53
|
-
invalidFiles.push({ path: relativePath, error: result.error });
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Summary
|
|
58
|
-
console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════'));
|
|
59
|
-
console.log(chalk.cyan.bold(' SUMMARY'));
|
|
60
|
-
console.log(chalk.cyan.bold('═══════════════════════════════════════════════\n'));
|
|
61
|
-
|
|
62
|
-
console.log(` Total files checked: ${chalk.bold(files.length)}`);
|
|
63
|
-
console.log(` Valid XML files: ${chalk.green(validCount)}`);
|
|
64
|
-
console.log(` Invalid XML files: ${invalidCount > 0 ? chalk.red(invalidCount) : chalk.green(invalidCount)}`);
|
|
65
|
-
|
|
66
|
-
if (invalidFiles.length > 0) {
|
|
67
|
-
console.log(chalk.red.bold('\n Invalid Files:'));
|
|
68
|
-
for (const { path, error } of invalidFiles) {
|
|
69
|
-
console.log(` ${chalk.red('•')} ${path}`);
|
|
70
|
-
if (error.length > 100) {
|
|
71
|
-
console.log(` ${error.slice(0, 100)}...`);
|
|
72
|
-
} else {
|
|
73
|
-
console.log(` ${error}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
console.log(chalk.cyan.bold('\n═══════════════════════════════════════════════\n'));
|
|
79
|
-
|
|
80
|
-
process.exit(invalidCount > 0 ? 1 : 0);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Run validation
|
|
84
|
-
validateAllBundles().catch((error) => {
|
|
85
|
-
console.error(chalk.red('Error running validation:'), error);
|
|
86
|
-
process.exit(1);
|
|
87
|
-
});
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/{docs → samples}/sample-custom-modules/sample-unitary-module/workflows/wassup/workflow.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|