Compare commits

...

33 Commits

Author SHA1 Message Date
Brian Madison
39e6db82b1 fix: rollback version from 5.0.0 to 4.3.0 and improve lint-staged config
- Reset both package.json files to version 4.3.0
- The v5.0.0 bump was accidental due to BREAKING CHANGE in commit message
- Enhanced lint-staged to check all YAML files in project including .bmad-core/
- This ensures husky catches YAML formatting issues before push

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:30:20 -05:00
semantic-release-bot
fbc3444240 chore(release): 5.0.0 [skip ci]
# [5.0.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v5.0.0) (2025-06-15)

### Bug Fixes

* add docs ([48ef875](48ef875f5e))
* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* BMAD install creates `.bmad-core/.bmad-core/` directory structure + updates ([#223](https://github.com/bmadcode/BMAD-METHOD/issues/223)) ([28b313c](28b313c01d))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))
* update dependency resolver to support both yml and yaml code blocks ([ba1e5ce](ba1e5ceb36))
* update glob usage to modern async API ([927515c](927515c089))
* update yaml-format.js to use dynamic chalk imports ([b53d954](b53d954b7a))

### Features

* enhance installer with multi-IDE support and sync version bumping ([ebfd4c7](ebfd4c7dd5))
* improve semantic-release automation and disable manual version bumping ([38a5024](38a5024026))
* sync IDE configurations across all platforms ([b6a2f5b](b6a2f5b25e))
* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
* web bundles include a simplified prd with architecture now for simpler project folderes not needing a full plown architecture doc! ([8773545](877354525e))

### BREAKING CHANGES

* Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 19:25:50 +00:00
Brian Madison
b6a2f5b25e feat: sync IDE configurations across all platforms
- Updated .bmad-core/web-bundles to include latest agent definitions
- Synced sm.md agent configuration across .claude, .windsurf, and .roo platforms
- Added fullstack-architecture-tmpl.md template to architect agent bundles
- Updated Roo Code README.md with current agent list
- Ensured consistent agent personas and commands across all IDEs

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:25:21 -05:00
Brian Madison
49e34f41b6 style: apply formatting fixes and yaml standardization
- Auto-formatting applied by prettier and yaml-format tools
- Standardized YAML code blocks to use 'yaml' instead of 'yml'
- Fixed quote escaping in YAML strings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:23:33 -05:00
Brian Madison
ba1e5ceb36 fix: update dependency resolver to support both yml and yaml code blocks
- Fix regex pattern to match both yml and yaml in agent markdown files
- This resolves validation failures after yaml-format standardized to 'yaml'

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:23:25 -05:00
Brian Madison
c5fe28e76b style: apply prettier and yaml formatting
Auto-formatting applied by prettier and yaml-format tools.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:20:19 -05:00
Brian Madison
b53d954b7a fix: update yaml-format.js to use dynamic chalk imports
- Convert all functions to async to support chalk ES module import
- Replace string.replace with manual regex processing for async formatYamlContent calls
- This resolves the ERR_REQUIRE_ESM error in GitHub Actions format step

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:20:12 -05:00
Brian Madison
38a5024026 feat: improve semantic-release automation and disable manual version bumping
- Add custom semantic-release plugin to sync installer package.json
- Update semantic-release config to include installer package.json in releases
- Disable manual version bump script in favor of conventional commits
- Add helper script for version synchronization
- This ensures semantic-release fully manages both package.json files

BREAKING CHANGE: Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:16:01 -05:00
Brian Madison
6d70c588c6 chore: reset version to 4.2.0 for semantic-release sync
Reset manual version bump to let semantic-release handle versioning going forward.
This aligns with the last semantic-release version (4.2.0) and allows proper
automated releases based on conventional commits.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:14:49 -05:00
Brian Madison
927515c089 fix: update glob usage to modern async API
- Remove promisify wrapper for glob since modern glob package is already async
- Fix ERR_INVALID_ARG_TYPE error in v3-to-v4-upgrader.js
- This resolves GitHub Actions validation failures

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-15 14:13:09 -05:00
Brian Madison
ebdafa41b6 packagelock 2025-06-15 14:08:53 -05:00
Brian Madison
c3c971781a chore: bump version to v4.2.1 2025-06-15 14:08:17 -05:00
Brian Madison
e9f1cc7d88 chore: remove test directories from commit 2025-06-15 14:07:41 -05:00
Brian Madison
ebfd4c7dd5 feat: enhance installer with multi-IDE support and sync version bumping 2025-06-15 14:07:25 -05:00
Brian Madison
877354525e feat: web bundles include a simplified prd with architecture now for simpler project folderes not needing a full plown architecture doc! 2025-06-15 13:00:01 -05:00
Kayvan Sylvan
28b313c01d fix: BMAD install creates .bmad-core/.bmad-core/ directory structure + updates (#223)
* chore: fix installation directory handling to use .bmad-core as default path

- Remove redundant ./ prefix from default directory
- Update all default paths from ./.bmad-core to .bmad-core
- Add logic to handle direct .bmad-core path selection
- Treat parent as project root when .bmad-core specified
- Simplify directory state detection for existing files
- Remove unknown_existing state type from installer logic

* chore: refactor installer to use modern JS patterns and improve code clarity

## CHANGES

- Replace require with node:path import
- Add block scoping to switch cases
- Remove unused options parameter from update
- Use optional chaining for ideConfig check
- Replace forEach with for...of loops
- Use template literals for string concatenation
- Add early return to avoid else block
- Update spell check dictionary entries

* chore: update dependencies to latest major versions

## CHANGES

- Update @kayvan/markdown-tree-parser to v1.5.0
- Update chalk to v5.4.1 for ESM support
- Update commander to v14.0.0 with Node 20 requirement
- Update fs-extra to v11.3.0
- Update glob to v11.0.3 with new API
- Update inquirer to v12.6.3 with modular design
- Update ora to v8.2.0 with improved features
2025-06-15 12:50:40 -05:00
semantic-release-bot
9a10a153fb chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* add docs ([48ef875](48ef875f5e))
* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 16:05:39 +00:00
Brian Madison
e08add957d simple prd workflow 2025-06-15 11:05:06 -05:00
semantic-release-bot
25c356b415 chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* add docs ([48ef875](48ef875f5e))
* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 14:59:49 +00:00
Kayvan Sylvan
732d536542 chore: update imports to Node.js prefix and add error handling improvements (#221)
## CHANGES

- Replace require('fs') with require('node:fs')
- Replace require('path') with require('node:path')
- Add debug logging for directory cleanup
- Add roomodes to VSCode dictionary
- Format README workflow guides section
- Improve error handling in installer
- Add fallback error message display
2025-06-15 09:59:25 -05:00
semantic-release-bot
e753d02a4b chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* add docs ([48ef875](48ef875f5e))
* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 06:19:47 +00:00
Brian Madison
54b6c90317 Merge branch 'main' of github.com:bmadcode/BMAD-METHOD 2025-06-15 01:19:04 -05:00
Brian Madison
48ef875f5e fix: add docs 2025-06-15 01:18:55 -05:00
semantic-release-bot
813c380785 chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 06:06:35 +00:00
Brian Madison
6c661adaff rules for driving agents 2025-06-15 01:05:56 -05:00
Brian Madison
193ed8f11f prd migration works well enough 2025-06-15 00:02:17 -05:00
Brian Madison
8b60410f7a fix upgrade of existing project 2025-06-14 23:49:10 -05:00
semantic-release-bot
6bdc0a82bb chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 01:41:03 +00:00
Brian Madison
6b920ebdb0 Merge branch 'main' of github.com:bmadcode/BMAD-METHOD 2025-06-14 20:40:10 -05:00
Brian Madison
1913aeec0a updates to doc and package 2025-06-14 20:39:46 -05:00
semantic-release-bot
c0ceed94c1 chore(release): 4.2.0 [skip ci]
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)

### Bug Fixes

* auto semantic versioning fix ([166ed04](166ed04767))
* auto semantic versioning fix again ([11260e4](11260e4395))
* resolve NPM token configuration ([620b09a](620b09a556))
* resolve NPM token configuration ([b447a8b](b447a8bd57))

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 01:31:05 +00:00
Brian Madison
2e4f9f0210 chore: bump version to v4.2.0 2025-06-14 20:30:36 -05:00
semantic-release-bot
00b9168963 chore(release): 1.1.0 [skip ci]
# [1.1.0](https://github.com/bmadcode/BMAD-METHOD/compare/v1.0.1...v1.1.0) (2025-06-15)

### Features

* update badges to use dynamic NPM version ([5a6fe36](5a6fe361d0))
2025-06-15 01:30:10 +00:00
67 changed files with 6153 additions and 2325 deletions

View File

@@ -2,27 +2,24 @@
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Mary
id: analyst
title: Business Analyst
icon: 📊
whenToUse: "Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery"
customization:
whenToUse: Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery
customization: null
persona:
role: Insightful Analyst & Strategic Ideation Partner
style: Analytical, inquisitive, creative, facilitative, objective, data-informed
identity: Strategic analyst specializing in brainstorming, market research, competitive analysis, and project briefing
focus: Research planning, ideation facilitation, strategic analysis, actionable insights
core_principles:
- Curiosity-Driven Inquiry - Ask probing "why" questions to uncover underlying truths
- Objective & Evidence-Based Analysis - Ground findings in verifiable data and credible sources
@@ -35,19 +32,16 @@ persona:
- Maintaining a Broad Perspective - Stay aware of market trends and dynamics
- Integrity of Information - Ensure accurate sourcing and representation
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*brainstorm {topic}" - Facilitate structured brainstorming session
- "*research {topic}" - Generate deep research prompt for investigation
- "*elicit" - Run advanced elicitation to clarify requirements
- "*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*brainstorm {topic}" - Facilitate structured brainstorming session'
- '*research {topic}" - Generate deep research prompt for investigation'
- '*elicit" - Run advanced elicitation to clarify requirements'
- '*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona'
dependencies:
tasks:
- brainstorming-techniques

View File

@@ -8,14 +8,12 @@ agent:
id: bmad-master
title: BMAD Master Task Executor
icon: 🧙
whenToUse: "Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities"
whenToUse: Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities
persona:
role: Master Task Executor & BMAD Method Expert
style: Efficient, direct, action-oriented. Executes any BMAD task/template/util/checklist with precision
identity: Universal executor of all BMAD-METHOD capabilities, directly runs any resource
focus: Direct execution without transformation, load resources only when needed
core_principles:
- Execute any resource directly without persona transformation
- Load resources at runtime, never pre-load
@@ -23,31 +21,30 @@ persona:
- Track execution state and guide multi-step processes
- Use numbered lists for choices
- Process (*) commands immediately
startup:
- Announce: "I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need."
- Announce: I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need.
- CRITICAL: Do NOT scan filesystem or load any resources during startup
- CRITICAL: Do NOT run discovery tasks automatically
- Wait for user request before any tool use
- Match request to resources, offer numbered options if unclear
- Load resources only when needed
- Load resources only when explicitly requested
commands:
- "*help" - Show commands
- "*chat" - Advanced elicitation + KB mode
- "*status" - Current context
- "*task/template/util/checklist/workflow {name}" - Execute (list if no name)
- "*list {type}" - List resources by type
- "*exit" - Exit (confirm)
- "*yolo" - Skip confirmations
- "*doc-out" - Output full document
- '*help" - Show commands'
- '*chat" - Advanced elicitation + KB mode'
- '*status" - Current context'
- '*task/template/util/checklist/workflow {name}" - Execute (list if no name)'
- '*list {type}" - List resources by type'
- '*exit" - Exit (confirm)'
- '*yolo" - Skip confirmations'
- '*doc-out" - Output full document'
fuzzy-matching:
- 85% confidence threshold
- Show numbered list if unsure
execution:
- Runtime discovery from filesystem
- Load resource → Execute instructions → Guide inputs → Provide feedback
- NEVER use tools during startup - only announce and wait
- Runtime discovery ONLY when user requests specific resources
- Workflow: User request → Runtime discovery → Load resource → Execute instructions → Guide inputs → Provide feedback
- Suggest related resources after completion
dependencies:
tasks:
- advanced-elicitation

View File

@@ -30,10 +30,11 @@ core_principles:
startup:
- Announce: Greet the user with your name and role, and inform of the *help command.
- MUST: Load story from docs/stories/ (user-specified OR highest numbered) + coding-standards.md
- MUST: Review ALL ACs, tasks, dev notes, debug refs. Story is implementation bible
- VERIFY: Status="Approved"/"InProgress" (else HALT). Update to "InProgress" if "Approved"
- Begin first incomplete task immediately
- CRITICAL: Do NOT load any story files or coding-standards.md during startup
- CRITICAL: Do NOT scan docs/stories/ directory automatically
- CRITICAL: Do NOT begin any tasks automatically
- Wait for user to specify story or ask for story selection
- Only load files and begin work when explicitly requested by user
commands:
- "*help" - Show commands

View File

@@ -4,25 +4,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: John
id: pm
title: Product Manager
icon: 📋
whenToUse: "Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication"
customization:
whenToUse: Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication
customization: null
persona:
role: Investigative Product Strategist & Market-Savvy PM
style: Analytical, inquisitive, data-driven, user-focused, pragmatic
identity: Product Manager specialized in document creation and product research
focus: Creating PRDs and other product documentation using templates
core_principles:
- Deeply understand "Why" - uncover root causes and motivations
- Champion the user - maintain relentless focus on target user value
@@ -32,16 +29,13 @@ persona:
- Collaborative & iterative approach
- Proactive risk identification
- Strategic thinking & outcome-oriented
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Deep conversation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*exit" - Say goodbye as the PM, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Deep conversation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*exit" - Say goodbye as the PM, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-doc
@@ -54,6 +48,7 @@ dependencies:
templates:
- prd-tmpl
- brownfield-prd-tmpl
- simple-project-prd-tmpl
checklists:
- pm-checklist
- change-checklist

View File

@@ -2,51 +2,46 @@
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Bob
id: sm
title: Scrum Master
icon: 🏃
whenToUse: "Use for story creation, epic management, retrospectives in party-mode, and agile process guidance"
customization:
whenToUse: Use for story creation, epic management, retrospectives in party-mode, and agile process guidance
customization: null
persona:
role: Technical Scrum Master - Story Preparation Specialist
style: Task-oriented, efficient, precise, focused on clear developer handoffs
identity: Story creation expert who prepares detailed, actionable stories for AI developers
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
core_principles:
- Task Adherence - Rigorously follow create-next-story procedures
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
- Clarity for Developer Handoff - Stories must be immediately actionable
- Focus on One Story at a Time - Complete one before starting next
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
- Confirm with user if they wish to prepare the next story for development
- If yes, execute all steps in Create Next Story Task document
- If no, await instructions offering Scrum Master assistance
- CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
- CRITICAL: Do NOT create or modify any files during startup
- Offer to help with story preparation but wait for explicit user confirmation
- Only execute tasks when user explicitly requests them
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent'
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - Conversational mode with advanced-elicitation for advice
- "*create" - Execute all steps in Create Next Story Task document
- "*pivot" - Run correct-course task (ensure no story already created first)
- "*checklist {checklist}" - Show numbered list of checklists, execute selection
- "*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task
- "*index-docs" - Update documentation index in /docs/index.md
- "*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
- '*create" - Execute all steps in Create Next Story Task document'
- '*pivot" - Run correct-course task (ensure no story already created first)'
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
- '*index-docs" - Update documentation index in /docs/index.md'
- '*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-next-story

View File

@@ -33,4 +33,15 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
7. **START_SMALL_SCALE_FAST**: Test concepts, then expand.
8. **EMBRACE_THE_CHAOS**: Adapt and overcome challenges.
## TODO: ADD MORE CONTENT ONCE STABLE ALPHA BUILD
## IDE Development Workflow
1. Shard the PRD (And Architecture documents if they exist also based on workflow type) using the Doc Shard task. The BMad-Master agent can help you do this. You will select the task, provide the doc to shard and the output folder. for example: `BMad Master, please Shard the docs/prd.md to the doc/prd/ folder` - this should ask you to use the md-tree-parser which is recommended, but either way shoudl result in multiple documents being created in the folder docs/prd.
2. If you have fullstack, front end and or back end architecture documents you will want to follow the same thing, but shard all of these to an architecture folder instead of a prd folder.
3. Ensure that you have at least one epic-n.md file in your prd folder, with the stories in order to develop.
4. The docs or architecture folder or prd folder should have a source tree document and coding standards at a minimum. These are used by the dev agent, and the many other sharded docs are used by the SM agent.
5. Use a new chat window to allow the SM agent to `draft the next story`.
6. If you agree the story is correct, mark it as approved in the status field, and then start a new chat window with the dev agent.
7. Ask the dev agent to implement the next story. If you draft the story file into the chat it will save time for the dev to have to find what the next one is. The dev should follow the tasks and subtasks marking them off as they are completed. The dev agent will also leave notes potentially for the SM to know about any deviations that might have occured to help draft the next story.
8. Once complete and you have verified, mark it done, and start a new chat. Ask the SM to draft the next story - repeating the cycle.
With this work flow, there is only 1 story in progress at a time, worked sequentially.

View File

@@ -2,197 +2,142 @@
## Purpose
Migrate BMAD-METHOD documents to match V4 template structure exactly, preserving all content while enforcing strict template compliance.
Simple document migration that cleans up heading formats and adds epic structure for PRDs.
## Task Requirements
1. **Input**: User MUST specify the document to migrate (e.g., `docs/prd.md`)
2. **Template**: User MUST specify the V4 template to use (e.g., `.bmad-core/templates/prd-tmpl.md`)
3. **Validation**: Verify document and template are compatible types
4. **Output**: Creates migrated document with original name, backs up original with `.bak` extension
[[LLM: VALIDATION REQUIREMENTS:
- Both input document and template paths MUST be provided by the user
- Do NOT assume or select templates automatically
- Validate that document type matches template type (e.g., PRD → PRD template)
- Reject incompatible migrations (e.g., PRD → architecture template)
]]
1. **Input**: User specifies the document to migrate (e.g., `docs/prd.md`)
2. **Detection**: Automatically determine if it's a PRD or other document type
3. **Migration**: Apply appropriate transformations
4. **Backup**: Create backup with `.bak` extension
## Migration Rules
### Strict Template Compliance
### For PRDs
[[LLM: CRITICAL RULES:
- Find all level 3 headings that appear to be epics
- Add a level 2 heading "## Epic #" (incrementing number) before each epic
- Also apply the heading cleanup rules below
1. The ONLY Level 2 headings (##) allowed are EXACTLY those in the V4 template
2. No additions, no removals, no modifications to Level 2 headings
3. All user content must be preserved and placed under appropriate template sections
4. Remove any existing table of contents
5. Never delete user content - find the most appropriate section
6. DO NOT add any LLM prompts, placeholders, or "TBD" content
7. Leave empty sections empty - no instructions or guidance text
### For All Documents
]]
- Find all level 2 headings (`## ...`)
- Remove leading numbers and symbols
- Keep only alphabetic characters and spaces
- **CRITICAL**: Do not lose any information - preserve all content under appropriate headings
- Examples:
- `## 1. Foo & Bar``## Foo Bar`
- `## 2.1 Technical Overview``## Technical Overview`
- `## 3) User Experience``## User Experience`
### Content Migration Process
### For Architecture Documents
1. **Read Template Structure**
- **PRIMARY GOAL**: Align level 2 headings to match template level 2 titles exactly
- **PRESERVE EVERYTHING**: Do not lose any information during migration
- Map existing content to the closest matching template section
- If content doesn't fit template sections, create appropriate level 3 subsections
- Extract all Level 2 headings from the V4 template
- These are the ONLY Level 2 headings allowed in the final document
## Detection Logic
2. **Analyze Original Document**
A document is considered a PRD if:
- Identify all content blocks
- Note original section organization
- Flag any custom sections
- Filename contains "prd" (case insensitive)
- OR main title contains "Product Requirements" or "PRD"
- OR contains sections like "User Stories", "Functional Requirements", "Acceptance Criteria"
3. **Create Backup First**
## Implementation Steps
- Rename original file: `mv filename.md filename.md.bak`
- This preserves the original completely
1. **Backup Original**: Copy `filename.md` to `filename.md.bak`
2. **Detect Type**: Check if document is a PRD
3. **Process Headings**:
- Clean all level 2 headings
- If PRD: Add epic structure before level 3 headings that look like epics
4. **Write Result**: Overwrite original file with migrated content
4. **Create New File**
## Epic Detection for PRDs
- Create new `filename.md` from scratch
- Start with template structure (all Level 2 headings)
- For each content block from original:
- Find the most appropriate V4 template section
- If original had Level 2 heading not in template, demote to Level 3
- Preserve all text, lists, code blocks, diagrams, tables
- Remove only table of contents sections
- **IMPORTANT**: Do NOT add any LLM prompts, placeholders, or instructions
- If a template section has no matching content, leave it empty
Level 3 headings are treated as epics if they:
5. **Validate Content Preservation**
- For each major content block from original (excluding headings):
- Use grep or search to verify it exists in new file
- Report any content that couldn't be verified
- This ensures no accidental content loss
- Describe features or functionality
- Are substantial sections (not just "Overview" or "Notes")
- Common epic patterns: "User Management", "Payment Processing", "Reporting Dashboard"
## Example Migration
The epic numbering starts at 1 and increments for each epic found.
## Example
### Before (PRD):
`````markdown
# Product Requirements Document
## 1. Executive Summary
Content here...
## 2.1 Functional Requirements & Specs
Content here...
### User Management System
Epic content...
### Payment Processing
Epic content...
## 3) Success Metrics
Content here...
````text
### After (PRD):
```markdown
Original (prd.md):
# Product Requirements Document
## Executive Summary
Content here...
[content...]
## Functional Requirements Specs
Content here...
## Custom Feature Section
## Epic 1
### User Management System
Epic content...
[content...]
## Epic 2
### Payment Processing
Epic content...
## Table of Contents
## Success Metrics
Content here...
```text
[toc...]
### Before (Non-PRD):
```markdown
# Architecture Document
Template (prd-tmpl.md):
## 1. System Overview
Content...
## Goals and Background Context
## 2.1 Technical Stack & Tools
Content...
```text
## Functional Requirements
### After (Non-PRD):
```markdown
# Architecture Document
## Success Metrics and KPIs
## System Overview
Content...
Result (prd.md):
## Technical Stack Tools
Content...
````
`````
## Goals and Background Context
```text
[executive summary content moved here]
### Custom Feature Section
[content preserved but demoted to Level 3]
## Functional Requirements
## Success Metrics and KPIs
```
## Execution Instructions
[[LLM: When executing this task:
1. Ask user for BOTH: input file path AND template path (do not assume)
2. Validate compatibility:
- Check document title/type (PRD, Architecture, etc.)
- Ensure template matches document type
- REJECT if types don't match (e.g., "Cannot migrate PRD to architecture template")
3. Read both files completely
4. Rename original to .bak: `mv original.md original.md.bak`
5. Extract Level 2 headings from template - these are MANDATORY
6. Create NEW file with original name
7. Build new content:
- Start with all template Level 2 sections
- Map original content to appropriate sections
- Demote any non-template Level 2 headings to Level 3
- Leave empty sections empty (no placeholders or instructions)
8. Validate content preservation:
- Extract key content snippets from .bak file
- Use grep to verify each exists in new file
- Report any missing content
9. Report migration summary:
- Sections moved/demoted
- Content validation results
- Any manual review needed
]]
### Document Type Detection
[[LLM: Detect document type by examining:
- File name (prd.md, architecture.md, etc.)
- Main title (# Product Requirements Document, # Architecture, etc.)
- Content patterns (user stories → PRD, technology stack → Architecture)
Template compatibility:
- prd-tmpl.md → Only for PRD documents
- architecture-tmpl.md → Only for backend/single architecture
- full-stack-architecture-tmpl.md → Only for architecture documents (can merge multiple)
]]
## Common Migrations
Valid migrations:
- `prd.md``.bmad-core/templates/prd-tmpl.md`
- `architecture.md``.bmad-core/templates/architecture-tmpl.md`
- `architecture.md` + `front-end-architecture.md``.bmad-core/templates/full-stack-architecture-tmpl.md`
Invalid migrations (MUST REJECT):
- `prd.md``.bmad-core/templates/architecture-tmpl.md`
- `architecture.md``.bmad-core/templates/prd-tmpl.md`
- `ux-ui-spec.md``.bmad-core/templates/prd-tmpl.md`
## Validation
After migration verify:
- [ ] All Level 2 headings match template exactly
- [ ] All original content is preserved (use grep validation)
- [ ] No table of contents remains
- [ ] Backup file exists with .bak extension
- [ ] Custom sections demoted to Level 3 or lower
### Content Validation Example
[[LLM: Example validation approach:
1. Extract significant text blocks from .bak file (>20 words)
2. For each block, grep in new file:
```bash
grep -F "first 10-15 words of content block" newfile.md
```
3. Track validation results:
- ✓ Found: content successfully migrated
- ✗ Missing: needs investigation
4. Report any content that couldn't be found
]]

View File

@@ -56,7 +56,7 @@ You are now operating as a Documentation Indexer. Your goal is to ensure all doc
The index should be organized as follows:
```markdown
`````markdown
# Documentation Index
## Root Documents
@@ -88,7 +88,8 @@ Documents within the `another-folder/` directory:
### [Nested Document](./another-folder/document.md)
Description of nested document.
```text
````text
### Index Entry Format
@@ -98,7 +99,10 @@ Each entry should follow this format:
### [Document Title](relative/path/to/file.md)
Brief description of the document's purpose and contents.
```
````
`````
````
### Rules of Operation
@@ -176,3 +180,4 @@ Please provide:
5. Whether to include hidden files/folders (starting with `.`)
Would you like to proceed with documentation indexing? Please provide the required input above.
````

View File

@@ -109,9 +109,9 @@ Document the choice and key services that will be used.]]
Use appropriate diagram type for clarity.]]
```mermaid
````mermaid
{{architecture_diagram}}
```
```text
### Architectural Patterns
@@ -222,7 +222,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
model_interface;
}
}
```
````
**Relationships:**
@@ -246,7 +246,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
**TypeScript Interface:**
```typescript
````typescript
interface User {
id: string;
email: string;
@@ -262,7 +262,7 @@ interface UserProfile {
bio?: string;
preferences: Record<string, any>;
}
```
```text
**Relationships:**
@@ -286,27 +286,30 @@ Use appropriate format for the chosen API style. If no API (e.g., static site),
^^CONDITION: has_rest_api^^
```yaml
```yml
openapi: 3.0.0
info:
title: { { api_title } }
version: { { api_version } }
description: { { api_description } }
title:
'[object Object]': null
version:
'[object Object]': null
description:
'[object Object]': null
servers:
- url: { { api_base_url } }
description: { { environment } }
# ... OpenAPI specification continues
```
- url:
'[object Object]': null
description:
'[object Object]': null
````
^^/CONDITION: has_rest_api^^
^^CONDITION: has_graphql_api^^
```graphql
````graphql
# GraphQL Schema
{{graphql_schema}}
```
```text
^^/CONDITION: has_graphql_api^^
@@ -319,7 +322,7 @@ servers:
trpc_routers;
}
}
```
````
^^/CONDITION: has_trpc_api^^
@@ -464,19 +467,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Component Organization:**
```
`````text
{{component_structure}}
```
```text
**Component Template:**
```typescript
````typescript
{
{
component_template;
}
}
```
```text
### State Management Architecture
@@ -490,7 +493,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
state_structure;
}
}
```
`````
**State Management Patterns:**
@@ -503,19 +506,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Route Organization:**
```
```text
{{route_structure}}
```
```text
**Protected Route Pattern:**
```typescript
````typescript
{
{
protected_route_example;
}
}
```
```text
### Frontend Services Layer
@@ -529,17 +532,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
api_client_setup;
}
}
```
````
**Service Example:**
```typescript
````typescript
{
{
service_example;
}
}
```
```text
## Backend Architecture
@@ -554,9 +557,11 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
^^CONDITION: serverless^^
**Function Organization:**
```
````
{{function_structure}}
```
````text
**Function Template:**
@@ -566,26 +571,26 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
function_template;
}
}
```
````
^^/CONDITION: serverless^^
^^CONDITION: traditional_server^^
**Controller/Route Organization:**
```
`````text
{{controller_structure}}
```
```text
**Controller Template:**
```typescript
````typescript
{
{
controller_template;
}
}
```
```text
^^/CONDITION: traditional_server^^
@@ -597,17 +602,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```sql
{{database_schema}}
```
`````
**Data Access Layer:**
```typescript
````typescript
{
{
repository_pattern;
}
}
```
```text
### Authentication and Authorization
@@ -617,17 +622,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```mermaid
{{auth_flow_diagram}}
```
````
**Middleware/Guards:**
```typescript
````typescript
{
{
auth_middleware;
}
}
```
```text
## Unified Project Structure
@@ -687,7 +692,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
├── package.json # Root package.json
├── {{monorepo_config}} # Monorepo configuration
└── README.md
```
````
@{example: vercel_structure}
apps/
@@ -709,19 +714,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Prerequisites:**
```bash
````bash
{{prerequisites_commands}}
```
```text
**Initial Setup:**
```bash
{{setup_commands}}
```
````
**Development Commands:**
```bash
````bash
# Start all services
{{start_all_command}}
@@ -733,7 +738,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Run tests
{{test_commands}}
```
```text
### Environment Configuration
@@ -748,7 +753,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Shared
{{shared_env_vars}}
```
````
## Deployment Architecture
@@ -771,9 +776,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### CI/CD Pipeline
```yaml
{ { cicd_pipeline_config } }
```
````yaml
'[object Object]': null
```text
### Environments
@@ -831,33 +836,42 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Testing Pyramid
```
````
E2E Tests
/ \
Integration Tests
/ \
Frontend Unit Backend Unit
```
/ \
Frontend Unit Backend Unit
```text
### Test Organization
**Frontend Tests:**
```
{{frontend_test_structure}}
```
````text
**Backend Tests:**
```
```text
{{backend_test_structure}}
```
```text
**E2E Tests:**
```
````
{{e2e_test_structure}}
```
````text
### Test Examples
@@ -869,17 +883,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
frontend_test_example;
}
}
```
````
**Backend API Test:**
```typescript
````typescript
{
{
backend_test_example;
}
}
```
```text
**E2E Test:**
@@ -889,7 +903,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
e2e_test_example;
}
}
```
````
## Coding Standards
@@ -930,9 +944,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Error Flow
```mermaid
````mermaid
{{error_flow_diagram}}
```
```text
### Error Response Format
@@ -946,17 +960,17 @@ interface ApiError {
requestId: string;
};
}
```
````
### Frontend Error Handling
```typescript
````typescript
{
{
frontend_error_handler;
}
}
```
```text
### Backend Error Handling
@@ -966,7 +980,7 @@ interface ApiError {
backend_error_handler;
}
}
```
````
## Monitoring and Observability
@@ -1000,35 +1014,3 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
## Checklist Results Report
[[LLM: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the `architect-checklist` and populate results here.]]
## Next Steps
[[LLM: Provide specific next steps for implementation.]]
### Implementation Order
1. **Environment Setup**
- Initialize monorepo structure
- Configure development environment
- Set up version control
2. **Foundation (Epic 1)**
- Implement authentication flow
- Set up database schema
- Create basic API structure
- Implement core UI components
3. **Feature Development**
- Follow story sequence from PRD
- Maintain type safety across stack
- Write tests as you go
### Developer Handoff Prompts
**For Scrum Master:**
"Create stories for {{Project Name}} using the PRD at docs/prd.md and this fullstack architecture at docs/fullstack-architecture.md. Focus on Epic 1 implementation."
**For Developer:**
"Implement Story 1.1 from docs/stories/epic1/story-1.1.md using the fullstack architecture at docs/fullstack-architecture.md. Follow the coding standards and use the defined tech stack."

