@zeyue0329/xiaoma-cli 1.0.8 → 1.0.10
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/FORK_GUIDE.md +106 -0
- package/.github/FUNDING.yaml +15 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
- package/.github/workflows/discord.yaml +26 -0
- package/.github/workflows/format-check.yaml +44 -0
- package/.github/workflows/manual-release.yaml +174 -0
- package/.github/workflows/pr-validation.yaml +55 -0
- package/.husky/pre-commit +3 -0
- package/.vscode/settings.json +26 -1
- package/CHANGELOG.md +686 -0
- package/CONTRIBUTING.md +250 -0
- package/LICENSE +6 -1
- package/common/tasks/create-doc.md +2 -0
- package/common/tasks/execute-checklist.md +2 -7
- package/common/utils/bmad-doc-template.md +7 -5
- package/common/utils/workflow-management.md +2 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2103 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +1627 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +822 -0
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +8486 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +3210 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3244 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +317 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.txt +982 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/teams/unity-2d-game-team.txt +12854 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/beta-reader.txt +921 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/book-critic.txt +81 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/character-psychologist.txt +886 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/cover-designer.txt +85 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/dialog-specialist.txt +903 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/editor.txt +837 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/genre-specialist.txt +989 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/narrative-designer.txt +888 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/plot-architect.txt +1173 -0
- package/dist/expansion-packs/bmad-creative-writing/agents/world-builder.txt +914 -0
- package/dist/expansion-packs/bmad-creative-writing/teams/agent-team.txt +6071 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2079 -0
- package/docs/GUIDING-PRINCIPLES.md +91 -0
- package/docs/core-architecture.md +219 -0
- package/docs/enhanced-ide-development-workflow.md +248 -0
- package/docs/expansion-packs.md +200 -0
- package/docs/how-to-contribute-with-pull-requests.md +158 -0
- package/docs/user-guide.md +530 -0
- package/docs/versioning-and-releases.md +155 -0
- package/docs/versions.md +48 -0
- package/docs/working-in-the-brownfield.md +597 -0
- package/eslint.config.mjs +119 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agent-teams/phaser-2d-nodejs-game-team.yaml +14 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.md +73 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.md +80 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.md +66 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-design-checklist.md +203 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/checklists/game-story-dod-checklist.md +162 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +9 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/data/bmad-kb.md +252 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/data/development-guidelines.md +649 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/advanced-elicitation.md +112 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +218 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/game-design-brainstorming.md +292 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-architecture-tmpl.yaml +614 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-brief-tmpl.yaml +357 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-design-doc-tmpl.yaml +344 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/game-story-tmpl.yaml +254 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-dev-greenfield.yaml +184 -0
- package/expansion-packs/bmad-2d-phaser-game-dev/workflows/game-prototype.yaml +176 -0
- package/expansion-packs/bmad-2d-unity-game-dev/agent-teams/unity-2d-game-team.yaml +15 -0
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.md +82 -0
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.md +79 -0
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.md +80 -0
- package/expansion-packs/bmad-2d-unity-game-dev/agents/game-sm.md +67 -0
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-architect-checklist.md +393 -0
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-change-checklist.md +205 -0
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-design-checklist.md +203 -0
- package/expansion-packs/bmad-2d-unity-game-dev/checklists/game-story-dod-checklist.md +126 -0
- package/expansion-packs/bmad-2d-unity-game-dev/config.yaml +7 -0
- package/expansion-packs/bmad-2d-unity-game-dev/data/bmad-kb.md +771 -0
- package/expansion-packs/bmad-2d-unity-game-dev/data/development-guidelines.md +588 -0
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/advanced-elicitation.md +112 -0
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/correct-course-game.md +143 -0
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/create-game-story.md +186 -0
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/game-design-brainstorming.md +292 -0
- package/expansion-packs/bmad-2d-unity-game-dev/tasks/validate-game-story.md +202 -0
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-architecture-tmpl.yaml +1031 -0
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-brief-tmpl.yaml +357 -0
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-design-doc-tmpl.yaml +706 -0
- package/expansion-packs/bmad-2d-unity-game-dev/templates/game-story-tmpl.yaml +257 -0
- package/expansion-packs/bmad-2d-unity-game-dev/templates/level-design-doc-tmpl.yaml +485 -0
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-dev-greenfield.yaml +184 -0
- package/expansion-packs/bmad-2d-unity-game-dev/workflows/game-prototype.yaml +176 -0
- package/expansion-packs/bmad-creative-writing/README.md +146 -0
- package/expansion-packs/bmad-creative-writing/agent-teams/agent-team.yaml +20 -0
- package/expansion-packs/bmad-creative-writing/agents/beta-reader.md +94 -0
- package/expansion-packs/bmad-creative-writing/agents/book-critic.md +40 -0
- package/expansion-packs/bmad-creative-writing/agents/character-psychologist.md +93 -0
- package/expansion-packs/bmad-creative-writing/agents/cover-designer.md +46 -0
- package/expansion-packs/bmad-creative-writing/agents/dialog-specialist.md +92 -0
- package/expansion-packs/bmad-creative-writing/agents/editor.md +93 -0
- package/expansion-packs/bmad-creative-writing/agents/genre-specialist.md +95 -0
- package/expansion-packs/bmad-creative-writing/agents/narrative-designer.md +93 -0
- package/expansion-packs/bmad-creative-writing/agents/plot-architect.md +95 -0
- package/expansion-packs/bmad-creative-writing/agents/world-builder.md +94 -0
- package/expansion-packs/bmad-creative-writing/checklists/beta-feedback-closure-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/character-consistency-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/comedic-timing-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/cyberpunk-aesthetic-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/ebook-formatting-checklist.md +21 -0
- package/expansion-packs/bmad-creative-writing/checklists/epic-poetry-meter-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/fantasy-magic-system-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/foreshadowing-payoff-checklist.md +22 -0
- package/expansion-packs/bmad-creative-writing/checklists/genre-tropes-checklist.md +22 -0
- package/expansion-packs/bmad-creative-writing/checklists/historical-accuracy-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/horror-suspense-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/kdp-cover-ready-checklist.md +25 -0
- package/expansion-packs/bmad-creative-writing/checklists/line-edit-quality-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/marketing-copy-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/mystery-clue-trail-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/orbital-mechanics-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/plot-structure-checklist.md +59 -0
- package/expansion-packs/bmad-creative-writing/checklists/publication-readiness-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/romance-emotional-beats-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/scene-quality-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/scifi-technology-plausibility-checklist.md +22 -0
- package/expansion-packs/bmad-creative-writing/checklists/sensitivity-representation-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/steampunk-gadget-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/thriller-pacing-stakes-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/timeline-continuity-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/world-building-continuity-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/checklists/ya-appropriateness-checklist.md +23 -0
- package/expansion-packs/bmad-creative-writing/config.yaml +12 -0
- package/expansion-packs/bmad-creative-writing/data/bmad-kb.md +209 -0
- package/expansion-packs/bmad-creative-writing/data/story-structures.md +67 -0
- package/expansion-packs/bmad-creative-writing/docs/brief.md +212 -0
- package/expansion-packs/bmad-creative-writing/tasks/advanced-elicitation.md +119 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-reader-feedback.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/analyze-story-structure.md +67 -0
- package/expansion-packs/bmad-creative-writing/tasks/assemble-kdp-package.md +29 -0
- package/expansion-packs/bmad-creative-writing/tasks/brainstorm-premise.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/build-world.md +24 -0
- package/expansion-packs/bmad-creative-writing/tasks/character-depth-pass.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-doc.md +103 -0
- package/expansion-packs/bmad-creative-writing/tasks/create-draft-section.md +26 -0
- package/expansion-packs/bmad-creative-writing/tasks/critical-review.md +26 -0
- package/expansion-packs/bmad-creative-writing/tasks/develop-character.md +24 -0
- package/expansion-packs/bmad-creative-writing/tasks/execute-checklist.md +88 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-premise.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/expand-synopsis.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/final-polish.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-brief.md +25 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-cover-prompts.md +26 -0
- package/expansion-packs/bmad-creative-writing/tasks/generate-scene-list.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/incorporate-feedback.md +25 -0
- package/expansion-packs/bmad-creative-writing/tasks/outline-scenes.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/provide-feedback.md +24 -0
- package/expansion-packs/bmad-creative-writing/tasks/publish-chapter.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/quick-feedback.md +22 -0
- package/expansion-packs/bmad-creative-writing/tasks/select-next-arc.md +23 -0
- package/expansion-packs/bmad-creative-writing/tasks/workshop-dialog.md +64 -0
- package/expansion-packs/bmad-creative-writing/templates/beta-feedback-form.yaml +97 -0
- package/expansion-packs/bmad-creative-writing/templates/chapter-draft-tmpl.yaml +82 -0
- package/expansion-packs/bmad-creative-writing/templates/character-profile-tmpl.yaml +92 -0
- package/expansion-packs/bmad-creative-writing/templates/cover-design-brief-tmpl.yaml +98 -0
- package/expansion-packs/bmad-creative-writing/templates/premise-brief-tmpl.yaml +78 -0
- package/expansion-packs/bmad-creative-writing/templates/scene-list-tmpl.yaml +55 -0
- package/expansion-packs/bmad-creative-writing/templates/story-outline-tmpl.yaml +96 -0
- package/expansion-packs/bmad-creative-writing/templates/world-guide-tmpl.yaml +89 -0
- package/expansion-packs/bmad-creative-writing/workflows/book-cover-design-workflow.md +218 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-greenfield-workflow.yaml +56 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-serial-workflow.yaml +50 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-snowflake-workflow.yaml +69 -0
- package/expansion-packs/bmad-creative-writing/workflows/novel-writing.yaml +91 -0
- package/expansion-packs/bmad-creative-writing/workflows/screenplay-development.yaml +85 -0
- package/expansion-packs/bmad-creative-writing/workflows/series-planning.yaml +78 -0
- package/expansion-packs/bmad-creative-writing/workflows/short-story-creation.yaml +64 -0
- package/expansion-packs/bmad-infrastructure-devops/README.md +147 -0
- package/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.md +73 -0
- package/expansion-packs/bmad-infrastructure-devops/checklists/infrastructure-checklist.md +486 -0
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +10 -0
- package/expansion-packs/bmad-infrastructure-devops/data/bmad-kb.md +307 -0
- package/expansion-packs/bmad-infrastructure-devops/tasks/review-infrastructure.md +161 -0
- package/expansion-packs/bmad-infrastructure-devops/tasks/validate-infrastructure.md +155 -0
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-architecture-tmpl.yaml +425 -0
- package/expansion-packs/bmad-infrastructure-devops/templates/infrastructure-platform-from-arch-tmpl.yaml +630 -0
- package/implement-fork-friendly-ci.sh +229 -0
- package/package.json +75 -45
- package/prettier.config.mjs +32 -0
- package/test.md +1 -0
- package/tools/builders/web-builder.js +143 -149
- package/tools/bump-all-versions.js +42 -33
- package/tools/bump-expansion-version.js +23 -16
- package/tools/cli.js +15 -15
- package/tools/flattener/aggregate.js +76 -0
- package/tools/flattener/binary.js +80 -0
- package/tools/flattener/discovery.js +71 -0
- package/tools/flattener/files.js +35 -0
- package/tools/flattener/ignoreRules.js +176 -0
- package/tools/flattener/main.js +458 -460
- package/tools/flattener/projectRoot.js +206 -0
- package/tools/flattener/prompts.js +44 -0
- package/tools/flattener/stats.helpers.js +395 -0
- package/tools/flattener/stats.js +80 -0
- package/tools/flattener/test-matrix.js +413 -0
- package/tools/flattener/xml.js +88 -0
- package/tools/installer/README.md +1 -1
- package/tools/installer/bin/xiaoma.js +390 -150
- package/tools/installer/config/ide-agent-config.yaml +1 -1
- package/tools/installer/config/install.config.yaml +60 -9
- package/tools/installer/lib/config-loader.js +55 -51
- package/tools/installer/lib/file-manager.js +92 -117
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +821 -414
- package/tools/installer/lib/installer.js +924 -699
- package/tools/installer/lib/memory-profiler.js +54 -53
- package/tools/installer/lib/module-manager.js +19 -15
- package/tools/installer/lib/resource-locator.js +31 -33
- package/tools/installer/package.json +24 -23
- package/tools/lib/dependency-resolver.js +39 -43
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/md-assets/web-agent-startup-instructions.md +6 -6
- package/tools/preview-release-notes.js +66 -0
- package/tools/setup-hooks.sh +37 -0
- package/tools/shared/bannerArt.js +105 -0
- package/tools/sync-installer-version.js +7 -9
- package/tools/sync-version.sh +23 -0
- package/tools/update-expansion-version.js +14 -15
- package/tools/upgraders/v3-to-v4-upgrader.js +203 -294
- package/tools/version-bump.js +41 -26
- package/tools/xiaoma-npx-wrapper.js +14 -14
- package/tools/yaml-format.js +56 -43
- package/xiaoma-core/agent-teams/team-all.yaml +3 -2
- package/xiaoma-core/agent-teams/team-fullstack.yaml +2 -1
- package/xiaoma-core/agent-teams/team-ide-minimal.yaml +1 -0
- package/xiaoma-core/agent-teams/team-no-ui.yaml +2 -1
- package/xiaoma-core/agents/analyst.md +20 -17
- package/xiaoma-core/agents/architect.md +15 -14
- package/xiaoma-core/agents/{xiaoma-master.md → bmad-master.md} +29 -27
- package/xiaoma-core/agents/{xiaoma-orchestrator.md → bmad-orchestrator.md} +36 -39
- package/xiaoma-core/agents/dev.md +23 -18
- package/xiaoma-core/agents/pm.md +18 -15
- package/xiaoma-core/agents/po.md +13 -10
- package/xiaoma-core/agents/qa.md +46 -24
- package/xiaoma-core/agents/sm.md +11 -8
- package/xiaoma-core/agents/ux-expert.md +10 -7
- package/xiaoma-core/checklists/architect-checklist.md +2 -5
- package/xiaoma-core/checklists/change-checklist.md +4 -2
- package/xiaoma-core/checklists/pm-checklist.md +2 -5
- package/xiaoma-core/checklists/po-master-checklist.md +2 -9
- package/xiaoma-core/checklists/story-dod-checklist.md +2 -7
- package/xiaoma-core/checklists/story-draft-checklist.md +2 -3
- package/xiaoma-core/core-config.yaml +4 -1
- package/xiaoma-core/data/{xiaoma-kb.md → bmad-kb.md} +48 -42
- package/xiaoma-core/data/brainstorming-techniques.md +2 -0
- package/xiaoma-core/data/elicitation-methods.md +22 -0
- package/xiaoma-core/data/technical-preferences.md +2 -0
- package/xiaoma-core/data/test-levels-framework.md +148 -0
- package/xiaoma-core/data/test-priorities-matrix.md +174 -0
- package/xiaoma-core/tasks/advanced-elicitation.md +2 -0
- package/xiaoma-core/tasks/apply-qa-fixes.md +150 -0
- package/xiaoma-core/tasks/brownfield-create-epic.md +2 -0
- package/xiaoma-core/tasks/brownfield-create-story.md +2 -0
- package/xiaoma-core/tasks/correct-course.md +2 -0
- package/xiaoma-core/tasks/create-brownfield-story.md +14 -4
- package/xiaoma-core/tasks/create-deep-research-prompt.md +2 -11
- package/xiaoma-core/tasks/create-next-story.md +3 -1
- package/xiaoma-core/tasks/document-project.md +17 -13
- package/xiaoma-core/tasks/facilitate-brainstorming-session.md +5 -3
- package/xiaoma-core/tasks/generate-ai-frontend-prompt.md +2 -0
- package/xiaoma-core/tasks/index-docs.md +2 -6
- package/xiaoma-core/tasks/kb-mode-interaction.md +17 -15
- package/xiaoma-core/tasks/nfr-assess.md +345 -0
- package/xiaoma-core/tasks/qa-gate.md +163 -0
- package/xiaoma-core/tasks/review-story.md +245 -74
- package/xiaoma-core/tasks/risk-profile.md +355 -0
- package/xiaoma-core/tasks/shard-doc.md +2 -2
- package/xiaoma-core/tasks/test-design.md +176 -0
- package/xiaoma-core/tasks/trace-requirements.md +266 -0
- package/xiaoma-core/tasks/validate-next-story.md +5 -3
- package/xiaoma-core/templates/architecture-tmpl.yaml +50 -49
- package/xiaoma-core/templates/brainstorming-output-tmpl.yaml +5 -5
- package/xiaoma-core/templates/brownfield-architecture-tmpl.yaml +32 -31
- package/xiaoma-core/templates/brownfield-prd-tmpl.yaml +14 -13
- package/xiaoma-core/templates/competitor-analysis-tmpl.yaml +20 -6
- package/xiaoma-core/templates/front-end-architecture-tmpl.yaml +22 -9
- package/xiaoma-core/templates/front-end-spec-tmpl.yaml +25 -24
- package/xiaoma-core/templates/fullstack-architecture-tmpl.yaml +123 -104
- package/xiaoma-core/templates/market-research-tmpl.yaml +3 -2
- package/xiaoma-core/templates/prd-tmpl.yaml +10 -9
- package/xiaoma-core/templates/project-brief-tmpl.yaml +5 -4
- package/xiaoma-core/templates/qa-gate-tmpl.yaml +103 -0
- package/xiaoma-core/templates/story-tmpl.yaml +13 -12
- package/xiaoma-core/workflows/brownfield-fullstack.yaml +13 -12
- package/xiaoma-core/workflows/brownfield-service.yaml +5 -4
- package/xiaoma-core/workflows/brownfield-ui.yaml +5 -4
- package/xiaoma-core/workflows/greenfield-fullstack.yaml +7 -6
- package/xiaoma-core/workflows/greenfield-service.yaml +5 -4
- package/xiaoma-core/workflows/greenfield-ui.yaml +6 -5
- package/.releaserc.json +0 -18
- package/README.md +0 -532
- package/XiaoMa-Web/345/244/232/346/231/272/350/203/275/344/275/2230-1/351/241/271/347/233/256/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -977
- package/XiaoMa-Web/347/216/260/346/234/211/351/241/271/347/233/256/351/234/200/346/261/202/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -873
- package/XiaoMa-Web/347/272/257/345/211/215/347/253/257/351/241/271/347/233/256Claude-Code/345/274/200/345/217/221/345/256/214/346/225/264/346/214/207/345/215/227.md +0 -372
- package/XiaoMa-Web/351/241/271/347/233/256/346/200/273/347/273/223/346/212/245/345/221/212.md +0 -310
- package/dist/agents/analyst.txt +0 -2882
- package/dist/agents/architect.txt +0 -3543
- package/dist/agents/dev-cn.txt +0 -428
- package/dist/agents/dev.txt +0 -428
- package/dist/agents/pm.txt +0 -2229
- package/dist/agents/po.txt +0 -1364
- package/dist/agents/qa.txt +0 -386
- package/dist/agents/sm.txt +0 -668
- package/dist/agents/ux-expert.txt +0 -701
- package/dist/agents/xiaoma-master.txt +0 -8756
- package/dist/agents/xiaoma-orchestrator.txt +0 -1490
- package/dist/teams/team-all.txt +0 -11062
- package/dist/teams/team-fullstack.txt +0 -10392
- package/dist/teams/team-ide-minimal.txt +0 -3507
- package/dist/teams/team-no-ui.txt +0 -8951
- package/docs/quick-start.md +0 -179
- package/tools/bmad-npx-wrapper.js +0 -39
- package/tools/installer/package-lock.json +0 -704
- package/tools/semantic-release-sync-installer.js +0 -30
- package/xiaoma-core/bmad-core/user-guide.md +0 -0
- package/xiaoma-core/enhanced-ide-development-workflow.md +0 -43
- package/xiaoma-core/user-guide.md +0 -251
- package/xiaoma-core/working-in-the-brownfield.md +0 -364
package/tools/version-bump.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const { execSync } = require('child_process');
|
|
5
|
-
const path = require('path');
|
|
1
|
+
const fs = require('node:fs');
|
|
2
|
+
const { execSync } = require('node:child_process');
|
|
3
|
+
const path = require('node:path');
|
|
6
4
|
|
|
7
5
|
// Dynamic import for ES module
|
|
8
6
|
let chalk;
|
|
@@ -26,54 +24,71 @@ function getCurrentVersion() {
|
|
|
26
24
|
|
|
27
25
|
async function bumpVersion(type = 'patch') {
|
|
28
26
|
await initializeModules();
|
|
29
|
-
|
|
27
|
+
|
|
30
28
|
const validTypes = ['patch', 'minor', 'major'];
|
|
31
29
|
if (!validTypes.includes(type)) {
|
|
32
30
|
console.error(chalk.red(`Invalid version type: ${type}. Use: ${validTypes.join(', ')}`));
|
|
33
31
|
process.exit(1);
|
|
34
32
|
}
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
const currentVersion = getCurrentVersion();
|
|
35
|
+
const versionParts = currentVersion.split('.').map(Number);
|
|
36
|
+
let newVersion;
|
|
37
|
+
|
|
38
|
+
switch (type) {
|
|
39
|
+
case 'major': {
|
|
40
|
+
newVersion = `${versionParts[0] + 1}.0.0`;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'minor': {
|
|
44
|
+
newVersion = `${versionParts[0]}.${versionParts[1] + 1}.0`;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'patch': {
|
|
48
|
+
newVersion = `${versionParts[0]}.${versionParts[1]}.${versionParts[2] + 1}`;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
console.log(chalk.blue(`Bumping version: ${currentVersion} → ${newVersion}`));
|
|
54
|
+
|
|
55
|
+
// Update package.json
|
|
56
|
+
const packageJson = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
57
|
+
packageJson.version = newVersion;
|
|
58
|
+
fs.writeFileSync('package.json', JSON.stringify(packageJson, null, 2) + '\n');
|
|
59
|
+
|
|
60
|
+
console.log(chalk.green(`✓ Updated package.json to ${newVersion}`));
|
|
61
|
+
|
|
62
|
+
return newVersion;
|
|
48
63
|
}
|
|
49
64
|
|
|
50
65
|
async function main() {
|
|
51
66
|
await initializeModules();
|
|
52
|
-
|
|
67
|
+
|
|
53
68
|
const type = process.argv[2] || 'patch';
|
|
54
69
|
const currentVersion = getCurrentVersion();
|
|
55
|
-
|
|
70
|
+
|
|
56
71
|
console.log(chalk.blue(`Current version: ${currentVersion}`));
|
|
57
|
-
|
|
72
|
+
|
|
58
73
|
// Check if working directory is clean
|
|
59
74
|
try {
|
|
60
75
|
execSync('git diff-index --quiet HEAD --');
|
|
61
|
-
} catch
|
|
76
|
+
} catch {
|
|
62
77
|
console.error(chalk.red('❌ Working directory is not clean. Commit your changes first.'));
|
|
63
78
|
process.exit(1);
|
|
64
79
|
}
|
|
65
|
-
|
|
80
|
+
|
|
66
81
|
const newVersion = await bumpVersion(type);
|
|
67
|
-
|
|
82
|
+
|
|
68
83
|
console.log(chalk.green(`\n🎉 Version bump complete!`));
|
|
69
84
|
console.log(chalk.blue(`📦 ${currentVersion} → ${newVersion}`));
|
|
70
85
|
}
|
|
71
86
|
|
|
72
87
|
if (require.main === module) {
|
|
73
|
-
main().catch(error => {
|
|
88
|
+
main().catch((error) => {
|
|
74
89
|
console.error('Error:', error);
|
|
75
90
|
process.exit(1);
|
|
76
91
|
});
|
|
77
92
|
}
|
|
78
93
|
|
|
79
|
-
module.exports = { bumpVersion, getCurrentVersion };
|
|
94
|
+
module.exports = { bumpVersion, getCurrentVersion };
|
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* BMad Method CLI - Direct execution wrapper for npx
|
|
5
5
|
* This file ensures proper execution when run via npx from GitHub
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
const { execSync } = require('child_process');
|
|
9
|
-
const path = require('path');
|
|
10
|
-
const fs = require('fs');
|
|
8
|
+
const { execSync } = require('node:child_process');
|
|
9
|
+
const path = require('node:path');
|
|
10
|
+
const fs = require('node:fs');
|
|
11
11
|
|
|
12
12
|
// Check if we're running in an npx temporary directory
|
|
13
13
|
const isNpxExecution = __dirname.includes('_npx') || __dirname.includes('.npm');
|
|
14
14
|
|
|
15
15
|
// If running via npx, we need to handle things differently
|
|
16
16
|
if (isNpxExecution) {
|
|
17
|
-
const
|
|
18
|
-
|
|
17
|
+
const arguments_ = process.argv.slice(2);
|
|
18
|
+
|
|
19
19
|
// Use the installer for all commands
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
if (!fs.existsSync(
|
|
23
|
-
console.error('Error: Could not find xiaoma.js at',
|
|
20
|
+
const bmadScriptPath = path.join(__dirname, 'installer', 'bin', 'xiaoma.js');
|
|
21
|
+
|
|
22
|
+
if (!fs.existsSync(bmadScriptPath)) {
|
|
23
|
+
console.error('Error: Could not find xiaoma.js at', bmadScriptPath);
|
|
24
24
|
console.error('Current directory:', __dirname);
|
|
25
25
|
process.exit(1);
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
try {
|
|
29
|
-
execSync(`node "${
|
|
29
|
+
execSync(`node "${bmadScriptPath}" ${arguments_.join(' ')}`, {
|
|
30
30
|
stdio: 'inherit',
|
|
31
|
-
cwd: path.dirname(__dirname)
|
|
31
|
+
cwd: path.dirname(__dirname),
|
|
32
32
|
});
|
|
33
33
|
} catch (error) {
|
|
34
34
|
process.exit(error.status || 1);
|
|
@@ -36,4 +36,4 @@ if (isNpxExecution) {
|
|
|
36
36
|
} else {
|
|
37
37
|
// Local execution - use installer for all commands
|
|
38
38
|
require('./installer/bin/xiaoma.js');
|
|
39
|
-
}
|
|
39
|
+
}
|
package/tools/yaml-format.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
const path = require('path');
|
|
1
|
+
const fs = require('node:fs');
|
|
2
|
+
const path = require('node:path');
|
|
5
3
|
const yaml = require('js-yaml');
|
|
6
|
-
const { execSync } = require('child_process');
|
|
4
|
+
const { execSync } = require('node:child_process');
|
|
7
5
|
|
|
8
6
|
// Dynamic import for ES module
|
|
9
7
|
let chalk;
|
|
@@ -26,43 +24,50 @@ async function formatYamlContent(content, filename) {
|
|
|
26
24
|
// First try to fix common YAML issues
|
|
27
25
|
let fixedContent = content
|
|
28
26
|
// Fix "commands :" -> "commands:"
|
|
29
|
-
.
|
|
27
|
+
.replaceAll(/^(\s*)(\w+)\s+:/gm, '$1$2:')
|
|
30
28
|
// Fix inconsistent list indentation
|
|
31
|
-
.
|
|
32
|
-
|
|
29
|
+
.replaceAll(/^(\s*)-\s{3,}/gm, '$1- ');
|
|
30
|
+
|
|
33
31
|
// Skip auto-fixing for .roomodes files - they have special nested structure
|
|
34
32
|
if (!filename.includes('.roomodes')) {
|
|
35
33
|
fixedContent = fixedContent
|
|
36
34
|
// Fix unquoted list items that contain special characters or multiple parts
|
|
37
|
-
.
|
|
35
|
+
.replaceAll(/^(\s*)-\s+(.*)$/gm, (match, indent, content) => {
|
|
38
36
|
// Skip if already quoted
|
|
39
37
|
if (content.startsWith('"') && content.endsWith('"')) {
|
|
40
38
|
return match;
|
|
41
39
|
}
|
|
42
40
|
// If the content contains special YAML characters or looks complex, quote it
|
|
43
41
|
// BUT skip if it looks like a proper YAML key-value pair (like "key: value")
|
|
44
|
-
if (
|
|
45
|
-
|
|
42
|
+
if (
|
|
43
|
+
(content.includes(':') ||
|
|
44
|
+
content.includes('-') ||
|
|
45
|
+
content.includes('{') ||
|
|
46
|
+
content.includes('}')) &&
|
|
47
|
+
!/^\w+:\s/.test(content)
|
|
48
|
+
) {
|
|
46
49
|
// Remove any existing quotes first, escape internal quotes, then add proper quotes
|
|
47
|
-
const cleanContent = content
|
|
50
|
+
const cleanContent = content
|
|
51
|
+
.replaceAll(/^["']|["']$/g, '')
|
|
52
|
+
.replaceAll('"', String.raw`\"`);
|
|
48
53
|
return `${indent}- "${cleanContent}"`;
|
|
49
54
|
}
|
|
50
55
|
return match;
|
|
51
56
|
});
|
|
52
57
|
}
|
|
53
|
-
|
|
58
|
+
|
|
54
59
|
// Debug: show what we're trying to parse
|
|
55
60
|
if (fixedContent !== content) {
|
|
56
61
|
console.log(chalk.blue(`🔧 Applied YAML fixes to ${filename}`));
|
|
57
62
|
}
|
|
58
|
-
|
|
63
|
+
|
|
59
64
|
// Parse and re-dump YAML to format it
|
|
60
65
|
const parsed = yaml.load(fixedContent);
|
|
61
66
|
const formatted = yaml.dump(parsed, {
|
|
62
67
|
indent: 2,
|
|
63
68
|
lineWidth: -1, // Disable line wrapping
|
|
64
69
|
noRefs: true,
|
|
65
|
-
sortKeys: false // Preserve key order
|
|
70
|
+
sortKeys: false, // Preserve key order
|
|
66
71
|
});
|
|
67
72
|
return formatted;
|
|
68
73
|
} catch (error) {
|
|
@@ -80,7 +85,7 @@ async function processMarkdownFile(filePath) {
|
|
|
80
85
|
|
|
81
86
|
// Fix untyped code blocks by adding 'text' type
|
|
82
87
|
// Match ``` at start of line followed by newline, but only if it's an opening fence
|
|
83
|
-
newContent = newContent.
|
|
88
|
+
newContent = newContent.replaceAll(/^```\n([\s\S]*?)\n```$/gm, '```text\n$1\n```');
|
|
84
89
|
if (newContent !== content) {
|
|
85
90
|
modified = true;
|
|
86
91
|
console.log(chalk.blue(`🔧 Added 'text' type to untyped code blocks in ${filePath}`));
|
|
@@ -90,30 +95,30 @@ async function processMarkdownFile(filePath) {
|
|
|
90
95
|
const yamlBlockRegex = /```ya?ml\n([\s\S]*?)\n```/g;
|
|
91
96
|
let match;
|
|
92
97
|
const replacements = [];
|
|
93
|
-
|
|
98
|
+
|
|
94
99
|
while ((match = yamlBlockRegex.exec(newContent)) !== null) {
|
|
95
100
|
const [fullMatch, yamlContent] = match;
|
|
96
101
|
const formatted = await formatYamlContent(yamlContent, filePath);
|
|
97
102
|
if (formatted !== null) {
|
|
98
103
|
// Remove trailing newline that js-yaml adds
|
|
99
104
|
const trimmedFormatted = formatted.replace(/\n$/, '');
|
|
100
|
-
|
|
105
|
+
|
|
101
106
|
if (trimmedFormatted !== yamlContent) {
|
|
102
107
|
modified = true;
|
|
103
108
|
console.log(chalk.green(`✓ Formatted YAML in ${filePath}`));
|
|
104
109
|
}
|
|
105
|
-
|
|
110
|
+
|
|
106
111
|
replacements.push({
|
|
107
112
|
start: match.index,
|
|
108
113
|
end: match.index + fullMatch.length,
|
|
109
|
-
replacement: `\`\`\`yaml\n${trimmedFormatted}\n
|
|
114
|
+
replacement: `\`\`\`yaml\n${trimmedFormatted}\n\`\`\``,
|
|
110
115
|
});
|
|
111
116
|
}
|
|
112
117
|
}
|
|
113
|
-
|
|
118
|
+
|
|
114
119
|
// Apply replacements in reverse order to maintain indices
|
|
115
|
-
for (let
|
|
116
|
-
const { start, end, replacement } = replacements[
|
|
120
|
+
for (let index = replacements.length - 1; index >= 0; index--) {
|
|
121
|
+
const { start, end, replacement } = replacements[index];
|
|
117
122
|
newContent = newContent.slice(0, start) + replacement + newContent.slice(end);
|
|
118
123
|
}
|
|
119
124
|
|
|
@@ -128,11 +133,11 @@ async function processYamlFile(filePath) {
|
|
|
128
133
|
await initializeModules();
|
|
129
134
|
const content = fs.readFileSync(filePath, 'utf8');
|
|
130
135
|
const formatted = await formatYamlContent(content, filePath);
|
|
131
|
-
|
|
136
|
+
|
|
132
137
|
if (formatted === null) {
|
|
133
138
|
return false; // Syntax error
|
|
134
139
|
}
|
|
135
|
-
|
|
140
|
+
|
|
136
141
|
if (formatted !== content) {
|
|
137
142
|
fs.writeFileSync(filePath, formatted);
|
|
138
143
|
return true;
|
|
@@ -155,10 +160,10 @@ async function lintYamlFile(filePath) {
|
|
|
155
160
|
|
|
156
161
|
async function main() {
|
|
157
162
|
await initializeModules();
|
|
158
|
-
const
|
|
163
|
+
const arguments_ = process.argv.slice(2);
|
|
159
164
|
const glob = require('glob');
|
|
160
|
-
|
|
161
|
-
if (
|
|
165
|
+
|
|
166
|
+
if (arguments_.length === 0) {
|
|
162
167
|
console.error('Usage: node yaml-format.js <file1> [file2] ...');
|
|
163
168
|
process.exit(1);
|
|
164
169
|
}
|
|
@@ -169,38 +174,44 @@ async function main() {
|
|
|
169
174
|
|
|
170
175
|
// Expand glob patterns and collect all files
|
|
171
176
|
const allFiles = [];
|
|
172
|
-
for (const
|
|
173
|
-
if (
|
|
177
|
+
for (const argument of arguments_) {
|
|
178
|
+
if (argument.includes('*')) {
|
|
174
179
|
// It's a glob pattern
|
|
175
|
-
const matches = glob.sync(
|
|
180
|
+
const matches = glob.sync(argument);
|
|
176
181
|
allFiles.push(...matches);
|
|
177
182
|
} else {
|
|
178
183
|
// It's a direct file path
|
|
179
|
-
allFiles.push(
|
|
184
|
+
allFiles.push(argument);
|
|
180
185
|
}
|
|
181
186
|
}
|
|
182
187
|
|
|
183
188
|
for (const filePath of allFiles) {
|
|
184
189
|
if (!fs.existsSync(filePath)) {
|
|
185
190
|
// Skip silently for glob patterns that don't match anything
|
|
186
|
-
if (!
|
|
191
|
+
if (!arguments_.some((argument) => argument.includes('*') && filePath === argument)) {
|
|
187
192
|
console.error(chalk.red(`❌ File not found: ${filePath}`));
|
|
188
193
|
hasErrors = true;
|
|
189
194
|
}
|
|
190
195
|
continue;
|
|
191
196
|
}
|
|
192
197
|
|
|
193
|
-
const
|
|
198
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
194
199
|
const basename = path.basename(filePath).toLowerCase();
|
|
195
|
-
|
|
200
|
+
|
|
196
201
|
try {
|
|
197
202
|
let changed = false;
|
|
198
|
-
if (
|
|
203
|
+
if (extension === '.md') {
|
|
199
204
|
changed = await processMarkdownFile(filePath);
|
|
200
|
-
} else if (
|
|
205
|
+
} else if (
|
|
206
|
+
extension === '.yaml' ||
|
|
207
|
+
extension === '.yml' ||
|
|
208
|
+
basename.includes('roomodes') ||
|
|
209
|
+
basename.includes('.yaml') ||
|
|
210
|
+
basename.includes('.yml')
|
|
211
|
+
) {
|
|
201
212
|
// Handle YAML files and special cases like .roomodes
|
|
202
213
|
changed = await processYamlFile(filePath);
|
|
203
|
-
|
|
214
|
+
|
|
204
215
|
// Also run linting
|
|
205
216
|
const lintPassed = await lintYamlFile(filePath);
|
|
206
217
|
if (!lintPassed) hasErrors = true;
|
|
@@ -208,7 +219,7 @@ async function main() {
|
|
|
208
219
|
// Skip silently for unsupported files
|
|
209
220
|
continue;
|
|
210
221
|
}
|
|
211
|
-
|
|
222
|
+
|
|
212
223
|
if (changed) {
|
|
213
224
|
hasChanges = true;
|
|
214
225
|
filesProcessed.push(filePath);
|
|
@@ -220,8 +231,10 @@ async function main() {
|
|
|
220
231
|
}
|
|
221
232
|
|
|
222
233
|
if (hasChanges) {
|
|
223
|
-
console.log(
|
|
224
|
-
|
|
234
|
+
console.log(
|
|
235
|
+
chalk.green(`\n✨ YAML formatting completed! Modified ${filesProcessed.length} files:`),
|
|
236
|
+
);
|
|
237
|
+
for (const file of filesProcessed) console.log(chalk.blue(` 📝 ${file}`));
|
|
225
238
|
}
|
|
226
239
|
|
|
227
240
|
if (hasErrors) {
|
|
@@ -231,10 +244,10 @@ async function main() {
|
|
|
231
244
|
}
|
|
232
245
|
|
|
233
246
|
if (require.main === module) {
|
|
234
|
-
main().catch(error => {
|
|
247
|
+
main().catch((error) => {
|
|
235
248
|
console.error('Error:', error);
|
|
236
249
|
process.exit(1);
|
|
237
250
|
});
|
|
238
251
|
}
|
|
239
252
|
|
|
240
|
-
module.exports = { formatYamlContent, processMarkdownFile, processYamlFile };
|
|
253
|
+
module.exports = { formatYamlContent, processMarkdownFile, processYamlFile };
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# <!-- Powered by BMAD™ Core -->
|
|
1
2
|
bundle:
|
|
2
3
|
name: Team All
|
|
3
4
|
icon: 👥
|
|
4
5
|
description: Includes every core system agent.
|
|
5
6
|
agents:
|
|
6
|
-
-
|
|
7
|
-
-
|
|
7
|
+
- bmad-orchestrator
|
|
8
|
+
- "*"
|
|
8
9
|
workflows:
|
|
9
10
|
- brownfield-fullstack.yaml
|
|
10
11
|
- brownfield-service.yaml
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Powered by BMAD™ Core -->
|
|
2
|
+
|
|
1
3
|
# analyst
|
|
2
4
|
|
|
3
5
|
ACTIVATION-NOTICE: This file contains your full agent operating guidelines. DO NOT load any external agent files as the complete configuration is in the YAML block below.
|
|
@@ -17,7 +19,8 @@ REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (
|
|
|
17
19
|
activation-instructions:
|
|
18
20
|
- STEP 1: Read THIS ENTIRE FILE - it contains your complete persona definition
|
|
19
21
|
- STEP 2: Adopt the persona defined in the 'agent' and 'persona' sections below
|
|
20
|
-
- STEP 3:
|
|
22
|
+
- STEP 3: Load and read `bmad-core/core-config.yaml` (project configuration) before any greeting
|
|
23
|
+
- STEP 4: Greet user with your name/role and immediately run `*help` to display available commands
|
|
21
24
|
- DO NOT: Load any other agent files during activation
|
|
22
25
|
- ONLY load dependency files when user selects them for execution via command or request of a task
|
|
23
26
|
- The agent.customization field ALWAYS takes precedence over any conflicting instructions
|
|
@@ -26,9 +29,9 @@ activation-instructions:
|
|
|
26
29
|
- CRITICAL RULE: When executing formal task workflows from dependencies, ALL task instructions override any conflicting base behavioral constraints. Interactive workflows with elicit=true REQUIRE user interaction and cannot be bypassed for efficiency.
|
|
27
30
|
- When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
|
|
28
31
|
- STAY IN CHARACTER!
|
|
29
|
-
- CRITICAL: On activation, ONLY greet user and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
|
32
|
+
- CRITICAL: On activation, ONLY greet user, auto-run `*help`, and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
|
30
33
|
agent:
|
|
31
|
-
name:
|
|
34
|
+
name: Mary
|
|
32
35
|
id: analyst
|
|
33
36
|
title: Business Analyst
|
|
34
37
|
icon: 📊
|
|
@@ -52,30 +55,30 @@ persona:
|
|
|
52
55
|
- Integrity of Information - Ensure accurate sourcing and representation
|
|
53
56
|
- Numbered Options Protocol - Always use numbered lists for selections
|
|
54
57
|
# All commands require * prefix when used (e.g., *help)
|
|
55
|
-
commands:
|
|
58
|
+
commands:
|
|
56
59
|
- help: Show numbered list of the following commands to allow selection
|
|
57
|
-
-
|
|
58
|
-
- perform-market-research: use task create-doc with market-research-tmpl.yaml
|
|
60
|
+
- brainstorm {topic}: Facilitate structured brainstorming session (run task facilitate-brainstorming-session.md with template brainstorming-output-tmpl.yaml)
|
|
59
61
|
- create-competitor-analysis: use task create-doc with competitor-analysis-tmpl.yaml
|
|
60
|
-
-
|
|
62
|
+
- create-project-brief: use task create-doc with project-brief-tmpl.yaml
|
|
61
63
|
- doc-out: Output full document in progress to current destination file
|
|
62
|
-
- research-prompt {topic}: execute task create-deep-research-prompt.md
|
|
63
|
-
- brainstorm {topic}: Facilitate structured brainstorming session (run task facilitate-brainstorming-session.md with template brainstorming-output-tmpl.yaml)
|
|
64
64
|
- elicit: run the task advanced-elicitation
|
|
65
|
+
- perform-market-research: use task create-doc with market-research-tmpl.yaml
|
|
66
|
+
- research-prompt {topic}: execute task create-deep-research-prompt.md
|
|
67
|
+
- yolo: Toggle Yolo Mode
|
|
65
68
|
- exit: Say goodbye as the Business Analyst, and then abandon inhabiting this persona
|
|
66
69
|
dependencies:
|
|
70
|
+
data:
|
|
71
|
+
- bmad-kb.md
|
|
72
|
+
- brainstorming-techniques.md
|
|
67
73
|
tasks:
|
|
68
|
-
-
|
|
74
|
+
- advanced-elicitation.md
|
|
69
75
|
- create-deep-research-prompt.md
|
|
70
76
|
- create-doc.md
|
|
71
|
-
- advanced-elicitation.md
|
|
72
77
|
- document-project.md
|
|
78
|
+
- facilitate-brainstorming-session.md
|
|
73
79
|
templates:
|
|
74
|
-
- project-brief-tmpl.yaml
|
|
75
|
-
- market-research-tmpl.yaml
|
|
76
|
-
- competitor-analysis-tmpl.yaml
|
|
77
80
|
- brainstorming-output-tmpl.yaml
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
-
|
|
81
|
+
- competitor-analysis-tmpl.yaml
|
|
82
|
+
- market-research-tmpl.yaml
|
|
83
|
+
- project-brief-tmpl.yaml
|
|
81
84
|
```
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
<!-- Powered by BMAD™ Core -->
|
|
2
2
|
|
|
3
|
+
# architect
|
|
3
4
|
|
|
4
5
|
ACTIVATION-NOTICE: This file contains your full agent operating guidelines. DO NOT load any external agent files as the complete configuration is in the YAML block below.
|
|
5
6
|
|
|
@@ -18,7 +19,8 @@ REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (
|
|
|
18
19
|
activation-instructions:
|
|
19
20
|
- STEP 1: Read THIS ENTIRE FILE - it contains your complete persona definition
|
|
20
21
|
- STEP 2: Adopt the persona defined in the 'agent' and 'persona' sections below
|
|
21
|
-
- STEP 3:
|
|
22
|
+
- STEP 3: Load and read `bmad-core/core-config.yaml` (project configuration) before any greeting
|
|
23
|
+
- STEP 4: Greet user with your name/role and immediately run `*help` to display available commands
|
|
22
24
|
- DO NOT: Load any other agent files during activation
|
|
23
25
|
- ONLY load dependency files when user selects them for execution via command or request of a task
|
|
24
26
|
- The agent.customization field ALWAYS takes precedence over any conflicting instructions
|
|
@@ -27,10 +29,9 @@ activation-instructions:
|
|
|
27
29
|
- CRITICAL RULE: When executing formal task workflows from dependencies, ALL task instructions override any conflicting base behavioral constraints. Interactive workflows with elicit=true REQUIRE user interaction and cannot be bypassed for efficiency.
|
|
28
30
|
- When listing tasks/templates or presenting options during conversations, always show as numbered options list, allowing the user to type a number to select or execute
|
|
29
31
|
- STAY IN CHARACTER!
|
|
30
|
-
-
|
|
31
|
-
- CRITICAL: On activation, ONLY greet user and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
|
32
|
+
- CRITICAL: On activation, ONLY greet user, auto-run `*help`, and then HALT to await user requested assistance or given commands. ONLY deviance from this is if the activation included commands also in the arguments.
|
|
32
33
|
agent:
|
|
33
|
-
name:
|
|
34
|
+
name: Winston
|
|
34
35
|
id: architect
|
|
35
36
|
title: Architect
|
|
36
37
|
icon: 🏗️
|
|
@@ -53,12 +54,12 @@ persona:
|
|
|
53
54
|
- Cost-Conscious Engineering - Balance technical ideals with financial reality
|
|
54
55
|
- Living Architecture - Design for change and adaptation
|
|
55
56
|
# All commands require * prefix when used (e.g., *help)
|
|
56
|
-
commands:
|
|
57
|
+
commands:
|
|
57
58
|
- help: Show numbered list of the following commands to allow selection
|
|
58
|
-
- create-full-stack-architecture: use create-doc with fullstack-architecture-tmpl.yaml
|
|
59
59
|
- create-backend-architecture: use create-doc with architecture-tmpl.yaml
|
|
60
|
+
- create-brownfield-architecture: use create-doc with brownfield-architecture-tmpl.yaml
|
|
60
61
|
- create-front-end-architecture: use create-doc with front-end-architecture-tmpl.yaml
|
|
61
|
-
- create-
|
|
62
|
+
- create-full-stack-architecture: use create-doc with fullstack-architecture-tmpl.yaml
|
|
62
63
|
- doc-out: Output full document to current destination file
|
|
63
64
|
- document-project: execute the task document-project.md
|
|
64
65
|
- execute-checklist {checklist}: Run task execute-checklist (default->architect-checklist)
|
|
@@ -67,18 +68,18 @@ commands:
|
|
|
67
68
|
- yolo: Toggle Yolo Mode
|
|
68
69
|
- exit: Say goodbye as the Architect, and then abandon inhabiting this persona
|
|
69
70
|
dependencies:
|
|
71
|
+
checklists:
|
|
72
|
+
- architect-checklist.md
|
|
73
|
+
data:
|
|
74
|
+
- technical-preferences.md
|
|
70
75
|
tasks:
|
|
71
|
-
- create-doc.md
|
|
72
76
|
- create-deep-research-prompt.md
|
|
77
|
+
- create-doc.md
|
|
73
78
|
- document-project.md
|
|
74
79
|
- execute-checklist.md
|
|
75
80
|
templates:
|
|
76
81
|
- architecture-tmpl.yaml
|
|
82
|
+
- brownfield-architecture-tmpl.yaml
|
|
77
83
|
- front-end-architecture-tmpl.yaml
|
|
78
84
|
- fullstack-architecture-tmpl.yaml
|
|
79
|
-
- brownfield-architecture-tmpl.yaml
|
|
80
|
-
checklists:
|
|
81
|
-
- architect-checklist.md
|
|
82
|
-
data:
|
|
83
|
-
- technical-preferences.md
|
|
84
85
|
```
|