bmalph 1.0.0
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/README.md +217 -0
- package/bin/bmalph.js +14 -0
- package/bmad/bmm/agents/analyst.agent.yaml +36 -0
- package/bmad/bmm/agents/architect.agent.yaml +28 -0
- package/bmad/bmm/agents/dev.agent.yaml +38 -0
- package/bmad/bmm/agents/pm.agent.yaml +46 -0
- package/bmad/bmm/agents/quick-flow-solo-dev.agent.yaml +32 -0
- package/bmad/bmm/agents/sm.agent.yaml +36 -0
- package/bmad/bmm/agents/tea.agent.yaml +63 -0
- package/bmad/bmm/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
- package/bmad/bmm/agents/tech-writer/tech-writer.agent.yaml +45 -0
- package/bmad/bmm/agents/ux-designer.agent.yaml +26 -0
- package/bmad/bmm/data/project-context-template.md +26 -0
- package/bmad/bmm/module-help.csv +31 -0
- package/bmad/bmm/module.yaml +44 -0
- package/bmad/bmm/sub-modules/claude-code/config.yaml +4 -0
- package/bmad/bmm/sub-modules/claude-code/injections.yaml +242 -0
- package/bmad/bmm/sub-modules/claude-code/readme.md +87 -0
- package/bmad/bmm/teams/default-party.csv +21 -0
- package/bmad/bmm/teams/team-fullstack.yaml +12 -0
- package/bmad/bmm/testarch/knowledge/adr-quality-readiness-checklist.md +350 -0
- package/bmad/bmm/testarch/knowledge/api-request.md +442 -0
- package/bmad/bmm/testarch/knowledge/api-testing-patterns.md +843 -0
- package/bmad/bmm/testarch/knowledge/auth-session.md +552 -0
- package/bmad/bmm/testarch/knowledge/burn-in.md +273 -0
- package/bmad/bmm/testarch/knowledge/ci-burn-in.md +675 -0
- package/bmad/bmm/testarch/knowledge/component-tdd.md +486 -0
- package/bmad/bmm/testarch/knowledge/contract-testing.md +957 -0
- package/bmad/bmm/testarch/knowledge/data-factories.md +500 -0
- package/bmad/bmm/testarch/knowledge/email-auth.md +721 -0
- package/bmad/bmm/testarch/knowledge/error-handling.md +725 -0
- package/bmad/bmm/testarch/knowledge/feature-flags.md +750 -0
- package/bmad/bmm/testarch/knowledge/file-utils.md +463 -0
- package/bmad/bmm/testarch/knowledge/fixture-architecture.md +401 -0
- package/bmad/bmm/testarch/knowledge/fixtures-composition.md +382 -0
- package/bmad/bmm/testarch/knowledge/intercept-network-call.md +430 -0
- package/bmad/bmm/testarch/knowledge/log.md +429 -0
- package/bmad/bmm/testarch/knowledge/network-error-monitor.md +405 -0
- package/bmad/bmm/testarch/knowledge/network-first.md +486 -0
- package/bmad/bmm/testarch/knowledge/network-recorder.md +527 -0
- package/bmad/bmm/testarch/knowledge/nfr-criteria.md +670 -0
- package/bmad/bmm/testarch/knowledge/overview.md +286 -0
- package/bmad/bmm/testarch/knowledge/playwright-config.md +730 -0
- package/bmad/bmm/testarch/knowledge/probability-impact.md +601 -0
- package/bmad/bmm/testarch/knowledge/recurse.md +421 -0
- package/bmad/bmm/testarch/knowledge/risk-governance.md +615 -0
- package/bmad/bmm/testarch/knowledge/selective-testing.md +732 -0
- package/bmad/bmm/testarch/knowledge/selector-resilience.md +527 -0
- package/bmad/bmm/testarch/knowledge/test-healing-patterns.md +644 -0
- package/bmad/bmm/testarch/knowledge/test-levels-framework.md +473 -0
- package/bmad/bmm/testarch/knowledge/test-priorities-matrix.md +373 -0
- package/bmad/bmm/testarch/knowledge/test-quality.md +664 -0
- package/bmad/bmm/testarch/knowledge/timing-debugging.md +372 -0
- package/bmad/bmm/testarch/knowledge/visual-debugging.md +524 -0
- package/bmad/bmm/testarch/tea-index.csv +35 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/product-brief.template.md +10 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01-init.md +177 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-01b-continue.md +161 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-02-vision.md +199 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-03-users.md +202 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-04-metrics.md +205 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-05-scope.md +219 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/steps/step-06-complete.md +162 -0
- package/bmad/bmm/workflows/1-analysis/create-product-brief/workflow.md +58 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-01-init.md +137 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-02-domain-analysis.md +229 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-05-technical-trends.md +234 -0
- package/bmad/bmm/workflows/1-analysis/research/domain-steps/step-06-research-synthesis.md +443 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-insights.md +200 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +475 -0
- package/bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-01-init.md +137 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-02-technical-overview.md +239 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-03-integration-patterns.md +248 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-05-implementation-research.md +239 -0
- package/bmad/bmm/workflows/1-analysis/research/technical-steps/step-06-research-synthesis.md +486 -0
- package/bmad/bmm/workflows/1-analysis/research/workflow.md +173 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01-init.md +135 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-01b-continue.md +127 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-02-discovery.md +190 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-03-core-experience.md +216 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-04-emotional-response.md +219 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-05-inspiration.md +234 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-06-design-system.md +252 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-07-defining-experience.md +254 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-08-visual-foundation.md +224 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-09-design-directions.md +224 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-10-user-journeys.md +241 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-11-component-strategy.md +248 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-12-ux-patterns.md +237 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-13-responsive-accessibility.md +264 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/steps/step-14-complete.md +171 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/ux-design-template.md +13 -0
- package/bmad/bmm/workflows/2-plan-workflows/create-ux-design/workflow.md +43 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/data/domain-complexity.csv +13 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/data/prd-purpose.md +197 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/data/project-types.csv +11 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-01-init.md +191 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-01b-continue.md +153 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-02-discovery.md +224 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-03-success.md +226 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-04-journeys.md +213 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-05-domain.md +207 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-06-innovation.md +226 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-07-project-type.md +237 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-08-scoping.md +228 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-09-functional.md +231 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-10-nonfunctional.md +242 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-11-polish.md +217 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-c/step-12-complete.md +124 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01-discovery.md +247 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-01b-legacy-conversion.md +208 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-02-review.md +249 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-03-edit.md +253 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-e/step-e-04-complete.md +168 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-01-discovery.md +218 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02-format-detection.md +191 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-03-density-validation.md +174 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/steps-v/step-v-13-report-complete.md +231 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/templates/prd-template.md +10 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/validation-report-prd-workflow.md +433 -0
- package/bmad/bmm/workflows/2-plan-workflows/prd/workflow.md +150 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-01-document-discovery.md +190 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-02-prd-analysis.md +178 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-03-epic-coverage-validation.md +179 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-04-ux-alignment.md +139 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-05-epic-quality-review.md +252 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/steps/step-06-final-assessment.md +135 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md +55 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/architecture-decision-template.md +12 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/domain-complexity.csv +11 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/data/project-types.csv +7 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01-init.md +153 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-01b-continue.md +164 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-02-context.md +224 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-03-starter.md +331 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-04-decisions.md +318 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-05-patterns.md +359 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-06-structure.md +379 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-07-validation.md +359 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/steps/step-08-complete.md +76 -0
- package/bmad/bmm/workflows/3-solutioning/create-architecture/workflow.md +50 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-01-validate-prerequisites.md +259 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-02-design-epics.md +233 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-03-create-stories.md +272 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/steps/step-04-final-validation.md +149 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/templates/epics-template.md +57 -0
- package/bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md +59 -0
- package/bmad/bmm/workflows/4-implementation/code-review/checklist.md +23 -0
- package/bmad/bmm/workflows/4-implementation/code-review/instructions.xml +227 -0
- package/bmad/bmm/workflows/4-implementation/code-review/workflow.yaml +51 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/checklist.md +288 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/instructions.md +206 -0
- package/bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml +60 -0
- package/bmad/bmm/workflows/4-implementation/create-story/checklist.md +358 -0
- package/bmad/bmm/workflows/4-implementation/create-story/instructions.xml +345 -0
- package/bmad/bmm/workflows/4-implementation/create-story/template.md +49 -0
- package/bmad/bmm/workflows/4-implementation/create-story/workflow.yaml +61 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/checklist.md +80 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/instructions.xml +410 -0
- package/bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml +27 -0
- package/bmad/bmm/workflows/4-implementation/retrospective/instructions.md +1443 -0
- package/bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml +58 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/checklist.md +33 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/instructions.md +225 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/sprint-status-template.yaml +55 -0
- package/bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml +54 -0
- package/bmad/bmm/workflows/4-implementation/sprint-status/instructions.md +229 -0
- package/bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml +36 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/data/project-levels.yaml +59 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-01-mode-detection.md +156 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-02-context-gathering.md +120 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-03-execute.md +113 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-04-self-check.md +113 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-05-adversarial-review.md +106 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/steps/step-06-resolve-findings.md +140 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md +50 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-01-understand.md +189 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-02-investigate.md +144 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-03-generate.md +128 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/steps/step-04-review.md +191 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/tech-spec-template.md +74 -0
- package/bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md +79 -0
- package/bmad/bmm/workflows/document-project/checklist.md +245 -0
- package/bmad/bmm/workflows/document-project/documentation-requirements.csv +12 -0
- package/bmad/bmm/workflows/document-project/instructions.md +221 -0
- package/bmad/bmm/workflows/document-project/templates/deep-dive-template.md +345 -0
- package/bmad/bmm/workflows/document-project/templates/index-template.md +169 -0
- package/bmad/bmm/workflows/document-project/templates/project-overview-template.md +103 -0
- package/bmad/bmm/workflows/document-project/templates/project-scan-report-schema.json +160 -0
- package/bmad/bmm/workflows/document-project/templates/source-tree-template.md +135 -0
- package/bmad/bmm/workflows/document-project/workflow.yaml +30 -0
- package/bmad/bmm/workflows/document-project/workflows/deep-dive-instructions.md +298 -0
- package/bmad/bmm/workflows/document-project/workflows/deep-dive.yaml +31 -0
- package/bmad/bmm/workflows/document-project/workflows/full-scan-instructions.md +1106 -0
- package/bmad/bmm/workflows/document-project/workflows/full-scan.yaml +31 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-library.json +90 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/_shared/excalidraw-templates.yaml +127 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/checklist.md +39 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/instructions.md +130 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-dataflow/workflow.yaml +27 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/checklist.md +43 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/instructions.md +141 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-diagram/workflow.yaml +27 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/checklist.md +49 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/instructions.md +241 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-flowchart/workflow.yaml +27 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/checklist.md +38 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/instructions.md +133 -0
- package/bmad/bmm/workflows/excalidraw-diagrams/create-wireframe/workflow.yaml +27 -0
- package/bmad/bmm/workflows/testarch/atdd/atdd-checklist-template.md +363 -0
- package/bmad/bmm/workflows/testarch/atdd/checklist.md +374 -0
- package/bmad/bmm/workflows/testarch/atdd/instructions.md +806 -0
- package/bmad/bmm/workflows/testarch/atdd/workflow.yaml +47 -0
- package/bmad/bmm/workflows/testarch/automate/checklist.md +582 -0
- package/bmad/bmm/workflows/testarch/automate/instructions.md +1324 -0
- package/bmad/bmm/workflows/testarch/automate/workflow.yaml +54 -0
- package/bmad/bmm/workflows/testarch/ci/checklist.md +247 -0
- package/bmad/bmm/workflows/testarch/ci/github-actions-template.yaml +198 -0
- package/bmad/bmm/workflows/testarch/ci/gitlab-ci-template.yaml +149 -0
- package/bmad/bmm/workflows/testarch/ci/instructions.md +536 -0
- package/bmad/bmm/workflows/testarch/ci/workflow.yaml +47 -0
- package/bmad/bmm/workflows/testarch/framework/checklist.md +320 -0
- package/bmad/bmm/workflows/testarch/framework/instructions.md +481 -0
- package/bmad/bmm/workflows/testarch/framework/workflow.yaml +49 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/checklist.md +407 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/instructions.md +726 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/nfr-report-template.md +461 -0
- package/bmad/bmm/workflows/testarch/nfr-assess/workflow.yaml +49 -0
- package/bmad/bmm/workflows/testarch/test-design/checklist.md +407 -0
- package/bmad/bmm/workflows/testarch/test-design/instructions.md +1158 -0
- package/bmad/bmm/workflows/testarch/test-design/test-design-architecture-template.md +213 -0
- package/bmad/bmm/workflows/testarch/test-design/test-design-qa-template.md +286 -0
- package/bmad/bmm/workflows/testarch/test-design/test-design-template.md +294 -0
- package/bmad/bmm/workflows/testarch/test-design/workflow.yaml +71 -0
- package/bmad/bmm/workflows/testarch/test-review/checklist.md +472 -0
- package/bmad/bmm/workflows/testarch/test-review/instructions.md +628 -0
- package/bmad/bmm/workflows/testarch/test-review/test-review-template.md +390 -0
- package/bmad/bmm/workflows/testarch/test-review/workflow.yaml +48 -0
- package/bmad/bmm/workflows/testarch/trace/checklist.md +642 -0
- package/bmad/bmm/workflows/testarch/trace/instructions.md +1030 -0
- package/bmad/bmm/workflows/testarch/trace/trace-template.md +675 -0
- package/bmad/bmm/workflows/testarch/trace/workflow.yaml +57 -0
- package/bmad/core/agents/bmad-master.agent.yaml +30 -0
- package/bmad/core/module-help.csv +11 -0
- package/bmad/core/module.yaml +25 -0
- package/bmad/core/resources/excalidraw/README.md +160 -0
- package/bmad/core/resources/excalidraw/excalidraw-helpers.md +127 -0
- package/bmad/core/resources/excalidraw/library-loader.md +50 -0
- package/bmad/core/resources/excalidraw/validate-json-instructions.md +79 -0
- package/bmad/core/tasks/bmad-help.md +62 -0
- package/bmad/core/tasks/editorial-review-prose.xml +91 -0
- package/bmad/core/tasks/editorial-review-structure.xml +198 -0
- package/bmad/core/tasks/index-docs.xml +65 -0
- package/bmad/core/tasks/review-adversarial-general.xml +48 -0
- package/bmad/core/tasks/shard-doc.xml +109 -0
- package/bmad/core/tasks/workflow.xml +235 -0
- package/bmad/core/workflows/advanced-elicitation/methods.csv +51 -0
- package/bmad/core/workflows/advanced-elicitation/workflow.xml +117 -0
- package/bmad/core/workflows/brainstorming/brain-methods.csv +62 -0
- package/bmad/core/workflows/brainstorming/steps/step-01-session-setup.md +197 -0
- package/bmad/core/workflows/brainstorming/steps/step-01b-continue.md +122 -0
- package/bmad/core/workflows/brainstorming/steps/step-02a-user-selected.md +225 -0
- package/bmad/core/workflows/brainstorming/steps/step-02b-ai-recommended.md +237 -0
- package/bmad/core/workflows/brainstorming/steps/step-02c-random-selection.md +209 -0
- package/bmad/core/workflows/brainstorming/steps/step-02d-progressive-flow.md +264 -0
- package/bmad/core/workflows/brainstorming/steps/step-03-technique-execution.md +399 -0
- package/bmad/core/workflows/brainstorming/steps/step-04-idea-organization.md +303 -0
- package/bmad/core/workflows/brainstorming/template.md +15 -0
- package/bmad/core/workflows/brainstorming/workflow.md +58 -0
- package/bmad/core/workflows/party-mode/steps/step-01-agent-loading.md +138 -0
- package/bmad/core/workflows/party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/bmad/core/workflows/party-mode/steps/step-03-graceful-exit.md +157 -0
- package/bmad/core/workflows/party-mode/workflow.md +194 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +26 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +168 -0
- package/dist/commands/guide.d.ts +1 -0
- package/dist/commands/guide.js +19 -0
- package/dist/commands/implement.d.ts +1 -0
- package/dist/commands/implement.js +83 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.js +67 -0
- package/dist/commands/plan.d.ts +5 -0
- package/dist/commands/plan.js +44 -0
- package/dist/commands/reset.d.ts +5 -0
- package/dist/commands/reset.js +35 -0
- package/dist/commands/resume.d.ts +1 -0
- package/dist/commands/resume.js +44 -0
- package/dist/commands/start.d.ts +5 -0
- package/dist/commands/start.js +54 -0
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +53 -0
- package/dist/commands/upgrade.d.ts +1 -0
- package/dist/commands/upgrade.js +34 -0
- package/dist/installer.d.ts +11 -0
- package/dist/installer.js +219 -0
- package/dist/transition.d.ts +52 -0
- package/dist/transition.js +656 -0
- package/dist/utils/config.d.ts +7 -0
- package/dist/utils/config.js +14 -0
- package/dist/utils/json.d.ts +7 -0
- package/dist/utils/json.js +26 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.js +13 -0
- package/dist/utils/state.d.ts +29 -0
- package/dist/utils/state.js +78 -0
- package/dist/utils/validate.d.ts +4 -0
- package/dist/utils/validate.js +42 -0
- package/package.json +59 -0
- package/ralph/lib/circuit_breaker.sh +330 -0
- package/ralph/lib/date_utils.sh +53 -0
- package/ralph/lib/response_analyzer.sh +768 -0
- package/ralph/lib/timeout_utils.sh +145 -0
- package/ralph/ralph_loop.sh +1391 -0
- package/ralph/templates/AGENT.md +158 -0
- package/ralph/templates/PROMPT.md +292 -0
- package/ralph/templates/fix_plan.md +27 -0
- package/ralph/templates/specs/.gitkeep +2 -0
- package/slash-commands/advanced-elicitation.md +1 -0
- package/slash-commands/adversarial-review.md +1 -0
- package/slash-commands/analyst.md +1 -0
- package/slash-commands/architect.md +1 -0
- package/slash-commands/atdd.md +1 -0
- package/slash-commands/bmad-help.md +1 -0
- package/slash-commands/bmalph-implement.md +152 -0
- package/slash-commands/bmalph.md +1 -0
- package/slash-commands/brainstorm-project.md +1 -0
- package/slash-commands/brainstorming.md +1 -0
- package/slash-commands/continuous-integration.md +1 -0
- package/slash-commands/correct-course.md +1 -0
- package/slash-commands/create-architecture.md +1 -0
- package/slash-commands/create-brief.md +1 -0
- package/slash-commands/create-dataflow.md +1 -0
- package/slash-commands/create-diagram.md +1 -0
- package/slash-commands/create-epics-stories.md +1 -0
- package/slash-commands/create-flowchart.md +1 -0
- package/slash-commands/create-prd.md +1 -0
- package/slash-commands/create-story.md +1 -0
- package/slash-commands/create-ux.md +1 -0
- package/slash-commands/create-wireframe.md +1 -0
- package/slash-commands/dev.md +1 -0
- package/slash-commands/document-project.md +1 -0
- package/slash-commands/domain-research.md +1 -0
- package/slash-commands/editorial-prose.md +1 -0
- package/slash-commands/editorial-structure.md +1 -0
- package/slash-commands/execute-workflow.md +1 -0
- package/slash-commands/implementation-readiness.md +1 -0
- package/slash-commands/index-docs.md +1 -0
- package/slash-commands/market-research.md +1 -0
- package/slash-commands/nfr-assess.md +1 -0
- package/slash-commands/party-mode.md +1 -0
- package/slash-commands/pm.md +1 -0
- package/slash-commands/quick-dev.md +1 -0
- package/slash-commands/quick-flow-solo-dev.md +1 -0
- package/slash-commands/retrospective.md +1 -0
- package/slash-commands/shard-doc.md +1 -0
- package/slash-commands/sm.md +1 -0
- package/slash-commands/sprint-planning.md +1 -0
- package/slash-commands/sprint-status.md +1 -0
- package/slash-commands/tea.md +1 -0
- package/slash-commands/tech-spec.md +1 -0
- package/slash-commands/technical-research.md +1 -0
- package/slash-commands/test-automate.md +1 -0
- package/slash-commands/test-design.md +1 -0
- package/slash-commands/test-framework.md +1 -0
- package/slash-commands/test-review.md +1 -0
- package/slash-commands/test-trace.md +1 -0
- package/slash-commands/ux-designer.md +1 -0
- package/slash-commands/validate-architecture.md +1 -0
- package/slash-commands/validate-brief.md +1 -0
- package/slash-commands/validate-epics-stories.md +1 -0
- package/slash-commands/validate-prd.md +1 -0
- package/slash-commands/validate-story.md +1 -0
- package/slash-commands/validate-test-design.md +1 -0
- package/slash-commands/validate-ux.md +1 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Step 3: Graceful Exit and Party Mode Conclusion
|
|
2
|
+
|
|
3
|
+
## MANDATORY EXECUTION RULES (READ FIRST):
|
|
4
|
+
|
|
5
|
+
- ✅ YOU ARE A PARTY MODE COORDINATOR concluding an engaging session
|
|
6
|
+
- 🎯 PROVIDE SATISFYING AGENT FAREWELLS in authentic character voices
|
|
7
|
+
- 📋 EXPRESS GRATITUDE to user for collaborative participation
|
|
8
|
+
- 🔍 ACKNOWLEDGE SESSION HIGHLIGHTS and key insights gained
|
|
9
|
+
- 💬 MAINTAIN POSITIVE ATMOSPHERE until the very end
|
|
10
|
+
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
11
|
+
|
|
12
|
+
## EXECUTION PROTOCOLS:
|
|
13
|
+
|
|
14
|
+
- 🎯 Generate characteristic agent goodbyes that reflect their personalities
|
|
15
|
+
- ⚠️ Complete workflow exit after farewell sequence
|
|
16
|
+
- 💾 Update frontmatter with final workflow completion
|
|
17
|
+
- 📖 Clean up any active party mode state or temporary data
|
|
18
|
+
- 🚫 FORBIDDEN abrupt exits without proper agent farewells
|
|
19
|
+
|
|
20
|
+
## CONTEXT BOUNDARIES:
|
|
21
|
+
|
|
22
|
+
- Party mode session is concluding naturally or via user request
|
|
23
|
+
- Complete agent roster and conversation history are available
|
|
24
|
+
- User has participated in collaborative multi-agent discussion
|
|
25
|
+
- Final workflow completion and state cleanup required
|
|
26
|
+
|
|
27
|
+
## YOUR TASK:
|
|
28
|
+
|
|
29
|
+
Provide satisfying agent farewells and conclude the party mode session with gratitude and positive closure.
|
|
30
|
+
|
|
31
|
+
## GRACEFUL EXIT SEQUENCE:
|
|
32
|
+
|
|
33
|
+
### 1. Acknowledge Session Conclusion
|
|
34
|
+
|
|
35
|
+
Begin exit process with warm acknowledgment:
|
|
36
|
+
|
|
37
|
+
"What an incredible collaborative session! Thank you {{user_name}} for engaging with our BMAD agent team in this dynamic discussion. Your questions and insights brought out the best in our agents and led to some truly valuable perspectives.
|
|
38
|
+
|
|
39
|
+
**Before we wrap up, let a few of our agents say goodbye...**"
|
|
40
|
+
|
|
41
|
+
### 2. Generate Agent Farewells
|
|
42
|
+
|
|
43
|
+
Select 2-3 agents who were most engaged or representative of the discussion:
|
|
44
|
+
|
|
45
|
+
**Farewell Selection Criteria:**
|
|
46
|
+
|
|
47
|
+
- Agents who made significant contributions to the discussion
|
|
48
|
+
- Agents with distinct personalities that provide memorable goodbyes
|
|
49
|
+
- Mix of expertise domains to showcase collaborative diversity
|
|
50
|
+
- Agents who can reference session highlights meaningfully
|
|
51
|
+
|
|
52
|
+
**Agent Farewell Format:**
|
|
53
|
+
|
|
54
|
+
For each selected agent:
|
|
55
|
+
|
|
56
|
+
"[Icon Emoji] **[Agent Name]**: [Characteristic farewell reflecting their personality, communication style, and role. May reference session highlights, express gratitude, or offer final insights related to their expertise domain.]
|
|
57
|
+
|
|
58
|
+
[Bash: .claude/hooks/bmad-speak.sh \"[Agent Name]\" \"[Their farewell message]\"]"
|
|
59
|
+
|
|
60
|
+
**Example Farewells:**
|
|
61
|
+
|
|
62
|
+
- **Architect/Winston**: "It's been a pleasure architecting solutions with you today! Remember to build on solid foundations and always consider scalability. Until next time! 🏗️"
|
|
63
|
+
- **Innovator/Creative Agent**: "What an inspiring creative journey! Don't let those innovative ideas fade - nurture them and watch them grow. Keep thinking outside the box! 🎨"
|
|
64
|
+
- **Strategist/Business Agent**: "Excellent strategic collaboration today! The insights we've developed will serve you well. Keep analyzing, keep optimizing, and keep winning! 📈"
|
|
65
|
+
|
|
66
|
+
### 3. Session Highlight Summary
|
|
67
|
+
|
|
68
|
+
Briefly acknowledge key discussion outcomes:
|
|
69
|
+
|
|
70
|
+
**Session Recognition:**
|
|
71
|
+
"**Session Highlights:** Today we explored [main topic] through [number] different perspectives, generating valuable insights on [key outcomes]. The collaboration between our [relevant expertise domains] agents created a comprehensive understanding that wouldn't have been possible with any single viewpoint."
|
|
72
|
+
|
|
73
|
+
### 4. Final Party Mode Conclusion
|
|
74
|
+
|
|
75
|
+
End with enthusiastic and appreciative closure:
|
|
76
|
+
|
|
77
|
+
"🎊 **Party Mode Session Complete!** 🎊
|
|
78
|
+
|
|
79
|
+
Thank you for bringing our BMAD agents together in this unique collaborative experience. The diverse perspectives, expert insights, and dynamic interactions we've shared demonstrate the power of multi-agent thinking.
|
|
80
|
+
|
|
81
|
+
**Our agents learned from each other and from you** - that's what makes these collaborative sessions so valuable!
|
|
82
|
+
|
|
83
|
+
**Ready for your next challenge**? Whether you need more focused discussions with specific agents or want to bring the whole team together again, we're always here to help you tackle complex problems through collaborative intelligence.
|
|
84
|
+
|
|
85
|
+
**Until next time - keep collaborating, keep innovating, and keep enjoying the power of multi-agent teamwork!** 🚀"
|
|
86
|
+
|
|
87
|
+
### 5. Complete Workflow Exit
|
|
88
|
+
|
|
89
|
+
Final workflow completion steps:
|
|
90
|
+
|
|
91
|
+
**Frontmatter Update:**
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
---
|
|
95
|
+
stepsCompleted: [1, 2, 3]
|
|
96
|
+
workflowType: 'party-mode'
|
|
97
|
+
user_name: '{{user_name}}'
|
|
98
|
+
date: '{{date}}'
|
|
99
|
+
agents_loaded: true
|
|
100
|
+
party_active: false
|
|
101
|
+
workflow_completed: true
|
|
102
|
+
---
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**State Cleanup:**
|
|
106
|
+
|
|
107
|
+
- Clear any active conversation state
|
|
108
|
+
- Reset agent selection cache
|
|
109
|
+
- Mark party mode workflow as completed
|
|
110
|
+
|
|
111
|
+
### 6. Exit Workflow
|
|
112
|
+
|
|
113
|
+
Execute final workflow termination:
|
|
114
|
+
|
|
115
|
+
"[PARTY MODE WORKFLOW COMPLETE]
|
|
116
|
+
|
|
117
|
+
Thank you for using BMAD Party Mode for collaborative multi-agent discussions!"
|
|
118
|
+
|
|
119
|
+
## SUCCESS METRICS:
|
|
120
|
+
|
|
121
|
+
✅ Satisfying agent farewells generated in authentic character voices
|
|
122
|
+
✅ Session highlights and contributions acknowledged meaningfully
|
|
123
|
+
✅ Positive and appreciative closure atmosphere maintained
|
|
124
|
+
✅ Frontmatter properly updated with workflow completion
|
|
125
|
+
✅ All workflow state cleaned up appropriately
|
|
126
|
+
✅ User left with positive impression of collaborative experience
|
|
127
|
+
|
|
128
|
+
## FAILURE MODES:
|
|
129
|
+
|
|
130
|
+
❌ Generic or impersonal agent farewells without character consistency
|
|
131
|
+
❌ Missing acknowledgment of session contributions or insights
|
|
132
|
+
❌ Abrupt exit without proper closure or appreciation
|
|
133
|
+
❌ Not updating workflow completion status in frontmatter
|
|
134
|
+
❌ Leaving party mode state active after conclusion
|
|
135
|
+
❌ Negative or dismissive tone during exit process
|
|
136
|
+
|
|
137
|
+
## EXIT PROTOCOLS:
|
|
138
|
+
|
|
139
|
+
- Ensure all agents have opportunity to say goodbye appropriately
|
|
140
|
+
- Maintain the positive, collaborative atmosphere established during session
|
|
141
|
+
- Reference specific discussion highlights when possible for personalization
|
|
142
|
+
- Express genuine appreciation for user's participation and engagement
|
|
143
|
+
- Leave user with encouragement for future collaborative sessions
|
|
144
|
+
|
|
145
|
+
## WORKFLOW COMPLETION:
|
|
146
|
+
|
|
147
|
+
After farewell sequence and final closure:
|
|
148
|
+
|
|
149
|
+
- All party mode workflow steps completed successfully
|
|
150
|
+
- Agent roster and conversation state properly finalized
|
|
151
|
+
- User expressed gratitude and positive session conclusion
|
|
152
|
+
- Multi-agent collaboration demonstrated value and effectiveness
|
|
153
|
+
- Workflow ready for next party mode session activation
|
|
154
|
+
|
|
155
|
+
Congratulations on facilitating a successful multi-agent collaborative discussion through BMAD Party Mode! 🎉
|
|
156
|
+
|
|
157
|
+
The user has experienced the power of bringing diverse expert perspectives together to tackle complex topics through intelligent conversation orchestration and authentic agent interactions.
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: party-mode
|
|
3
|
+
description: Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Party Mode Workflow
|
|
7
|
+
|
|
8
|
+
**Goal:** Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations
|
|
9
|
+
|
|
10
|
+
**Your Role:** You are a party mode facilitator and multi-agent conversation orchestrator. You bring together diverse BMAD agents for collaborative discussions, managing the flow of conversation while maintaining each agent's unique personality and expertise - while still utilizing the configured {communication_language}.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## WORKFLOW ARCHITECTURE
|
|
15
|
+
|
|
16
|
+
This uses **micro-file architecture** with **sequential conversation orchestration**:
|
|
17
|
+
|
|
18
|
+
- Step 01 loads agent manifest and initializes party mode
|
|
19
|
+
- Step 02 orchestrates the ongoing multi-agent discussion
|
|
20
|
+
- Step 03 handles graceful party mode exit
|
|
21
|
+
- Conversation state tracked in frontmatter
|
|
22
|
+
- Agent personalities maintained through merged manifest data
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## INITIALIZATION
|
|
27
|
+
|
|
28
|
+
### Configuration Loading
|
|
29
|
+
|
|
30
|
+
Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
|
|
31
|
+
|
|
32
|
+
- `project_name`, `output_folder`, `user_name`
|
|
33
|
+
- `communication_language`, `document_output_language`, `user_skill_level`
|
|
34
|
+
- `date` as a system-generated value
|
|
35
|
+
- Agent manifest path: `{project-root}/_bmad/_config/agent-manifest.csv`
|
|
36
|
+
|
|
37
|
+
### Paths
|
|
38
|
+
|
|
39
|
+
- `installed_path` = `{project-root}/_bmad/core/workflows/party-mode`
|
|
40
|
+
- `agent_manifest_path` = `{project-root}/_bmad/_config/agent-manifest.csv`
|
|
41
|
+
- `standalone_mode` = `true` (party mode is an interactive workflow)
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## AGENT MANIFEST PROCESSING
|
|
46
|
+
|
|
47
|
+
### Agent Data Extraction
|
|
48
|
+
|
|
49
|
+
Parse CSV manifest to extract agent entries with complete information:
|
|
50
|
+
|
|
51
|
+
- **name** (agent identifier)
|
|
52
|
+
- **displayName** (agent's persona name)
|
|
53
|
+
- **title** (formal position)
|
|
54
|
+
- **icon** (visual identifier emoji)
|
|
55
|
+
- **role** (capabilities summary)
|
|
56
|
+
- **identity** (background/expertise)
|
|
57
|
+
- **communicationStyle** (how they communicate)
|
|
58
|
+
- **principles** (decision-making philosophy)
|
|
59
|
+
- **module** (source module)
|
|
60
|
+
- **path** (file location)
|
|
61
|
+
|
|
62
|
+
### Agent Roster Building
|
|
63
|
+
|
|
64
|
+
Build complete agent roster with merged personalities for conversation orchestration.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## EXECUTION
|
|
69
|
+
|
|
70
|
+
Execute party mode activation and conversation orchestration:
|
|
71
|
+
|
|
72
|
+
### Party Mode Activation
|
|
73
|
+
|
|
74
|
+
**Your Role:** You are a party mode facilitator creating an engaging multi-agent conversation environment.
|
|
75
|
+
|
|
76
|
+
**Welcome Activation:**
|
|
77
|
+
|
|
78
|
+
"🎉 PARTY MODE ACTIVATED! 🎉
|
|
79
|
+
|
|
80
|
+
Welcome {{user_name}}! All BMAD agents are here and ready for a dynamic group discussion. I've brought together our complete team of experts, each bringing their unique perspectives and capabilities.
|
|
81
|
+
|
|
82
|
+
**Let me introduce our collaborating agents:**
|
|
83
|
+
|
|
84
|
+
[Load agent roster and display 2-3 most diverse agents as examples]
|
|
85
|
+
|
|
86
|
+
**What would you like to discuss with the team today?**"
|
|
87
|
+
|
|
88
|
+
### Agent Selection Intelligence
|
|
89
|
+
|
|
90
|
+
For each user message or topic:
|
|
91
|
+
|
|
92
|
+
**Relevance Analysis:**
|
|
93
|
+
|
|
94
|
+
- Analyze the user's message/question for domain and expertise requirements
|
|
95
|
+
- Identify which agents would naturally contribute based on their role, capabilities, and principles
|
|
96
|
+
- Consider conversation context and previous agent contributions
|
|
97
|
+
- Select 2-3 most relevant agents for balanced perspective
|
|
98
|
+
|
|
99
|
+
**Priority Handling:**
|
|
100
|
+
|
|
101
|
+
- If user addresses specific agent by name, prioritize that agent + 1-2 complementary agents
|
|
102
|
+
- Rotate agent selection to ensure diverse participation over time
|
|
103
|
+
- Enable natural cross-talk and agent-to-agent interactions
|
|
104
|
+
|
|
105
|
+
### Conversation Orchestration
|
|
106
|
+
|
|
107
|
+
Load step: `./steps/step-02-discussion-orchestration.md`
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## WORKFLOW STATES
|
|
112
|
+
|
|
113
|
+
### Frontmatter Tracking
|
|
114
|
+
|
|
115
|
+
```yaml
|
|
116
|
+
---
|
|
117
|
+
stepsCompleted: [1]
|
|
118
|
+
workflowType: 'party-mode'
|
|
119
|
+
user_name: '{{user_name}}'
|
|
120
|
+
date: '{{date}}'
|
|
121
|
+
agents_loaded: true
|
|
122
|
+
party_active: true
|
|
123
|
+
exit_triggers: ['*exit', 'goodbye', 'end party', 'quit']
|
|
124
|
+
---
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## ROLE-PLAYING GUIDELINES
|
|
130
|
+
|
|
131
|
+
### Character Consistency
|
|
132
|
+
|
|
133
|
+
- Maintain strict in-character responses based on merged personality data
|
|
134
|
+
- Use each agent's documented communication style consistently
|
|
135
|
+
- Reference agent memories and context when relevant
|
|
136
|
+
- Allow natural disagreements and different perspectives
|
|
137
|
+
- Include personality-driven quirks and occasional humor
|
|
138
|
+
|
|
139
|
+
### Conversation Flow
|
|
140
|
+
|
|
141
|
+
- Enable agents to reference each other naturally by name or role
|
|
142
|
+
- Maintain professional discourse while being engaging
|
|
143
|
+
- Respect each agent's expertise boundaries
|
|
144
|
+
- Allow cross-talk and building on previous points
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## QUESTION HANDLING PROTOCOL
|
|
149
|
+
|
|
150
|
+
### Direct Questions to User
|
|
151
|
+
|
|
152
|
+
When an agent asks the user a specific question:
|
|
153
|
+
|
|
154
|
+
- End that response round immediately after the question
|
|
155
|
+
- Clearly highlight the questioning agent and their question
|
|
156
|
+
- Wait for user response before any agent continues
|
|
157
|
+
|
|
158
|
+
### Inter-Agent Questions
|
|
159
|
+
|
|
160
|
+
Agents can question each other and respond naturally within the same round for dynamic conversation.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## EXIT CONDITIONS
|
|
165
|
+
|
|
166
|
+
### Automatic Triggers
|
|
167
|
+
|
|
168
|
+
Exit party mode when user message contains any exit triggers:
|
|
169
|
+
|
|
170
|
+
- `*exit`, `goodbye`, `end party`, `quit`
|
|
171
|
+
|
|
172
|
+
### Graceful Conclusion
|
|
173
|
+
|
|
174
|
+
If conversation naturally concludes:
|
|
175
|
+
|
|
176
|
+
- Ask user if they'd like to continue or end party mode
|
|
177
|
+
- Exit gracefully when user indicates completion
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## MODERATION NOTES
|
|
182
|
+
|
|
183
|
+
**Quality Control:**
|
|
184
|
+
|
|
185
|
+
- If discussion becomes circular, have bmad-master summarize and redirect
|
|
186
|
+
- Balance fun and productivity based on conversation tone
|
|
187
|
+
- Ensure all agents stay true to their merged personalities
|
|
188
|
+
- Exit gracefully when user indicates completion
|
|
189
|
+
|
|
190
|
+
**Conversation Management:**
|
|
191
|
+
|
|
192
|
+
- Rotate agent participation to ensure inclusive discussion
|
|
193
|
+
- Handle topic drift while maintaining productive conversation
|
|
194
|
+
- Facilitate cross-agent collaboration and knowledge sharing
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { initCommand } from "./commands/init.js";
|
|
3
|
+
import { upgradeCommand } from "./commands/upgrade.js";
|
|
4
|
+
import { doctorCommand } from "./commands/doctor.js";
|
|
5
|
+
import { setVerbose } from "./utils/logger.js";
|
|
6
|
+
import { getPackageVersion } from "./installer.js";
|
|
7
|
+
const program = new Command();
|
|
8
|
+
program
|
|
9
|
+
.name("bmalph")
|
|
10
|
+
.description("BMAD-METHOD + Ralph integration — structured planning to autonomous implementation")
|
|
11
|
+
.version(getPackageVersion())
|
|
12
|
+
.option("--verbose", "Enable debug logging")
|
|
13
|
+
.hook("preAction", () => {
|
|
14
|
+
if (program.opts().verbose) {
|
|
15
|
+
setVerbose(true);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
program
|
|
19
|
+
.command("init")
|
|
20
|
+
.description("Initialize bmalph in the current project")
|
|
21
|
+
.option("-n, --name <name>", "Project name")
|
|
22
|
+
.option("-d, --description <desc>", "Project description")
|
|
23
|
+
.action(initCommand);
|
|
24
|
+
program.command("upgrade").description("Update bundled assets to current version").action(upgradeCommand);
|
|
25
|
+
program.command("doctor").description("Check installation health").action(doctorCommand);
|
|
26
|
+
program.parse();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function doctorCommand(): Promise<void>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { access, readFile, stat } from "fs/promises";
|
|
3
|
+
import { join } from "path";
|
|
4
|
+
import { readJsonFile } from "../utils/json.js";
|
|
5
|
+
export async function doctorCommand() {
|
|
6
|
+
try {
|
|
7
|
+
await runDoctor();
|
|
8
|
+
}
|
|
9
|
+
catch (err) {
|
|
10
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
11
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async function runDoctor() {
|
|
16
|
+
const projectDir = process.cwd();
|
|
17
|
+
const results = [];
|
|
18
|
+
// 1. Node version
|
|
19
|
+
const major = parseInt(process.versions.node.split(".")[0]);
|
|
20
|
+
results.push({
|
|
21
|
+
label: "Node version >= 20",
|
|
22
|
+
passed: major >= 20,
|
|
23
|
+
detail: major >= 20 ? `v${process.versions.node}` : `got v${process.versions.node}`,
|
|
24
|
+
});
|
|
25
|
+
// 2. bash available
|
|
26
|
+
const bashAvailable = await checkBashAvailable();
|
|
27
|
+
results.push({
|
|
28
|
+
label: "bash available",
|
|
29
|
+
passed: bashAvailable,
|
|
30
|
+
detail: bashAvailable ? undefined : "bash not found in PATH",
|
|
31
|
+
});
|
|
32
|
+
// 3. config.json exists and valid
|
|
33
|
+
const configResult = await checkConfig(projectDir);
|
|
34
|
+
results.push(configResult);
|
|
35
|
+
// 4. _bmad/ directory with expected structure
|
|
36
|
+
const bmadResult = await checkDir(join(projectDir, "_bmad"), "_bmad/ directory present");
|
|
37
|
+
results.push(bmadResult);
|
|
38
|
+
// 5. .ralph/ralph_loop.sh present and has content
|
|
39
|
+
const loopResult = await checkFileHasContent(join(projectDir, ".ralph/ralph_loop.sh"), "ralph_loop.sh present and has content");
|
|
40
|
+
results.push(loopResult);
|
|
41
|
+
// 6. .ralph/lib/ present
|
|
42
|
+
const libResult = await checkDir(join(projectDir, ".ralph/lib"), ".ralph/lib/ directory present");
|
|
43
|
+
results.push(libResult);
|
|
44
|
+
// 7. .claude/commands/bmalph.md present
|
|
45
|
+
const slashResult = await checkFileExists(join(projectDir, ".claude/commands/bmalph.md"), ".claude/commands/bmalph.md present");
|
|
46
|
+
results.push(slashResult);
|
|
47
|
+
// 8. CLAUDE.md contains BMAD snippet
|
|
48
|
+
const claudeMdResult = await checkClaudeMd(projectDir);
|
|
49
|
+
results.push(claudeMdResult);
|
|
50
|
+
// 9. .gitignore has required entries
|
|
51
|
+
const gitignoreResult = await checkGitignore(projectDir);
|
|
52
|
+
results.push(gitignoreResult);
|
|
53
|
+
// 10. Version marker check
|
|
54
|
+
const versionResult = await checkVersionMarker(projectDir);
|
|
55
|
+
results.push(versionResult);
|
|
56
|
+
// Output
|
|
57
|
+
console.log(chalk.bold("bmalph doctor\n"));
|
|
58
|
+
for (const r of results) {
|
|
59
|
+
const icon = r.passed ? chalk.green("\u2713") : chalk.red("\u2717");
|
|
60
|
+
const detail = r.detail ? chalk.dim(` (${r.detail})`) : "";
|
|
61
|
+
console.log(` ${icon} ${r.label}${detail}`);
|
|
62
|
+
}
|
|
63
|
+
const passed = results.filter((r) => r.passed).length;
|
|
64
|
+
const failed = results.filter((r) => !r.passed).length;
|
|
65
|
+
console.log("");
|
|
66
|
+
if (failed === 0) {
|
|
67
|
+
console.log(chalk.green(`${passed} passed, all checks OK`));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
console.log(`${chalk.green(`${passed} passed`)}, ${chalk.red(`${failed} failed`)}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async function checkBashAvailable() {
|
|
74
|
+
const { execSync } = await import("child_process");
|
|
75
|
+
try {
|
|
76
|
+
const cmd = process.platform === "win32" ? "where bash" : "which bash";
|
|
77
|
+
execSync(cmd, { stdio: "ignore" });
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async function checkConfig(projectDir) {
|
|
85
|
+
const path = join(projectDir, "bmalph/config.json");
|
|
86
|
+
try {
|
|
87
|
+
const data = await readJsonFile(path);
|
|
88
|
+
if (data === null) {
|
|
89
|
+
return { label: "bmalph/config.json exists and valid", passed: false, detail: "file not found" };
|
|
90
|
+
}
|
|
91
|
+
return { label: "bmalph/config.json exists and valid", passed: true };
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
const msg = err instanceof Error ? err.message : "invalid";
|
|
95
|
+
return { label: "bmalph/config.json exists and valid", passed: false, detail: msg };
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function checkDir(dirPath, label) {
|
|
99
|
+
try {
|
|
100
|
+
const s = await stat(dirPath);
|
|
101
|
+
return { label, passed: s.isDirectory() };
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
return { label, passed: false, detail: "not found" };
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
async function checkFileExists(filePath, label) {
|
|
108
|
+
try {
|
|
109
|
+
await access(filePath);
|
|
110
|
+
return { label, passed: true };
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
return { label, passed: false, detail: "not found" };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async function checkFileHasContent(filePath, label) {
|
|
117
|
+
try {
|
|
118
|
+
const content = await readFile(filePath, "utf-8");
|
|
119
|
+
return { label, passed: content.trim().length > 0 };
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return { label, passed: false, detail: "not found" };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function checkClaudeMd(projectDir) {
|
|
126
|
+
const label = "CLAUDE.md contains BMAD snippet";
|
|
127
|
+
try {
|
|
128
|
+
const content = await readFile(join(projectDir, "CLAUDE.md"), "utf-8");
|
|
129
|
+
return { label, passed: content.includes("BMAD-METHOD Integration") };
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return { label, passed: false, detail: "CLAUDE.md not found" };
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
async function checkGitignore(projectDir) {
|
|
136
|
+
const label = ".gitignore has required entries";
|
|
137
|
+
const required = [".ralph/logs/", "_bmad-output/"];
|
|
138
|
+
try {
|
|
139
|
+
const content = await readFile(join(projectDir, ".gitignore"), "utf-8");
|
|
140
|
+
const missing = required.filter((e) => !content.includes(e));
|
|
141
|
+
if (missing.length === 0) {
|
|
142
|
+
return { label, passed: true };
|
|
143
|
+
}
|
|
144
|
+
return { label, passed: false, detail: `missing: ${missing.join(", ")}` };
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return { label, passed: false, detail: ".gitignore not found" };
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async function checkVersionMarker(projectDir) {
|
|
151
|
+
const label = "version marker matches";
|
|
152
|
+
try {
|
|
153
|
+
const content = await readFile(join(projectDir, ".ralph/ralph_loop.sh"), "utf-8");
|
|
154
|
+
const match = content.match(/# bmalph-version: (.+)/);
|
|
155
|
+
if (!match) {
|
|
156
|
+
return { label, passed: true, detail: "no marker (pre-0.8.0 install)" };
|
|
157
|
+
}
|
|
158
|
+
const { getPackageVersion } = await import("../installer.js");
|
|
159
|
+
const current = getPackageVersion();
|
|
160
|
+
if (match[1].trim() === current) {
|
|
161
|
+
return { label, passed: true, detail: `v${current}` };
|
|
162
|
+
}
|
|
163
|
+
return { label, passed: false, detail: `installed: ${match[1].trim()}, current: ${current}` };
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
return { label, passed: true, detail: "no marker found" };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function guideCommand(): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
export function guideCommand() {
|
|
3
|
+
console.log(chalk.bold("\nBMALPH Workflow\n"));
|
|
4
|
+
console.log(chalk.blue(" BMAD — Structured Planning"));
|
|
5
|
+
console.log(chalk.dim(" ─────────────────────────────────────────"));
|
|
6
|
+
console.log(` Phase 1 Analysis Requirements, research, risks`);
|
|
7
|
+
console.log(` Phase 2 Planning PRD, stories, MVP scope`);
|
|
8
|
+
console.log(` Phase 3 Design Architecture, data model, API\n`);
|
|
9
|
+
console.log(chalk.blue(" Ralph — Autonomous Implementation"));
|
|
10
|
+
console.log(chalk.dim(" ─────────────────────────────────────────"));
|
|
11
|
+
console.log(` Phase 4 Implementation TDD build, code review, validation\n`);
|
|
12
|
+
console.log(chalk.dim(" Each phase runs iteratively with human checkpoints."));
|
|
13
|
+
console.log(chalk.dim(" The loop detects completion and advances automatically.\n"));
|
|
14
|
+
console.log("Commands:");
|
|
15
|
+
console.log(` ${chalk.cyan("bmalph start")} Begin from Phase 1`);
|
|
16
|
+
console.log(` ${chalk.cyan("bmalph status")} Check current progress`);
|
|
17
|
+
console.log(` ${chalk.cyan("bmalph resume")} Continue from last checkpoint`);
|
|
18
|
+
console.log(` ${chalk.cyan("/bmalph")} Interactive mode in Claude Code`);
|
|
19
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function implementCommand(): Promise<void>;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { spawn } from "child_process";
|
|
3
|
+
import { access } from "fs/promises";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { readState, writeState } from "../utils/state.js";
|
|
6
|
+
import { isInitialized } from "../installer.js";
|
|
7
|
+
import { runTransition } from "../transition.js";
|
|
8
|
+
export async function implementCommand() {
|
|
9
|
+
try {
|
|
10
|
+
await runImplement();
|
|
11
|
+
}
|
|
12
|
+
catch (err) {
|
|
13
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
14
|
+
console.error(chalk.red(`Error: ${message}`));
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function runImplement() {
|
|
19
|
+
const projectDir = process.cwd();
|
|
20
|
+
if (!(await isInitialized(projectDir))) {
|
|
21
|
+
console.log(chalk.red("bmalph is not initialized. Run 'bmalph init' first."));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
// Check if Ralph loop script exists
|
|
25
|
+
const loopScript = join(projectDir, ".ralph/ralph_loop.sh");
|
|
26
|
+
try {
|
|
27
|
+
await access(loopScript);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
console.log(chalk.red("Ralph loop script not found at .ralph/ralph_loop.sh"));
|
|
31
|
+
console.log("Run 'bmalph init' to install Ralph.");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Run transition: BMAD artifacts → Ralph inputs
|
|
35
|
+
console.log(chalk.blue("Transitioning BMAD artifacts to Ralph format..."));
|
|
36
|
+
try {
|
|
37
|
+
const result = await runTransition(projectDir);
|
|
38
|
+
if (result.fixPlanPreserved) {
|
|
39
|
+
console.log(chalk.green("Preserved existing @fix_plan.md (has progress)"));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(chalk.green(`Generated fix_plan.md with ${result.storiesCount} stories`));
|
|
43
|
+
}
|
|
44
|
+
for (const warning of result.warnings) {
|
|
45
|
+
console.log(chalk.yellow(`Warning: ${warning}`));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
50
|
+
console.log(chalk.red(`Transition failed: ${message}`));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Update state
|
|
54
|
+
const now = new Date().toISOString();
|
|
55
|
+
const state = await readState(projectDir);
|
|
56
|
+
const newState = {
|
|
57
|
+
currentPhase: 4,
|
|
58
|
+
status: "implementing",
|
|
59
|
+
startedAt: state?.startedAt ?? now,
|
|
60
|
+
lastUpdated: now,
|
|
61
|
+
};
|
|
62
|
+
await writeState(projectDir, newState);
|
|
63
|
+
// Start Ralph loop
|
|
64
|
+
console.log(chalk.blue("\nStarting Ralph autonomous loop..."));
|
|
65
|
+
console.log(chalk.dim("Press Ctrl+C to stop the loop.\n"));
|
|
66
|
+
const child = spawn("bash", [loopScript], {
|
|
67
|
+
cwd: projectDir,
|
|
68
|
+
stdio: "inherit",
|
|
69
|
+
env: { ...process.env, RALPH_DIR: join(projectDir, ".ralph") },
|
|
70
|
+
});
|
|
71
|
+
child.on("close", (code) => {
|
|
72
|
+
if (code === 0) {
|
|
73
|
+
console.log(chalk.green("\nRalph loop completed successfully."));
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.log(chalk.yellow(`\nRalph loop exited with code ${code}`));
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
child.on("error", (err) => {
|
|
80
|
+
console.log(chalk.red(`Failed to start Ralph loop: ${err.message}`));
|
|
81
|
+
console.log(chalk.dim("Ensure bash is available and ralph_loop.sh is executable."));
|
|
82
|
+
});
|
|
83
|
+
}
|