View File

@@ -0,0 +1,461 @@
# {{Project Name}} Product Requirements Document (PRD)
[[LLM: If available, review any provided document or ask if any are optionally available: Project Brief]]
## Goals and Background Context
[[LLM: Populate the 2 child sections based on what we have received from user description or the provided brief. Allow user to review the 2 sections and offer changes before proceeding]]
### Goals
[[LLM: Bullet list of 1 line desired outcomes the PRD will deliver if successful - user and project desires]]
### Background Context
[[LLM: 1-2 short paragraphs summarizing the background context, such as what we learned in the brief without being redundant with the goals, what and why this solves a problem, what the current landscape or need is etc...]]
### Change Log
[[LLM: Track document versions and changes]]
| Date | Version | Description | Author |
| :--- | :------ | :---------- | :----- |
## Requirements
[[LLM: Draft the list of functional and non functional requirements under the two child sections, and immediately execute tasks#advanced-elicitation display]]
### Functional
[[LLM: Each Requirement will be a bullet markdown and an identifier sequence starting with FR`.]]
@{example: - FR6: The Todo List uses AI to detect and warn against adding potentially duplicate todo items that are worded differently.}
### Non Functional
[[LLM: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR`.]]
@{example: - NFR1: AWS service usage **must** aim to stay within free-tier limits where feasible.}
^^CONDITION: has_ui^^
## User Interface Design Goals
[[LLM: Capture high-level UI/UX vision to inform story creation and also generate a prompt for Lovable or V0 if the user would like either. Steps:
1. Pre-fill all subsections with educated guesses based on project context
2. Present the complete rendered section to user
3. Clearly let the user know where assumptions were made
4. Ask targeted questions for unclear/missing elements or areas needing more specification
5. This is NOT detailed UI spec - focus on product vision and user goals
6. After section completion, immediately apply `tasks#advanced-elicitation` protocol]]
### Overall UX Vision
### Key Interaction Paradigms
### Core Screens and Views
[[LLM: From a product perspective, what are the most critical screens or views necessary to deliver the the PRD values and goals? This is meant to be Conceptual High Level to Drive Rough Epic or User Stories]]
@{example}
- Login Screen
- Main Dashboard
- Item Detail Page
- Settings Page
@{/example}
### Accessibility: { None, WCAG, etc }
### Branding
[[LLM: Any known branding elements or style guides that must be incorporated?]]
@{example}
- Replicate the look and feel of early 1900s black and white cinema, including animated effects replicating film damage or projector glitches during page or state transitions.
- Attached is the full color pallet and tokens for our corporate branding.
@{/example}
### Target Device and Platforms
@{example}
"Web Responsive, and all mobile platforms", "IPhone Only", "ASCII Windows Desktop"
@{/example}
^^/CONDITION: has_ui^^
## Technical Assumptions
[[LLM: Gather technical decisions that will be used for this simple technical PRD that includes architecture decisions. Steps:
1. Check if `data#technical-preferences` file exists - use it to pre-populate choices
2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
3. For unknowns, offer guidance based on project goals and MVP scope
4. Document ALL technical choices with rationale (why this choice fits the project)
5. These become constraints for the Architect - be specific and complete
6. After section completion, apply `tasks#advanced-elicitation` protocol.]]
### Repository Structure: { Monorepo, Polyrepo, etc...}
### Service Architecture
[[LLM: CRITICAL DECISION - Document the high-level service architecture (e.g., Monolith, Microservices, Serverless functions within a Monorepo).]]
## Testing requirements
[[LLM: CRITICAL DECISION - Document the testing requirements, unit only, integration, e2e, manual, need for manual testing convenience methods).]]
### Additional Technical Assumptions and Requests
[[LLM: Throughout the entire process of drafting this document, if any other technical assumptions are raised or discovered appropriate for the architect, add them here as additional bulleted items]]
## Data Models
[[LLM: Define the core data models/entities that will be used in the front end (if there is one), core application or back end, and if both, shared between frontend and backend:
1. Review PRD requirements and identify key business entities
2. For each model, explain its purpose and relationships
3. Include key attributes and data types
4. Show relationships between models
5. Create TypeScript interfaces that can be shared
6. Discuss design decisions with user
Create a clear conceptual model before moving to database schema.
After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
<<REPEAT: data_model>>
### {{model_name}}
**Purpose:** {{model_purpose}}
**Key Attributes:**
- {{attribute_1}}: {{type_1}} - {{description_1}}
- {{attribute_2}}: {{type_2}} - {{description_2}}
**TypeScript Interface:**
````typescript
{
{
model_interface;
}
}
```text
**Relationships:**
- {{relationship_1}}
- {{relationship_2}}
<</REPEAT>>
@{example: data_model}
### User
**Purpose:** Represents authenticated users in the system
**Key Attributes:**
- id: string - Unique identifier
- email: string - User's email address
- name: string - Display name
- role: enum - User permission level
- timestamps: Date - Created and updated times
**TypeScript Interface:**
```typescript
interface User {
id: string;
email: string;
name: string;
role: "admin" | "user" | "guest";
createdAt: Date;
updatedAt: Date;
profile?: UserProfile;
}
interface UserProfile {
avatarUrl?: string;
bio?: string;
preferences: Record<string, any>;
}
````
**Relationships:**
- Has many Posts (1:n)
- Has one Profile (1:1)
@{/example}
## REST API Spec
[[LLM: Based on the chosen API style from Tech Stack:
1. If REST API, create an OpenAPI 3.0 specification
2. If GraphQL, provide the GraphQL schema
3. If tRPC, show router definitions
4. Include all endpoints from epics/stories
5. Define request/response schemas based on data models
6. Document authentication requirements
7. Include example requests/responses
Use appropriate format for the chosen API style. If no API (e.g., static site), skip this section.]]
^^CONDITION: has_rest_api^^
````yml
openapi: 3.0.0
info:
title:
'[object Object]': null
version:
'[object Object]': null
description:
'[object Object]': null
servers:
- url:
'[object Object]': null
description:
'[object Object]': null
```text
^^/CONDITION: has_rest_api^^
^^CONDITION: has_graphql_api^^
```graphql
# GraphQL Schema
{{graphql_schema}}
````
^^/CONDITION: has_graphql_api^^
^^CONDITION: has_trpc_api^^
```typescript
// tRPC Router Definitions
{
{
trpc_routers;
}
}
```
^^/CONDITION: has_trpc_api^^
[[LLM: After presenting the API spec (or noting its absence if not applicable), apply `tasks#advanced-elicitation` protocol]]
## Components
[[LLM: Based on the architectural patterns, tech stack, and data models from above:
1. Identify major logical components/services across the fullstack
2. Consider both frontend and backend components
3. Define clear boundaries and interfaces between components
4. For each component, specify:
- Primary responsibility
- Key interfaces/APIs exposed
- Dependencies on other components
- Technology specifics based on tech stack choices
5. Create component diagrams where helpful
6. After presenting all components, apply `tasks#advanced-elicitation` protocol]]
<<REPEAT: component>>
### {{component_name}}
**Responsibility:** {{component_description}}
**Key Interfaces:**
- {{interface_1}}
- {{interface_2}}
**Dependencies:** {{dependencies}}
**Technology Stack:** {{component_tech_details}}
<</REPEAT>>
### Component Diagrams
[[LLM: Create Mermaid diagrams to visualize component relationships. Options:
- C4 Container diagram for high-level view
- Component diagram for detailed internal structure
- Sequence diagrams for complex interactions
Choose the most appropriate for clarity
After presenting the diagrams, apply `tasks#advanced-elicitation` protocol]]
## External APIs
[[LLM: For each external service integration:
1. Identify APIs needed based on PRD requirements and component design
2. If documentation URLs are unknown, ask user for specifics
3. Document authentication methods and security considerations
4. List specific endpoints that will be used
5. Note any rate limits or usage constraints
If no external APIs are needed, state this explicitly and skip to next section.]]
^^CONDITION: has_external_apis^^
<<REPEAT: external_api>>
### {{api_name}} API
- **Purpose:** {{api_purpose}}
- **Documentation:** {{api_docs_url}}
- **Base URL(s):** {{api_base_url}}
- **Authentication:** {{auth_method}}
- **Rate Limits:** {{rate_limits}}
**Key Endpoints Used:**
<<REPEAT: endpoint>>
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
<</REPEAT>>
**Integration Notes:** {{integration_considerations}}
<</REPEAT>>
@{example: external_api}
### Stripe API
- **Purpose:** Payment processing and subscription management
- **Documentation:** https://stripe.com/docs/api
- **Base URL(s):** `https://api.stripe.com/v1`
- **Authentication:** Bearer token with secret key
- **Rate Limits:** 100 requests per second
**Key Endpoints Used:**
- `POST /customers` - Create customer profiles
- `POST /payment_intents` - Process payments
- `POST /subscriptions` - Manage subscriptions
@{/example}
^^/CONDITION: has_external_apis^^
[[LLM: After presenting external APIs (or noting their absence), apply `tasks#advanced-elicitation` protocol]]
## Coding Standards
[[LLM: Define MINIMAL but CRITICAL standards for AI agents. Focus only on project-specific rules that prevent common mistakes. These will be used by dev agents.
After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Critical Fullstack Rules
<<REPEAT: critical_rule>>
- **{{rule_name}}:** {{rule_description}}
<</REPEAT>>
@{example: critical_rules}
- **Type Sharing:** Always define types in packages/shared and import from there
- **API Calls:** Never make direct HTTP calls - use the service layer
- **Environment Variables:** Access only through config objects, never process.env directly
- **Error Handling:** All API routes must use the standard error handler
- **State Updates:** Never mutate state directly - use proper state management patterns
@{/example}
### Naming Conventions
| Element | Frontend | Backend | Example |
| :-------------- | :------------------- | :--------- | :------------------ |
| Components | PascalCase | - | `UserProfile.tsx` |
| Hooks | camelCase with 'use' | - | `useAuth.ts` |
| API Routes | - | kebab-case | `/api/user-profile` |
| Database Tables | - | snake_case | `user_profiles` |
## Epics
[[LLM: First, present a high-level list of all epics for user approval, the epic_list and immediately execute tasks#advanced-elicitation display. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
CRITICAL: Epics MUST be logically sequential following agile best practices:
- Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
- Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page
- Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
- Not every project needs multiple epics, an epic needs to deliver value. For example, an API completed can deliver value even if a UI is not complete and planned for a separate epic.
- Err on the side of less epics, but let the user know your rationale and offer options for splitting them if it seems some are too large or focused on disparate things.
- Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning.]]
<<REPEAT: epic_list>>
- Epic{{epic_number}} {{epic_title}}: {{short_goal}}
<</REPEAT>>
@{example: epic_list}
1. Foundation & Core Infrastructure: Establish project setup, authentication, and basic user management
2. Core Business Entities: Create and manage primary domain objects with CRUD operations
3. User Workflows & Interactions: Enable key user journeys and business processes
4. Reporting & Analytics: Provide insights and data visualization for users
@{/example}
[[LLM: After the epic list is approved, present each `epic_details` with all its stories and acceptance criteria as a complete review unit and immediately execute tasks#advanced-elicitation display, before moving on to the next epic.]]
<<REPEAT: epic_details>>
## Epic {{epic_number}} {{epic_title}}
{{epic_goal}} [[LLM: Expanded goal - 2-3 sentences describing the objective and value all the stories will achieve]]
[[LLM: CRITICAL STORY SEQUENCING REQUIREMENTS:
- Stories within each epic MUST be logically sequential
- Each story should be a "vertical slice" delivering complete functionality
- No story should depend on work from a later story or epic
- Identify and note any direct prerequisite stories
- Focus on "what" and "why" not "how" (leave technical implementation to Architect) yet be precise enough to support a logical sequential order of operations from story to story.
- Ensure each story delivers clear user or business value, try to avoid enablers and build them into stories that deliver value.
- Size stories for AI agent execution: Each story must be completable by a single AI agent in one focused session without context overflow
- Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained
- If a story seems complex, break it down further as long as it can deliver a vertical slice
- Each story should result in working, testable code before the agent's context window fills]]
<<REPEAT: story>>
### Story {{epic_number}}.{{story_number}} {{story_title}}
As a {{user_type}},
I want {{action}},
so that {{benefit}}.
#### Acceptance Criteria
[[LLM: Define clear, comprehensive, and testable acceptance criteria that:
- Precisely define what "done" means from a functional perspective
- Are unambiguous and serve as basis for verification
- Include any critical non-functional requirements from the PRD
- Consider local testability for backend/data components
- Specify UI/UX requirements and framework adherence where applicable
- Avoid cross-cutting concerns that should be in other stories or PRD sections]]
<<REPEAT: criteria>>
- {{criterion number}}: {{criteria}}
<</REPEAT>>
<</REPEAT>>
<</REPEAT>>
## Next Steps
### Design Architect Prompt
[[LLM: This section will contain the prompt for the Design Architect, keep it short and to the point to initiate create architecture mode using this document as input.]]

View File

@@ -49,12 +49,12 @@ Manual Test Steps: [[LLM: Include how if possible the user can manually test the
### Completion Notes List
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update - remove this line to the SM]]
[[LLM: (Dev Agent) Anything the SM needs to know that deviated from the story that might impact drafting the next story.]]
### Change Log
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update- remove this line to the SM]]
[[LLM: (Dev Agent) Track document versions and changes during development that deviate from story dev start]]
| Date | Version | Description | Author |

View File

@@ -43,27 +43,24 @@ These references map directly to bundle sections:
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Mary
id: analyst
title: Business Analyst
icon: 📊
whenToUse: "Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery"
customization:
whenToUse: Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery
customization: null
persona:
role: Insightful Analyst & Strategic Ideation Partner
style: Analytical, inquisitive, creative, facilitative, objective, data-informed
identity: Strategic analyst specializing in brainstorming, market research, competitive analysis, and project briefing
focus: Research planning, ideation facilitation, strategic analysis, actionable insights
core_principles:
- Curiosity-Driven Inquiry - Ask probing "why" questions to uncover underlying truths
- Objective & Evidence-Based Analysis - Ground findings in verifiable data and credible sources
@@ -76,19 +73,16 @@ persona:
- Maintaining a Broad Perspective - Stay aware of market trends and dynamics
- Integrity of Information - Ensure accurate sourcing and representation
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*brainstorm {topic}" - Facilitate structured brainstorming session
- "*research {topic}" - Generate deep research prompt for investigation
- "*elicit" - Run advanced elicitation to clarify requirements
- "*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*brainstorm {topic}" - Facilitate structured brainstorming session'
- '*research {topic}" - Generate deep research prompt for investigation'
- '*elicit" - Run advanced elicitation to clarify requirements'
- '*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona'
dependencies:
tasks:
- brainstorming-techniques
@@ -1646,7 +1640,18 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
7. **START_SMALL_SCALE_FAST**: Test concepts, then expand.
8. **EMBRACE_THE_CHAOS**: Adapt and overcome challenges.
## TODO: ADD MORE CONTENT ONCE STABLE ALPHA BUILD
## IDE Development Workflow
1. Shard the PRD (And Architecture documents if they exist also based on workflow type) using the Doc Shard task. The BMad-Master agent can help you do this. You will select the task, provide the doc to shard and the output folder. for example: `BMad Master, please Shard the docs/prd.md to the doc/prd/ folder` - this should ask you to use the md-tree-parser which is recommended, but either way shoudl result in multiple documents being created in the folder docs/prd.
2. If you have fullstack, front end and or back end architecture documents you will want to follow the same thing, but shard all of these to an architecture folder instead of a prd folder.
3. Ensure that you have at least one epic-n.md file in your prd folder, with the stories in order to develop.
4. The docs or architecture folder or prd folder should have a source tree document and coding standards at a minimum. These are used by the dev agent, and the many other sharded docs are used by the SM agent.
5. Use a new chat window to allow the SM agent to `draft the next story`.
6. If you agree the story is correct, mark it as approved in the status field, and then start a new chat window with the dev agent.
7. Ask the dev agent to implement the next story. If you draft the story file into the chat it will save time for the dev to have to find what the next one is. The dev should follow the tasks and subtasks marking them off as they are completed. The dev agent will also leave notes potentially for the SM to know about any deviations that might have occured to help draft the next story.
8. Once complete and you have verified, mark it done, and start a new chat. Ask the SM to draft the next story - repeating the cycle.
With this work flow, there is only 1 story in progress at a time, worked sequentially.
==================== END: data#bmad-kb ====================
==================== START: utils#template-format ====================

View File

@@ -1650,9 +1650,9 @@ Document the choice and key services that will be used.]]
Use appropriate diagram type for clarity.]]
```mermaid
````mermaid
{{architecture_diagram}}
```
```text
### Architectural Patterns
@@ -1763,7 +1763,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
model_interface;
}
}
```
````
**Relationships:**
@@ -1787,7 +1787,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
**TypeScript Interface:**
```typescript
````typescript
interface User {
id: string;
email: string;
@@ -1803,7 +1803,7 @@ interface UserProfile {
bio?: string;
preferences: Record<string, any>;
}
```
```text
**Relationships:**
@@ -1827,27 +1827,30 @@ Use appropriate format for the chosen API style. If no API (e.g., static site),
^^CONDITION: has_rest_api^^
```yaml
```yml
openapi: 3.0.0
info:
title: { { api_title } }
version: { { api_version } }
description: { { api_description } }
title:
'[object Object]': null
version:
'[object Object]': null
description:
'[object Object]': null
servers:
- url: { { api_base_url } }
description: { { environment } }
# ... OpenAPI specification continues
```
- url:
'[object Object]': null
description:
'[object Object]': null
````
^^/CONDITION: has_rest_api^^
^^CONDITION: has_graphql_api^^
```graphql
````graphql
# GraphQL Schema
{{graphql_schema}}
```
```text
^^/CONDITION: has_graphql_api^^
@@ -1860,7 +1863,7 @@ servers:
trpc_routers;
}
}
```
````
^^/CONDITION: has_trpc_api^^
@@ -2005,19 +2008,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Component Organization:**
```
`````text
{{component_structure}}
```
```text
**Component Template:**
```typescript
````typescript
{
{
component_template;
}
}
```
```text
### State Management Architecture
@@ -2031,7 +2034,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
state_structure;
}
}
```
`````
**State Management Patterns:**
@@ -2044,19 +2047,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Route Organization:**
```
```text
{{route_structure}}
```
```text
**Protected Route Pattern:**
```typescript
````typescript
{
{
protected_route_example;
}
}
```
```text
### Frontend Services Layer
@@ -2070,17 +2073,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
api_client_setup;
}
}
```
````
**Service Example:**
```typescript
````typescript
{
{
service_example;
}
}
```
```text
## Backend Architecture
@@ -2095,9 +2098,11 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
^^CONDITION: serverless^^
**Function Organization:**
```
````
{{function_structure}}
```
````text
**Function Template:**
@@ -2107,26 +2112,26 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
function_template;
}
}
```
````
^^/CONDITION: serverless^^
^^CONDITION: traditional_server^^
**Controller/Route Organization:**
```
`````text
{{controller_structure}}
```
```text
**Controller Template:**
```typescript
````typescript
{
{
controller_template;
}
}
```
```text
^^/CONDITION: traditional_server^^
@@ -2138,17 +2143,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```sql
{{database_schema}}
```
`````
**Data Access Layer:**
```typescript
````typescript
{
{
repository_pattern;
}
}
```
```text
### Authentication and Authorization
@@ -2158,17 +2163,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```mermaid
{{auth_flow_diagram}}
```
````
**Middleware/Guards:**
```typescript
````typescript
{
{
auth_middleware;
}
}
```
```text
## Unified Project Structure
@@ -2228,7 +2233,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
├── package.json # Root package.json
├── {{monorepo_config}} # Monorepo configuration
└── README.md
```
````
@{example: vercel_structure}
apps/
@@ -2250,19 +2255,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Prerequisites:**
```bash
````bash
{{prerequisites_commands}}
```
```text
**Initial Setup:**
```bash
{{setup_commands}}
```
````
**Development Commands:**
```bash
````bash
# Start all services
{{start_all_command}}
@@ -2274,7 +2279,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Run tests
{{test_commands}}
```
```text
### Environment Configuration
@@ -2289,7 +2294,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Shared
{{shared_env_vars}}
```
````
## Deployment Architecture
@@ -2312,9 +2317,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### CI/CD Pipeline
```yaml
{ { cicd_pipeline_config } }
```
````yaml
'[object Object]': null
```text
### Environments
@@ -2372,33 +2377,42 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Testing Pyramid
```
````
E2E Tests
/ \
Integration Tests
/ \
Frontend Unit Backend Unit
```
/ \
Frontend Unit Backend Unit
```text
### Test Organization
**Frontend Tests:**
```
{{frontend_test_structure}}
```
````text
**Backend Tests:**
```
```text
{{backend_test_structure}}
```
```text
**E2E Tests:**
```
````
{{e2e_test_structure}}
```
````text
### Test Examples
@@ -2410,17 +2424,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
frontend_test_example;
}
}
```
````
**Backend API Test:**
```typescript
````typescript
{
{
backend_test_example;
}
}
```
```text
**E2E Test:**
@@ -2430,7 +2444,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
e2e_test_example;
}
}
```
````
## Coding Standards
@@ -2471,9 +2485,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Error Flow
```mermaid
````mermaid
{{error_flow_diagram}}
```
```text
### Error Response Format
@@ -2487,17 +2501,17 @@ interface ApiError {
requestId: string;
};
}
```
````
### Frontend Error Handling
```typescript
````typescript
{
{
frontend_error_handler;
}
}
```
```text
### Backend Error Handling
@@ -2507,7 +2521,7 @@ interface ApiError {
backend_error_handler;
}
}
```
````
## Monitoring and Observability
@@ -2541,38 +2555,6 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
## Checklist Results Report
[[LLM: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the `architect-checklist` and populate results here.]]
## Next Steps
[[LLM: Provide specific next steps for implementation.]]
### Implementation Order
1. **Environment Setup**
- Initialize monorepo structure
- Configure development environment
- Set up version control
2. **Foundation (Epic 1)**
- Implement authentication flow
- Set up database schema
- Create basic API structure
- Implement core UI components
3. **Feature Development**
- Follow story sequence from PRD
- Maintain type safety across stack
- Write tests as you go
### Developer Handoff Prompts
**For Scrum Master:**
"Create stories for {{Project Name}} using the PRD at docs/prd.md and this fullstack architecture at docs/fullstack-architecture.md. Focus on Epic 1 implementation."
**For Developer:**
"Implement Story 1.1 from docs/stories/epic1/story-1.1.md using the fullstack architecture at docs/fullstack-architecture.md. Follow the coding standards and use the defined tech stack."
==================== END: templates#fullstack-architecture-tmpl ====================
==================== START: templates#brownfield-architecture-tmpl ====================

