@zeyue0329/xiaoma-cli 1.0.8 → 1.0.9
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/CHANGELOG.md +686 -0
- package/LICENSE +6 -1
- package/README.md +173 -460
- package/common/tasks/create-doc.md +3 -1
- 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/agents/analyst.txt +1143 -1118
- package/dist/agents/architect.txt +1555 -1531
- package/dist/agents/dev.txt +170 -22
- package/dist/agents/pm.txt +1103 -1106
- package/dist/agents/po.txt +329 -334
- package/dist/agents/qa.txt +1773 -154
- package/dist/agents/sm.txt +101 -102
- package/dist/agents/ux-expert.txt +93 -91
- package/dist/agents/xiaoma-master.txt +745 -673
- package/dist/agents/xiaoma-orchestrator.txt +107 -77
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +2386 -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 +11008 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-architect.txt +4031 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-designer.txt +3717 -0
- package/dist/expansion-packs/bmad-2d-unity-game-dev/agents/game-developer.txt +456 -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 +15450 -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 +6511 -0
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2087 -0
- package/dist/teams/team-all.txt +5710 -3857
- package/dist/teams/team-fullstack.txt +3242 -3157
- package/dist/teams/team-ide-minimal.txt +2330 -534
- package/dist/teams/team-no-ui.txt +2935 -2857
- 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/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 +128 -129
- 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 +377 -137
- package/tools/installer/config/ide-agent-config.yaml +3 -3
- package/tools/installer/config/install.config.yaml +73 -22
- package/tools/installer/lib/config-loader.js +48 -44
- package/tools/installer/lib/file-manager.js +91 -116
- package/tools/installer/lib/ide-base-setup.js +57 -56
- package/tools/installer/lib/ide-setup.js +816 -407
- package/tools/installer/lib/installer.js +915 -690
- 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 +26 -28
- package/tools/installer/package-lock.json +67 -56
- package/tools/installer/package.json +24 -23
- package/tools/lib/dependency-resolver.js +30 -34
- package/tools/lib/yaml-utils.js +7 -7
- package/tools/md-assets/web-agent-startup-instructions.md +1 -1
- 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 +208 -299
- package/tools/version-bump.js +41 -26
- package/tools/xiaoma-npx-wrapper.js +11 -11
- package/tools/yaml-format.js +56 -43
- package/xiaoma-core/agent-teams/team-all.yaml +2 -1
- package/xiaoma-core/agent-teams/team-fullstack.yaml +1 -0
- package/xiaoma-core/agent-teams/team-ide-minimal.yaml +1 -0
- package/xiaoma-core/agent-teams/team-no-ui.yaml +1 -0
- package/xiaoma-core/agents/analyst.md +20 -17
- package/xiaoma-core/agents/architect.md +15 -14
- 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/agents/xiaoma-master.md +24 -22
- package/xiaoma-core/agents/xiaoma-orchestrator.md +30 -33
- 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} +43 -37
- 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 +2 -0
- 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/.vscode/settings.json +0 -44
- 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/dev-cn.txt +0 -428
- package/docs/quick-start.md +0 -179
- package/tools/bmad-npx-wrapper.js +0 -39
- 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
20
|
const xiaomaScriptPath = path.join(__dirname, 'installer', 'bin', 'xiaoma.js');
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
if (!fs.existsSync(xiaomaScriptPath)) {
|
|
23
23
|
console.error('Error: Could not find xiaoma.js at', xiaomaScriptPath);
|
|
24
24
|
console.error('Current directory:', __dirname);
|
|
25
25
|
process.exit(1);
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
try {
|
|
29
|
-
execSync(`node "${xiaomaScriptPath}" ${
|
|
29
|
+
execSync(`node "${xiaomaScriptPath}" ${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,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 `xiaoma-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 `xiaoma-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
|
```
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<!-- Powered by BMAD™ Core -->
|
|
2
|
+
|
|
1
3
|
# dev
|
|
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 `xiaoma-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
|
|
@@ -29,16 +32,15 @@ activation-instructions:
|
|
|
29
32
|
- CRITICAL: Read the following full files as these are your explicit rules for development standards for this project - {root}/core-config.yaml devLoadAlwaysFiles list
|
|
30
33
|
- CRITICAL: Do NOT load any other files during startup aside from the assigned story and devLoadAlwaysFiles items, unless user requested you do or the following contradicts
|
|
31
34
|
- CRITICAL: Do NOT begin development until a story is not in draft mode and you are told to proceed
|
|
32
|
-
- 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.
|
|
35
|
+
- 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.
|
|
33
36
|
agent:
|
|
34
|
-
name:
|
|
37
|
+
name: James
|
|
35
38
|
id: dev
|
|
36
39
|
title: Full Stack Developer
|
|
37
40
|
icon: 💻
|
|
38
|
-
whenToUse:
|
|
41
|
+
whenToUse: 'Use for code implementation, debugging, refactoring, and development best practices'
|
|
39
42
|
customization:
|
|
40
43
|
|
|
41
|
-
|
|
42
44
|
persona:
|
|
43
45
|
role: Expert Senior Software Engineer & Implementation Specialist
|
|
44
46
|
style: Extremely concise, pragmatic, detail-oriented, solution-focused
|
|
@@ -47,30 +49,33 @@ persona:
|
|
|
47
49
|
|
|
48
50
|
core_principles:
|
|
49
51
|
- CRITICAL: Story has ALL info you will need aside from what you loaded during the startup commands. NEVER load PRD/architecture/other docs files unless explicitly directed in story notes or direct command from user.
|
|
52
|
+
- CRITICAL: ALWAYS check current folder structure before starting your story tasks, don't create new working directory if it already exists. Create new one when you're sure it's a brand new project.
|
|
50
53
|
- CRITICAL: ONLY update story file Dev Agent Record sections (checkboxes/Debug Log/Completion Notes/Change Log)
|
|
51
54
|
- CRITICAL: FOLLOW THE develop-story command when the user tells you to implement the story
|
|
52
55
|
- Numbered Options - Always use numbered lists when presenting choices to the user
|
|
53
56
|
|
|
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
|
-
-
|
|
60
|
+
- develop-story:
|
|
61
|
+
- order-of-execution: 'Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete'
|
|
62
|
+
- story-file-updates-ONLY:
|
|
63
|
+
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS.
|
|
64
|
+
- CRITICAL: You are ONLY authorized to edit these specific sections of story files - Tasks / Subtasks Checkboxes, Dev Agent Record section and all its subsections, Agent Model Used, Debug Log References, Completion Notes List, File List, Change Log, Status
|
|
65
|
+
- CRITICAL: DO NOT modify Status, Story, Acceptance Criteria, Dev Notes, Testing sections, or any other sections not listed above
|
|
66
|
+
- blocking: 'HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression'
|
|
67
|
+
- ready-for-review: 'Code matches requirements + All validations pass + Follows standards + File List complete'
|
|
68
|
+
- completion: "All Tasks and Subtasks marked [x] and have tests→Validations and full regression passes (DON'T BE LAZY, EXECUTE ALL TESTS and CONFIRM)→Ensure File List is Complete→run the task execute-checklist for the checklist story-dod-checklist→set story status: 'Ready for Review'→HALT"
|
|
58
69
|
- explain: teach me what and why you did whatever you just did in detail so I can learn. Explain to me as if you were training a junior engineer.
|
|
70
|
+
- review-qa: run task `apply-qa-fixes.md'
|
|
71
|
+
- run-tests: Execute linting and tests
|
|
59
72
|
- exit: Say goodbye as the Developer, and then abandon inhabiting this persona
|
|
60
|
-
- develop-story:
|
|
61
|
-
- order-of-execution: "Read (first or next) task→Implement Task and its subtasks→Write tests→Execute validations→Only if ALL pass, then update the task checkbox with [x]→Update story section File List to ensure it lists and new or modified or deleted source file→repeat order-of-execution until complete"
|
|
62
|
-
- story-file-updates-ONLY:
|
|
63
|
-
- CRITICAL: ONLY UPDATE THE STORY FILE WITH UPDATES TO SECTIONS INDICATED BELOW. DO NOT MODIFY ANY OTHER SECTIONS.
|
|
64
|
-
- CRITICAL: You are ONLY authorized to edit these specific sections of story files - Tasks / Subtasks Checkboxes, Dev Agent Record section and all its subsections, Agent Model Used, Debug Log References, Completion Notes List, File List, Change Log, Status
|
|
65
|
-
- CRITICAL: DO NOT modify Status, Story, Acceptance Criteria, Dev Notes, Testing sections, or any other sections not listed above
|
|
66
|
-
- blocking: "HALT for: Unapproved deps needed, confirm with user | Ambiguous after story check | 3 failures attempting to implement or fix something repeatedly | Missing config | Failing regression"
|
|
67
|
-
- ready-for-review: "Code matches requirements + All validations pass + Follows standards + File List complete"
|
|
68
|
-
- completion: "All Tasks and Subtasks marked [x] and have tests→Validations and full regression passes (DON'T BE LAZY, EXECUTE ALL TESTS and CONFIRM)→Ensure File List is Complete→run the task execute-checklist for the checklist story-dod-checklist→set story status: 'Ready for Review'→HALT"
|
|
69
73
|
|
|
70
74
|
dependencies:
|
|
75
|
+
checklists:
|
|
76
|
+
- story-dod-checklist.md
|
|
71
77
|
tasks:
|
|
78
|
+
- apply-qa-fixes.md
|
|
72
79
|
- execute-checklist.md
|
|
73
80
|
- validate-next-story.md
|
|
74
|
-
checklists:
|
|
75
|
-
- story-dod-checklist.md
|
|
76
81
|
```
|