View File

@@ -49,14 +49,12 @@ agent:
id: bmad-master
title: BMAD Master Task Executor
icon: 🧙
whenToUse: "Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities"
whenToUse: Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities
persona:
role: Master Task Executor & BMAD Method Expert
style: Efficient, direct, action-oriented. Executes any BMAD task/template/util/checklist with precision
identity: Universal executor of all BMAD-METHOD capabilities, directly runs any resource
focus: Direct execution without transformation, load resources only when needed
core_principles:
- Execute any resource directly without persona transformation
- Load resources at runtime, never pre-load
@@ -64,31 +62,30 @@ persona:
- Track execution state and guide multi-step processes
- Use numbered lists for choices
- Process (*) commands immediately
startup:
- Announce: "I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need."
- Announce: I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need.
- CRITICAL: Do NOT scan filesystem or load any resources during startup
- CRITICAL: Do NOT run discovery tasks automatically
- Wait for user request before any tool use
- Match request to resources, offer numbered options if unclear
- Load resources only when needed
- Load resources only when explicitly requested
commands:
- "*help" - Show commands
- "*chat" - Advanced elicitation + KB mode
- "*status" - Current context
- "*task/template/util/checklist/workflow {name}" - Execute (list if no name)
- "*list {type}" - List resources by type
- "*exit" - Exit (confirm)
- "*yolo" - Skip confirmations
- "*doc-out" - Output full document
- '*help" - Show commands'
- '*chat" - Advanced elicitation + KB mode'
- '*status" - Current context'
- '*task/template/util/checklist/workflow {name}" - Execute (list if no name)'
- '*list {type}" - List resources by type'
- '*exit" - Exit (confirm)'
- '*yolo" - Skip confirmations'
- '*doc-out" - Output full document'
fuzzy-matching:
- 85% confidence threshold
- Show numbered list if unsure
execution:
- Runtime discovery from filesystem
- Load resource → Execute instructions → Guide inputs → Provide feedback
- NEVER use tools during startup - only announce and wait
- Runtime discovery ONLY when user requests specific resources
- Workflow: User request → Runtime discovery → Load resource → Execute instructions → Guide inputs → Provide feedback
- Suggest related resources after completion
dependencies:
tasks:
- advanced-elicitation
@@ -2625,7 +2622,7 @@ You are now operating as a Documentation Indexer. Your goal is to ensure all doc
The index should be organized as follows:
```markdown
`````markdown
# Documentation Index
## Root Documents
@@ -2657,7 +2654,8 @@ Documents within the `another-folder/` directory:
### [Nested Document](./another-folder/document.md)
Description of nested document.
```
````text
### Index Entry Format
@@ -2667,7 +2665,10 @@ Each entry should follow this format:
### [Document Title](relative/path/to/file.md)
Brief description of the document's purpose and contents.
```
````
`````
````
### Rules of Operation
@@ -2745,6 +2746,7 @@ Please provide:
5. Whether to include hidden files/folders (starting with `.`)
Would you like to proceed with documentation indexing? Please provide the required input above.
````
==================== END: tasks#index-docs ====================
==================== START: tasks#shard-doc ====================
@@ -5634,9 +5636,9 @@ Document the choice and key services that will be used.]]
Use appropriate diagram type for clarity.]]
```mermaid
````mermaid
{{architecture_diagram}}
```
```text
### Architectural Patterns
@@ -5747,7 +5749,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
model_interface;
}
}
```
````
**Relationships:**
@@ -5771,7 +5773,7 @@ After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
**TypeScript Interface:**
```typescript
````typescript
interface User {
id: string;
email: string;
@@ -5787,7 +5789,7 @@ interface UserProfile {
bio?: string;
preferences: Record<string, any>;
}
```
```text
**Relationships:**
@@ -5811,27 +5813,30 @@ Use appropriate format for the chosen API style. If no API (e.g., static site),
^^CONDITION: has_rest_api^^
```yaml
```yml
openapi: 3.0.0
info:
title: { { api_title } }
version: { { api_version } }
description: { { api_description } }
title:
'[object Object]': null
version:
'[object Object]': null
description:
'[object Object]': null
servers:
- url: { { api_base_url } }
description: { { environment } }
# ... OpenAPI specification continues
```
- url:
'[object Object]': null
description:
'[object Object]': null
````
^^/CONDITION: has_rest_api^^
^^CONDITION: has_graphql_api^^
```graphql
````graphql
# GraphQL Schema
{{graphql_schema}}
```
```text
^^/CONDITION: has_graphql_api^^
@@ -5844,7 +5849,7 @@ servers:
trpc_routers;
}
}
```
````
^^/CONDITION: has_trpc_api^^
@@ -5989,19 +5994,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Component Organization:**
```
`````text
{{component_structure}}
```
```text
**Component Template:**
```typescript
````typescript
{
{
component_template;
}
}
```
```text
### State Management Architecture
@@ -6015,7 +6020,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
state_structure;
}
}
```
`````
**State Management Patterns:**
@@ -6028,19 +6033,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Route Organization:**
```
```text
{{route_structure}}
```
```text
**Protected Route Pattern:**
```typescript
````typescript
{
{
protected_route_example;
}
}
```
```text
### Frontend Services Layer
@@ -6054,17 +6059,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
api_client_setup;
}
}
```
````
**Service Example:**
```typescript
````typescript
{
{
service_example;
}
}
```
```text
## Backend Architecture
@@ -6079,9 +6084,11 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
^^CONDITION: serverless^^
**Function Organization:**
```
````
{{function_structure}}
```
````text
**Function Template:**
@@ -6091,26 +6098,26 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
function_template;
}
}
```
````
^^/CONDITION: serverless^^
^^CONDITION: traditional_server^^
**Controller/Route Organization:**
```
`````text
{{controller_structure}}
```
```text
**Controller Template:**
```typescript
````typescript
{
{
controller_template;
}
}
```
```text
^^/CONDITION: traditional_server^^
@@ -6122,17 +6129,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```sql
{{database_schema}}
```
`````
**Data Access Layer:**
```typescript
````typescript
{
{
repository_pattern;
}
}
```
```text
### Authentication and Authorization
@@ -6142,17 +6149,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
```mermaid
{{auth_flow_diagram}}
```
````
**Middleware/Guards:**
```typescript
````typescript
{
{
auth_middleware;
}
}
```
```text
## Unified Project Structure
@@ -6212,7 +6219,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
├── package.json # Root package.json
├── {{monorepo_config}} # Monorepo configuration
└── README.md
```
````
@{example: vercel_structure}
apps/
@@ -6234,19 +6241,19 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
**Prerequisites:**
```bash
````bash
{{prerequisites_commands}}
```
```text
**Initial Setup:**
```bash
{{setup_commands}}
```
````
**Development Commands:**
```bash
````bash
# Start all services
{{start_all_command}}
@@ -6258,7 +6265,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Run tests
{{test_commands}}
```
```text
### Environment Configuration
@@ -6273,7 +6280,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
# Shared
{{shared_env_vars}}
```
````
## Deployment Architecture
@@ -6296,9 +6303,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### CI/CD Pipeline
```yaml
{ { cicd_pipeline_config } }
```
````yaml
'[object Object]': null
```text
### Environments
@@ -6356,33 +6363,42 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Testing Pyramid
```
````
E2E Tests
/ \
Integration Tests
/ \
Frontend Unit Backend Unit
```
/ \
Frontend Unit Backend Unit
```text
### Test Organization
**Frontend Tests:**
```
{{frontend_test_structure}}
```
````text
**Backend Tests:**
```
```text
{{backend_test_structure}}
```
```text
**E2E Tests:**
```
````
{{e2e_test_structure}}
```
````text
### Test Examples
@@ -6394,17 +6410,17 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
frontend_test_example;
}
}
```
````
**Backend API Test:**
```typescript
````typescript
{
{
backend_test_example;
}
}
```
```text
**E2E Test:**
@@ -6414,7 +6430,7 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
e2e_test_example;
}
}
```
````
## Coding Standards
@@ -6455,9 +6471,9 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Error Flow
```mermaid
````mermaid
{{error_flow_diagram}}
```
```text
### Error Response Format
@@ -6471,17 +6487,17 @@ interface ApiError {
requestId: string;
};
}
```
````
### Frontend Error Handling
```typescript
````typescript
{
{
frontend_error_handler;
}
}
```
```text
### Backend Error Handling
@@ -6491,7 +6507,7 @@ interface ApiError {
backend_error_handler;
}
}
```
````
## Monitoring and Observability
@@ -6525,38 +6541,6 @@ After presenting this section, apply `tasks#advanced-elicitation` protocol]]
## Checklist Results Report
[[LLM: Before running the checklist, offer to output the full architecture document. Once user confirms, execute the `architect-checklist` and populate results here.]]
## Next Steps
[[LLM: Provide specific next steps for implementation.]]
### Implementation Order
1. **Environment Setup**
- Initialize monorepo structure
- Configure development environment
- Set up version control
2. **Foundation (Epic 1)**
- Implement authentication flow
- Set up database schema
- Create basic API structure
- Implement core UI components
3. **Feature Development**
- Follow story sequence from PRD
- Maintain type safety across stack
- Write tests as you go
### Developer Handoff Prompts
**For Scrum Master:**
"Create stories for {{Project Name}} using the PRD at docs/prd.md and this fullstack architecture at docs/fullstack-architecture.md. Focus on Epic 1 implementation."
**For Developer:**
"Implement Story 1.1 from docs/stories/epic1/story-1.1.md using the fullstack architecture at docs/fullstack-architecture.md. Follow the coding standards and use the defined tech stack."
==================== END: templates#fullstack-architecture-tmpl ====================
==================== START: templates#market-research-tmpl ====================
@@ -7309,12 +7293,12 @@ Manual Test Steps: [[LLM: Include how if possible the user can manually test the
### Completion Notes List
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update - remove this line to the SM]]
[[LLM: (Dev Agent) Anything the SM needs to know that deviated from the story that might impact drafting the next story.]]
### Change Log
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update- remove this line to the SM]]
[[LLM: (Dev Agent) Track document versions and changes during development that deviate from story dev start]]
| Date | Version | Description | Author |
@@ -9115,7 +9099,18 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
7. **START_SMALL_SCALE_FAST**: Test concepts, then expand.
8. **EMBRACE_THE_CHAOS**: Adapt and overcome challenges.
## TODO: ADD MORE CONTENT ONCE STABLE ALPHA BUILD
## IDE Development Workflow
1. Shard the PRD (And Architecture documents if they exist also based on workflow type) using the Doc Shard task. The BMad-Master agent can help you do this. You will select the task, provide the doc to shard and the output folder. for example: `BMad Master, please Shard the docs/prd.md to the doc/prd/ folder` - this should ask you to use the md-tree-parser which is recommended, but either way shoudl result in multiple documents being created in the folder docs/prd.
2. If you have fullstack, front end and or back end architecture documents you will want to follow the same thing, but shard all of these to an architecture folder instead of a prd folder.
3. Ensure that you have at least one epic-n.md file in your prd folder, with the stories in order to develop.
4. The docs or architecture folder or prd folder should have a source tree document and coding standards at a minimum. These are used by the dev agent, and the many other sharded docs are used by the SM agent.
5. Use a new chat window to allow the SM agent to `draft the next story`.
6. If you agree the story is correct, mark it as approved in the status field, and then start a new chat window with the dev agent.
7. Ask the dev agent to implement the next story. If you draft the story file into the chat it will save time for the dev to have to find what the next one is. The dev should follow the tasks and subtasks marking them off as they are completed. The dev agent will also leave notes potentially for the SM to know about any deviations that might have occured to help draft the next story.
8. Once complete and you have verified, mark it done, and start a new chat. Ask the SM to draft the next story - repeating the cycle.
With this work flow, there is only 1 story in progress at a time, worked sequentially.
==================== END: data#bmad-kb ====================
==================== START: data#technical-preferences ====================

View File

@@ -1195,7 +1195,18 @@ You are the "Vibe CEO" - thinking like a CEO with unlimited resources and a sing
7. **START_SMALL_SCALE_FAST**: Test concepts, then expand.
8. **EMBRACE_THE_CHAOS**: Adapt and overcome challenges.
## TODO: ADD MORE CONTENT ONCE STABLE ALPHA BUILD
## IDE Development Workflow
1. Shard the PRD (And Architecture documents if they exist also based on workflow type) using the Doc Shard task. The BMad-Master agent can help you do this. You will select the task, provide the doc to shard and the output folder. for example: `BMad Master, please Shard the docs/prd.md to the doc/prd/ folder` - this should ask you to use the md-tree-parser which is recommended, but either way shoudl result in multiple documents being created in the folder docs/prd.
2. If you have fullstack, front end and or back end architecture documents you will want to follow the same thing, but shard all of these to an architecture folder instead of a prd folder.
3. Ensure that you have at least one epic-n.md file in your prd folder, with the stories in order to develop.
4. The docs or architecture folder or prd folder should have a source tree document and coding standards at a minimum. These are used by the dev agent, and the many other sharded docs are used by the SM agent.
5. Use a new chat window to allow the SM agent to `draft the next story`.
6. If you agree the story is correct, mark it as approved in the status field, and then start a new chat window with the dev agent.
7. Ask the dev agent to implement the next story. If you draft the story file into the chat it will save time for the dev to have to find what the next one is. The dev should follow the tasks and subtasks marking them off as they are completed. The dev agent will also leave notes potentially for the SM to know about any deviations that might have occured to help draft the next story.
8. Once complete and you have verified, mark it done, and start a new chat. Ask the SM to draft the next story - repeating the cycle.
With this work flow, there is only 1 story in progress at a time, worked sequentially.
==================== END: data#bmad-kb ====================
==================== START: utils#workflow-management ====================

View File

@@ -71,10 +71,11 @@ core_principles:
startup:
- Announce: Greet the user with your name and role, and inform of the *help command.
- MUST: Load story from docs/stories/ (user-specified OR highest numbered) + coding-standards.md
- MUST: Review ALL ACs, tasks, dev notes, debug refs. Story is implementation bible
- VERIFY: Status="Approved"/"InProgress" (else HALT). Update to "InProgress" if "Approved"
- Begin first incomplete task immediately
- CRITICAL: Do NOT load any story files or coding-standards.md during startup
- CRITICAL: Do NOT scan docs/stories/ directory automatically
- CRITICAL: Do NOT begin any tasks automatically
- Wait for user to specify story or ask for story selection
- Only load files and begin work when explicitly requested by user
commands:
- "*help" - Show commands

View File

@@ -45,25 +45,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: John
id: pm
title: Product Manager
icon: 📋
whenToUse: "Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication"
customization:
whenToUse: Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication
customization: null
persona:
role: Investigative Product Strategist & Market-Savvy PM
style: Analytical, inquisitive, data-driven, user-focused, pragmatic
identity: Product Manager specialized in document creation and product research
focus: Creating PRDs and other product documentation using templates
core_principles:
- Deeply understand "Why" - uncover root causes and motivations
- Champion the user - maintain relentless focus on target user value
@@ -73,16 +70,13 @@ persona:
- Collaborative & iterative approach
- Proactive risk identification
- Strategic thinking & outcome-oriented
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Deep conversation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*exit" - Say goodbye as the PM, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Deep conversation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*exit" - Say goodbye as the PM, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-doc
@@ -95,6 +89,7 @@ dependencies:
templates:
- prd-tmpl
- brownfield-prd-tmpl
- simple-project-prd-tmpl
checklists:
- pm-checklist
- change-checklist
@@ -1597,6 +1592,470 @@ so that {{benefit}}.
<</REPEAT>>
==================== END: templates#brownfield-prd-tmpl ====================
==================== START: templates#simple-project-prd-tmpl ====================
# {{Project Name}} Product Requirements Document (PRD)
[[LLM: If available, review any provided document or ask if any are optionally available: Project Brief]]
## Goals and Background Context
[[LLM: Populate the 2 child sections based on what we have received from user description or the provided brief. Allow user to review the 2 sections and offer changes before proceeding]]
### Goals
[[LLM: Bullet list of 1 line desired outcomes the PRD will deliver if successful - user and project desires]]
### Background Context
[[LLM: 1-2 short paragraphs summarizing the background context, such as what we learned in the brief without being redundant with the goals, what and why this solves a problem, what the current landscape or need is etc...]]
### Change Log
[[LLM: Track document versions and changes]]
| Date | Version | Description | Author |
| :--- | :------ | :---------- | :----- |
## Requirements
[[LLM: Draft the list of functional and non functional requirements under the two child sections, and immediately execute tasks#advanced-elicitation display]]
### Functional
[[LLM: Each Requirement will be a bullet markdown and an identifier sequence starting with FR`.]]
@{example: - FR6: The Todo List uses AI to detect and warn against adding potentially duplicate todo items that are worded differently.}
### Non Functional
[[LLM: Each Requirement will be a bullet markdown and an identifier sequence starting with NFR`.]]
@{example: - NFR1: AWS service usage **must** aim to stay within free-tier limits where feasible.}
^^CONDITION: has_ui^^
## User Interface Design Goals
[[LLM: Capture high-level UI/UX vision to inform story creation and also generate a prompt for Lovable or V0 if the user would like either. Steps:
1. Pre-fill all subsections with educated guesses based on project context
2. Present the complete rendered section to user
3. Clearly let the user know where assumptions were made
4. Ask targeted questions for unclear/missing elements or areas needing more specification
5. This is NOT detailed UI spec - focus on product vision and user goals
6. After section completion, immediately apply `tasks#advanced-elicitation` protocol]]
### Overall UX Vision
### Key Interaction Paradigms
### Core Screens and Views
[[LLM: From a product perspective, what are the most critical screens or views necessary to deliver the the PRD values and goals? This is meant to be Conceptual High Level to Drive Rough Epic or User Stories]]
@{example}
- Login Screen
- Main Dashboard
- Item Detail Page
- Settings Page
@{/example}
### Accessibility: { None, WCAG, etc }
### Branding
[[LLM: Any known branding elements or style guides that must be incorporated?]]
@{example}
- Replicate the look and feel of early 1900s black and white cinema, including animated effects replicating film damage or projector glitches during page or state transitions.
- Attached is the full color pallet and tokens for our corporate branding.
@{/example}
### Target Device and Platforms
@{example}
"Web Responsive, and all mobile platforms", "IPhone Only", "ASCII Windows Desktop"
@{/example}
^^/CONDITION: has_ui^^
## Technical Assumptions
[[LLM: Gather technical decisions that will be used for this simple technical PRD that includes architecture decisions. Steps:
1. Check if `data#technical-preferences` file exists - use it to pre-populate choices
2. Ask user about: languages, frameworks, starter templates, libraries, APIs, deployment targets
3. For unknowns, offer guidance based on project goals and MVP scope
4. Document ALL technical choices with rationale (why this choice fits the project)
5. These become constraints for the Architect - be specific and complete
6. After section completion, apply `tasks#advanced-elicitation` protocol.]]
### Repository Structure: { Monorepo, Polyrepo, etc...}
### Service Architecture
[[LLM: CRITICAL DECISION - Document the high-level service architecture (e.g., Monolith, Microservices, Serverless functions within a Monorepo).]]
## Testing requirements
[[LLM: CRITICAL DECISION - Document the testing requirements, unit only, integration, e2e, manual, need for manual testing convenience methods).]]
### Additional Technical Assumptions and Requests
[[LLM: Throughout the entire process of drafting this document, if any other technical assumptions are raised or discovered appropriate for the architect, add them here as additional bulleted items]]
## Data Models
[[LLM: Define the core data models/entities that will be used in the front end (if there is one), core application or back end, and if both, shared between frontend and backend:
1. Review PRD requirements and identify key business entities
2. For each model, explain its purpose and relationships
3. Include key attributes and data types
4. Show relationships between models
5. Create TypeScript interfaces that can be shared
6. Discuss design decisions with user
Create a clear conceptual model before moving to database schema.
After presenting all data models, apply `tasks#advanced-elicitation` protocol]]
<<REPEAT: data_model>>
### {{model_name}}
**Purpose:** {{model_purpose}}
**Key Attributes:**
- {{attribute_1}}: {{type_1}} - {{description_1}}
- {{attribute_2}}: {{type_2}} - {{description_2}}
**TypeScript Interface:**
````typescript
{
{
model_interface;
}
}
```text
**Relationships:**
- {{relationship_1}}
- {{relationship_2}}
<</REPEAT>>
@{example: data_model}
### User
**Purpose:** Represents authenticated users in the system
**Key Attributes:**
- id: string - Unique identifier
- email: string - User's email address
- name: string - Display name
- role: enum - User permission level
- timestamps: Date - Created and updated times
**TypeScript Interface:**
```typescript
interface User {
id: string;
email: string;
name: string;
role: "admin" | "user" | "guest";
createdAt: Date;
updatedAt: Date;
profile?: UserProfile;
}
interface UserProfile {
avatarUrl?: string;
bio?: string;
preferences: Record<string, any>;
}
````
**Relationships:**
- Has many Posts (1:n)
- Has one Profile (1:1)
@{/example}
## REST API Spec
[[LLM: Based on the chosen API style from Tech Stack:
1. If REST API, create an OpenAPI 3.0 specification
2. If GraphQL, provide the GraphQL schema
3. If tRPC, show router definitions
4. Include all endpoints from epics/stories
5. Define request/response schemas based on data models
6. Document authentication requirements
7. Include example requests/responses
Use appropriate format for the chosen API style. If no API (e.g., static site), skip this section.]]
^^CONDITION: has_rest_api^^
````yml
openapi: 3.0.0
info:
title:
'[object Object]': null
version:
'[object Object]': null
description:
'[object Object]': null
servers:
- url:
'[object Object]': null
description:
'[object Object]': null
```text
^^/CONDITION: has_rest_api^^
^^CONDITION: has_graphql_api^^
```graphql
# GraphQL Schema
{{graphql_schema}}
````
^^/CONDITION: has_graphql_api^^
^^CONDITION: has_trpc_api^^
```typescript
// tRPC Router Definitions
{
{
trpc_routers;
}
}
```
^^/CONDITION: has_trpc_api^^
[[LLM: After presenting the API spec (or noting its absence if not applicable), apply `tasks#advanced-elicitation` protocol]]
## Components
[[LLM: Based on the architectural patterns, tech stack, and data models from above:
1. Identify major logical components/services across the fullstack
2. Consider both frontend and backend components
3. Define clear boundaries and interfaces between components
4. For each component, specify:
- Primary responsibility
- Key interfaces/APIs exposed
- Dependencies on other components
- Technology specifics based on tech stack choices
5. Create component diagrams where helpful
6. After presenting all components, apply `tasks#advanced-elicitation` protocol]]
<<REPEAT: component>>
### {{component_name}}
**Responsibility:** {{component_description}}
**Key Interfaces:**
- {{interface_1}}
- {{interface_2}}
**Dependencies:** {{dependencies}}
**Technology Stack:** {{component_tech_details}}
<</REPEAT>>
### Component Diagrams
[[LLM: Create Mermaid diagrams to visualize component relationships. Options:
- C4 Container diagram for high-level view
- Component diagram for detailed internal structure
- Sequence diagrams for complex interactions
Choose the most appropriate for clarity
After presenting the diagrams, apply `tasks#advanced-elicitation` protocol]]
## External APIs
[[LLM: For each external service integration:
1. Identify APIs needed based on PRD requirements and component design
2. If documentation URLs are unknown, ask user for specifics
3. Document authentication methods and security considerations
4. List specific endpoints that will be used
5. Note any rate limits or usage constraints
If no external APIs are needed, state this explicitly and skip to next section.]]
^^CONDITION: has_external_apis^^
<<REPEAT: external_api>>
### {{api_name}} API
- **Purpose:** {{api_purpose}}
- **Documentation:** {{api_docs_url}}
- **Base URL(s):** {{api_base_url}}
- **Authentication:** {{auth_method}}
- **Rate Limits:** {{rate_limits}}
**Key Endpoints Used:**
<<REPEAT: endpoint>>
- `{{method}} {{endpoint_path}}` - {{endpoint_purpose}}
<</REPEAT>>
**Integration Notes:** {{integration_considerations}}
<</REPEAT>>
@{example: external_api}
### Stripe API
- **Purpose:** Payment processing and subscription management
- **Documentation:** https://stripe.com/docs/api
- **Base URL(s):** `https://api.stripe.com/v1`
- **Authentication:** Bearer token with secret key
- **Rate Limits:** 100 requests per second
**Key Endpoints Used:**
- `POST /customers` - Create customer profiles
- `POST /payment_intents` - Process payments
- `POST /subscriptions` - Manage subscriptions
@{/example}
^^/CONDITION: has_external_apis^^
[[LLM: After presenting external APIs (or noting their absence), apply `tasks#advanced-elicitation` protocol]]
## Coding Standards
[[LLM: Define MINIMAL but CRITICAL standards for AI agents. Focus only on project-specific rules that prevent common mistakes. These will be used by dev agents.
After presenting this section, apply `tasks#advanced-elicitation` protocol]]
### Critical Fullstack Rules
<<REPEAT: critical_rule>>
- **{{rule_name}}:** {{rule_description}}
<</REPEAT>>
@{example: critical_rules}
- **Type Sharing:** Always define types in packages/shared and import from there
- **API Calls:** Never make direct HTTP calls - use the service layer
- **Environment Variables:** Access only through config objects, never process.env directly
- **Error Handling:** All API routes must use the standard error handler
- **State Updates:** Never mutate state directly - use proper state management patterns
@{/example}
### Naming Conventions
| Element | Frontend | Backend | Example |
| :-------------- | :------------------- | :--------- | :------------------ |
| Components | PascalCase | - | `UserProfile.tsx` |
| Hooks | camelCase with 'use' | - | `useAuth.ts` |
| API Routes | - | kebab-case | `/api/user-profile` |
| Database Tables | - | snake_case | `user_profiles` |
## Epics
[[LLM: First, present a high-level list of all epics for user approval, the epic_list and immediately execute tasks#advanced-elicitation display. Each epic should have a title and a short (1 sentence) goal statement. This allows the user to review the overall structure before diving into details.
CRITICAL: Epics MUST be logically sequential following agile best practices:
- Each epic should deliver a significant, end-to-end, fully deployable increment of testable functionality
- Epic 1 must establish foundational project infrastructure (app setup, Git, CI/CD, core services) unless we are adding new functionality to an existing app, while also delivering an initial piece of functionality, even as simple as a health-check route or display of a simple canary page
- Each subsequent epic builds upon previous epics' functionality delivering major blocks of functionality that provide tangible value to users or business when deployed
- Not every project needs multiple epics, an epic needs to deliver value. For example, an API completed can deliver value even if a UI is not complete and planned for a separate epic.
- Err on the side of less epics, but let the user know your rationale and offer options for splitting them if it seems some are too large or focused on disparate things.
- Cross Cutting Concerns should flow through epics and stories and not be final stories. For example, adding a logging framework as a last story of an epic, or at the end of a project as a final epic or story would be terrible as we would not have logging from the beginning.]]
<<REPEAT: epic_list>>
- Epic{{epic_number}} {{epic_title}}: {{short_goal}}
<</REPEAT>>
@{example: epic_list}
1. Foundation & Core Infrastructure: Establish project setup, authentication, and basic user management
2. Core Business Entities: Create and manage primary domain objects with CRUD operations
3. User Workflows & Interactions: Enable key user journeys and business processes
4. Reporting & Analytics: Provide insights and data visualization for users
@{/example}
[[LLM: After the epic list is approved, present each `epic_details` with all its stories and acceptance criteria as a complete review unit and immediately execute tasks#advanced-elicitation display, before moving on to the next epic.]]
<<REPEAT: epic_details>>
## Epic {{epic_number}} {{epic_title}}
{{epic_goal}} [[LLM: Expanded goal - 2-3 sentences describing the objective and value all the stories will achieve]]
[[LLM: CRITICAL STORY SEQUENCING REQUIREMENTS:
- Stories within each epic MUST be logically sequential
- Each story should be a "vertical slice" delivering complete functionality
- No story should depend on work from a later story or epic
- Identify and note any direct prerequisite stories
- Focus on "what" and "why" not "how" (leave technical implementation to Architect) yet be precise enough to support a logical sequential order of operations from story to story.
- Ensure each story delivers clear user or business value, try to avoid enablers and build them into stories that deliver value.
- Size stories for AI agent execution: Each story must be completable by a single AI agent in one focused session without context overflow
- Think "junior developer working for 2-4 hours" - stories must be small, focused, and self-contained
- If a story seems complex, break it down further as long as it can deliver a vertical slice
- Each story should result in working, testable code before the agent's context window fills]]
<<REPEAT: story>>
### Story {{epic_number}}.{{story_number}} {{story_title}}
As a {{user_type}},
I want {{action}},
so that {{benefit}}.
#### Acceptance Criteria
[[LLM: Define clear, comprehensive, and testable acceptance criteria that:
- Precisely define what "done" means from a functional perspective
- Are unambiguous and serve as basis for verification
- Include any critical non-functional requirements from the PRD
- Consider local testability for backend/data components
- Specify UI/UX requirements and framework adherence where applicable
- Avoid cross-cutting concerns that should be in other stories or PRD sections]]
<<REPEAT: criteria>>
- {{criterion number}}: {{criteria}}
<</REPEAT>>
<</REPEAT>>
<</REPEAT>>
## Next Steps
### Design Architect Prompt
[[LLM: This section will contain the prompt for the Design Architect, keep it short and to the point to initiate create architecture mode using this document as input.]]
==================== END: templates#simple-project-prd-tmpl ====================
==================== START: checklists#pm-checklist ====================
# Product Manager (PM) Requirements Checklist

View File

@@ -818,12 +818,12 @@ Manual Test Steps: [[LLM: Include how if possible the user can manually test the
### Completion Notes List
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update - remove this line to the SM]]
[[LLM: (Dev Agent) Anything the SM needs to know that deviated from the story that might impact drafting the next story.]]
### Change Log
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update- remove this line to the SM]]
[[LLM: (Dev Agent) Track document versions and changes during development that deviate from story dev start]]
| Date | Version | Description | Author |

View File

@@ -43,51 +43,46 @@ These references map directly to bundle sections:
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Bob
id: sm
title: Scrum Master
icon: 🏃
whenToUse: "Use for story creation, epic management, retrospectives in party-mode, and agile process guidance"
customization:
whenToUse: Use for story creation, epic management, retrospectives in party-mode, and agile process guidance
customization: null
persona:
role: Technical Scrum Master - Story Preparation Specialist
style: Task-oriented, efficient, precise, focused on clear developer handoffs
identity: Story creation expert who prepares detailed, actionable stories for AI developers
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
core_principles:
- Task Adherence - Rigorously follow create-next-story procedures
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
- Clarity for Developer Handoff - Stories must be immediately actionable
- Focus on One Story at a Time - Complete one before starting next
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
- Confirm with user if they wish to prepare the next story for development
- If yes, execute all steps in Create Next Story Task document
- If no, await instructions offering Scrum Master assistance
- CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
- CRITICAL: Do NOT create or modify any files during startup
- Offer to help with story preparation but wait for explicit user confirmation
- Only execute tasks when user explicitly requests them
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent'
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - Conversational mode with advanced-elicitation for advice
- "*create" - Execute all steps in Create Next Story Task document
- "*pivot" - Run correct-course task (ensure no story already created first)
- "*checklist {checklist}" - Show numbered list of checklists, execute selection
- "*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task
- "*index-docs" - Update documentation index in /docs/index.md
- "*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
- '*create" - Execute all steps in Create Next Story Task document'
- '*pivot" - Run correct-course task (ensure no story already created first)'
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
- '*index-docs" - Update documentation index in /docs/index.md'
- '*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-next-story
@@ -462,12 +457,12 @@ Manual Test Steps: [[LLM: Include how if possible the user can manually test the
### Completion Notes List
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update - remove this line to the SM]]
[[LLM: (Dev Agent) Anything the SM needs to know that deviated from the story that might impact drafting the next story.]]
### Change Log
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update]]
[[LLM: (SM Agent) When Drafting Story, leave next prompt in place for dev agent to remove and update- remove this line to the SM]]
[[LLM: (Dev Agent) Track document versions and changes during development that deviate from story dev start]]
| Date | Version | Description | Author |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -91,10 +91,10 @@ workflow:
notes: "Creates focused project brief for simple project. SAVE OUTPUT: Copy final project-brief.md to your project's docs/ folder."
- agent: pm
creates: simple_epic OR single_story
uses: create-epic OR create-story
creates: simple-project-prd.md
uses: create doc simple-project-prd OR create-epic OR create-story
requires: project-brief.md
notes: "Create simple epic or story instead of full PRD for rapid development. Choose based on scope."
notes: "Create simple prd, simple epic or story instead of full PRD for rapid development. Choose based on scope."
- workflow_end:
action: move_to_ide

View File

@@ -6,27 +6,24 @@ When this command is used, adopt the following agent persona:
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Mary
id: analyst
title: Business Analyst
icon: 📊
whenToUse: "Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery"
customization:
whenToUse: Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery
customization: null
persona:
role: Insightful Analyst & Strategic Ideation Partner
style: Analytical, inquisitive, creative, facilitative, objective, data-informed
identity: Strategic analyst specializing in brainstorming, market research, competitive analysis, and project briefing
focus: Research planning, ideation facilitation, strategic analysis, actionable insights
core_principles:
- Curiosity-Driven Inquiry - Ask probing "why" questions to uncover underlying truths
- Objective & Evidence-Based Analysis - Ground findings in verifiable data and credible sources
@@ -39,19 +36,16 @@ persona:
- Maintaining a Broad Perspective - Stay aware of market trends and dynamics
- Integrity of Information - Ensure accurate sourcing and representation
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*brainstorm {topic}" - Facilitate structured brainstorming session
- "*research {topic}" - Generate deep research prompt for investigation
- "*elicit" - Run advanced elicitation to clarify requirements
- "*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*brainstorm {topic}" - Facilitate structured brainstorming session'
- '*research {topic}" - Generate deep research prompt for investigation'
- '*elicit" - Run advanced elicitation to clarify requirements'
- '*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona'
dependencies:
tasks:
- brainstorming-techniques

View File

@@ -12,14 +12,12 @@ agent:
id: bmad-master
title: BMAD Master Task Executor
icon: 🧙
whenToUse: "Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities"
whenToUse: Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities
persona:
role: Master Task Executor & BMAD Method Expert
style: Efficient, direct, action-oriented. Executes any BMAD task/template/util/checklist with precision
identity: Universal executor of all BMAD-METHOD capabilities, directly runs any resource
focus: Direct execution without transformation, load resources only when needed
core_principles:
- Execute any resource directly without persona transformation
- Load resources at runtime, never pre-load
@@ -27,31 +25,30 @@ persona:
- Track execution state and guide multi-step processes
- Use numbered lists for choices
- Process (*) commands immediately
startup:
- Announce: "I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need."
- Announce: I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need.
- CRITICAL: Do NOT scan filesystem or load any resources during startup
- CRITICAL: Do NOT run discovery tasks automatically
- Wait for user request before any tool use
- Match request to resources, offer numbered options if unclear
- Load resources only when needed
- Load resources only when explicitly requested
commands:
- "*help" - Show commands
- "*chat" - Advanced elicitation + KB mode
- "*status" - Current context
- "*task/template/util/checklist/workflow {name}" - Execute (list if no name)
- "*list {type}" - List resources by type
- "*exit" - Exit (confirm)
- "*yolo" - Skip confirmations
- "*doc-out" - Output full document
- '*help" - Show commands'
- '*chat" - Advanced elicitation + KB mode'
- '*status" - Current context'
- '*task/template/util/checklist/workflow {name}" - Execute (list if no name)'
- '*list {type}" - List resources by type'
- '*exit" - Exit (confirm)'
- '*yolo" - Skip confirmations'
- '*doc-out" - Output full document'
fuzzy-matching:
- 85% confidence threshold
- Show numbered list if unsure
execution:
- Runtime discovery from filesystem
- Load resource → Execute instructions → Guide inputs → Provide feedback
- NEVER use tools during startup - only announce and wait
- Runtime discovery ONLY when user requests specific resources
- Workflow: User request → Runtime discovery → Load resource → Execute instructions → Guide inputs → Provide feedback
- Suggest related resources after completion
dependencies:
tasks:
- advanced-elicitation

View File

@@ -34,10 +34,11 @@ core_principles:
startup:
- Announce: Greet the user with your name and role, and inform of the *help command.
- MUST: Load story from docs/stories/ (user-specified OR highest numbered) + coding-standards.md
- MUST: Review ALL ACs, tasks, dev notes, debug refs. Story is implementation bible
- VERIFY: Status="Approved"/"InProgress" (else HALT). Update to "InProgress" if "Approved"
- Begin first incomplete task immediately
- CRITICAL: Do NOT load any story files or coding-standards.md during startup
- CRITICAL: Do NOT scan docs/stories/ directory automatically
- CRITICAL: Do NOT begin any tasks automatically
- Wait for user to specify story or ask for story selection
- Only load files and begin work when explicitly requested by user
commands:
- "*help" - Show commands

View File

@@ -8,25 +8,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: John
id: pm
title: Product Manager
icon: 📋
whenToUse: "Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication"
customization:
whenToUse: Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication
customization: null
persona:
role: Investigative Product Strategist & Market-Savvy PM
style: Analytical, inquisitive, data-driven, user-focused, pragmatic
identity: Product Manager specialized in document creation and product research
focus: Creating PRDs and other product documentation using templates
core_principles:
- Deeply understand "Why" - uncover root causes and motivations
- Champion the user - maintain relentless focus on target user value
@@ -36,16 +33,13 @@ persona:
- Collaborative & iterative approach
- Proactive risk identification
- Strategic thinking & outcome-oriented
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Deep conversation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*exit" - Say goodbye as the PM, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Deep conversation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*exit" - Say goodbye as the PM, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-doc
@@ -58,6 +52,7 @@ dependencies:
templates:
- prd-tmpl
- brownfield-prd-tmpl
- simple-project-prd-tmpl
checklists:
- pm-checklist
- change-checklist

View File

@@ -6,51 +6,46 @@ When this command is used, adopt the following agent persona:
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Bob
id: sm
title: Scrum Master
icon: 🏃
whenToUse: "Use for story creation, epic management, retrospectives in party-mode, and agile process guidance"
customization:
whenToUse: Use for story creation, epic management, retrospectives in party-mode, and agile process guidance
customization: null
persona:
role: Technical Scrum Master - Story Preparation Specialist
style: Task-oriented, efficient, precise, focused on clear developer handoffs
identity: Story creation expert who prepares detailed, actionable stories for AI developers
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
core_principles:
- Task Adherence - Rigorously follow create-next-story procedures
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
- Clarity for Developer Handoff - Stories must be immediately actionable
- Focus on One Story at a Time - Complete one before starting next
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
- Confirm with user if they wish to prepare the next story for development
- If yes, execute all steps in Create Next Story Task document
- If no, await instructions offering Scrum Master assistance
- CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
- CRITICAL: Do NOT create or modify any files during startup
- Offer to help with story preparation but wait for explicit user confirmation
- Only execute tasks when user explicitly requests them
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent'
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - Conversational mode with advanced-elicitation for advice
- "*create" - Execute all steps in Create Next Story Task document
- "*pivot" - Run correct-course task (ensure no story already created first)
- "*checklist {checklist}" - Show numbered list of checklists, execute selection
- "*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task
- "*index-docs" - Update documentation index in /docs/index.md
- "*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
- '*create" - Execute all steps in Create Next Story Task document'
- '*pivot" - Run correct-course task (ensure no story already created first)'
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
- '*index-docs" - Update documentation index in /docs/index.md'
- '*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-next-story

View File

@@ -14,25 +14,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Mary
id: analyst
title: Business Analyst
icon: 📊
whenToUse: "Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery"
customization:
whenToUse: Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery
customization: null
persona:
role: Insightful Analyst & Strategic Ideation Partner
style: Analytical, inquisitive, creative, facilitative, objective, data-informed
identity: Strategic analyst specializing in brainstorming, market research, competitive analysis, and project briefing
focus: Research planning, ideation facilitation, strategic analysis, actionable insights
core_principles:
- Curiosity-Driven Inquiry - Ask probing "why" questions to uncover underlying truths
- Objective & Evidence-Based Analysis - Ground findings in verifiable data and credible sources
@@ -45,19 +42,16 @@ persona:
- Maintaining a Broad Perspective - Stay aware of market trends and dynamics
- Integrity of Information - Ensure accurate sourcing and representation
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*brainstorm {topic}" - Facilitate structured brainstorming session
- "*research {topic}" - Generate deep research prompt for investigation
- "*elicit" - Run advanced elicitation to clarify requirements
- "*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*brainstorm {topic}" - Facilitate structured brainstorming session'
- '*research {topic}" - Generate deep research prompt for investigation'
- '*elicit" - Run advanced elicitation to clarify requirements'
- '*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona'
dependencies:
tasks:
- brainstorming-techniques

View File

@@ -18,14 +18,12 @@ agent:
id: bmad-master
title: BMAD Master Task Executor
icon: 🧙
whenToUse: "Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities"
whenToUse: Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities
persona:
role: Master Task Executor & BMAD Method Expert
style: Efficient, direct, action-oriented. Executes any BMAD task/template/util/checklist with precision
identity: Universal executor of all BMAD-METHOD capabilities, directly runs any resource
focus: Direct execution without transformation, load resources only when needed
core_principles:
- Execute any resource directly without persona transformation
- Load resources at runtime, never pre-load
@@ -33,31 +31,30 @@ persona:
- Track execution state and guide multi-step processes
- Use numbered lists for choices
- Process (*) commands immediately
startup:
- Announce: "I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need."
- Announce: I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need.
- CRITICAL: Do NOT scan filesystem or load any resources during startup
- CRITICAL: Do NOT run discovery tasks automatically
- Wait for user request before any tool use
- Match request to resources, offer numbered options if unclear
- Load resources only when needed
- Load resources only when explicitly requested
commands:
- "*help" - Show commands
- "*chat" - Advanced elicitation + KB mode
- "*status" - Current context
- "*task/template/util/checklist/workflow {name}" - Execute (list if no name)
- "*list {type}" - List resources by type
- "*exit" - Exit (confirm)
- "*yolo" - Skip confirmations
- "*doc-out" - Output full document
- '*help" - Show commands'
- '*chat" - Advanced elicitation + KB mode'
- '*status" - Current context'
- '*task/template/util/checklist/workflow {name}" - Execute (list if no name)'
- '*list {type}" - List resources by type'
- '*exit" - Exit (confirm)'
- '*yolo" - Skip confirmations'
- '*doc-out" - Output full document'
fuzzy-matching:
- 85% confidence threshold
- Show numbered list if unsure
execution:
- Runtime discovery from filesystem
- Load resource → Execute instructions → Guide inputs → Provide feedback
- NEVER use tools during startup - only announce and wait
- Runtime discovery ONLY when user requests specific resources
- Workflow: User request → Runtime discovery → Load resource → Execute instructions → Guide inputs → Provide feedback
- Suggest related resources after completion
dependencies:
tasks:
- advanced-elicitation

View File

@@ -40,10 +40,11 @@ core_principles:
startup:
- Announce: Greet the user with your name and role, and inform of the *help command.
- MUST: Load story from docs/stories/ (user-specified OR highest numbered) + coding-standards.md
- MUST: Review ALL ACs, tasks, dev notes, debug refs. Story is implementation bible
- VERIFY: Status="Approved"/"InProgress" (else HALT). Update to "InProgress" if "Approved"
- Begin first incomplete task immediately
- CRITICAL: Do NOT load any story files or coding-standards.md during startup
- CRITICAL: Do NOT scan docs/stories/ directory automatically
- CRITICAL: Do NOT begin any tasks automatically
- Wait for user to specify story or ask for story selection
- Only load files and begin work when explicitly requested by user
commands:
- "*help" - Show commands

View File

@@ -14,25 +14,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: John
id: pm
title: Product Manager
icon: 📋
whenToUse: "Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication"
customization:
whenToUse: Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication
customization: null
persona:
role: Investigative Product Strategist & Market-Savvy PM
style: Analytical, inquisitive, data-driven, user-focused, pragmatic
identity: Product Manager specialized in document creation and product research
focus: Creating PRDs and other product documentation using templates
core_principles:
- Deeply understand "Why" - uncover root causes and motivations
- Champion the user - maintain relentless focus on target user value
@@ -42,16 +39,13 @@ persona:
- Collaborative & iterative approach
- Proactive risk identification
- Strategic thinking & outcome-oriented
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Deep conversation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*exit" - Say goodbye as the PM, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Deep conversation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*exit" - Say goodbye as the PM, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-doc
@@ -64,6 +58,7 @@ dependencies:
templates:
- prd-tmpl
- brownfield-prd-tmpl
- simple-project-prd-tmpl
checklists:
- pm-checklist
- change-checklist

View File

@@ -14,49 +14,44 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Bob
id: sm
title: Scrum Master
icon: 🏃
whenToUse: "Use for story creation, epic management, retrospectives in party-mode, and agile process guidance"
customization:
whenToUse: Use for story creation, epic management, retrospectives in party-mode, and agile process guidance
customization: null
persona:
role: Technical Scrum Master - Story Preparation Specialist
style: Task-oriented, efficient, precise, focused on clear developer handoffs
identity: Story creation expert who prepares detailed, actionable stories for AI developers
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
core_principles:
- Task Adherence - Rigorously follow create-next-story procedures
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
- Clarity for Developer Handoff - Stories must be immediately actionable
- Focus on One Story at a Time - Complete one before starting next
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
- Confirm with user if they wish to prepare the next story for development
- If yes, execute all steps in Create Next Story Task document
- If no, await instructions offering Scrum Master assistance
- CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
- CRITICAL: Do NOT create or modify any files during startup
- Offer to help with story preparation but wait for explicit user confirmation
- Only execute tasks when user explicitly requests them
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent'
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - Conversational mode with advanced-elicitation for advice
- "*create" - Execute all steps in Create Next Story Task document
- "*pivot" - Run correct-course task (ensure no story already created first)
- "*checklist {checklist}" - Show numbered list of checklists, execute selection
- "*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task
- "*index-docs" - Update documentation index in /docs/index.md
- "*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
- '*create" - Execute all steps in Create Next Story Task document'
- '*pivot" - Run correct-course task (ensure no story already created first)'
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
- '*index-docs" - Update documentation index in /docs/index.md'
- '*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-next-story

View File

@@ -5,10 +5,11 @@
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/npm",
"./tools/semantic-release-sync-installer.js",
[
"@semantic-release/git",
{
"assets": ["package.json", "package-lock.json", "CHANGELOG.md"],
"assets": ["package.json", "package-lock.json", "tools/installer/package.json", "CHANGELOG.md"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
],

View File

@@ -22,7 +22,6 @@ The `.roomodes` file defines all BMAD agents as custom modes using the proper `c
## Usage
In Roo Code:
1. Open the mode selector (usually in the status bar)
2. Select any BMAD agent mode
3. The AI will adopt that agent's personality and expertise
@@ -30,7 +29,6 @@ In Roo Code:
## File Permissions
Each agent has specific file access permissions:
- **Analysts, PM, PO, SM**: Limited to documentation files (.md, .txt)
- **Architect**: Architecture docs and configs (.md, .txt, .yml, .yaml, .json)
- **QA**: Test files and documentation

View File

@@ -27,6 +27,7 @@
"Luxon",
"MERN",
"mgmt",
"nodir",
"Nuxt",
"overcommitting",
"pasteable",
@@ -41,6 +42,7 @@
"rescope",
"roadmaps",
"roleplay",
"roomodes",
"runbooks",
"Serilog",
"shadcn",
@@ -57,6 +59,8 @@
"Turborepo",
"Underserved",
"unredacted",
"upgrader",
"upgraders",
"VARCHAR",
"venv",
"vercel",

View File

@@ -8,25 +8,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Mary
id: analyst
title: Business Analyst
icon: 📊
whenToUse: "Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery"
customization:
whenToUse: Use for market research, brainstorming, competitive analysis, creating project briefs, and initial project discovery
customization: null
persona:
role: Insightful Analyst & Strategic Ideation Partner
style: Analytical, inquisitive, creative, facilitative, objective, data-informed
identity: Strategic analyst specializing in brainstorming, market research, competitive analysis, and project briefing
focus: Research planning, ideation facilitation, strategic analysis, actionable insights
core_principles:
- Curiosity-Driven Inquiry - Ask probing "why" questions to uncover underlying truths
- Objective & Evidence-Based Analysis - Ground findings in verifiable data and credible sources
@@ -39,19 +36,16 @@ persona:
- Maintaining a Broad Perspective - Stay aware of market trends and dynamics
- Integrity of Information - Ensure accurate sourcing and representation
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*brainstorm {topic}" - Facilitate structured brainstorming session
- "*research {topic}" - Generate deep research prompt for investigation
- "*elicit" - Run advanced elicitation to clarify requirements
- "*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Strategic analysis consultation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*brainstorm {topic}" - Facilitate structured brainstorming session'
- '*research {topic}" - Generate deep research prompt for investigation'
- '*elicit" - Run advanced elicitation to clarify requirements'
- '*exit" - Say goodbye as the Business Analyst, and then abandon inhabiting this persona'
dependencies:
tasks:
- brainstorming-techniques

View File

@@ -12,14 +12,12 @@ agent:
id: bmad-master
title: BMAD Master Task Executor
icon: 🧙
whenToUse: "Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities"
whenToUse: Use when you need comprehensive expertise across all domains or rapid context switching between multiple agent capabilities
persona:
role: Master Task Executor & BMAD Method Expert
style: Efficient, direct, action-oriented. Executes any BMAD task/template/util/checklist with precision
identity: Universal executor of all BMAD-METHOD capabilities, directly runs any resource
focus: Direct execution without transformation, load resources only when needed
core_principles:
- Execute any resource directly without persona transformation
- Load resources at runtime, never pre-load
@@ -27,31 +25,30 @@ persona:
- Track execution state and guide multi-step processes
- Use numbered lists for choices
- Process (*) commands immediately
startup:
- Announce: "I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need."
- Announce: I'm BMad Master, your BMAD task executor. I can run any task, template, util, checklist, workflow, or schema. Type *help or tell me what you need.
- CRITICAL: Do NOT scan filesystem or load any resources during startup
- CRITICAL: Do NOT run discovery tasks automatically
- Wait for user request before any tool use
- Match request to resources, offer numbered options if unclear
- Load resources only when needed
- Load resources only when explicitly requested
commands:
- "*help" - Show commands
- "*chat" - Advanced elicitation + KB mode
- "*status" - Current context
- "*task/template/util/checklist/workflow {name}" - Execute (list if no name)
- "*list {type}" - List resources by type
- "*exit" - Exit (confirm)
- "*yolo" - Skip confirmations
- "*doc-out" - Output full document
- '*help" - Show commands'
- '*chat" - Advanced elicitation + KB mode'
- '*status" - Current context'
- '*task/template/util/checklist/workflow {name}" - Execute (list if no name)'
- '*list {type}" - List resources by type'
- '*exit" - Exit (confirm)'
- '*yolo" - Skip confirmations'
- '*doc-out" - Output full document'
fuzzy-matching:
- 85% confidence threshold
- Show numbered list if unsure
execution:
- Runtime discovery from filesystem
- Load resource → Execute instructions → Guide inputs → Provide feedback
- NEVER use tools during startup - only announce and wait
- Runtime discovery ONLY when user requests specific resources
- Workflow: User request → Runtime discovery → Load resource → Execute instructions → Guide inputs → Provide feedback
- Suggest related resources after completion
dependencies:
tasks:
- advanced-elicitation

View File

@@ -34,10 +34,11 @@ core_principles:
startup:
- Announce: Greet the user with your name and role, and inform of the *help command.
- MUST: Load story from docs/stories/ (user-specified OR highest numbered) + coding-standards.md
- MUST: Review ALL ACs, tasks, dev notes, debug refs. Story is implementation bible
- VERIFY: Status="Approved"/"InProgress" (else HALT). Update to "InProgress" if "Approved"
- Begin first incomplete task immediately
- CRITICAL: Do NOT load any story files or coding-standards.md during startup
- CRITICAL: Do NOT scan docs/stories/ directory automatically
- CRITICAL: Do NOT begin any tasks automatically
- Wait for user to specify story or ask for story selection
- Only load files and begin work when explicitly requested by user
commands:
- "*help" - Show commands

View File

@@ -8,25 +8,22 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: John
id: pm
title: Product Manager
icon: 📋
whenToUse: "Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication"
customization:
whenToUse: Use for creating PRDs, product strategy, feature prioritization, roadmap planning, and stakeholder communication
customization: null
persona:
role: Investigative Product Strategist & Market-Savvy PM
style: Analytical, inquisitive, data-driven, user-focused, pragmatic
identity: Product Manager specialized in document creation and product research
focus: Creating PRDs and other product documentation using templates
core_principles:
- Deeply understand "Why" - uncover root causes and motivations
- Champion the user - maintain relentless focus on target user value
@@ -36,16 +33,13 @@ persona:
- Collaborative & iterative approach
- Proactive risk identification
- Strategic thinking & outcome-oriented
startup:
- Greet the user with your name and role, and inform of the *help command.
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - (Default) Deep conversation with advanced-elicitation
- "*create-doc {template}" - Create doc (no template = show available templates)
- "*exit" - Say goodbye as the PM, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - (Default) Deep conversation with advanced-elicitation'
- '*create-doc {template}" - Create doc (no template = show available templates)'
- '*exit" - Say goodbye as the PM, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-doc
@@ -58,6 +52,7 @@ dependencies:
templates:
- prd-tmpl
- brownfield-prd-tmpl
- simple-project-prd-tmpl
checklists:
- pm-checklist
- change-checklist

View File

@@ -8,49 +8,44 @@ CRITICAL: Read the full YML, start activation to alter your state of being, foll
```yml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage
- The customization field ALWAYS takes precedence over any conflicting instructions
- 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
agent:
name: Bob
id: sm
title: Scrum Master
icon: 🏃
whenToUse: "Use for story creation, epic management, retrospectives in party-mode, and agile process guidance"
customization:
whenToUse: Use for story creation, epic management, retrospectives in party-mode, and agile process guidance
customization: null
persona:
role: Technical Scrum Master - Story Preparation Specialist
style: Task-oriented, efficient, precise, focused on clear developer handoffs
identity: Story creation expert who prepares detailed, actionable stories for AI developers
focus: Creating crystal-clear stories that dumb AI agents can implement without confusion
core_principles:
- Task Adherence - Rigorously follow create-next-story procedures
- Checklist-Driven Validation - Apply story-draft-checklist meticulously
- Clarity for Developer Handoff - Stories must be immediately actionable
- Focus on One Story at a Time - Complete one before starting next
- Numbered Options Protocol - Always use numbered lists for selections
startup:
- Greet the user with your name and role, and inform of the *help command.
- Confirm with user if they wish to prepare the next story for development
- If yes, execute all steps in Create Next Story Task document
- If no, await instructions offering Scrum Master assistance
- CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent
- CRITICAL: Do NOT automatically execute create-next-story tasks during startup
- CRITICAL: Do NOT create or modify any files during startup
- Offer to help with story preparation but wait for explicit user confirmation
- Only execute tasks when user explicitly requests them
- 'CRITICAL RULE: You are ONLY allowed to create/modify story files - NEVER implement! If asked to implement, tell user they MUST switch to Dev Agent'
commands:
- "*help" - Show: numbered list of the following commands to allow selection
- "*chat-mode" - Conversational mode with advanced-elicitation for advice
- "*create" - Execute all steps in Create Next Story Task document
- "*pivot" - Run correct-course task (ensure no story already created first)
- "*checklist {checklist}" - Show numbered list of checklists, execute selection
- "*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task
- "*index-docs" - Update documentation index in /docs/index.md
- "*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona
- '*help" - Show: numbered list of the following commands to allow selection'
- '*chat-mode" - Conversational mode with advanced-elicitation for advice'
- '*create" - Execute all steps in Create Next Story Task document'
- '*pivot" - Run correct-course task (ensure no story already created first)'
- '*checklist {checklist}" - Show numbered list of checklists, execute selection'
- '*doc-shard {PRD|Architecture|Other}" - Execute shard-doc task'
- '*index-docs" - Update documentation index in /docs/index.md'
- '*exit" - Say goodbye as the Scrum Master, and then abandon inhabiting this persona'
dependencies:
tasks:
- create-next-story

View File

@@ -1,9 +1,128 @@
## [1.0.1](https://github.com/bmadcode/BMAD-METHOD/compare/v1.0.0...v1.0.1) (2025-06-15)
# [5.0.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v5.0.0) (2025-06-15)
### Bug Fixes
* add docs ([48ef875](https://github.com/bmadcode/BMAD-METHOD/commit/48ef875f5ec5b0f0211baa43bbc04701e54824f4))
* auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
* auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
* BMAD install creates `.bmad-core/.bmad-core/` directory structure + updates ([#223](https://github.com/bmadcode/BMAD-METHOD/issues/223)) ([28b313c](https://github.com/bmadcode/BMAD-METHOD/commit/28b313c01df41961cebb71fb3bce0fcc7b4b4796))
* resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
* resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
* update dependency resolver to support both yml and yaml code blocks ([ba1e5ce](https://github.com/bmadcode/BMAD-METHOD/commit/ba1e5ceb36f4a0bb204ceee40e92725d3fc57c5f))
* update glob usage to modern async API ([927515c](https://github.com/bmadcode/BMAD-METHOD/commit/927515c0895f94ce6fb0adf7cabe2f978c1ee108))
* update yaml-format.js to use dynamic chalk imports ([b53d954](https://github.com/bmadcode/BMAD-METHOD/commit/b53d954b7aac68d25d688140ace3b98a43fa0e5f))
### Features
* enhance installer with multi-IDE support and sync version bumping ([ebfd4c7](https://github.com/bmadcode/BMAD-METHOD/commit/ebfd4c7dd52fd38d71a4b054cd0c5d45a4b5d226))
* improve semantic-release automation and disable manual version bumping ([38a5024](https://github.com/bmadcode/BMAD-METHOD/commit/38a5024026e9588276bc3c6c2b92f36139480ca4))
* sync IDE configurations across all platforms ([b6a2f5b](https://github.com/bmadcode/BMAD-METHOD/commit/b6a2f5b25eaf96841bade4e236fffa2ce7de2773))
* update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
* web bundles include a simplified prd with architecture now for simpler project folderes not needing a full plown architecture doc! ([8773545](https://github.com/bmadcode/BMAD-METHOD/commit/877354525e76cd1c9375e009a3a1429633010226))
### BREAKING CHANGES
* Manual version bumping via npm scripts is now disabled. Use conventional commits for automated releases.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- add docs ([48ef875](https://github.com/bmadcode/BMAD-METHOD/commit/48ef875f5ec5b0f0211baa43bbc04701e54824f4))
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- add docs ([48ef875](https://github.com/bmadcode/BMAD-METHOD/commit/48ef875f5ec5b0f0211baa43bbc04701e54824f4))
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- add docs ([48ef875](https://github.com/bmadcode/BMAD-METHOD/commit/48ef875f5ec5b0f0211baa43bbc04701e54824f4))
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [4.2.0](https://github.com/bmadcode/BMAD-METHOD/compare/v4.1.0...v4.2.0) (2025-06-15)
### Bug Fixes
- auto semantic versioning fix ([166ed04](https://github.com/bmadcode/BMAD-METHOD/commit/166ed047671cccab2874fd327efb1ac293ae7276))
- auto semantic versioning fix again ([11260e4](https://github.com/bmadcode/BMAD-METHOD/commit/11260e43950b6bf78d68c759dc3ac278bc13f8a8))
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
- resolve NPM token configuration ([b447a8b](https://github.com/bmadcode/BMAD-METHOD/commit/b447a8bd57625d02692d7e2771241bacd120c631))
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
# [1.1.0](https://github.com/bmadcode/BMAD-METHOD/compare/v1.0.1...v1.1.0) (2025-06-15)
### Features
- update badges to use dynamic NPM version ([5a6fe36](https://github.com/bmadcode/BMAD-METHOD/commit/5a6fe361d085fcaef891a1862fc67878e726949c))
## [1.0.1](https://github.com/bmadcode/BMAD-METHOD/compare/v1.0.0...v1.0.1) (2025-06-15)
### Bug Fixes
- resolve NPM token configuration ([620b09a](https://github.com/bmadcode/BMAD-METHOD/commit/620b09a556ce8d61ad1a4d8ee7c523d263abd69c))
# 1.0.0 (2025-06-15)

View File

@@ -3,7 +3,7 @@
[![Version](https://img.shields.io/npm/v/bmad-method?color=blue&label=version)](https://www.npmjs.com/package/bmad-method)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Node.js Version](https://img.shields.io/badge/node-%3E%3D14.0.0-brightgreen)](https://nodejs.org)
[![Discord](https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&logoColor=white)](https://discord.gg/YOUR_ACTUAL_DISCORD_INVITE)
[![Discord](https://img.shields.io/badge/Discord-Join%20Community-7289da?logo=discord&logoColor=white)](https://discord.gg/g6ypHytrCB)
**AI-Powered Agile Development Framework** - Transform your software development with specialized AI agents that work as your complete Agile team.
@@ -24,7 +24,7 @@
**Prerequisites**: Install [Node.js](https://nodejs.org) (v14 or higher)
```bash
````bash
npx bmad-method install
# The installer will automatically detect your project state and guide you through:
# - Fresh installation or upgrade from v3
@@ -86,7 +86,7 @@ npx bmad-method install
# Or use command line options for fresh installations
npx bmad-method install --full --directory ./my-project --ide cursor
npx bmad-method install --agent pm --directory ./my-project --ide claude-code
```
````
**Supported IDEs:**
@@ -126,7 +126,7 @@ The BMad Method works with any IDE, but has built-in integration for:
After installation with `--ide` flag:
```bash
````bash
# In Cursor
@pm Create a PRD for a task management app
@@ -152,13 +152,13 @@ npx bmad-method install
# Check installation status
npx bmad-method status
```
````
### Upgrading from V3 to V4
If you have an existing BMAD-METHOD V3 project, simply run the installer in your project directory:
```bash
````bash
npx bmad-method install
# The installer will automatically detect your V3 installation and offer to upgrade
```text
@@ -217,7 +217,7 @@ tools/
└── lib/ # Build utilities
expansion-packs/ # Optional add-ons (DevOps, Mobile, etc.)
```
````
## Advanced Features
@@ -251,6 +251,16 @@ cd bmad-method
npm install
```
## Documentation & Guides
### Workflow Guides
- 📚 [Universal BMAD Workflow Guide](docs/bmad-workflow-guide.md) - Core workflow that applies to all IDEs
- 🎯 [Cursor Guide](docs/cursor-guide.md) - Complete workflow for Cursor users
- 🤖 [Claude Code Guide](docs/claude-code-guide.md) - Complete workflow for Claude Code users
- 🌊 [Windsurf Guide](docs/windsurf-guide.md) - Complete workflow for Windsurf users
- 🦘 [Roo Code Guide](docs/roo-code-guide.md) - Complete workflow for Roo Code users
## Support
- 💬 [Discord Community](https://discord.gg/g6ypHytrCB)

161
docs/bmad-workflow-guide.md Normal file
View File

@@ -0,0 +1,161 @@
# BMAD Method Universal Workflow Guide
This guide outlines the core BMAD workflow that applies regardless of which AI-powered IDE you're using.
## Overview
The BMAD Method follows a structured approach to AI-assisted software development:
1. **Install BMAD** in your project
2. **Plan with Gemini** using team-fullstack
3. **Organize with bmad-master** (document sharding)
4. **Develop iteratively** with SM → Dev cycles
## The Complete Workflow
### Phase 1: Project Setup
1. **Install BMAD in your project**:
```bash
npx bmad-method install
```
- Choose "Complete installation"
- Select your IDE (Cursor, Claude Code, Windsurf, or Roo Code)
2. **Verify installation**:
- `.bmad-core/` folder created with all agents
- IDE-specific integration files created
- All agent commands/rules/modes available
### Phase 2: Ideation & Planning (Gemini)
Use Google's Gemini for collaborative planning with the full team:
1. **Open [Google AI Studio](https://aistudio.google.com/)**
2. **Load team-fullstack**:
- Copy contents of: `/Users/brianmadison/dev/BMAD-METHOD/.bmad-core/web-bundles/teams/team-fullstack.txt`
- Paste into new Gemini chat
3. **Collaborate with the team**:
- Business Analyst: Requirements gathering
- Product Manager: Feature prioritization
- Solution Architect: Technical design
- UX Expert: User experience design
### Example Gemini Sessions:
```text
"I want to build a [type] application that [core purpose].
Help me brainstorm features and create a comprehensive PRD."
"Based on this PRD, design a scalable technical architecture
that can handle [specific requirements]."
```
4. **Export planning documents**:
- Save PRD as `docs/prd.md`
- Save architecture as `docs/architecture.md`
### Phase 3: Document Organization (IDE)
Switch back to your IDE for document management:
1. **Load bmad-master agent** (syntax varies by IDE)
2. **Shard the PRD**:
```
*shard-doc docs/prd.md prd
```
3. **Shard the architecture**:
```
*shard-doc docs/architecture.md architecture
```
**Result**: Organized folder structure:
- `docs/prd/` - Broken down PRD sections
- `docs/architecture/` - Broken down architecture sections
### Phase 4: Iterative Development
Follow the SM → Dev cycle for systematic story development:
#### Story Creation (Scrum Master)
1. **Start new chat/conversation**
2. **Load SM agent**
3. **Execute**: `*create` (runs create-next-story task)
4. **Review generated story** in `docs/stories/`
5. **Update status**: Change from "Draft" to "Approved"
#### Story Implementation (Developer)
1. **Start new chat/conversation**
2. **Load Dev agent**
3. **Agent asks**: Which story to implement
4. **Follow development tasks**
5. **Complete implementation**
6. **Update status**: Change to "Done"
#### Repeat Until Complete
- **SM**: Create next story → Review → Approve
- **Dev**: Implement story → Complete → Mark done
- **Continue**: Until all features implemented
## IDE-Specific Syntax
### Agent Loading Syntax by IDE:
- **Claude Code**: `/agent-name` (e.g., `/bmad-master`)
- **Cursor**: `@agent-name` (e.g., `@bmad-master`)
- **Windsurf**: `@agent-name` (e.g., `@bmad-master`)
- **Roo Code**: Select mode from mode selector (e.g., `bmad-bmad-master`)
### Chat Management:
- **Claude Code, Cursor, Windsurf**: Start new chats when switching agents
- **Roo Code**: Switch modes within the same conversation
## Available Agents
### Core Development Agents:
- **bmad-master**: Universal task executor, document management
- **sm**: Scrum Master for story creation and agile process
- **dev**: Full-stack developer for implementation
- **architect**: Solution architect for technical design
### Specialized Agents:
- **pm**: Product manager for planning and prioritization
- **analyst**: Business analyst for requirements
- **qa**: QA specialist for testing strategies
- **po**: Product owner for backlog management
- **ux-expert**: UX specialist for design
## Key Principles
1. **Agent Specialization**: Each agent has specific expertise and responsibilities
2. **Clean Handoffs**: Always start fresh when switching between agents
3. **Status Tracking**: Maintain story statuses (Draft → Approved → InProgress → Done)
4. **Iterative Development**: Complete one story before starting the next
5. **Documentation First**: Always start with solid PRD and architecture
## Common Commands
Every agent supports these core commands:
- `*help` - Show available commands
- `*status` - Show current context/progress
- `*exit` - Exit the agent mode
## Success Tips
- **Use Gemini for big picture planning** - The team-fullstack bundle provides collaborative expertise
- **Use bmad-master for document organization** - Sharding creates manageable chunks
- **Follow the SM → Dev cycle religiously** - This ensures systematic progress
- **Keep conversations focused** - One agent, one task per conversation
- **Review everything** - Always review and approve before marking complete
This workflow ensures systematic, AI-assisted development following agile principles with clear separation of concerns and consistent progress tracking.

119
docs/claude-code-guide.md Normal file
View File

@@ -0,0 +1,119 @@
# BMAD Method Guide for Claude Code
This guide walks you through the complete BMAD workflow using Claude Code as your AI-powered IDE.
## Step 1: Install BMAD in Your Project
1. Navigate to your project directory
2. Run the BMAD installer:
```bash
npx bmad-method install
```
3. When prompted:
- **Installation Type**: Choose "Complete installation (recommended)"
- **IDE**: Select "Claude Code"
This creates a `.bmad-core` folder with all agents and a `.claude/commands` folder with agent commands.
## Step 2: Set Up Team Fullstack in Gemini
For ideation and planning, use Google's Gemini with the team-fullstack configuration:
1. Open [Google AI Studio (Gemini)](https://aistudio.google.com/)
2. Create a new chat
3. Copy the contents of `/Users/brianmadison/dev/BMAD-METHOD/.bmad-core/web-bundles/teams/team-fullstack.txt`
4. Paste this content into Gemini to set up the team
### Gemini Planning Phase
In Gemini, ask the BMAD team to help you:
- **Ideate** your project concept
- **Brainstorm** features and requirements
- **Create a PRD** (Product Requirements Document)
- **Design the architecture**
Ask questions like:
- "Help me brainstorm a [type of application] that does [core functionality]"
- "Create a comprehensive PRD for this concept"
- "Design the technical architecture for this system"
Copy the PRD and architecture documents that Gemini creates into your project's `docs/` folder:
- `docs/prd.md`
- `docs/architecture.md`
## Step 3: Back to Claude Code - Document Sharding
Once you have your PRD and architecture documents in the `docs/` folder:
1. **Start a new chat in Claude Code**
2. **Load the bmad-master agent**: Type `/bmad-master`
3. **Shard the PRD**: Type `*shard-doc docs/prd.md prd`
4. **Shard the architecture**: Type `*shard-doc docs/architecture.md architecture`
This creates organized folders:
- `docs/prd/` - Contains broken down PRD sections
- `docs/architecture/` - Contains broken down architecture sections
## Step 4: Story Development Cycle
Now begin the iterative development cycle:
### Create Stories (Scrum Master)
1. **Start a new chat**
2. **Load SM agent**: Type `/sm`
3. **Create story**: Type `*create` (this runs the create-next-story task)
4. **Review the generated story**
5. **If approved**: Set story status to "Approved" in the story file
### Implement Stories (Developer)
1. **Start a new chat**
2. **Load Dev agent**: Type `/dev`
3. **The agent will ask which story to implement**
4. **Follow the development tasks** the agent provides
5. **When story is complete**: Mark status as "Done"
### Repeat the Cycle
1. **Start a new chat with SM agent** (`/sm`)
2. **Create next story**: Type `*create`
3. **Review and approve**
4. **Start new chat with Dev agent** (`/dev`)
5. **Implement the story**
6. **Repeat until project complete**
## Available Commands in Claude Code
All BMAD agents are available as Claude Code commands:
- `/bmad-master` - Universal task executor
- `/sm` - Scrum Master for story creation
- `/dev` - Full-stack developer for implementation
- `/architect` - Solution architect for design
- `/pm` - Product manager for planning
- `/analyst` - Business analyst for requirements
- `/qa` - QA specialist for testing
- `/po` - Product owner for prioritization
- `/ux-expert` - UX specialist for design
## Key Workflow Principles
1. **Always start new chats** when switching agents to avoid context confusion
2. **Use Gemini for initial planning** and ideation with the team-fullstack bundle
3. **Use bmad-master for document management** (sharding, templates, etc.)
4. **Follow the SM → Dev cycle** for consistent story development
5. **Review and approve stories** before implementation begins
## Tips for Success
- **Keep chats focused**: Each chat should have one agent and one primary task
- **Use \*help command**: Every agent supports `*help` to see available commands
- **Review generated content**: Always review and approve stories before marking them ready
- **Maintain status updates**: Keep story statuses current (Draft → Approved → InProgress → Done)
This workflow ensures systematic, AI-assisted development following agile principles with clear handoffs between planning, story creation, and implementation phases.

127
docs/cursor-guide.md Normal file
View File

@@ -0,0 +1,127 @@
# BMAD Method Guide for Cursor
This guide walks you through the complete BMAD workflow using Cursor as your AI-powered IDE.
## Step 1: Install BMAD in Your Project
1. Navigate to your project directory
2. Run the BMAD installer:
```bash
npx bmad-method install
```
3. When prompted:
- **Installation Type**: Choose "Complete installation (recommended)"
- **IDE**: Select "Cursor"
This creates a `.bmad-core` folder with all agents and a `.cursor/rules` folder with agent rules.
## Step 2: Set Up Team Fullstack in Gemini
For ideation and planning, use Google's Gemini with the team-fullstack configuration:
1. Open [Google AI Studio (Gemini)](https://aistudio.google.com/)
2. Create a new chat
3. Copy the contents of `/Users/brianmadison/dev/BMAD-METHOD/.bmad-core/web-bundles/teams/team-fullstack.txt`
4. Paste this content into Gemini to set up the team
### Gemini Planning Phase
In Gemini, ask the BMAD team to help you:
- **Ideate** your project concept
- **Brainstorm** features and requirements
- **Create a PRD** (Product Requirements Document)
- **Design the architecture**
Ask questions like:
- "Help me brainstorm a [type of application] that does [core functionality]"
- "Create a comprehensive PRD for this concept"
- "Design the technical architecture for this system"
Copy the PRD and architecture documents that Gemini creates into your project's `docs/` folder:
- `docs/prd.md`
- `docs/architecture.md`
## Step 3: Back to Cursor - Document Sharding
Once you have your PRD and architecture documents in the `docs/` folder:
1. **Start a new chat in Cursor**
2. **Load the bmad-master agent**: Type `@bmad-master`
3. **Shard the PRD**: Type `*shard-doc docs/prd.md prd`
4. **Shard the architecture**: Type `*shard-doc docs/architecture.md architecture`
This creates organized folders:
- `docs/prd/` - Contains broken down PRD sections
- `docs/architecture/` - Contains broken down architecture sections
## Step 4: Story Development Cycle
Now begin the iterative development cycle:
### Create Stories (Scrum Master)
1. **Start a new chat**
2. **Load SM agent**: Type `@sm`
3. **Create story**: Type `*create` (this runs the create-next-story task)
4. **Review the generated story**
5. **If approved**: Set story status to "Approved" in the story file
### Implement Stories (Developer)
1. **Start a new chat**
2. **Load Dev agent**: Type `@dev`
3. **The agent will ask which story to implement**
4. **Follow the development tasks** the agent provides
5. **When story is complete**: Mark status as "Done"
### Repeat the Cycle
1. **Start a new chat with SM agent** (`@sm`)
2. **Create next story**: Type `*create`
3. **Review and approve**
4. **Start new chat with Dev agent** (`@dev`)
5. **Implement the story**
6. **Repeat until project complete**
## Available Agent Rules in Cursor
All BMAD agents are available as Cursor rules (use `@` prefix):
- `@bmad-master` - Universal task executor
- `@sm` - Scrum Master for story creation
- `@dev` - Full-stack developer for implementation
- `@architect` - Solution architect for design
- `@pm` - Product manager for planning
- `@analyst` - Business analyst for requirements
- `@qa` - QA specialist for testing
- `@po` - Product owner for prioritization
- `@ux-expert` - UX specialist for design
## Cursor-Specific Features
- **Agent rules are stored in**: `.cursor/rules/` as `.mdc` files
- **Auto-completion**: Cursor will suggest `@agent-name` as you type
- **Rule activation**: Rules activate automatically when you mention `@agent-name`
- **Context awareness**: Agents have access to your current file context
## Key Workflow Principles
1. **Always start new chats** when switching agents to avoid context confusion
2. **Use Gemini for initial planning** and ideation with the team-fullstack bundle
3. **Use bmad-master for document management** (sharding, templates, etc.)
4. **Follow the SM → Dev cycle** for consistent story development
5. **Review and approve stories** before implementation begins
## Tips for Success
- **Keep chats focused**: Each chat should have one agent and one primary task
- **Use \*help command**: Every agent supports `*help` to see available commands
- **Review generated content**: Always review and approve stories before marking them ready
- **Maintain status updates**: Keep story statuses current (Draft → Approved → InProgress → Done)
- **Leverage Cursor's context**: Agents can see your current file selection for better assistance
This workflow ensures systematic, AI-assisted development following agile principles with clear handoffs between planning, story creation, and implementation phases.

140
docs/roo-code-guide.md Normal file
View File

@@ -0,0 +1,140 @@
# BMAD Method Guide for Roo Code
This guide walks you through the complete BMAD workflow using Roo Code as your AI-powered IDE.
## Step 1: Install BMAD in Your Project
1. Navigate to your project directory
2. Run the BMAD installer:
```bash
npx bmad-method install
```
3. When prompted:
- **Installation Type**: Choose "Complete installation (recommended)"
- **IDE**: Select "Roo Code"
This creates a `.bmad-core` folder with all agents and a `.roo/.roomodes` file with custom modes.
## Step 2: Set Up Team Fullstack in Gemini
For ideation and planning, use Google's Gemini with the team-fullstack configuration:
1. Open [Google AI Studio (Gemini)](https://aistudio.google.com/)
2. Create a new chat
3. Copy the contents of `/Users/brianmadison/dev/BMAD-METHOD/.bmad-core/web-bundles/teams/team-fullstack.txt`
4. Paste this content into Gemini to set up the team
### Gemini Planning Phase
In Gemini, ask the BMAD team to help you:
- **Ideate** your project concept
- **Brainstorm** features and requirements
- **Create a PRD** (Product Requirements Document)
- **Design the architecture**
Ask questions like:
- "Help me brainstorm a [type of application] that does [core functionality]"
- "Create a comprehensive PRD for this concept"
- "Design the technical architecture for this system"
Copy the PRD and architecture documents that Gemini creates into your project's `docs/` folder:
- `docs/prd.md`
- `docs/architecture.md`
## Step 3: Back to Roo Code - Document Sharding
Once you have your PRD and architecture documents in the `docs/` folder:
1. **Open your project in Roo Code**
2. **Select the bmad-master mode** from the mode selector (usually in status bar)
3. **Shard the PRD**: Type `*shard-doc docs/prd.md prd`
4. **Shard the architecture**: Type `*shard-doc docs/architecture.md architecture`
This creates organized folders:
- `docs/prd/` - Contains broken down PRD sections
- `docs/architecture/` - Contains broken down architecture sections
## Step 4: Story Development Cycle
Now begin the iterative development cycle:
### Create Stories (Scrum Master)
1. **Start a new chat or conversation**
2. **Switch to SM mode**: Select `bmad-sm` from the mode selector
3. **Create story**: Type `*create` (this runs the create-next-story task)
4. **Review the generated story**
5. **If approved**: Set story status to "Approved" in the story file
### Implement Stories (Developer)
1. **Start a new conversation**
2. **Switch to Dev mode**: Select `bmad-dev` from the mode selector
3. **The agent will ask which story to implement**
4. **Follow the development tasks** the agent provides
5. **When story is complete**: Mark status as "Done"
### Repeat the Cycle
1. **Switch to SM mode** (`bmad-sm`)
2. **Create next story**: Type `*create`
3. **Review and approve**
4. **Switch to Dev mode** (`bmad-dev`)
5. **Implement the story**
6. **Repeat until project complete**
## Available Custom Modes in Roo Code
All BMAD agents are available as custom modes:
- `bmad-bmad-master` - 🧙 Universal task executor
- `bmad-sm` - 🏃 Scrum Master for story creation
- `bmad-dev` - 💻 Full-stack developer for implementation
- `bmad-architect` - 🏗️ Solution architect for design
- `bmad-pm` - 📋 Product manager for planning
- `bmad-analyst` - 📊 Business analyst for requirements
- `bmad-qa` - 🧪 QA specialist for testing
- `bmad-po` - 🎯 Product owner for prioritization
- `bmad-ux-expert` - 🎨 UX specialist for design
## Roo Code-Specific Features
- **Custom modes are stored in**: `.roo/.roomodes` file
- **Mode switching**: Use the mode selector in Roo Code's interface
- **File permissions**: Each agent has specific file access permissions
- **Documentation agents** (SM, PM, PO, Analyst): Limited to `.md` and `.txt` files
- **Technical agents** (Dev, Architect, Master): Full file access
- **QA agents**: Access to test files and documentation
- **UX agents**: Access to design-related files
- **Context preservation**: Modes maintain context within conversations
## Key Workflow Principles
1. **Switch modes instead of starting new chats** - Roo Code handles context better with mode switching
2. **Use Gemini for initial planning** and ideation with the team-fullstack bundle
3. **Use bmad-master mode for document management** (sharding, templates, etc.)
4. **Follow the SM → Dev mode cycle** for consistent story development
5. **Review and approve stories** before implementation begins
## Tips for Success
- **Use mode selector effectively**: Switch modes as needed for different tasks
- **Respect file permissions**: Agents can only edit files they have permission for
- **Use \*help command**: Every mode supports `*help` to see available commands
- **Review generated content**: Always review and approve stories before marking them ready
- **Maintain status updates**: Keep story statuses current (Draft → Approved → InProgress → Done)
- **Leverage Roo's context**: Modes can maintain context across the conversation
## File Permission Summary
- **bmad-analyst, bmad-pm, bmad-po, bmad-sm**: `.md`, `.txt` files only
- **bmad-architect**: `.md`, `.txt`, `.yml`, `.yaml`, `.json` files
- **bmad-qa**: Test files (`.test.js`, `.spec.ts`, etc.) and `.md` files
- **bmad-ux-expert**: `.md`, `.css`, `.scss`, `.html`, `.jsx`, `.tsx` files
- **bmad-dev, bmad-bmad-master, bmad-orchestrator**: Full file access
This workflow ensures systematic, AI-assisted development following agile principles with clear handoffs between planning, story creation, and implementation phases.

View File

@@ -0,0 +1,42 @@
# PRD
## Epic 1: Core To-Do Functionality
**Goal:** To deliver a functional, single-user to-do application with user authentication and full CRUD (Create, Read, Update, Delete) capabilities for tasks.
**Stories:**
**Story 1.1: User Authentication**
- **As a** user,
- **I want** to be able to sign up, log in, and log out,
- **so that** I can securely manage my personal to-do list.
- **Acceptance Criteria:**
1. The application uses the Supabase Auth UI for login and sign-up forms.
2. A user can create an account and will be automatically logged in.
3. A logged-in user can log out, which redirects them to the login page.
4. The main to-do list page is protected and only visible to authenticated users.
**Story 1.2: Create and View To-Dos**
- **As an** authenticated user,
- **I want** to enter a task into an input field and see it appear on my to-do list,
- **so that** I can keep track of my tasks.
- **Acceptance Criteria:**
1. There is a text input field and a "Create" button on the main page.
2. Submitting a new task adds it to the database and displays it in the list of to-dos without a page refresh.
3. The to-do list is fetched from the Supabase database when the page loads.
4. The input field is cleared after a to-do is successfully created.
**Story 1.3: Update and Delete To-Dos**
- **As an** authenticated user,
- **I want** to be able to mark a to-do as complete and delete it,
- **so that** I can manage my task list effectively.
- **Acceptance Criteria:**
1. Each to-do item has a checkbox or button to toggle its "completed" status.
2. Changing the status updates the item in the database and visually (e.g., with a strikethrough).
3. Each to-do item has a "Delete" button.
4. Clicking "Delete" removes the to-do from the UI and the database.
With this epic, the planning phase is complete. All the requirements are clearly defined and structured for development.

View File

@@ -8,7 +8,7 @@ The easiest way to release new versions is through **automatic semantic releases
Use these prefixes to control what type of release happens:
```bash
````bash
fix: resolve CLI argument parsing bug # → patch release (4.1.0 → 4.1.1)
feat: add new agent orchestration mode # → minor release (4.1.0 → 4.2.0)
feat!: redesign CLI interface # → major release (4.1.0 → 5.0.0)
@@ -35,13 +35,13 @@ git push
# That's it! Release happens automatically 🎉
# Users can now run: npx bmad-method (and get the new version)
```
````
### Commits That DON'T Trigger Releases
These commit types won't create releases (use them for maintenance):
```bash
````bash
chore: update dependencies # No release
docs: fix typo in readme # No release
style: format code # No release
@@ -52,7 +52,7 @@ test: add unit tests # No release
```bash
npm run release:test # Safe to run locally - tests the config
```
````
---

127
docs/windsurf-guide.md Normal file
View File

@@ -0,0 +1,127 @@
# BMAD Method Guide for Windsurf
This guide walks you through the complete BMAD workflow using Windsurf as your AI-powered IDE.
## Step 1: Install BMAD in Your Project
1. Navigate to your project directory
2. Run the BMAD installer:
```bash
npx bmad-method install
```
3. When prompted:
- **Installation Type**: Choose "Complete installation (recommended)"
- **IDE**: Select "Windsurf"
This creates a `.bmad-core` folder with all agents and a `.windsurf/rules` folder with agent rules.
## Step 2: Set Up Team Fullstack in Gemini
For ideation and planning, use Google's Gemini with the team-fullstack configuration:
1. Open [Google AI Studio (Gemini)](https://aistudio.google.com/)
2. Create a new chat
3. Copy the contents of `/Users/brianmadison/dev/BMAD-METHOD/.bmad-core/web-bundles/teams/team-fullstack.txt`
4. Paste this content into Gemini to set up the team
### Gemini Planning Phase
In Gemini, ask the BMAD team to help you:
- **Ideate** your project concept
- **Brainstorm** features and requirements
- **Create a PRD** (Product Requirements Document)
- **Design the architecture**
Ask questions like:
- "Help me brainstorm a [type of application] that does [core functionality]"
- "Create a comprehensive PRD for this concept"
- "Design the technical architecture for this system"
Copy the PRD and architecture documents that Gemini creates into your project's `docs/` folder:
- `docs/prd.md`
- `docs/architecture.md`
## Step 3: Back to Windsurf - Document Sharding
Once you have your PRD and architecture documents in the `docs/` folder:
1. **Start a new chat in Windsurf**
2. **Load the bmad-master agent**: Type `@bmad-master`
3. **Shard the PRD**: Type `*shard-doc docs/prd.md prd`
4. **Shard the architecture**: Type `*shard-doc docs/architecture.md architecture`
This creates organized folders:
- `docs/prd/` - Contains broken down PRD sections
- `docs/architecture/` - Contains broken down architecture sections
## Step 4: Story Development Cycle
Now begin the iterative development cycle:
### Create Stories (Scrum Master)
1. **Start a new chat**
2. **Load SM agent**: Type `@sm`
3. **Create story**: Type `*create` (this runs the create-next-story task)
4. **Review the generated story**
5. **If approved**: Set story status to "Approved" in the story file
### Implement Stories (Developer)
1. **Start a new chat**
2. **Load Dev agent**: Type `@dev`
3. **The agent will ask which story to implement**
4. **Follow the development tasks** the agent provides
5. **When story is complete**: Mark status as "Done"
### Repeat the Cycle
1. **Start a new chat with SM agent** (`@sm`)
2. **Create next story**: Type `*create`
3. **Review and approve**
4. **Start new chat with Dev agent** (`@dev`)
5. **Implement the story**
6. **Repeat until project complete**
## Available Agent Rules in Windsurf
All BMAD agents are available as Windsurf rules (use `@` prefix):
- `@bmad-master` - Universal task executor
- `@sm` - Scrum Master for story creation
- `@dev` - Full-stack developer for implementation
- `@architect` - Solution architect for design
- `@pm` - Product manager for planning
- `@analyst` - Business analyst for requirements
- `@qa` - QA specialist for testing
- `@po` - Product owner for prioritization
- `@ux-expert` - UX specialist for design
## Windsurf-Specific Features
- **Agent rules are stored in**: `.windsurf/rules/` as `.md` files
- **Rule activation**: Rules activate when you mention `@agent-name` in chat
- **Collaborative workflow**: Windsurf's collaborative features work well with BMAD's agent-switching pattern
- **Context awareness**: Agents have access to your project context
## Key Workflow Principles
1. **Always start new chats** when switching agents to avoid context confusion
2. **Use Gemini for initial planning** and ideation with the team-fullstack bundle
3. **Use bmad-master for document management** (sharding, templates, etc.)
4. **Follow the SM → Dev cycle** for consistent story development
5. **Review and approve stories** before implementation begins
## Tips for Success
- **Keep chats focused**: Each chat should have one agent and one primary task
- **Use \*help command**: Every agent supports `*help` to see available commands
- **Review generated content**: Always review and approve stories before marking them ready
- **Maintain status updates**: Keep story statuses current (Draft → Approved → InProgress → Done)
- **Leverage Windsurf's collaboration**: Use the collaborative features for team reviews
This workflow ensures systematic, AI-assisted development following agile principles with clear handoffs between planning, story creation, and implementation phases.

View File

@@ -2,7 +2,7 @@
CRITICAL: Read the full YML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:
```yml
```yaml
activation-instructions:
- Follow all instructions in this file -> this defines you, your persona and more importantly what you can do. STAY IN CHARACTER!
- Only read the files/tasks listed here when user selects them for execution to minimize context usage

1269
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +1,11 @@
{
"name": "bmad-method",
"version": "1.0.1",
"version": "4.3.0",
"description": "Breakthrough Method of Agile AI-driven Development",
"main": "tools/cli.js",
"bin": {
"bmad": "./tools/bmad-npx-wrapper.js",
"bmad-method": "./tools/bmad-npx-wrapper.js"
"bmad": "tools/bmad-npx-wrapper.js",
"bmad-method": "tools/bmad-npx-wrapper.js"
},
"scripts": {
"build": "node tools/cli.js build",
@@ -23,14 +23,14 @@
"prepare": "husky"
},
"dependencies": {
"@kayvan/markdown-tree-parser": "^1.4.2",
"chalk": "^4.1.2",
"commander": "^9.4.1",
"fs-extra": "^11.1.0",
"glob": "^8.0.3",
"inquirer": "^8.2.5",
"@kayvan/markdown-tree-parser": "^1.5.0",
"chalk": "^5.4.1",
"commander": "^14.0.0",
"fs-extra": "^11.3.0",
"glob": "^11.0.3",
"inquirer": "^12.6.3",
"js-yaml": "^4.1.0",
"ora": "^5.4.1"
"ora": "^8.2.0"
},
"keywords": [
"agile",
@@ -45,7 +45,7 @@
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/bmadcode/BMAD-METHOD.git"
"url": "git+https://github.com/bmadcode/BMAD-METHOD.git"
},
"engines": {
"node": ">=14.0.0"
@@ -60,14 +60,20 @@
"yaml-lint": "^1.7.0"
},
"lint-staged": {
"*.{yml,yaml}": [
"**/*.{yml,yaml}": [
"node tools/yaml-format.js"
],
"*.md": [
"**/*.md": [
"node tools/yaml-format.js"
],
".roomodes": [
"node tools/yaml-format.js"
],
".bmad-core/**/*.yml": [
"node tools/yaml-format.js"
],
".github/**/*.yml": [
"node tools/yaml-format.js"
]
}
}

View File

@@ -1,5 +1,5 @@
const fs = require('fs').promises;
const path = require('path');
const fs = require('node:fs').promises;
const path = require('node:path');
const DependencyResolver = require('../lib/dependency-resolver');
class WebBuilder {
@@ -19,6 +19,7 @@ class WebBuilder {
await fs.rm(dir, { recursive: true, force: true });
console.log(`Cleaned: ${path.relative(this.rootDir, dir)}`);
} catch (error) {
console.debug(`Failed to clean directory ${dir}:`, error.message);
// Directory might not exist, that's fine
}
}
@@ -26,11 +27,11 @@ class WebBuilder {
async buildAgents() {
const agents = await this.resolver.listAgents();
for (const agentId of agents) {
console.log(` Building agent: ${agentId}`);
const bundle = await this.buildAgentBundle(agentId);
// Write to all output directories
for (const outputDir of this.outputDirs) {
const outputPath = path.join(outputDir, 'agents');
@@ -45,11 +46,11 @@ class WebBuilder {
async buildTeams() {
const teams = await this.resolver.listTeams();
for (const teamId of teams) {
console.log(` Building team: ${teamId}`);
const bundle = await this.buildTeamBundle(teamId);
// Write to all output directories
for (const outputDir of this.outputDirs) {
const outputPath = path.join(outputDir, 'teams');
@@ -65,39 +66,39 @@ class WebBuilder {
async buildAgentBundle(agentId) {
const dependencies = await this.resolver.resolveAgentDependencies(agentId);
const template = await fs.readFile(this.templatePath, 'utf8');
const sections = [template];
// Add agent configuration
sections.push(this.formatSection(dependencies.agent.path, dependencies.agent.content));
// Add all dependencies
for (const resource of dependencies.resources) {
sections.push(this.formatSection(resource.path, resource.content));
}
return sections.join('\n');
}
async buildTeamBundle(teamId) {
const dependencies = await this.resolver.resolveTeamDependencies(teamId);
const template = await fs.readFile(this.templatePath, 'utf8');
const sections = [template];
// Add team configuration
sections.push(this.formatSection(dependencies.team.path, dependencies.team.content));
// Add all agents
for (const agent of dependencies.agents) {
sections.push(this.formatSection(agent.path, agent.content));
}
// Add all deduplicated resources
for (const resource of dependencies.resources) {
sections.push(this.formatSection(resource.path, resource.content));
}
return sections.join('\n');
}

View File

@@ -33,7 +33,7 @@ installer/
## Usage
```bash
````bash
# Interactive installation
npx bmad-method install
@@ -55,4 +55,4 @@ npm test
# Lint code
npm run lint
```
````

View File

@@ -1,24 +1,34 @@
#!/usr/bin/env node
const { program } = require('commander');
const inquirer = require('inquirer');
const chalk = require('chalk');
const path = require('path');
// Dynamic imports for ES modules
let chalk, inquirer;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import('chalk')).default;
inquirer = (await import('inquirer')).default;
}
}
// Handle both execution contexts (from root via npx or from installer directory)
let version, installer;
let version;
let installer;
try {
// Try installer context first (when run from tools/installer/)
version = require('../package.json').version;
installer = require('../lib/installer');
} catch (e) {
// Fall back to root context (when run via npx from GitHub)
console.log(`Installer context not found (${e.message}), trying root context...`);
try {
version = require('../../../package.json').version;
installer = require('../../../tools/installer/lib/installer');
} catch (e2) {
console.error(chalk.red('Error: Could not load required modules. Please ensure you are running from the correct directory.'));
console.error(chalk.yellow('Debug info:'), {
console.error('Error: Could not load required modules. Please ensure you are running from the correct directory.');
console.error('Debug info:', {
__dirname,
cwd: process.cwd(),
error: e2.message
@@ -36,25 +46,27 @@ program
.description('Install BMAD Method agents and tools')
.option('-f, --full', 'Install complete .bmad-core folder')
.option('-a, --agent <agent>', 'Install specific agent with dependencies')
.option('-d, --directory <path>', 'Installation directory (default: ./bmad-core)')
.option('-i, --ide <ide>', 'Configure for specific IDE (cursor, claude-code, windsurf, roo)')
.option('-d, --directory <path>', 'Installation directory (default: .bmad-core)')
.option('-i, --ide <ide...>', 'Configure for specific IDE(s) - can specify multiple (cursor, claude-code, windsurf, roo)')
.action(async (options) => {
try {
await initializeModules();
if (!options.full && !options.agent) {
// Interactive mode
const answers = await promptInstallation(options);
const answers = await promptInstallation();
await installer.install(answers);
} else {
// Direct mode
const config = {
installType: options.full ? 'full' : 'single-agent',
agent: options.agent,
directory: options.directory || './.bmad-core',
ide: options.ide
directory: options.directory || '.bmad-core',
ides: options.ide || []
};
await installer.install(config);
}
} catch (error) {
if (!chalk) await initializeModules();
console.error(chalk.red('Installation failed:'), error.message);
process.exit(1);
}
@@ -65,10 +77,11 @@ program
.description('Update existing BMAD installation')
.option('--force', 'Force update, overwriting modified files')
.option('--dry-run', 'Show what would be updated without making changes')
.action(async (options) => {
.action(async () => {
try {
await installer.update(options);
await installer.update();
} catch (error) {
if (!chalk) await initializeModules();
console.error(chalk.red('Update failed:'), error.message);
process.exit(1);
}
@@ -81,6 +94,7 @@ program
try {
await installer.listAgents();
} catch (error) {
if (!chalk) await initializeModules();
console.error(chalk.red('Error:'), error.message);
process.exit(1);
}
@@ -93,27 +107,29 @@ program
try {
await installer.showStatus();
} catch (error) {
if (!chalk) await initializeModules();
console.error(chalk.red('Error:'), error.message);
process.exit(1);
}
});
async function promptInstallation(options) {
async function promptInstallation() {
await initializeModules();
console.log(chalk.bold.blue(`\nWelcome to BMAD Method Installer v${version}\n`));
const answers = {};
// Ask for installation directory
const { directory } = await inquirer.prompt([
{
type: 'input',
name: 'directory',
message: 'Where would you like to install BMAD?',
default: './.bmad-core'
default: '.bmad-core'
}
]);
answers.directory = directory;
// Ask for installation type
const { installType } = await inquirer.prompt([
{
@@ -133,7 +149,7 @@ async function promptInstallation(options) {
}
]);
answers.installType = installType;
// If single agent, ask which one
if (installType === 'single-agent') {
const agents = await installer.getAvailableAgents();
@@ -150,24 +166,29 @@ async function promptInstallation(options) {
]);
answers.agent = agent;
}
// Ask for IDE configuration
const { ide } = await inquirer.prompt([
const { ides } = await inquirer.prompt([
{
type: 'list',
name: 'ide',
message: 'Which IDE are you using?',
type: 'checkbox',
name: 'ides',
message: 'Which IDE(s) are you using? (Select all that apply)',
choices: [
{ name: 'Cursor', value: 'cursor' },
{ name: 'Claude Code', value: 'claude-code' },
{ name: 'Windsurf', value: 'windsurf' },
{ name: 'Roo Code', value: 'roo' },
{ name: 'Other/Manual setup', value: null }
]
{ name: 'Roo Code', value: 'roo' }
],
validate: (answer) => {
if (answer.length < 1) {
return 'You must choose at least one IDE, or press Ctrl+C to skip IDE setup.';
}
return true;
}
}
]);
answers.ide = ide;
answers.ides = ides;
return answers;
}

View File

@@ -2,7 +2,16 @@ const fs = require("fs-extra");
const path = require("path");
const crypto = require("crypto");
const glob = require("glob");
const chalk = require("chalk");
// Dynamic import for ES module
let chalk;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import("chalk")).default;
}
}
class FileManager {
constructor() {
@@ -16,6 +25,7 @@ class FileManager {
await fs.copy(source, destination);
return true;
} catch (error) {
await initializeModules();
console.error(chalk.red(`Failed to copy ${source}:`), error.message);
return false;
}
@@ -27,6 +37,7 @@ class FileManager {
await fs.copy(source, destination);
return true;
} catch (error) {
await initializeModules();
console.error(
chalk.red(`Failed to copy directory ${source}:`),
error.message
@@ -72,11 +83,12 @@ class FileManager {
);
const manifest = {
version: require("../package.json").version,
version: require("../../../package.json").version,
installed_at: new Date().toISOString(),
install_type: config.installType,
agent: config.agent || null,
ide_setup: config.ide || null,
ides_setup: config.ides || [],
files: [],
};
@@ -145,7 +157,12 @@ class FileManager {
}
async ensureDirectory(dirPath) {
await fs.ensureDir(dirPath);
try {
await fs.ensureDir(dirPath);
return true;
} catch (error) {
throw error;
}
}
async pathExists(filePath) {

View File

@@ -1,10 +1,20 @@
const path = require("path");
const fileManager = require("./file-manager");
const configLoader = require("./config-loader");
const chalk = require("chalk");
// Dynamic import for ES module
let chalk;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import("chalk")).default;
}
}
class IdeSetup {
async setup(ide, installDir, selectedAgent = null) {
await initializeModules();
const ideConfig = await configLoader.getIdeConfiguration(ide);
if (!ideConfig) {

View File

@@ -1,18 +1,94 @@
const path = require("path");
const chalk = require("chalk");
const ora = require("ora");
const inquirer = require("inquirer");
const path = require("node:path");
const fileManager = require("./file-manager");
const configLoader = require("./config-loader");
const ideSetup = require("./ide-setup");
// Dynamic imports for ES modules
let chalk, ora, inquirer;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import("chalk")).default;
ora = (await import("ora")).default;
inquirer = (await import("inquirer")).default;
}
}
class Installer {
async install(config) {
// Initialize ES modules
await initializeModules();
const spinner = ora("Analyzing installation directory...").start();
try {
// Resolve installation directory
const installDir = path.resolve(config.directory);
let installDir = path.resolve(config.directory);
if (path.basename(installDir) === '.bmad-core') {
// If user points directly to .bmad-core, treat its parent as the project root
installDir = path.dirname(installDir);
}
// Check if directory exists and handle non-existent directories
if (!(await fileManager.pathExists(installDir))) {
spinner.stop();
console.log(chalk.yellow(`\nThe directory ${chalk.bold(installDir)} does not exist.`));
const { action } = await inquirer.prompt([
{
type: 'list',
name: 'action',
message: 'What would you like to do?',
choices: [
{
name: 'Create the directory and continue',
value: 'create'
},
{
name: 'Choose a different directory',
value: 'change'
},
{
name: 'Cancel installation',
value: 'cancel'
}
]
}
]);
if (action === 'cancel') {
console.log(chalk.red('Installation cancelled.'));
process.exit(0);
} else if (action === 'change') {
const { newDirectory } = await inquirer.prompt([
{
type: 'input',
name: 'newDirectory',
message: 'Enter the new directory path:',
validate: (input) => {
if (!input.trim()) {
return 'Please enter a valid directory path';
}
return true;
}
}
]);
config.directory = newDirectory;
return await this.install(config); // Recursive call with new directory
} else if (action === 'create') {
try {
await fileManager.ensureDirectory(installDir);
console.log(chalk.green(`✓ Created directory: ${installDir}`));
} catch (error) {
console.error(chalk.red(`Failed to create directory: ${error.message}`));
console.error(chalk.yellow('You may need to check permissions or use a different path.'));
process.exit(1);
}
}
spinner.start("Analyzing installation directory...");
}
// Detect current state
const state = await this.detectInstallationState(installDir);
@@ -53,6 +129,8 @@ class Installer {
}
async detectInstallationState(installDir) {
// Ensure modules are initialized
await initializeModules();
const state = {
type: "clean",
hasV4Manifest: false,
@@ -75,7 +153,7 @@ class Installer {
state.type = "v4_existing";
state.hasV4Manifest = true;
state.hasBmadCore = true;
state.manifest = await fileManager.readManifest(bmadCorePath);
state.manifest = await fileManager.readManifest(installDir);
return state;
}
@@ -103,15 +181,17 @@ class Installer {
});
if (files.length > 0) {
state.type = "unknown_existing";
// Directory has other files, but no BMAD installation.
// Treat as clean install but record that it isn't empty.
state.hasOtherFiles = true;
return state;
}
return state; // clean install
}
async performFreshInstall(config, installDir, spinner) {
// Ensure modules are initialized
await initializeModules();
spinner.text = "Installing BMAD Method...";
let files = [];
@@ -182,9 +262,12 @@ class Installer {
}
// Set up IDE integration if requested
if (config.ide) {
spinner.text = `Setting up ${config.ide} integration...`;
await ideSetup.setup(config.ide, installDir, config.agent);
const ides = config.ides || (config.ide ? [config.ide] : []);
if (ides.length > 0) {
for (const ide of ides) {
spinner.text = `Setting up ${ide} integration...`;
await ideSetup.setup(ide, installDir, config.agent);
}
}
// Create manifest
@@ -196,6 +279,8 @@ class Installer {
}
async handleExistingV4Installation(config, installDir, state, spinner) {
// Ensure modules are initialized
await initializeModules();
spinner.stop();
console.log(chalk.yellow("\n🔍 Found existing BMAD v4 installation"));
@@ -222,7 +307,7 @@ class Installer {
switch (action) {
case "update":
return await this.performUpdate(installDir, state.manifest, spinner);
return await this.performUpdate(config, installDir, state.manifest, spinner);
case "reinstall":
return await this.performReinstall(config, installDir, spinner);
case "cancel":
@@ -232,6 +317,8 @@ class Installer {
}
async handleV3Installation(config, installDir, state, spinner) {
// Ensure modules are initialized
await initializeModules();
spinner.stop();
console.log(
@@ -253,11 +340,12 @@ class Installer {
]);
switch (action) {
case "upgrade":
case "upgrade": {
console.log(chalk.cyan("\n📦 Starting v3 to v4 upgrade process..."));
const V3ToV4Upgrader = require("../../upgraders/v3-to-v4-upgrader");
const upgrader = new V3ToV4Upgrader();
return await upgrader.upgrade({ projectPath: installDir });
}
case "alongside":
return await this.performFreshInstall(config, installDir, spinner);
case "cancel":
@@ -267,6 +355,8 @@ class Installer {
}
async handleUnknownInstallation(config, installDir, state, spinner) {
// Ensure modules are initialized
await initializeModules();
spinner.stop();
console.log(chalk.yellow("\n⚠ Directory contains existing files"));
@@ -295,7 +385,7 @@ class Installer {
switch (action) {
case "force":
return await this.performFreshInstall(config, installDir, spinner);
case "different":
case "different": {
const { newDir } = await inquirer.prompt([
{
type: "input",
@@ -306,13 +396,14 @@ class Installer {
]);
config.directory = newDir;
return await this.install(config);
}
case "cancel":
console.log("Installation cancelled.");
return;
}
}
async performUpdate(installDir, manifest, spinner) {
async performUpdate(newConfig, installDir, manifest, spinner) {
spinner.start("Checking for updates...");
try {
@@ -326,7 +417,9 @@ class Installer {
if (modifiedFiles.length > 0) {
spinner.warn("Found modified files");
console.log(chalk.yellow("\nThe following files have been modified:"));
modifiedFiles.forEach((file) => console.log(` - ${file}`));
for (const file of modifiedFiles) {
console.log(` - ${file}`);
}
const { action } = await inquirer.prompt([
{
@@ -364,7 +457,7 @@ class Installer {
installType: manifest.install_type,
agent: manifest.agent,
directory: installDir,
ide: manifest.ide_setup,
ide: newConfig.ide || manifest.ide_setup, // Use new IDE choice if provided
};
await this.performFreshInstall(config, installDir, spinner);
@@ -389,13 +482,16 @@ class Installer {
showSuccessMessage(config, installDir) {
console.log(chalk.green("\n✓ BMAD Method installed successfully!\n"));
if (config.ide) {
const ideConfig = configLoader.getIdeConfiguration(config.ide);
if (ideConfig && ideConfig.instructions) {
console.log(
chalk.bold("To use BMAD agents in " + ideConfig.name + ":")
);
console.log(ideConfig.instructions);
const ides = config.ides || (config.ide ? [config.ide] : []);
if (ides.length > 0) {
for (const ide of ides) {
const ideConfig = configLoader.getIdeConfiguration(ide);
if (ideConfig?.instructions) {
console.log(
chalk.bold(`To use BMAD agents in ${ideConfig.name}:`)
);
console.log(ideConfig.instructions);
}
}
} else {
console.log(chalk.yellow("No IDE configuration was set up."));
@@ -405,6 +501,25 @@ class Installer {
);
}
// Information about installation components
console.log(chalk.bold("\n🎯 Installation Summary:"));
console.log(chalk.green("✓ .bmad-core framework installed with all agents and workflows"));
if (ides.length > 0) {
const ideNames = ides.map(ide => {
const ideConfig = configLoader.getIdeConfiguration(ide);
return ideConfig?.name || ide;
}).join(", ");
console.log(chalk.green(`✓ IDE rules and configurations set up for: ${ideNames}`));
}
// Information about web bundles
console.log(chalk.bold("\n📦 Web Bundles Available:"));
console.log("Self-contained web bundles have been included in your installation:");
console.log(chalk.cyan(` ${installDir}/.bmad-core/web-bundles/`));
console.log("These bundles work independently without this installation and can be");
console.log("shared, moved, or used in other projects as standalone files.");
if (config.installType === "single-agent") {
console.log(
chalk.dim(
@@ -418,7 +533,9 @@ class Installer {
}
// Legacy method for backward compatibility
async update(options) {
async update() {
// Initialize ES modules
await initializeModules();
console.log(chalk.yellow('The "update" command is deprecated.'));
console.log(
'Please use "install" instead - it will detect and offer to update existing installations.'
@@ -432,19 +549,20 @@ class Installer {
ide: null,
};
return await this.install(config);
} else {
console.log(chalk.red("No BMAD installation found."));
}
console.log(chalk.red("No BMAD installation found."));
}
async listAgents() {
// Initialize ES modules
await initializeModules();
const agents = await configLoader.getAvailableAgents();
console.log(chalk.bold("\nAvailable BMAD Agents:\n"));
agents.forEach((agent) => {
for (const agent of agents) {
console.log(chalk.cyan(` ${agent.id.padEnd(20)}`), agent.description);
});
}
console.log(
chalk.dim("\nInstall with: npx bmad-method install --agent=<id>\n")
@@ -452,6 +570,8 @@ class Installer {
}
async showStatus() {
// Initialize ES modules
await initializeModules();
const installDir = await this.findInstallation();
if (!installDir) {

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "bmad-method",
"version": "4.0.0",
"version": "4.3.0",
"description": "BMAD Method installer - AI-powered Agile development framework",
"main": "lib/installer.js",
"bin": {
@@ -22,12 +22,12 @@
"author": "BMAD Team",
"license": "MIT",
"dependencies": {
"chalk": "^4.1.2",
"commander": "^9.4.1",
"fs-extra": "^11.1.0",
"inquirer": "^8.2.5",
"chalk": "^5.4.1",
"commander": "^14.0.0",
"fs-extra": "^11.3.0",
"inquirer": "^12.6.3",
"js-yaml": "^4.1.0",
"ora": "^5.4.1"
"ora": "^8.2.0"
},
"engines": {
"node": ">=14.0.0"
@@ -40,4 +40,4 @@
"url": "https://github.com/bmad-team/bmad-method/issues"
},
"homepage": "https://github.com/bmad-team/bmad-method#readme"
}
}

View File

@@ -14,7 +14,7 @@ class DependencyResolver {
const agentContent = await fs.readFile(agentPath, 'utf8');
// Extract YAML from markdown content
const yamlMatch = agentContent.match(/```yml\n([\s\S]*?)\n```/);
const yamlMatch = agentContent.match(/```ya?ml\n([\s\S]*?)\n```/);
if (!yamlMatch) {
throw new Error(`No YAML configuration found in agent ${agentId}`);
}

View File

@@ -0,0 +1,31 @@
/**
* Semantic-release plugin to sync installer package.json version
*/
const fs = require('fs');
const path = require('path');
function prepare(pluginConfig, context) {
const { nextRelease, logger } = context;
// Path to installer package.json
const installerPackagePath = path.join(process.cwd(), 'tools', 'installer', 'package.json');
if (!fs.existsSync(installerPackagePath)) {
logger.log('Installer package.json not found, skipping sync');
return;
}
// Read installer package.json
const installerPackage = JSON.parse(fs.readFileSync(installerPackagePath, 'utf8'));
// Update version
installerPackage.version = nextRelease.version;
// Write back
fs.writeFileSync(installerPackagePath, JSON.stringify(installerPackage, null, 2) + '\n');
logger.log(`Synced installer package.json to version ${nextRelease.version}`);
}
module.exports = { prepare };

View File

@@ -0,0 +1,34 @@
#!/usr/bin/env node
/**
* Sync installer package.json version with main package.json
* Used by semantic-release to keep versions in sync
*/
const fs = require('fs');
const path = require('path');
function syncInstallerVersion() {
// Read main package.json
const mainPackagePath = path.join(__dirname, '..', 'package.json');
const mainPackage = JSON.parse(fs.readFileSync(mainPackagePath, 'utf8'));
// Read installer package.json
const installerPackagePath = path.join(__dirname, 'installer', 'package.json');
const installerPackage = JSON.parse(fs.readFileSync(installerPackagePath, 'utf8'));
// Update installer version to match main version
installerPackage.version = mainPackage.version;
// Write back installer package.json
fs.writeFileSync(installerPackagePath, JSON.stringify(installerPackage, null, 2) + '\n');
console.log(`Synced installer version to ${mainPackage.version}`);
}
// Run if called directly
if (require.main === module) {
syncInstallerVersion();
}
module.exports = { syncInstallerVersion };

View File

@@ -1,11 +1,16 @@
const fs = require("fs").promises;
const path = require("path");
const chalk = require("chalk");
const ora = require("ora");
const glob = require("glob");
const inquirer = require("inquirer");
const { promisify } = require("util");
const globAsync = promisify(glob);
const { glob } = require("glob");
// Dynamic imports for ES modules
let chalk, ora, inquirer;
// Initialize ES modules
async function initializeModules() {
chalk = (await import("chalk")).default;
ora = (await import("ora")).default;
inquirer = (await import("inquirer")).default;
}
class V3ToV4Upgrader {
constructor() {
@@ -14,6 +19,8 @@ class V3ToV4Upgrader {
async upgrade(options = {}) {
try {
// Initialize ES modules
await initializeModules();
// Keep readline open throughout the process
process.stdin.resume();
@@ -233,17 +240,17 @@ class V3ToV4Upgrader {
}
// Find epic files
const epicFiles = await globAsync("epic*.md", { cwd: docsPath });
const epicFiles = await glob("epic*.md", { cwd: docsPath });
// Find story files
const storiesPath = path.join(docsPath, "stories");
let storyFiles = [];
if (await this.pathExists(storiesPath)) {
storyFiles = await globAsync("*.md", { cwd: storiesPath });
storyFiles = await glob("*.md", { cwd: storiesPath });
}
// Count custom files in bmad-agent
const bmadAgentFiles = await globAsync("**/*.md", {
const bmadAgentFiles = await glob("**/*.md", {
cwd: bmadAgentPath,
ignore: ["node_modules/**"],
});
@@ -738,13 +745,11 @@ class V3ToV4Upgrader {
async createInstallManifest(projectPath) {
const fileManager = require("../installer/lib/file-manager");
const glob = require("glob");
const { promisify } = require("util");
const globAsync = promisify(glob);
const { glob } = require("glob");
// Get all files in .bmad-core for the manifest
const bmadCorePath = path.join(projectPath, ".bmad-core");
const files = await globAsync("**/*", {
const files = await glob("**/*", {
cwd: bmadCorePath,
nodir: true,
ignore: ["**/.git/**", "**/node_modules/**"],

View File

@@ -2,7 +2,17 @@
const fs = require('fs');
const { execSync } = require('child_process');
const chalk = require('chalk');
const path = require('path');
// Dynamic import for ES module
let chalk;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import('chalk')).default;
}
}
/**
* Simple version bumping script for BMAD-METHOD
@@ -14,38 +24,32 @@ function getCurrentVersion() {
return packageJson.version;
}
function bumpVersion(type = 'patch') {
async function bumpVersion(type = 'patch') {
await initializeModules();
const validTypes = ['patch', 'minor', 'major'];
if (!validTypes.includes(type)) {
console.error(chalk.red(`Invalid version type: ${type}. Use: ${validTypes.join(', ')}`));
process.exit(1);
}
console.log(chalk.blue(`🔄 Bumping ${type} version...`));
console.log(chalk.yellow('⚠️ Manual version bumping is disabled.'));
console.log(chalk.blue('🤖 This project uses semantic-release for automated versioning.'));
console.log('');
console.log(chalk.bold('To create a new release, use conventional commits:'));
console.log(chalk.cyan(' feat: new feature (minor version bump)'));
console.log(chalk.cyan(' fix: bug fix (patch version bump)'));
console.log(chalk.cyan(' feat!: breaking change (major version bump)'));
console.log('');
console.log(chalk.dim('Example: git commit -m "feat: add new installer features"'));
console.log(chalk.dim('Then push to main branch to trigger automatic release.'));
// Use npm version to bump and create git tag
try {
const newVersion = execSync(`npm version ${type} --no-git-tag-version`, { encoding: 'utf8' }).trim();
console.log(chalk.green(`✅ Version bumped to ${newVersion}`));
// Stage the package.json change
execSync('git add package.json');
// Create commit and tag
execSync(`git commit -m "chore: bump version to ${newVersion}"`);
execSync(`git tag -a ${newVersion} -m "Release ${newVersion}"`);
console.log(chalk.green(`✅ Created git tag: ${newVersion}`));
console.log(chalk.yellow(`💡 Run 'git push && git push --tags' to publish`));
return newVersion;
} catch (error) {
console.error(chalk.red('❌ Version bump failed:'), error.message);
process.exit(1);
}
return null;
}
function main() {
async function main() {
await initializeModules();
const type = process.argv[2] || 'patch';
const currentVersion = getCurrentVersion();
@@ -59,14 +63,17 @@ function main() {
process.exit(1);
}
const newVersion = bumpVersion(type);
const newVersion = await bumpVersion(type);
console.log(chalk.green(`\n🎉 Version bump complete!`));
console.log(chalk.blue(`📦 ${currentVersion}${newVersion}`));
}
if (require.main === module) {
main();
main().catch(error => {
console.error('Error:', error);
process.exit(1);
});
}
module.exports = { bumpVersion, getCurrentVersion };

View File

@@ -4,14 +4,24 @@ const fs = require('fs');
const path = require('path');
const yaml = require('js-yaml');
const { execSync } = require('child_process');
const chalk = require('chalk');
// Dynamic import for ES module
let chalk;
// Initialize ES modules
async function initializeModules() {
if (!chalk) {
chalk = (await import('chalk')).default;
}
}
/**
* YAML Formatter and Linter for BMAD-METHOD
* Formats and validates YAML files and YAML embedded in Markdown
*/
function formatYamlContent(content, filename) {
async function formatYamlContent(content, filename) {
await initializeModules();
try {
// First try to fix common YAML issues
let fixedContent = content
@@ -62,7 +72,8 @@ function formatYamlContent(content, filename) {
}
}
function processMarkdownFile(filePath) {
async function processMarkdownFile(filePath) {
await initializeModules();
const content = fs.readFileSync(filePath, 'utf8');
let modified = false;
let newContent = content;
@@ -77,22 +88,34 @@ function processMarkdownFile(filePath) {
// Find YAML code blocks
const yamlBlockRegex = /```ya?ml\n([\s\S]*?)\n```/g;
let match;
const replacements = [];
newContent = newContent.replace(yamlBlockRegex, (match, yamlContent) => {
const formatted = formatYamlContent(yamlContent, filePath);
if (formatted === null) {
return match; // Keep original if parsing failed
while ((match = yamlBlockRegex.exec(newContent)) !== null) {
const [fullMatch, yamlContent] = match;
const formatted = await formatYamlContent(yamlContent, filePath);
if (formatted !== null) {
// Remove trailing newline that js-yaml adds
const trimmedFormatted = formatted.replace(/\n$/, '');
if (trimmedFormatted !== yamlContent) {
modified = true;
console.log(chalk.green(`✓ Formatted YAML in ${filePath}`));
}
replacements.push({
start: match.index,
end: match.index + fullMatch.length,
replacement: `\`\`\`yaml\n${trimmedFormatted}\n\`\`\``
});
}
// Remove trailing newline that js-yaml adds
const trimmedFormatted = formatted.replace(/\n$/, '');
if (trimmedFormatted !== yamlContent) {
modified = true;
}
return `\`\`\`yml\n${trimmedFormatted}\n\`\`\``;
});
}
// Apply replacements in reverse order to maintain indices
for (let i = replacements.length - 1; i >= 0; i--) {
const { start, end, replacement } = replacements[i];
newContent = newContent.slice(0, start) + replacement + newContent.slice(end);
}
if (modified) {
fs.writeFileSync(filePath, newContent);
@@ -101,9 +124,10 @@ function processMarkdownFile(filePath) {
return false;
}
function processYamlFile(filePath) {
async function processYamlFile(filePath) {
await initializeModules();
const content = fs.readFileSync(filePath, 'utf8');
const formatted = formatYamlContent(content, filePath);
const formatted = await formatYamlContent(content, filePath);
if (formatted === null) {
return false; // Syntax error
@@ -116,7 +140,8 @@ function processYamlFile(filePath) {
return false;
}
function lintYamlFile(filePath) {
async function lintYamlFile(filePath) {
await initializeModules();
try {
// Use yaml-lint for additional validation
execSync(`npx yaml-lint "${filePath}"`, { stdio: 'pipe' });
@@ -128,7 +153,8 @@ function lintYamlFile(filePath) {
}
}
function main() {
async function main() {
await initializeModules();
const args = process.argv.slice(2);
const glob = require('glob');
@@ -170,13 +196,13 @@ function main() {
try {
let changed = false;
if (ext === '.md') {
changed = processMarkdownFile(filePath);
changed = await processMarkdownFile(filePath);
} else if (ext === '.yml' || ext === '.yaml' || basename.includes('roomodes') || basename.includes('.yml') || basename.includes('.yaml')) {
// Handle YAML files and special cases like .roomodes
changed = processYamlFile(filePath);
changed = await processYamlFile(filePath);
// Also run linting
const lintPassed = lintYamlFile(filePath);
const lintPassed = await lintYamlFile(filePath);
if (!lintPassed) hasErrors = true;
} else {
// Skip silently for unsupported files
@@ -205,7 +231,10 @@ function main() {
}
if (require.main === module) {
main();
main().catch(error => {
console.error('Error:', error);
process.exit(1);
});
}
module.exports = { formatYamlContent, processMarkdownFile, processYamlFile };