Compare commits
10 Commits
7e4d1ad757
...
e70c09c1c1
| Author | SHA1 | Date |
|---|---|---|
|
|
e70c09c1c1 | |
|
|
d6251a6661 | |
|
|
6aa67d732d | |
|
|
ad4e813470 | |
|
|
cc140057ad | |
|
|
6da9e55ce5 | |
|
|
8e5898e862 | |
|
|
44ba15f9a1 | |
|
|
db8f856fce | |
|
|
ec973ebcf3 |
|
|
@ -59,13 +59,13 @@ Critical warnings only — data loss, security issues
|
||||||
| 2 | Planning | Requirements — PRD or tech-spec *(required)* |
|
| 2 | Planning | Requirements — PRD or tech-spec *(required)* |
|
||||||
```
|
```
|
||||||
|
|
||||||
**Commands:**
|
**Skills:**
|
||||||
|
|
||||||
```md
|
```md
|
||||||
| Command | Agent | Purpose |
|
| Skill | Agent | Purpose |
|
||||||
| ------------ | ------- | ------------------------------------ |
|
| ------------ | ------- | ------------------------------------ |
|
||||||
| `brainstorm` | Analyst | Brainstorm a new project |
|
| `bmad-brainstorming` | Analyst | Brainstorm a new project |
|
||||||
| `prd` | PM | Create Product Requirements Document |
|
| `bmad-create-prd` | PM | Create Product Requirements Document |
|
||||||
```
|
```
|
||||||
|
|
||||||
## Folder Structure Blocks
|
## Folder Structure Blocks
|
||||||
|
|
@ -99,7 +99,7 @@ your-project/
|
||||||
9. Step 2: [Second Major Task]
|
9. Step 2: [Second Major Task]
|
||||||
10. Step 3: [Third Major Task]
|
10. Step 3: [Third Major Task]
|
||||||
11. What You've Accomplished (summary + folder structure)
|
11. What You've Accomplished (summary + folder structure)
|
||||||
12. Quick Reference (commands table)
|
12. Quick Reference (skills table)
|
||||||
13. Common Questions (FAQ format)
|
13. Common Questions (FAQ format)
|
||||||
14. Getting Help (community links)
|
14. Getting Help (community links)
|
||||||
15. Key Takeaways (tip admonition)
|
15. Key Takeaways (tip admonition)
|
||||||
|
|
@ -111,7 +111,7 @@ your-project/
|
||||||
- [ ] "What You'll Learn" section present
|
- [ ] "What You'll Learn" section present
|
||||||
- [ ] Prerequisites in admonition
|
- [ ] Prerequisites in admonition
|
||||||
- [ ] Quick Path TL;DR admonition at top
|
- [ ] Quick Path TL;DR admonition at top
|
||||||
- [ ] Tables for phases, commands, agents
|
- [ ] Tables for phases, skills, agents
|
||||||
- [ ] "What You've Accomplished" section present
|
- [ ] "What You've Accomplished" section present
|
||||||
- [ ] Quick Reference table present
|
- [ ] Quick Reference table present
|
||||||
- [ ] Common Questions section present
|
- [ ] Common Questions section present
|
||||||
|
|
@ -243,7 +243,7 @@ your-project/
|
||||||
1. Title + Hook
|
1. Title + Hook
|
||||||
2. Items (## for each item)
|
2. Items (## for each item)
|
||||||
- Brief description (one sentence)
|
- Brief description (one sentence)
|
||||||
- **Commands:** or **Key Info:** as flat list
|
- **Skills:** or **Key Info:** as flat list
|
||||||
3. Universal/Shared (## section) (optional)
|
3. Universal/Shared (## section) (optional)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -252,7 +252,7 @@ your-project/
|
||||||
```text
|
```text
|
||||||
1. Title + Hook (one sentence purpose)
|
1. Title + Hook (one sentence purpose)
|
||||||
2. Quick Facts (optional note admonition)
|
2. Quick Facts (optional note admonition)
|
||||||
- Module, Command, Input, Output as list
|
- Module, Skill, Input, Output as list
|
||||||
3. Purpose/Overview (## section)
|
3. Purpose/Overview (## section)
|
||||||
4. How to Invoke (code block)
|
4. How to Invoke (code block)
|
||||||
5. Key Sections (## for each aspect)
|
5. Key Sections (## for each aspect)
|
||||||
|
|
@ -280,7 +280,7 @@ your-project/
|
||||||
- Diagram or table showing organization
|
- Diagram or table showing organization
|
||||||
3. Major Sections (## for each phase/category)
|
3. Major Sections (## for each phase/category)
|
||||||
- Items (### for each item)
|
- Items (### for each item)
|
||||||
- Standardized fields: Command, Agent, Input, Output, Description
|
- Standardized fields: Skill, Agent, Input, Output, Description
|
||||||
4. Next Steps (optional)
|
4. Next Steps (optional)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -353,7 +353,7 @@ Only for BMad Method and Enterprise tracks. Quick Flow skips to implementation.
|
||||||
|
|
||||||
### Can I change my plan later?
|
### Can I change my plan later?
|
||||||
|
|
||||||
Yes. The SM agent has a `correct-course` workflow for handling scope changes.
|
Yes. The SM agent has a `bmad-correct-course` workflow for handling scope changes.
|
||||||
|
|
||||||
**Have a question not answered here?** [Open an issue](...) or ask in [Discord](...).
|
**Have a question not answered here?** [Open an issue](...) or ask in [Discord](...).
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ Unlock your creativity through guided exploration.
|
||||||
|
|
||||||
## What is Brainstorming?
|
## What is Brainstorming?
|
||||||
|
|
||||||
Run `brainstorming` and you've got a creative facilitator pulling ideas out of you - not generating them for you. The AI acts as coach and guide, using proven techniques to create conditions where your best thinking emerges.
|
Run `bmad-brainstorming` and you've got a creative facilitator pulling ideas out of you - not generating them for you. The AI acts as coach and guide, using proven techniques to create conditions where your best thinking emerges.
|
||||||
|
|
||||||
**Good for:**
|
**Good for:**
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ Get all your AI agents in one conversation.
|
||||||
|
|
||||||
## What is Party Mode?
|
## What is Party Mode?
|
||||||
|
|
||||||
Run `party-mode` and you've got your whole AI team in one room - PM, Architect, Dev, UX Designer, whoever you need. BMad Master orchestrates, picking relevant agents per message. Agents respond in character, agree, disagree, and build on each other's ideas.
|
Run `bmad-party-mode` and you've got your whole AI team in one room - PM, Architect, Dev, UX Designer, whoever you need. BMad Master orchestrates, picking relevant agents per message. Agents respond in character, agree, disagree, and build on each other's ideas.
|
||||||
|
|
||||||
The conversation continues as long as you want. Ask follow-ups, push back on answers, redirect the discussion - it's a real back-and-forth with your agents until you're done.
|
The conversation continues as long as you want. Ask follow-ups, push back on answers, redirect the discussion - it's a real back-and-forth with your agents until you're done.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -108,5 +108,5 @@ Common decisions that prevent conflicts:
|
||||||
- Document decisions that cross epic boundaries
|
- Document decisions that cross epic boundaries
|
||||||
- Focus on conflict-prone areas
|
- Focus on conflict-prone areas
|
||||||
- Update architecture as you learn
|
- Update architecture as you learn
|
||||||
- Use `correct-course` for significant changes
|
- Use `bmad-correct-course` for significant changes
|
||||||
:::
|
:::
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,12 @@ The `project-context.md` file solves this by documenting what agents need to kno
|
||||||
Every implementation workflow automatically loads `project-context.md` if it exists. The architect workflow also loads it to respect your technical preferences when designing the architecture.
|
Every implementation workflow automatically loads `project-context.md` if it exists. The architect workflow also loads it to respect your technical preferences when designing the architecture.
|
||||||
|
|
||||||
**Loaded by these workflows:**
|
**Loaded by these workflows:**
|
||||||
- `create-architecture` — respects technical preferences during solutioning
|
- `bmad-create-architecture` — respects technical preferences during solutioning
|
||||||
- `create-story` — informs story creation with project patterns
|
- `bmad-create-story` — informs story creation with project patterns
|
||||||
- `dev-story` — guides implementation decisions
|
- `bmad-dev-story` — guides implementation decisions
|
||||||
- `code-review` — validates against project standards
|
- `bmad-code-review` — validates against project standards
|
||||||
- `quick-dev` — applies patterns when implementing tech-specs
|
- `bmad-quick-dev` — applies patterns when implementing tech-specs
|
||||||
- `sprint-planning`, `retrospective`, `correct-course` — provides project-wide context
|
- `bmad-sprint-planning`, `bmad-retrospective`, `bmad-correct-course` — provides project-wide context
|
||||||
|
|
||||||
## When to Create It
|
## When to Create It
|
||||||
|
|
||||||
|
|
@ -34,10 +34,10 @@ The `project-context.md` file is useful at any stage of a project:
|
||||||
|
|
||||||
| Scenario | When to Create | Purpose |
|
| Scenario | When to Create | Purpose |
|
||||||
|----------|----------------|---------|
|
|----------|----------------|---------|
|
||||||
| **New project, before architecture** | Manually, before `create-architecture` | Document your technical preferences so the architect respects them |
|
| **New project, before architecture** | Manually, before `bmad-create-architecture` | Document your technical preferences so the architect respects them |
|
||||||
| **New project, after architecture** | Via `generate-project-context` or manually | Capture architecture decisions for implementation agents |
|
| **New project, after architecture** | Via `bmad-generate-project-context` or manually | Capture architecture decisions for implementation agents |
|
||||||
| **Existing project** | Via `generate-project-context` | Discover existing patterns so agents follow established conventions |
|
| **Existing project** | Via `bmad-generate-project-context` | Discover existing patterns so agents follow established conventions |
|
||||||
| **Quick Flow project** | Before or during `quick-dev` | Ensure quick implementation respects your patterns |
|
| **Quick Flow project** | Before or during `bmad-quick-dev` | Ensure quick implementation respects your patterns |
|
||||||
|
|
||||||
:::tip[Recommended]
|
:::tip[Recommended]
|
||||||
For new projects, create it manually before architecture if you have strong technical preferences. Otherwise, generate it after architecture to capture those decisions.
|
For new projects, create it manually before architecture if you have strong technical preferences. Otherwise, generate it after architecture to capture those decisions.
|
||||||
|
|
@ -107,20 +107,20 @@ Edit it with your technology stack and implementation rules. The architect and i
|
||||||
|
|
||||||
### Generate After Architecture
|
### Generate After Architecture
|
||||||
|
|
||||||
Run the `generate-project-context` workflow after completing your architecture:
|
Run the `bmad-generate-project-context` workflow after completing your architecture:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bmad-bmm-generate-project-context
|
bmad-generate-project-context
|
||||||
```
|
```
|
||||||
|
|
||||||
This scans your architecture document and project files to generate a context file capturing the decisions made.
|
This scans your architecture document and project files to generate a context file capturing the decisions made.
|
||||||
|
|
||||||
### Generate for Existing Projects
|
### Generate for Existing Projects
|
||||||
|
|
||||||
For existing projects, run `generate-project-context` to discover existing patterns:
|
For existing projects, run `bmad-generate-project-context` to discover existing patterns:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bmad-bmm-generate-project-context
|
bmad-generate-project-context
|
||||||
```
|
```
|
||||||
|
|
||||||
The workflow analyzes your codebase to identify conventions, then generates a context file you can review and refine.
|
The workflow analyzes your codebase to identify conventions, then generates a context file you can review and refine.
|
||||||
|
|
@ -150,7 +150,7 @@ The `project-context.md` file is a living document. Update it when:
|
||||||
- Patterns evolve during implementation
|
- Patterns evolve during implementation
|
||||||
- You identify gaps from agent behavior
|
- You identify gaps from agent behavior
|
||||||
|
|
||||||
You can edit it manually at any time, or re-run `generate-project-context` to update it after significant changes.
|
You can edit it manually at any time, or re-run `bmad-generate-project-context` to update it after significant changes.
|
||||||
|
|
||||||
:::note[File Location]
|
:::note[File Location]
|
||||||
The default location is `_bmad-output/project-context.md`. Workflows search for it there, and also check `**/project-context.md` anywhere in your project.
|
The default location is `_bmad-output/project-context.md`. Workflows search for it there, and also check `**/project-context.md` anywhere in your project.
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ sidebar:
|
||||||
order: 1
|
order: 1
|
||||||
---
|
---
|
||||||
|
|
||||||
Skip the ceremony. Quick Flow takes you from idea to working code in two commands - no Product Brief, no PRD, no Architecture doc.
|
Skip the ceremony. Quick Flow takes you from idea to working code in two skills - no Product Brief, no PRD, no Architecture doc.
|
||||||
|
|
||||||
## When to Use It
|
## When to Use It
|
||||||
|
|
||||||
|
|
@ -23,16 +23,16 @@ Skip the ceremony. Quick Flow takes you from idea to working code in two command
|
||||||
- Anything where requirements are unclear or contested
|
- Anything where requirements are unclear or contested
|
||||||
|
|
||||||
:::caution[Scope Creep]
|
:::caution[Scope Creep]
|
||||||
If you start a Quick Flow and realize the scope is bigger than expected, `quick-dev` will detect this and offer to escalate. You can switch to a full PRD workflow at any point without losing your work.
|
If you start a Quick Flow and realize the scope is bigger than expected, `bmad-quick-dev` will detect this and offer to escalate. You can switch to a full PRD workflow at any point without losing your work.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How It Works
|
## How It Works
|
||||||
|
|
||||||
Quick Flow has two commands, each backed by a structured workflow. You can run them together or independently.
|
Quick Flow has two skills, each backed by a structured workflow. You can run them together or independently.
|
||||||
|
|
||||||
### quick-spec: Plan
|
### quick-spec: Plan
|
||||||
|
|
||||||
Run `quick-spec` and Barry (the Quick Flow agent) walks you through a conversational discovery process:
|
Run `bmad-quick-spec` and Barry (the Quick Flow agent) walks you through a conversational discovery process:
|
||||||
|
|
||||||
1. **Understand** - You describe what you want to build. Barry scans the codebase to ask informed questions, then captures a problem statement, solution approach, and scope boundaries.
|
1. **Understand** - You describe what you want to build. Barry scans the codebase to ask informed questions, then captures a problem statement, solution approach, and scope boundaries.
|
||||||
2. **Investigate** - Barry reads relevant files, maps code patterns, identifies files to modify, and documents the technical context.
|
2. **Investigate** - Barry reads relevant files, maps code patterns, identifies files to modify, and documents the technical context.
|
||||||
|
|
@ -43,15 +43,15 @@ The output is a `tech-spec-{slug}.md` file saved to your project's implementatio
|
||||||
|
|
||||||
### quick-dev: Build
|
### quick-dev: Build
|
||||||
|
|
||||||
Run `quick-dev` and Barry implements the work. It operates in two modes:
|
Run `bmad-quick-dev` and Barry implements the work. It operates in two modes:
|
||||||
|
|
||||||
- **Tech-spec mode** - Point it at a spec file (`quick-dev tech-spec-auth.md`) and it executes every task in order, writes tests, and verifies acceptance criteria.
|
- **Tech-spec mode** - Point it at a spec file (`quick-dev tech-spec-auth.md`) and it executes every task in order, writes tests, and verifies acceptance criteria.
|
||||||
- **Direct mode** - Give it instructions directly (`quick-dev "refactor the auth middleware"`) and it gathers context, builds a mental plan, and executes.
|
- **Direct mode** - Give it instructions directly (`quick-dev "refactor the auth middleware"`) and it gathers context, builds a mental plan, and executes.
|
||||||
|
|
||||||
After implementation, `quick-dev` runs a self-check audit against all tasks and acceptance criteria, then triggers an adversarial code review of the diff. Findings are presented for you to resolve before wrapping up.
|
After implementation, `bmad-quick-dev` runs a self-check audit against all tasks and acceptance criteria, then triggers an adversarial code review of the diff. Findings are presented for you to resolve before wrapping up.
|
||||||
|
|
||||||
:::tip[Fresh Context]
|
:::tip[Fresh Context]
|
||||||
For best results, run `quick-dev` in a new conversation after finishing `quick-spec`. This gives the implementation agent clean context focused solely on building.
|
For best results, run `bmad-quick-dev` in a new conversation after finishing `bmad-quick-spec`. This gives the implementation agent clean context focused solely on building.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## What Quick Flow Skips
|
## What Quick Flow Skips
|
||||||
|
|
@ -65,9 +65,9 @@ The full BMad Method produces a Product Brief, PRD, Architecture doc, and Epic/S
|
||||||
|
|
||||||
## Escalating to Full BMad Method
|
## Escalating to Full BMad Method
|
||||||
|
|
||||||
Quick Flow includes built-in guardrails for scope detection. When you run `quick-dev` with a direct request, it evaluates signals like multi-component mentions, system-level language, and uncertainty about approach. If it detects the work is bigger than a quick flow:
|
Quick Flow includes built-in guardrails for scope detection. When you run `bmad-quick-dev` with a direct request, it evaluates signals like multi-component mentions, system-level language, and uncertainty about approach. If it detects the work is bigger than a quick flow:
|
||||||
|
|
||||||
- **Light escalation** - Recommends running `quick-spec` first to create a plan
|
- **Light escalation** - Recommends running `bmad-quick-spec` first to create a plan
|
||||||
- **Heavy escalation** - Recommends switching to the full BMad Method PRD process
|
- **Heavy escalation** - Recommends switching to the full BMad Method PRD process
|
||||||
|
|
||||||
You can also escalate manually at any time. Your tech-spec work carries forward - it becomes input for the broader planning process rather than being discarded.
|
You can also escalate manually at any time. Your tech-spec work carries forward - it becomes input for the broader planning process rather than being discarded.
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ Generate `project-context.md` to capture your existing codebase patterns and con
|
||||||
Run the generate project context workflow:
|
Run the generate project context workflow:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bmad-bmm-generate-project-context
|
bmad-generate-project-context
|
||||||
```
|
```
|
||||||
|
|
||||||
This scans your codebase to identify:
|
This scans your codebase to identify:
|
||||||
|
|
@ -55,22 +55,22 @@ Your `docs/` folder should contain succinct, well-organized documentation that a
|
||||||
- Architecture
|
- Architecture
|
||||||
- Any other relevant project information
|
- Any other relevant project information
|
||||||
|
|
||||||
For complex projects, consider using the `document-project` workflow. It offers runtime variants that will scan your entire project and document its actual current state.
|
For complex projects, consider using the `bmad-document-project` workflow. It offers runtime variants that will scan your entire project and document its actual current state.
|
||||||
|
|
||||||
## Step 3: Get Help
|
## Step 3: Get Help
|
||||||
|
|
||||||
### BMad-Help: Your Starting Point
|
### BMad-Help: Your Starting Point
|
||||||
|
|
||||||
**Run `/bmad-help` anytime you're unsure what to do next.** This intelligent guide:
|
**Run `bmad-help` anytime you're unsure what to do next.** This intelligent guide:
|
||||||
|
|
||||||
- Inspects your project to see what's already been done
|
- Inspects your project to see what's already been done
|
||||||
- Shows options based on your installed modules
|
- Shows options based on your installed modules
|
||||||
- Understands natural language queries
|
- Understands natural language queries
|
||||||
|
|
||||||
```
|
```
|
||||||
/bmad-help I have an existing Rails app, where should I start?
|
bmad-help I have an existing Rails app, where should I start?
|
||||||
/bmad-help What's the difference between quick-flow and full method?
|
bmad-help What's the difference between quick-flow and full method?
|
||||||
/bmad-help Show me what workflows are available
|
bmad-help Show me what workflows are available
|
||||||
```
|
```
|
||||||
|
|
||||||
BMad-Help also **automatically runs at the end of every workflow**, providing clear guidance on exactly what to do next.
|
BMad-Help also **automatically runs at the end of every workflow**, providing clear guidance on exactly what to do next.
|
||||||
|
|
@ -81,7 +81,7 @@ You have two primary options depending on the scope of changes:
|
||||||
|
|
||||||
| Scope | Recommended Approach |
|
| Scope | Recommended Approach |
|
||||||
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
|
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| **Small updates or additions** | Use `quick-flow-solo-dev` to create a tech-spec and implement the change. The full four-phase BMad Method is likely overkill. |
|
| **Small updates or additions** | Use `bmad-quick-flow-solo-dev` to create a tech-spec and implement the change. The full four-phase BMad Method is likely overkill. |
|
||||||
| **Major changes or additions** | Start with the BMad Method, applying as much or as little rigor as needed. |
|
| **Major changes or additions** | Start with the BMad Method, applying as much or as little rigor as needed. |
|
||||||
|
|
||||||
### During PRD Creation
|
### During PRD Creation
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ BMad-Help is more than a lookup tool — it:
|
||||||
|
|
||||||
### How to Use BMad-Help
|
### How to Use BMad-Help
|
||||||
|
|
||||||
Run it with just the slash command:
|
Run it with just the skill name:
|
||||||
|
|
||||||
```
|
```
|
||||||
/bmad-help
|
/bmad-help
|
||||||
|
|
@ -81,7 +81,7 @@ https://bmad-code-org.github.io/BMAD-METHOD/llms-full.txt
|
||||||
:::note[Example]
|
:::note[Example]
|
||||||
**Q:** "Tell me the fastest way to build something with BMad"
|
**Q:** "Tell me the fastest way to build something with BMad"
|
||||||
|
|
||||||
**A:** Use Quick Flow: Run `quick-spec` to write a technical specification, then `quick-dev` to implement it—skipping the full planning phases.
|
**A:** Use Quick Flow: Run `bmad-quick-spec` to write a technical specification, then `bmad-quick-dev` to implement it—skipping the full planning phases.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## What You Get
|
## What You Get
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,11 @@ Pick which AI tools you use:
|
||||||
- Cursor
|
- Cursor
|
||||||
- Others
|
- Others
|
||||||
|
|
||||||
Each tool has its own way of integrating commands. The installer creates tiny prompt files to activate workflows and agents — it just puts them where your tool expects to find them.
|
Each tool has its own way of integrating skills. The installer creates tiny prompt files to activate workflows and agents — it just puts them where your tool expects to find them.
|
||||||
|
|
||||||
|
:::note[Enabling Skills]
|
||||||
|
Some platforms require skills to be explicitly enabled in settings before they appear. If you install BMad and don't see the skills, check your platform's settings or ask your AI assistant how to enable skills.
|
||||||
|
:::
|
||||||
|
|
||||||
### 4. Choose Modules
|
### 4. Choose Modules
|
||||||
|
|
||||||
|
|
@ -71,13 +75,19 @@ your-project/
|
||||||
│ ├── core/ # Required core module
|
│ ├── core/ # Required core module
|
||||||
│ └── ...
|
│ └── ...
|
||||||
├── _bmad-output/ # Generated artifacts
|
├── _bmad-output/ # Generated artifacts
|
||||||
├── .claude/ # Claude Code commands (if using Claude Code)
|
├── .claude/ # Claude Code skills (if using Claude Code)
|
||||||
└── .kiro/ # Kiro steering files (if using Kiro)
|
│ └── skills/
|
||||||
|
│ ├── bmad-help/
|
||||||
|
│ ├── bmad-persona/
|
||||||
|
│ └── ...
|
||||||
|
└── .cursor/ # Cursor skills (if using Cursor)
|
||||||
|
└── skills/
|
||||||
|
└── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
## Verify Installation
|
## Verify Installation
|
||||||
|
|
||||||
Run `/bmad-help` to verify everything works and see what to do next.
|
Run `bmad-help` to verify everything works and see what to do next.
|
||||||
|
|
||||||
**BMad-Help is your intelligent guide** that will:
|
**BMad-Help is your intelligent guide** that will:
|
||||||
- Confirm your installation is working
|
- Confirm your installation is working
|
||||||
|
|
@ -86,8 +96,8 @@ Run `/bmad-help` to verify everything works and see what to do next.
|
||||||
|
|
||||||
You can also ask it questions:
|
You can also ask it questions:
|
||||||
```
|
```
|
||||||
/bmad-help I just installed, what should I do first?
|
bmad-help I just installed, what should I do first?
|
||||||
/bmad-help What are my options for a SaaS project?
|
bmad-help What are my options for a SaaS project?
|
||||||
```
|
```
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ sections_completed: ['technology_stack', 'critical_rules']
|
||||||
Run the workflow in a fresh chat:
|
Run the workflow in a fresh chat:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bmad-bmm-generate-project-context
|
bmad-generate-project-context
|
||||||
```
|
```
|
||||||
|
|
||||||
The workflow scans your architecture document and project files to generate a context file capturing the decisions made.
|
The workflow scans your architecture document and project files to generate a context file capturing the decisions made.
|
||||||
|
|
@ -87,7 +87,7 @@ The workflow scans your architecture document and project files to generate a co
|
||||||
For existing projects, run:
|
For existing projects, run:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/bmad-bmm-generate-project-context
|
bmad-generate-project-context
|
||||||
```
|
```
|
||||||
|
|
||||||
The workflow analyzes your codebase to identify conventions, then generates a context file you can review and refine.
|
The workflow analyzes your codebase to identify conventions, then generates a context file you can review and refine.
|
||||||
|
|
|
||||||
|
|
@ -30,18 +30,18 @@ If you are unsure, start with the DEV agent. You can always escalate to Quick Fl
|
||||||
|
|
||||||
## Steps
|
## Steps
|
||||||
|
|
||||||
### 1. Load the DEV Agent
|
### 1. Invoke the DEV Agent
|
||||||
|
|
||||||
Start a **fresh chat** in your AI IDE and load the DEV agent with its slash command:
|
Start a **fresh chat** in your AI IDE and invoke the DEV agent skill:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
/bmad-agent-bmm-dev
|
bmad-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
This loads the agent's persona and capabilities into the session. If you decide you need Quick Flow instead, load the **Quick Flow Solo Dev** agent in a fresh chat:
|
This loads the agent's persona and capabilities into the session. If you decide you need Quick Flow instead, invoke the **Quick Flow Solo Dev** agent skill in a fresh chat:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
/bmad-agent-bmm-quick-flow-solo-dev
|
bmad-quick-flow-solo-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
Once the Solo Dev agent is loaded, describe your change and ask it to create a **quick-spec**. The agent drafts a lightweight spec capturing what you want to change and how. After you approve the quick-spec, tell the agent to start the **Quick Flow dev cycle** -- it will implement the change, run tests, and perform a self-review, all guided by the spec you just approved.
|
Once the Solo Dev agent is loaded, describe your change and ask it to create a **quick-spec**. The agent drafts a lightweight spec capturing what you want to change and how. After you approve the quick-spec, tell the agent to start the **Quick Flow dev cycle** -- it will implement the change, run tests, and perform a self-review, all guided by the spec you just approved.
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ sidebar:
|
||||||
order: 8
|
order: 8
|
||||||
---
|
---
|
||||||
|
|
||||||
Use the `shard-doc` tool if you need to split large markdown files into smaller, organized files for better context management.
|
Use the `bmad-shard-doc` tool if you need to split large markdown files into smaller, organized files for better context management.
|
||||||
|
|
||||||
:::caution[Deprecated]
|
:::caution[Deprecated]
|
||||||
This is no longer recommended, and soon with updated workflows and most major LLMs and tools supporting subprocesses this will be unnecessary.
|
This is no longer recommended, and soon with updated workflows and most major LLMs and tools supporting subprocesses this will be unnecessary.
|
||||||
|
|
|
||||||
|
|
@ -33,12 +33,15 @@ When v4 is detected, you can:
|
||||||
|
|
||||||
If you named your bmad method folder something else - you will need to manually remove the folder yourself.
|
If you named your bmad method folder something else - you will need to manually remove the folder yourself.
|
||||||
|
|
||||||
### 3. Clean Up IDE Commands
|
### 3. Clean Up IDE Skills
|
||||||
|
|
||||||
Manually remove legacy v4 IDE commands - for example if you have claude, look for any nested folders that start with bmad and remove them:
|
Manually remove legacy v4 IDE commands/skills - for example if you have Claude Code, look for any nested folders that start with bmad and remove them:
|
||||||
|
|
||||||
- `.claude/commands/BMad/agents`
|
- `.claude/commands/`
|
||||||
- `.claude/commands/BMad/tasks`
|
|
||||||
|
The new v6 skills are installed to:
|
||||||
|
|
||||||
|
- `.claude/skills/`
|
||||||
|
|
||||||
### 4. Migrate Planning Artifacts
|
### 4. Migrate Planning Artifacts
|
||||||
|
|
||||||
|
|
@ -58,7 +61,7 @@ If you have stories created or implemented:
|
||||||
|
|
||||||
1. Complete the v6 installation
|
1. Complete the v6 installation
|
||||||
2. Place `epics.md` or `epics/epic*.md` in `_bmad-output/planning-artifacts/`
|
2. Place `epics.md` or `epics/epic*.md` in `_bmad-output/planning-artifacts/`
|
||||||
3. Run the Scrum Master's `sprint-planning` workflow
|
3. Run the Scrum Master's `bmad-sprint-planning` workflow
|
||||||
4. Tell the SM which epics/stories are already complete
|
4. Tell the SM which epics/stories are already complete
|
||||||
|
|
||||||
## What You Get
|
## What You Get
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ The fastest way to understand BMad is to try it.
|
||||||
- **[Workflow Map](./reference/workflow-map.md)** — Visual overview of BMM phases, workflows, and context management
|
- **[Workflow Map](./reference/workflow-map.md)** — Visual overview of BMM phases, workflows, and context management
|
||||||
|
|
||||||
:::tip[Just Want to Dive In?]
|
:::tip[Just Want to Dive In?]
|
||||||
Install BMad and run `/bmad-help` — it will guide you through everything based on your project and installed modules.
|
Install BMad and use the `bmad-help` skill — it will guide you through everything based on your project and installed modules.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to Use These Docs
|
## How to Use These Docs
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
||||||
---
|
---
|
||||||
title: Agents
|
title: Agents
|
||||||
description: Default BMM agents with their menu triggers and primary workflows
|
description: Default BMM agents with their skill IDs, menu triggers, and primary workflows
|
||||||
sidebar:
|
sidebar:
|
||||||
order: 2
|
order: 2
|
||||||
---
|
---
|
||||||
|
|
||||||
## Default Agents
|
## Default Agents
|
||||||
|
|
||||||
This page lists the default BMM (Agile suite) agents that install with BMad Method, along with their menu triggers and primary workflows.
|
This page lists the default BMM (Agile suite) agents that install with BMad Method, along with their skill IDs, menu triggers, and primary workflows. Each agent is invoked as a skill.
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
|
- Each agent is available as a skill, generated by the installer. The skill ID (e.g., `bmad-dev`) is used to invoke the agent.
|
||||||
- Triggers are the short menu codes (e.g., `CP`) and fuzzy matches shown in each agent menu.
|
- Triggers are the short menu codes (e.g., `CP`) and fuzzy matches shown in each agent menu.
|
||||||
- Slash commands are generated separately. See [Commands](./commands.md) for the slash command list and where they are defined.
|
|
||||||
- QA (Quinn) is the lightweight test automation agent in BMM. The full Test Architect (TEA) lives in its own module.
|
- QA (Quinn) is the lightweight test automation agent in BMM. The full Test Architect (TEA) lives in its own module.
|
||||||
|
|
||||||
| Agent | Triggers | Primary workflows |
|
| Agent | Skill ID | Triggers | Primary workflows |
|
||||||
| --------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------- |
|
| --------------------------- | -------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------- |
|
||||||
| Analyst (Mary) | `BP`, `RS`, `CB`, `DP` | Brainstorm Project, Research, Create Brief, Document Project |
|
| Analyst (Mary) | `bmad-analyst` | `BP`, `RS`, `CB`, `DP` | Brainstorm Project, Research, Create Brief, Document Project |
|
||||||
| Product Manager (John) | `CP`, `VP`, `EP`, `CE`, `IR`, `CC` | Create/Validate/Edit PRD, Create Epics and Stories, Implementation Readiness, Correct Course |
|
| Product Manager (John) | `bmad-pm` | `CP`, `VP`, `EP`, `CE`, `IR`, `CC` | Create/Validate/Edit PRD, Create Epics and Stories, Implementation Readiness, Correct Course |
|
||||||
| Architect (Winston) | `CA`, `IR` | Create Architecture, Implementation Readiness |
|
| Architect (Winston) | `bmad-architect` | `CA`, `IR` | Create Architecture, Implementation Readiness |
|
||||||
| Scrum Master (Bob) | `SP`, `CS`, `ER`, `CC` | Sprint Planning, Create Story, Epic Retrospective, Correct Course |
|
| Scrum Master (Bob) | `bmad-sm` | `SP`, `CS`, `ER`, `CC` | Sprint Planning, Create Story, Epic Retrospective, Correct Course |
|
||||||
| Developer (Amelia) | `DS`, `CR` | Dev Story, Code Review |
|
| Developer (Amelia) | `bmad-dev` | `DS`, `CR` | Dev Story, Code Review |
|
||||||
| QA Engineer (Quinn) | `QA` | Automate (generate tests for existing features) |
|
| QA Engineer (Quinn) | `bmad-qa` | `QA` | Automate (generate tests for existing features) |
|
||||||
| Quick Flow Solo Dev (Barry) | `QS`, `QD`, `CR` | Quick Spec, Quick Dev, Code Review |
|
| Quick Flow Solo Dev (Barry) | `bmad-master` | `QS`, `QD`, `CR` | Quick Spec, Quick Dev, Code Review |
|
||||||
| UX Designer (Sally) | `CU` | Create UX Design |
|
| UX Designer (Sally) | `bmad-ux-designer` | `CU` | Create UX Design |
|
||||||
| Technical Writer (Paige) | `DP`, `WD`, `US`, `MG`, `VD`, `EC` | Document Project, Write Document, Update Standards, Mermaid Generate, Validate Doc, Explain Concept |
|
| Technical Writer (Paige) | `bmad-tech-writer` | `DP`, `WD`, `US`, `MG`, `VD`, `EC` | Document Project, Write Document, Update Standards, Mermaid Generate, Validate Doc, Explain Concept |
|
||||||
|
|
|
||||||
|
|
@ -1,111 +1,113 @@
|
||||||
---
|
---
|
||||||
title: Commands
|
title: Skills
|
||||||
description: Reference for BMad slash commands — what they are, how they work, and where to find them.
|
description: Reference for BMad skills — what they are, how they work, and where to find them.
|
||||||
sidebar:
|
sidebar:
|
||||||
order: 3
|
order: 3
|
||||||
---
|
---
|
||||||
|
|
||||||
Slash commands are pre-built prompts that load agents, run workflows, or execute tasks inside your IDE. The BMad installer generates them from your installed modules at install time. If you later add, remove, or change modules, re-run the installer to keep commands in sync (see [Troubleshooting](#troubleshooting)).
|
Skills are pre-built prompts that load agents, run workflows, or execute tasks inside your IDE. The BMad installer generates them from your installed modules at install time. If you later add, remove, or change modules, re-run the installer to keep skills in sync (see [Troubleshooting](#troubleshooting)).
|
||||||
|
|
||||||
## Commands vs. Agent Menu Triggers
|
## Skills vs. Agent Menu Triggers
|
||||||
|
|
||||||
BMad offers two ways to start work, and they serve different purposes.
|
BMad offers two ways to start work, and they serve different purposes.
|
||||||
|
|
||||||
| Mechanism | How you invoke it | What happens |
|
| Mechanism | How you invoke it | What happens |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| **Slash command** | Type `/bmad-...` in your IDE | Directly loads an agent, runs a workflow, or executes a task |
|
| **Skill** | Type the skill name (e.g. `bmad-help`) in your IDE | Directly loads an agent, runs a workflow, or executes a task |
|
||||||
| **Agent menu trigger** | Load an agent first, then type a short code (e.g. `DS`) | The agent interprets the code and starts the matching workflow while staying in character |
|
| **Agent menu trigger** | Load an agent first, then type a short code (e.g. `DS`) | The agent interprets the code and starts the matching workflow while staying in character |
|
||||||
|
|
||||||
Agent menu triggers require an active agent session. Use slash commands when you know which workflow you want. Use triggers when you are already working with an agent and want to switch tasks without leaving the conversation.
|
Agent menu triggers require an active agent session. Use skills when you know which workflow you want. Use triggers when you are already working with an agent and want to switch tasks without leaving the conversation.
|
||||||
|
|
||||||
## How Commands Are Generated
|
## How Skills Are Generated
|
||||||
|
|
||||||
When you run `npx bmad-method install`, the installer reads the manifests for every selected module and writes one command file per agent, workflow, task, and tool. Each file is a short markdown prompt that instructs the AI to load the corresponding source file and follow its instructions.
|
When you run `npx bmad-method install`, the installer reads the manifests for every selected module and writes one skill per agent, workflow, task, and tool. Each skill is a directory containing a `SKILL.md` file that instructs the AI to load the corresponding source file and follow its instructions.
|
||||||
|
|
||||||
The installer uses templates for each command type:
|
The installer uses templates for each skill type:
|
||||||
|
|
||||||
| Command type | What the generated file does |
|
| Skill type | What the generated file does |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| **Agent launcher** | Loads the agent persona file, activates its menu, and stays in character |
|
| **Agent launcher** | Loads the agent persona file, activates its menu, and stays in character |
|
||||||
| **Workflow command** | Loads the workflow engine (`workflow.xml`) and passes the workflow config |
|
| **Workflow skill** | Loads the workflow engine (`workflow.xml`) and passes the workflow config |
|
||||||
| **Task command** | Loads a standalone task file and follows its instructions |
|
| **Task skill** | Loads a standalone task file and follows its instructions |
|
||||||
| **Tool command** | Loads a standalone tool file and follows its instructions |
|
| **Tool skill** | Loads a standalone tool file and follows its instructions |
|
||||||
|
|
||||||
:::note[Re-running the installer]
|
:::note[Re-running the installer]
|
||||||
If you add or remove modules, run the installer again. It regenerates all command files to match your current module selection.
|
If you add or remove modules, run the installer again. It regenerates all skill files to match your current module selection.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Where Command Files Live
|
## Where Skill Files Live
|
||||||
|
|
||||||
The installer writes command files into an IDE-specific directory inside your project. The exact path depends on which IDE you selected during installation.
|
The installer writes skill files into an IDE-specific directory inside your project. The exact path depends on which IDE you selected during installation.
|
||||||
|
|
||||||
| IDE / CLI | Command directory |
|
| IDE / CLI | Skills directory |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| Claude Code | `.claude/commands/` |
|
| Claude Code | `.claude/skills/` |
|
||||||
| Cursor | `.cursor/commands/` |
|
| Cursor | `.cursor/skills/` |
|
||||||
| Windsurf | `.windsurf/workflows/` |
|
| Windsurf | `.windsurf/skills/` |
|
||||||
| Other IDEs | See the installer output for the target path |
|
| Other IDEs | See the installer output for the target path |
|
||||||
|
|
||||||
All IDEs receive a flat set of command files in their command directory. For example, a Claude Code installation looks like:
|
Each skill is a directory containing a `SKILL.md` file. For example, a Claude Code installation looks like:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
.claude/commands/
|
.claude/skills/
|
||||||
├── bmad-agent-bmm-dev.md
|
├── bmad-help/
|
||||||
├── bmad-agent-bmm-pm.md
|
│ └── SKILL.md
|
||||||
├── bmad-bmm-create-prd.md
|
├── bmad-create-prd/
|
||||||
├── bmad-editorial-review-prose.md
|
│ └── SKILL.md
|
||||||
├── bmad-help.md
|
├── bmad-dev/
|
||||||
|
│ └── SKILL.md
|
||||||
└── ...
|
└── ...
|
||||||
```
|
```
|
||||||
|
|
||||||
The filename determines the slash command name in your IDE. For example, the file `bmad-agent-bmm-dev.md` registers the command `/bmad-agent-bmm-dev`.
|
The directory name determines the skill name in your IDE. For example, the directory `bmad-dev/` registers the skill `bmad-dev`.
|
||||||
|
|
||||||
## How to Discover Your Commands
|
## How to Discover Your Skills
|
||||||
|
|
||||||
Type `/bmad` in your IDE and use autocomplete to browse available commands.
|
Type the skill name in your IDE to invoke it. Some platforms require you to enable skills in settings before they appear.
|
||||||
|
|
||||||
Run `/bmad-help` for context-aware guidance on your next step.
|
Run `bmad-help` for context-aware guidance on your next step.
|
||||||
|
|
||||||
:::tip[Quick discovery]
|
:::tip[Quick discovery]
|
||||||
The generated command folders in your project are the canonical list. Open them in your file explorer to see every command with its description.
|
The generated skill directories in your project are the canonical list. Open them in your file explorer to see every skill with its description.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Command Categories
|
## Skill Categories
|
||||||
|
|
||||||
### Agent Commands
|
### Agent Skills
|
||||||
|
|
||||||
Agent commands load a specialized AI persona with a defined role, communication style, and menu of workflows. Once loaded, the agent stays in character and responds to menu triggers.
|
Agent skills load a specialized AI persona with a defined role, communication style, and menu of workflows. Once loaded, the agent stays in character and responds to menu triggers.
|
||||||
|
|
||||||
| Example command | Agent | Role |
|
| Example skill | Agent | Role |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `/bmad-agent-bmm-dev` | Amelia (Developer) | Implements stories with strict adherence to specs |
|
| `bmad-dev` | Amelia (Developer) | Implements stories with strict adherence to specs |
|
||||||
| `/bmad-agent-bmm-pm` | John (Product Manager) | Creates and validates PRDs |
|
| `bmad-pm` | John (Product Manager) | Creates and validates PRDs |
|
||||||
| `/bmad-agent-bmm-architect` | Winston (Architect) | Designs system architecture |
|
| `bmad-architect` | Winston (Architect) | Designs system architecture |
|
||||||
| `/bmad-agent-bmm-sm` | Bob (Scrum Master) | Manages sprints and stories |
|
| `bmad-sm` | Bob (Scrum Master) | Manages sprints and stories |
|
||||||
|
|
||||||
See [Agents](./agents.md) for the full list of default agents and their triggers.
|
See [Agents](./agents.md) for the full list of default agents and their triggers.
|
||||||
|
|
||||||
### Workflow Commands
|
### Workflow Skills
|
||||||
|
|
||||||
Workflow commands run a structured, multi-step process without loading an agent persona first. They load the workflow engine and pass a specific workflow configuration.
|
Workflow skills run a structured, multi-step process without loading an agent persona first. They load the workflow engine and pass a specific workflow configuration.
|
||||||
|
|
||||||
| Example command | Purpose |
|
| Example skill | Purpose |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `/bmad-bmm-create-prd` | Create a Product Requirements Document |
|
| `bmad-create-prd` | Create a Product Requirements Document |
|
||||||
| `/bmad-bmm-create-architecture` | Design system architecture |
|
| `bmad-create-architecture` | Design system architecture |
|
||||||
| `/bmad-bmm-dev-story` | Implement a story |
|
| `bmad-create-epics-and-stories` | Create epics and stories |
|
||||||
| `/bmad-bmm-code-review` | Run a code review |
|
| `bmad-dev-story` | Implement a story |
|
||||||
| `/bmad-bmm-quick-spec` | Define an ad-hoc change (Quick Flow) |
|
| `bmad-code-review` | Run a code review |
|
||||||
|
| `bmad-quick-spec` | Define an ad-hoc change (Quick Flow) |
|
||||||
|
|
||||||
See [Workflow Map](./workflow-map.md) for the complete workflow reference organized by phase.
|
See [Workflow Map](./workflow-map.md) for the complete workflow reference organized by phase.
|
||||||
|
|
||||||
### Task and Tool Commands
|
### Task and Tool Skills
|
||||||
|
|
||||||
Tasks and tools are standalone operations that do not require an agent or workflow context.
|
Tasks and tools are standalone operations that do not require an agent or workflow context.
|
||||||
|
|
||||||
#### BMad-Help: Your Intelligent Guide
|
#### BMad-Help: Your Intelligent Guide
|
||||||
|
|
||||||
**`/bmad-help`** is your primary interface for discovering what to do next. It's not just a lookup tool — it's an intelligent assistant that:
|
**`bmad-help`** is your primary interface for discovering what to do next. It's not just a lookup tool — it's an intelligent assistant that:
|
||||||
|
|
||||||
- **Inspects your project** to see what's already been done
|
- **Inspects your project** to see what's already been done
|
||||||
- **Understands natural language queries** — ask questions in plain English
|
- **Understands natural language queries** — ask questions in plain English
|
||||||
|
|
@ -116,36 +118,28 @@ Tasks and tools are standalone operations that do not require an agent or workfl
|
||||||
**Examples:**
|
**Examples:**
|
||||||
|
|
||||||
```
|
```
|
||||||
/bmad-help
|
bmad-help
|
||||||
/bmad-help I have a SaaS idea and know all the features. Where do I start?
|
bmad-help I have a SaaS idea and know all the features. Where do I start?
|
||||||
/bmad-help What are my options for UX design?
|
bmad-help What are my options for UX design?
|
||||||
/bmad-help I'm stuck on the PRD workflow
|
bmad-help I'm stuck on the PRD workflow
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Other Tasks and Tools
|
#### Other Tasks and Tools
|
||||||
|
|
||||||
| Example command | Purpose |
|
| Example skill | Purpose |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `/bmad-shard-doc` | Split a large markdown file into smaller sections |
|
| `bmad-shard-doc` | Split a large markdown file into smaller sections |
|
||||||
| `/bmad-index-docs` | Index project documentation |
|
| `bmad-index-docs` | Index project documentation |
|
||||||
| `/bmad-editorial-review-prose` | Review document prose quality |
|
| `bmad-editorial-review-prose` | Review document prose quality |
|
||||||
|
|
||||||
## Naming Convention
|
## Naming Convention
|
||||||
|
|
||||||
Command names follow a predictable pattern.
|
All skills use the `bmad-` prefix followed by a descriptive name (e.g., `bmad-dev`, `bmad-create-prd`, `bmad-help`). See [Modules](./modules.md) for available modules.
|
||||||
|
|
||||||
| Pattern | Meaning | Example |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| `bmad-agent-<module>-<name>` | Agent launcher | `bmad-agent-bmm-dev` |
|
|
||||||
| `bmad-<module>-<workflow>` | Workflow command | `bmad-bmm-create-prd` |
|
|
||||||
| `bmad-<name>` | Core task or tool | `bmad-help` |
|
|
||||||
|
|
||||||
Module codes: `bmm` (Agile suite), `bmb` (Builder), `tea` (Test Architect), `cis` (Creative Intelligence), `gds` (Game Dev Studio). See [Modules](./modules.md) for descriptions.
|
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
**Commands not appearing after install.** Restart your IDE or reload the window. Some IDEs cache the command list and require a refresh to pick up new files.
|
**Skills not appearing after install.** Some platforms require skills to be explicitly enabled in settings. Check your IDE's documentation or ask your AI assistant how to enable skills. You may also need to restart your IDE or reload the window.
|
||||||
|
|
||||||
**Expected commands are missing.** The installer only generates commands for modules you selected. Run `npx bmad-method install` again and verify your module selection. Check that the command files exist in the expected directory.
|
**Expected skills are missing.** The installer only generates skills for modules you selected. Run `npx bmad-method install` again and verify your module selection. Check that the skill files exist in the expected directory.
|
||||||
|
|
||||||
**Commands from a removed module still appear.** The installer does not delete old command files automatically. Remove the stale files from your IDE's command directory, or delete the entire command directory and re-run the installer for a clean set.
|
**Skills from a removed module still appear.** The installer does not delete old skill files automatically. Remove the stale directories from your IDE's skills directory, or delete the entire skills directory and re-run the installer for a clean set.
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ Most projects should start with Quinn. If you later need test strategy, quality
|
||||||
|
|
||||||
Quinn is the built-in QA agent in the BMM (Agile suite) module. It generates working tests quickly using your project's existing test framework -- no configuration or additional installation required.
|
Quinn is the built-in QA agent in the BMM (Agile suite) module. It generates working tests quickly using your project's existing test framework -- no configuration or additional installation required.
|
||||||
|
|
||||||
**Trigger:** `QA` or `bmad-bmm-qa-automate`
|
**Trigger:** `QA` or `bmad-qa-generate-e2e-tests`
|
||||||
|
|
||||||
### What Quinn Does
|
### What Quinn Does
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,9 @@ The BMad Method (BMM) is a module in the BMad Ecosystem, targeted at following t
|
||||||
|
|
||||||
The rationale and concepts come from agile methodologies that have been used across the industry with great success as a mental framework.
|
The rationale and concepts come from agile methodologies that have been used across the industry with great success as a mental framework.
|
||||||
|
|
||||||
If at any time you are unsure what to do, the `/bmad-help` command will help you stay on track or know what to do next. You can always refer to this for reference also - but /bmad-help is fully interactive and much quicker if you have already installed the BMad Method. Additionally, if you are using different modules that have extended the BMad Method or added other complementary non-extension modules - the /bmad-help evolves to know all that is available to give you the best in-the-moment advice.
|
If at any time you are unsure what to do, the `bmad-help` skill will help you stay on track or know what to do next. You can always refer to this for reference also - but `bmad-help` is fully interactive and much quicker if you have already installed the BMad Method. Additionally, if you are using different modules that have extended the BMad Method or added other complementary non-extension modules - `bmad-help` evolves to know all that is available to give you the best in-the-moment advice.
|
||||||
|
|
||||||
Final important note: Every workflow below can be run directly with your tool of choice via slash command or by loading an agent first and using the entry from the agents menu.
|
Final important note: Every workflow below can be run directly with your tool of choice via skill or by loading an agent first and using the entry from the agents menu.
|
||||||
|
|
||||||
<iframe src="/workflow-map-diagram.html" title="BMad Method Workflow Map Diagram" width="100%" height="100%" style="border-radius: 8px; border: 1px solid #334155; min-height: 900px;"></iframe>
|
<iframe src="/workflow-map-diagram.html" title="BMad Method Workflow Map Diagram" width="100%" height="100%" style="border-radius: 8px; border: 1px solid #334155; min-height: 900px;"></iframe>
|
||||||
|
|
||||||
|
|
@ -26,8 +26,8 @@ Explore the problem space and validate ideas before committing to planning.
|
||||||
| Workflow | Purpose | Produces |
|
| Workflow | Purpose | Produces |
|
||||||
| ------------------------------- | -------------------------------------------------------------------------- | ------------------------- |
|
| ------------------------------- | -------------------------------------------------------------------------- | ------------------------- |
|
||||||
| `bmad-brainstorming` | Brainstorm Project Ideas with guided facilitation of a brainstorming coach | `brainstorming-report.md` |
|
| `bmad-brainstorming` | Brainstorm Project Ideas with guided facilitation of a brainstorming coach | `brainstorming-report.md` |
|
||||||
| `bmad-bmm-research` | Validate market, technical, or domain assumptions | Research findings |
|
| `bmad-domain-research`, `bmad-market-research`, `bmad-technical-research` | Validate market, technical, or domain assumptions | Research findings |
|
||||||
| `bmad-bmm-create-product-brief` | Capture strategic vision | `product-brief.md` |
|
| `bmad-create-product-brief` | Capture strategic vision | `product-brief.md` |
|
||||||
|
|
||||||
## Phase 2: Planning
|
## Phase 2: Planning
|
||||||
|
|
||||||
|
|
@ -35,8 +35,8 @@ Define what to build and for whom.
|
||||||
|
|
||||||
| Workflow | Purpose | Produces |
|
| Workflow | Purpose | Produces |
|
||||||
| --------------------------- | ---------------------------------------- | ------------ |
|
| --------------------------- | ---------------------------------------- | ------------ |
|
||||||
| `bmad-bmm-create-prd` | Define requirements (FRs/NFRs) | `PRD.md` |
|
| `bmad-create-prd` | Define requirements (FRs/NFRs) | `PRD.md` |
|
||||||
| `bmad-bmm-create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` |
|
| `bmad-create-ux-design` | Design user experience (when UX matters) | `ux-spec.md` |
|
||||||
|
|
||||||
## Phase 3: Solutioning
|
## Phase 3: Solutioning
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@ Decide how to build it and break work into stories.
|
||||||
|
|
||||||
| Workflow | Purpose | Produces |
|
| Workflow | Purpose | Produces |
|
||||||
| ----------------------------------------- | ------------------------------------------ | --------------------------- |
|
| ----------------------------------------- | ------------------------------------------ | --------------------------- |
|
||||||
| `bmad-bmm-create-architecture` | Make technical decisions explicit | `architecture.md` with ADRs |
|
| `bmad-create-architecture` | Make technical decisions explicit | `architecture.md` with ADRs |
|
||||||
| `bmad-bmm-create-epics-and-stories` | Break requirements into implementable work | Epic files with stories |
|
| `bmad-create-epics-and-stories` | Break requirements into implementable work | Epic files with stories |
|
||||||
| `bmad-bmm-check-implementation-readiness` | Gate check before implementation | PASS/CONCERNS/FAIL decision |
|
| `bmad-check-implementation-readiness` | Gate check before implementation | PASS/CONCERNS/FAIL decision |
|
||||||
|
|
||||||
## Phase 4: Implementation
|
## Phase 4: Implementation
|
||||||
|
|
||||||
|
|
@ -54,13 +54,13 @@ Build it, one story at a time. Coming soon, full phase 4 automation!
|
||||||
|
|
||||||
| Workflow | Purpose | Produces |
|
| Workflow | Purpose | Produces |
|
||||||
| -------------------------- | ------------------------------------------------------------------------ | -------------------------------- |
|
| -------------------------- | ------------------------------------------------------------------------ | -------------------------------- |
|
||||||
| `bmad-bmm-sprint-planning` | Initialize tracking (once per project to sequence the dev cycle) | `sprint-status.yaml` |
|
| `bmad-sprint-planning` | Initialize tracking (once per project to sequence the dev cycle) | `sprint-status.yaml` |
|
||||||
| `bmad-bmm-create-story` | Prepare next story for implementation | `story-[slug].md` |
|
| `bmad-create-story` | Prepare next story for implementation | `story-[slug].md` |
|
||||||
| `bmad-bmm-dev-story` | Implement the story | Working code + tests |
|
| `bmad-dev-story` | Implement the story | Working code + tests |
|
||||||
| `bmad-bmm-code-review` | Validate implementation quality | Approved or changes requested |
|
| `bmad-code-review` | Validate implementation quality | Approved or changes requested |
|
||||||
| `bmad-bmm-correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing |
|
| `bmad-correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing |
|
||||||
| `bmad-bmm-automate` | Generate tests for existing features - Use after a full epic is complete | End to End UI Focused Test suite |
|
| `bmad-sprint-status` | Track sprint progress and story status | Sprint status update |
|
||||||
| `bmad-bmm-retrospective` | Review after epic completion | Lessons learned |
|
| `bmad-retrospective` | Review after epic completion | Lessons learned |
|
||||||
|
|
||||||
## Quick Flow (Parallel Track)
|
## Quick Flow (Parallel Track)
|
||||||
|
|
||||||
|
|
@ -68,8 +68,8 @@ Skip phases 1-3 for small, well-understood work.
|
||||||
|
|
||||||
| Workflow | Purpose | Produces |
|
| Workflow | Purpose | Produces |
|
||||||
| --------------------- | ------------------------------------------ | --------------------------------------------- |
|
| --------------------- | ------------------------------------------ | --------------------------------------------- |
|
||||||
| `bmad-bmm-quick-spec` | Define an ad-hoc change | `tech-spec.md` (story file for small changes) |
|
| `bmad-quick-spec` | Define an ad-hoc change | `tech-spec.md` (story file for small changes) |
|
||||||
| `bmad-bmm-quick-dev` | Implement from spec or direct instructions | Working code + tests |
|
| `bmad-quick-dev` | Implement from spec or direct instructions | Working code + tests |
|
||||||
|
|
||||||
## Context Management
|
## Context Management
|
||||||
|
|
||||||
|
|
@ -84,6 +84,6 @@ Create `project-context.md` to ensure AI agents follow your project's rules and
|
||||||
**How to create it:**
|
**How to create it:**
|
||||||
|
|
||||||
- **Manually** — Create `_bmad-output/project-context.md` with your technology stack and implementation rules
|
- **Manually** — Create `_bmad-output/project-context.md` with your technology stack and implementation rules
|
||||||
- **Generate it** — Run `/bmad-bmm-generate-project-context` to auto-generate from your architecture or codebase
|
- **Generate it** — Run `bmad-generate-project-context` to auto-generate from your architecture or codebase
|
||||||
|
|
||||||
[**Learn more about project-context.md**](../explanation/project-context.md)
|
[**Learn more about project-context.md**](../explanation/project-context.md)
|
||||||
|
|
|
||||||
|
|
@ -37,16 +37,16 @@ Build software faster using AI-powered workflows with specialized agents that gu
|
||||||
|
|
||||||
### How to Use BMad-Help
|
### How to Use BMad-Help
|
||||||
|
|
||||||
Run it in your AI IDE with just the slash command:
|
Run it in your AI IDE by invoking the skill:
|
||||||
|
|
||||||
```
|
```
|
||||||
/bmad-help
|
bmad-help
|
||||||
```
|
```
|
||||||
|
|
||||||
Or combine it with a question for context-aware guidance:
|
Or combine it with a question for context-aware guidance:
|
||||||
|
|
||||||
```
|
```
|
||||||
/bmad-help I have an idea for a SaaS product, I already know all the features I want. where do I get started?
|
bmad-help I have an idea for a SaaS product, I already know all the features I want. where do I get started?
|
||||||
```
|
```
|
||||||
|
|
||||||
BMad-Help will respond with:
|
BMad-Help will respond with:
|
||||||
|
|
@ -112,7 +112,7 @@ BMad-Help will detect what you've completed and recommend exactly what to do nex
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::note[How to Load Agents and Run Workflows]
|
:::note[How to Load Agents and Run Workflows]
|
||||||
Each workflow has a **slash command** you run in your IDE (e.g., `/bmad-bmm-create-prd`). Running a workflow command automatically loads the appropriate agent — you don't need to load agents separately. You can also load an agent directly for general conversation (e.g., `/bmad-agent-bmm-pm` for the PM agent).
|
Each workflow has a **skill** you invoke in your IDE (e.g., `/bmad-create-prd`). Running a workflow skill automatically loads the appropriate agent — you don't need to load agents separately. You can also invoke an agent directly for general conversation (e.g., `/bmad-pm` for the PM agent).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::caution[Fresh Chats]
|
:::caution[Fresh Chats]
|
||||||
|
|
@ -126,35 +126,35 @@ Work through phases 1-3. **Use fresh chats for each workflow.**
|
||||||
:::tip[Project Context (Optional)]
|
:::tip[Project Context (Optional)]
|
||||||
Before starting, consider creating `project-context.md` to document your technical preferences and implementation rules. This ensures all AI agents follow your conventions throughout the project.
|
Before starting, consider creating `project-context.md` to document your technical preferences and implementation rules. This ensures all AI agents follow your conventions throughout the project.
|
||||||
|
|
||||||
Create it manually at `_bmad-output/project-context.md` or generate it after architecture using `/bmad-bmm-generate-project-context`. [Learn more](../explanation/project-context.md).
|
Create it manually at `_bmad-output/project-context.md` or generate it after architecture using `/bmad-generate-project-context`. [Learn more](../explanation/project-context.md).
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### Phase 1: Analysis (Optional)
|
### Phase 1: Analysis (Optional)
|
||||||
|
|
||||||
All workflows in this phase are optional:
|
All workflows in this phase are optional:
|
||||||
- **brainstorming** (`/bmad-brainstorming`) — Guided ideation
|
- **brainstorming** (`/bmad-brainstorming`) — Guided ideation
|
||||||
- **research** (`/bmad-bmm-research`) — Market and technical research
|
- **research** (`/bmad-research`) — Market and technical research
|
||||||
- **create-product-brief** (`/bmad-bmm-create-product-brief`) — Recommended foundation document
|
- **create-product-brief** (`/bmad-create-product-brief`) — Recommended foundation document
|
||||||
|
|
||||||
### Phase 2: Planning (Required)
|
### Phase 2: Planning (Required)
|
||||||
|
|
||||||
**For BMad Method and Enterprise tracks:**
|
**For BMad Method and Enterprise tracks:**
|
||||||
1. Load the **PM agent** (`/bmad-agent-bmm-pm`) in a new chat
|
1. Invoke the **PM agent** (`/bmad-pm`) in a new chat
|
||||||
2. Run the `prd` workflow (`/bmad-bmm-create-prd`)
|
2. Run the `bmad-create-prd` workflow (`/bmad-create-prd`)
|
||||||
3. Output: `PRD.md`
|
3. Output: `PRD.md`
|
||||||
|
|
||||||
**For Quick Flow track:**
|
**For Quick Flow track:**
|
||||||
- Use the `quick-spec` workflow (`/bmad-bmm-quick-spec`) instead of PRD, then skip to implementation
|
- Use the `bmad-quick-spec` workflow (`/bmad-quick-spec`) instead of PRD, then skip to implementation
|
||||||
|
|
||||||
:::note[UX Design (Optional)]
|
:::note[UX Design (Optional)]
|
||||||
If your project has a user interface, load the **UX-Designer agent** (`/bmad-agent-bmm-ux-designer`) and run the UX design workflow (`/bmad-bmm-create-ux-design`) after creating your PRD.
|
If your project has a user interface, invoke the **UX-Designer agent** (`/bmad-ux-designer`) and run the UX design workflow (`/bmad-create-ux-design`) after creating your PRD.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### Phase 3: Solutioning (BMad Method/Enterprise)
|
### Phase 3: Solutioning (BMad Method/Enterprise)
|
||||||
|
|
||||||
**Create Architecture**
|
**Create Architecture**
|
||||||
1. Load the **Architect agent** (`/bmad-agent-bmm-architect`) in a new chat
|
1. Invoke the **Architect agent** (`/bmad-architect`) in a new chat
|
||||||
2. Run `create-architecture` (`/bmad-bmm-create-architecture`)
|
2. Run `bmad-create-architecture` (`/bmad-create-architecture`)
|
||||||
3. Output: Architecture document with technical decisions
|
3. Output: Architecture document with technical decisions
|
||||||
|
|
||||||
**Create Epics and Stories**
|
**Create Epics and Stories**
|
||||||
|
|
@ -163,13 +163,13 @@ If your project has a user interface, load the **UX-Designer agent** (`/bmad-age
|
||||||
Epics and stories are now created *after* architecture. This produces better quality stories because architecture decisions (database, API patterns, tech stack) directly affect how work should be broken down.
|
Epics and stories are now created *after* architecture. This produces better quality stories because architecture decisions (database, API patterns, tech stack) directly affect how work should be broken down.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
1. Load the **PM agent** (`/bmad-agent-bmm-pm`) in a new chat
|
1. Invoke the **PM agent** (`/bmad-pm`) in a new chat
|
||||||
2. Run `create-epics-and-stories` (`/bmad-bmm-create-epics-and-stories`)
|
2. Run `bmad-create-epics-and-stories` (`/bmad-create-epics-and-stories`)
|
||||||
3. The workflow uses both PRD and Architecture to create technically-informed stories
|
3. The workflow uses both PRD and Architecture to create technically-informed stories
|
||||||
|
|
||||||
**Implementation Readiness Check** *(Highly Recommended)*
|
**Implementation Readiness Check** *(Highly Recommended)*
|
||||||
1. Load the **Architect agent** (`/bmad-agent-bmm-architect`) in a new chat
|
1. Invoke the **Architect agent** (`/bmad-architect`) in a new chat
|
||||||
2. Run `check-implementation-readiness` (`/bmad-bmm-check-implementation-readiness`)
|
2. Run `bmad-check-implementation-readiness` (`/bmad-check-implementation-readiness`)
|
||||||
3. Validates cohesion across all planning documents
|
3. Validates cohesion across all planning documents
|
||||||
|
|
||||||
## Step 2: Build Your Project
|
## Step 2: Build Your Project
|
||||||
|
|
@ -178,7 +178,7 @@ Once planning is complete, move to implementation. **Each workflow should run in
|
||||||
|
|
||||||
### Initialize Sprint Planning
|
### Initialize Sprint Planning
|
||||||
|
|
||||||
Load the **SM agent** (`/bmad-agent-bmm-sm`) and run `sprint-planning` (`/bmad-bmm-sprint-planning`). This creates `sprint-status.yaml` to track all epics and stories.
|
Invoke the **SM agent** (`/bmad-sm`) and run `bmad-sprint-planning` (`/bmad-sprint-planning`). This creates `sprint-status.yaml` to track all epics and stories.
|
||||||
|
|
||||||
### The Build Cycle
|
### The Build Cycle
|
||||||
|
|
||||||
|
|
@ -186,11 +186,11 @@ For each story, repeat this cycle with fresh chats:
|
||||||
|
|
||||||
| Step | Agent | Workflow | Command | Purpose |
|
| Step | Agent | Workflow | Command | Purpose |
|
||||||
| ---- | ----- | -------------- | -------------------------- | ---------------------------------- |
|
| ---- | ----- | -------------- | -------------------------- | ---------------------------------- |
|
||||||
| 1 | SM | `create-story` | `/bmad-bmm-create-story` | Create story file from epic |
|
| 1 | SM | `bmad-create-story` | `/bmad-create-story` | Create story file from epic |
|
||||||
| 2 | DEV | `dev-story` | `/bmad-bmm-dev-story` | Implement the story |
|
| 2 | DEV | `bmad-dev-story` | `/bmad-dev-story` | Implement the story |
|
||||||
| 3 | DEV | `code-review` | `/bmad-bmm-code-review` | Quality validation *(recommended)* |
|
| 3 | DEV | `bmad-code-review` | `/bmad-code-review` | Quality validation *(recommended)* |
|
||||||
|
|
||||||
After completing all stories in an epic, load the **SM agent** (`/bmad-agent-bmm-sm`) and run `retrospective` (`/bmad-bmm-retrospective`).
|
After completing all stories in an epic, invoke the **SM agent** (`/bmad-sm`) and run `bmad-retrospective` (`/bmad-retrospective`).
|
||||||
|
|
||||||
## What You've Accomplished
|
## What You've Accomplished
|
||||||
|
|
||||||
|
|
@ -221,16 +221,16 @@ your-project/
|
||||||
|
|
||||||
| Workflow | Command | Agent | Purpose |
|
| Workflow | Command | Agent | Purpose |
|
||||||
| ------------------------------------- | ------------------------------------------ | --------- | ----------------------------------------------- |
|
| ------------------------------------- | ------------------------------------------ | --------- | ----------------------------------------------- |
|
||||||
| **`help`** ⭐ | `/bmad-help` | Any | **Your intelligent guide — ask anything!** |
|
| **`bmad-help`** ⭐ | `/bmad-help` | Any | **Your intelligent guide — ask anything!** |
|
||||||
| `prd` | `/bmad-bmm-create-prd` | PM | Create Product Requirements Document |
|
| `bmad-create-prd` | `/bmad-create-prd` | PM | Create Product Requirements Document |
|
||||||
| `create-architecture` | `/bmad-bmm-create-architecture` | Architect | Create architecture document |
|
| `bmad-create-architecture` | `/bmad-create-architecture` | Architect | Create architecture document |
|
||||||
| `generate-project-context` | `/bmad-bmm-generate-project-context` | Analyst | Create project context file |
|
| `bmad-generate-project-context` | `/bmad-generate-project-context` | Analyst | Create project context file |
|
||||||
| `create-epics-and-stories` | `/bmad-bmm-create-epics-and-stories` | PM | Break down PRD into epics |
|
| `bmad-create-epics-and-stories` | `/bmad-create-epics-and-stories` | PM | Break down PRD into epics |
|
||||||
| `check-implementation-readiness` | `/bmad-bmm-check-implementation-readiness` | Architect | Validate planning cohesion |
|
| `bmad-check-implementation-readiness` | `/bmad-check-implementation-readiness` | Architect | Validate planning cohesion |
|
||||||
| `sprint-planning` | `/bmad-bmm-sprint-planning` | SM | Initialize sprint tracking |
|
| `bmad-sprint-planning` | `/bmad-sprint-planning` | SM | Initialize sprint tracking |
|
||||||
| `create-story` | `/bmad-bmm-create-story` | SM | Create a story file |
|
| `bmad-create-story` | `/bmad-create-story` | SM | Create a story file |
|
||||||
| `dev-story` | `/bmad-bmm-dev-story` | DEV | Implement a story |
|
| `bmad-dev-story` | `/bmad-dev-story` | DEV | Implement a story |
|
||||||
| `code-review` | `/bmad-bmm-code-review` | DEV | Review implemented code |
|
| `bmad-code-review` | `/bmad-code-review` | DEV | Review implemented code |
|
||||||
|
|
||||||
## Common Questions
|
## Common Questions
|
||||||
|
|
||||||
|
|
@ -238,10 +238,10 @@ your-project/
|
||||||
Only for BMad Method and Enterprise tracks. Quick Flow skips from tech-spec to implementation.
|
Only for BMad Method and Enterprise tracks. Quick Flow skips from tech-spec to implementation.
|
||||||
|
|
||||||
**Can I change my plan later?**
|
**Can I change my plan later?**
|
||||||
Yes. The SM agent has a `correct-course` workflow (`/bmad-bmm-correct-course`) for handling scope changes.
|
Yes. The SM agent has a `bmad-correct-course` workflow (`/bmad-correct-course`) for handling scope changes.
|
||||||
|
|
||||||
**What if I want to brainstorm first?**
|
**What if I want to brainstorm first?**
|
||||||
Load the Analyst agent (`/bmad-agent-bmm-analyst`) and run `brainstorming` (`/bmad-brainstorming`) before starting your PRD.
|
Invoke the Analyst agent (`/bmad-analyst`) and run `bmad-brainstorming` (`/bmad-brainstorming`) before starting your PRD.
|
||||||
|
|
||||||
**Do I need to follow a strict order?**
|
**Do I need to follow a strict order?**
|
||||||
Not strictly. Once you learn the flow, you can run workflows directly using the Quick Reference above.
|
Not strictly. Once you learn the flow, you can run workflows directly using the Quick Reference above.
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ agent:
|
||||||
|
|
||||||
menu:
|
menu:
|
||||||
- trigger: QA or fuzzy match on qa-automate
|
- trigger: QA or fuzzy match on qa-automate
|
||||||
workflow: "{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml"
|
workflow: "{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.md"
|
||||||
description: "[QA] Automate - Generate tests for existing features (simplified)"
|
description: "[QA] Automate - Generate tests for existing features (simplified)"
|
||||||
|
|
||||||
prompts:
|
prompts:
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,8 @@ agent:
|
||||||
exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md"
|
exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md"
|
||||||
description: "[QD] Quick-flow Develop: Implement a story tech spec end-to-end (Core of Quick Flow)"
|
description: "[QD] Quick-flow Develop: Implement a story tech spec end-to-end (Core of Quick Flow)"
|
||||||
|
|
||||||
- trigger: QQ or fuzzy match on quick-dev-new-preview
|
- trigger: QQ or fuzzy match on bmad-quick-dev-new-preview
|
||||||
exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev-new-preview/workflow.md"
|
exec: "{project-root}/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md"
|
||||||
description: "[QQ] Quick Dev New (Preview): Unified quick flow — clarify intent, plan, implement, review, present (experimental)"
|
description: "[QQ] Quick Dev New (Preview): Unified quick flow — clarify intent, plan, implement, review, present (experimental)"
|
||||||
|
|
||||||
- trigger: CR or fuzzy match on code-review
|
- trigger: CR or fuzzy match on code-review
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ agent:
|
||||||
description: "[CS] Context Story: Prepare a story with all required context for implementation for the developer agent"
|
description: "[CS] Context Story: Prepare a story with all required context for implementation for the developer agent"
|
||||||
|
|
||||||
- trigger: ER or fuzzy match on epic-retrospective
|
- trigger: ER or fuzzy match on epic-retrospective
|
||||||
workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml"
|
workflow: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.md"
|
||||||
data: "{project-root}/_bmad/_config/agent-manifest.csv"
|
data: "{project-root}/_bmad/_config/agent-manifest.csv"
|
||||||
description: "[ER] Epic Retrospective: Party Mode review of all work completed across an epic."
|
description: "[ER] Epic Retrospective: Party Mode review of all work completed across an epic."
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ bmm,anytime,Document Project,DP,,_bmad/bmm/workflows/document-project/workflow.y
|
||||||
bmm,anytime,Generate Project Context,GPC,,_bmad/bmm/workflows/generate-project-context/workflow.md,bmad-bmm-generate-project-context,false,analyst,Create Mode,"Scan existing codebase to generate a lean LLM-optimized project-context.md containing critical implementation rules patterns and conventions for AI agents. Essential for brownfield projects and quick-flow.",output_folder,"project context",
|
bmm,anytime,Generate Project Context,GPC,,_bmad/bmm/workflows/generate-project-context/workflow.md,bmad-bmm-generate-project-context,false,analyst,Create Mode,"Scan existing codebase to generate a lean LLM-optimized project-context.md containing critical implementation rules patterns and conventions for AI agents. Essential for brownfield projects and quick-flow.",output_folder,"project context",
|
||||||
bmm,anytime,Quick Spec,QS,,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps brownfield additions to well established patterns utilities without extensive planning",planning_artifacts,"tech spec",
|
bmm,anytime,Quick Spec,QS,,_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md,bmad-bmm-quick-spec,false,quick-flow-solo-dev,Create Mode,"Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method. Quick one-off tasks small changes simple apps brownfield additions to well established patterns utilities without extensive planning",planning_artifacts,"tech spec",
|
||||||
bmm,anytime,Quick Dev,QD,,_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,,
|
bmm,anytime,Quick Dev,QD,,_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md,bmad-bmm-quick-dev,false,quick-flow-solo-dev,Create Mode,"Quick one-off tasks small changes simple apps utilities without extensive planning - Do not suggest for potentially very complex things unless requested or if the user complains that they do not want to follow the extensive planning of the bmad method, unless the user is already working through the implementation phase and just requests a 1 off things not already in the plan",,,
|
||||||
bmm,anytime,Quick Dev New Preview,QQ,,_bmad/bmm/workflows/bmad-quick-flow/quick-dev-new-preview/workflow.md,bmad-bmm-quick-dev-new-preview,false,quick-flow-solo-dev,Create Mode,"Unified quick flow (experimental): clarify intent plan implement review and present in a single workflow",implementation_artifacts,"tech spec implementation",
|
bmm,anytime,Quick Dev New Preview,QQ,,skill:bmad-quick-dev-new-preview,bmad-bmm-quick-dev-new-preview,false,quick-flow-solo-dev,Create Mode,"Unified quick flow (experimental): clarify intent plan implement review and present in a single workflow",implementation_artifacts,"tech spec implementation",
|
||||||
bmm,anytime,Correct Course,CC,,_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal",
|
bmm,anytime,Correct Course,CC,,_bmad/bmm/workflows/4-implementation/correct-course/workflow.yaml,bmad-bmm-correct-course,false,sm,Create Mode,"Anytime: Navigate significant changes. May recommend start over update PRD redo architecture sprint planning or correct epics and stories",planning_artifacts,"change proposal",
|
||||||
bmm,anytime,Write Document,WD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Describe in detail what you want, and the agent will follow the documentation best practices defined in agent memory. Multi-turn conversation with subprocess for research/review.",project-knowledge,"document",
|
bmm,anytime,Write Document,WD,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Describe in detail what you want, and the agent will follow the documentation best practices defined in agent memory. Multi-turn conversation with subprocess for research/review.",project-knowledge,"document",
|
||||||
bmm,anytime,Update Standards,US,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Update agent memory documentation-standards.md with your specific preferences if you discover missing document conventions.",_bmad/_memory/tech-writer-sidecar,"standards",
|
bmm,anytime,Update Standards,US,,_bmad/bmm/agents/tech-writer/tech-writer.agent.yaml,,false,tech-writer,,"Update agent memory documentation-standards.md with your specific preferences if you discover missing document conventions.",_bmad/_memory/tech-writer-sidecar,"standards",
|
||||||
|
|
@ -23,10 +23,10 @@ bmm,3-solutioning,Create Architecture,CA,10,_bmad/bmm/workflows/3-solutioning/cr
|
||||||
bmm,3-solutioning,Create Epics and Stories,CE,30,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad-bmm-create-epics-and-stories,true,pm,Create Mode,"Create the Epics and Stories Listing",planning_artifacts,"epics and stories",
|
bmm,3-solutioning,Create Epics and Stories,CE,30,_bmad/bmm/workflows/3-solutioning/create-epics-and-stories/workflow.md,bmad-bmm-create-epics-and-stories,true,pm,Create Mode,"Create the Epics and Stories Listing",planning_artifacts,"epics and stories",
|
||||||
bmm,3-solutioning,Check Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad-bmm-check-implementation-readiness,true,architect,Validate Mode,"Ensure PRD UX Architecture and Epics Stories are aligned",planning_artifacts,"readiness report",
|
bmm,3-solutioning,Check Implementation Readiness,IR,70,_bmad/bmm/workflows/3-solutioning/check-implementation-readiness/workflow.md,bmad-bmm-check-implementation-readiness,true,architect,Validate Mode,"Ensure PRD UX Architecture and Epics Stories are aligned",planning_artifacts,"readiness report",
|
||||||
bmm,4-implementation,Sprint Planning,SP,10,_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml,bmad-bmm-sprint-planning,true,sm,Create Mode,"Generate sprint plan for development tasks - this kicks off the implementation phase by producing a plan the implementation agents will follow in sequence for every story in the plan.",implementation_artifacts,"sprint status",
|
bmm,4-implementation,Sprint Planning,SP,10,_bmad/bmm/workflows/4-implementation/sprint-planning/workflow.yaml,bmad-bmm-sprint-planning,true,sm,Create Mode,"Generate sprint plan for development tasks - this kicks off the implementation phase by producing a plan the implementation agents will follow in sequence for every story in the plan.",implementation_artifacts,"sprint status",
|
||||||
bmm,4-implementation,Sprint Status,SS,20,_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml,bmad-bmm-sprint-status,false,sm,Create Mode,"Anytime: Summarize sprint status and route to next workflow",,,
|
bmm,4-implementation,Sprint Status,SS,20,_bmad/bmm/workflows/4-implementation/sprint-status/workflow.md,bmad-bmm-sprint-status,false,sm,Create Mode,"Anytime: Summarize sprint status and route to next workflow",,,
|
||||||
bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml,bmad-bmm-create-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report",
|
bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml,bmad-bmm-create-story,false,sm,Validate Mode,"Validates story readiness and completeness before development work begins",implementation_artifacts,"story validation report",
|
||||||
bmm,4-implementation,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story,
|
bmm,4-implementation,Create Story,CS,30,_bmad/bmm/workflows/4-implementation/create-story/workflow.yaml,bmad-bmm-create-story,true,sm,Create Mode,"Story cycle start: Prepare first found story in the sprint plan that is next, or if the command is run with a specific epic and story designation with context. Once complete, then VS then DS then CR then back to DS if needed or next CS or ER",implementation_artifacts,story,
|
||||||
bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,,
|
bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,,
|
||||||
bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,,
|
bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,,
|
||||||
bmm,4-implementation,QA Automation Test,QA,45,_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.yaml,bmad-bmm-qa-automate,false,qa,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects existing well known in use test frameworks). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite",
|
bmm,4-implementation,QA Automation Test,QA,45,_bmad/bmm/workflows/qa-generate-e2e-tests/workflow.md,bmad-bmm-qa-automate,false,qa,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects existing well known in use test frameworks). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite",
|
||||||
bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective,
|
bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.md,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective,
|
||||||
|
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brie
|
||||||
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brie
|
||||||
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brie
|
||||||
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/1-analysis/create-product-brie
|
||||||
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ projectTypesCSV: '../data/project-types.csv'
|
||||||
domainComplexityCSV: '../data/domain-complexity.csv'
|
domainComplexityCSV: '../data/domain-complexity.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
domainComplexityCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv'
|
domainComplexityCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
projectTypesCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv'
|
projectTypesCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
projectTypesCSV: '../data/project-types.csv'
|
projectTypesCSV: '../data/project-types.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/st
|
||||||
outputFile: '{planning_artifacts}/prd.md'
|
outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
purposeFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
purposeFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ description: 'Discovery & Understanding - Understand what user wants to edit and
|
||||||
# File references (ONLY variables used in this step)
|
# File references (ONLY variables used in this step)
|
||||||
altStepFile: './step-e-01b-legacy-conversion.md'
|
altStepFile: './step-e-01b-legacy-conversion.md'
|
||||||
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ nextStepFile: './step-e-03-edit.md'
|
||||||
prdFile: '{prd_file_path}'
|
prdFile: '{prd_file_path}'
|
||||||
validationReport: '{validation_report_path}' # If provided
|
validationReport: '{validation_report_path}' # If provided
|
||||||
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
prdPurpose: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md'
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step E-2: Deep Review & Analysis
|
# Step E-2: Deep Review & Analysis
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ description: 'Document Discovery & Confirmation - Handle fresh context validatio
|
||||||
|
|
||||||
# File references (ONLY variables used in this step)
|
# File references (ONLY variables used in this step)
|
||||||
nextStepFile: './step-v-02-format-detection.md'
|
nextStepFile: './step-v-02-format-detection.md'
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
prdPurpose: '../data/prd-purpose.md'
|
prdPurpose: '../data/prd-purpose.md'
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ description: 'SMART Requirements Validation - Validate Functional Requirements m
|
||||||
nextStepFile: './step-v-11-holistic-quality-validation.md'
|
nextStepFile: './step-v-11-holistic-quality-validation.md'
|
||||||
prdFile: '{prd_file_path}'
|
prdFile: '{prd_file_path}'
|
||||||
validationReportPath: '{validation_report_path}'
|
validationReportPath: '{validation_report_path}'
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 10: SMART Requirements Validation
|
# Step 10: SMART Requirements Validation
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ description: 'Holistic Quality Assessment - Assess PRD as cohesive, compelling d
|
||||||
nextStepFile: './step-v-12-completeness-validation.md'
|
nextStepFile: './step-v-12-completeness-validation.md'
|
||||||
prdFile: '{prd_file_path}'
|
prdFile: '{prd_file_path}'
|
||||||
validationReportPath: '{validation_report_path}'
|
validationReportPath: '{validation_report_path}'
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 11: Holistic Quality Assessment
|
# Step 11: Holistic Quality Assessment
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -161,7 +161,7 @@ Show the generated core experience content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current core experience content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current core experience content
|
||||||
- Process the enhanced experience insights that come back
|
- Process the enhanced experience insights that come back
|
||||||
- Ask user: "Accept these improvements to the core experience definition? (y/n)"
|
- Ask user: "Accept these improvements to the core experience definition? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -164,7 +164,7 @@ Show the generated emotional response content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current emotional response content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current emotional response content
|
||||||
- Process the enhanced emotional insights that come back
|
- Process the enhanced emotional insights that come back
|
||||||
- Ask user: "Accept these improvements to the emotional response definition? (y/n)"
|
- Ask user: "Accept these improvements to the emotional response definition? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -179,7 +179,7 @@ Show the generated inspiration analysis content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current inspiration analysis content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current inspiration analysis content
|
||||||
- Process the enhanced pattern insights that come back
|
- Process the enhanced pattern insights that come back
|
||||||
- Ask user: "Accept these improvements to the inspiration analysis? (y/n)"
|
- Ask user: "Accept these improvements to the inspiration analysis? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -197,7 +197,7 @@ Show the generated design system content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current design system content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design system content
|
||||||
- Process the enhanced design system insights that come back
|
- Process the enhanced design system insights that come back
|
||||||
- Ask user: "Accept these improvements to the design system decision? (y/n)"
|
- Ask user: "Accept these improvements to the design system decision? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -199,7 +199,7 @@ Show the generated defining experience content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current defining experience content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current defining experience content
|
||||||
- Process the enhanced experience insights that come back
|
- Process the enhanced experience insights that come back
|
||||||
- Ask user: "Accept these improvements to the defining experience? (y/n)"
|
- Ask user: "Accept these improvements to the defining experience? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -169,7 +169,7 @@ Show the generated visual foundation content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current visual foundation content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current visual foundation content
|
||||||
- Process the enhanced visual insights that come back
|
- Process the enhanced visual insights that come back
|
||||||
- Ask user: "Accept these improvements to the visual foundation? (y/n)"
|
- Ask user: "Accept these improvements to the visual foundation? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -169,7 +169,7 @@ Show the generated design direction content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current design direction content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current design direction content
|
||||||
- Process the enhanced design insights that come back
|
- Process the enhanced design insights that come back
|
||||||
- Ask user: "Accept these improvements to the design direction? (y/n)"
|
- Ask user: "Accept these improvements to the design direction? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -187,7 +187,7 @@ Show the generated user journey content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current user journey content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current user journey content
|
||||||
- Process the enhanced journey insights that come back
|
- Process the enhanced journey insights that come back
|
||||||
- Ask user: "Accept these improvements to the user journeys? (y/n)"
|
- Ask user: "Accept these improvements to the user journeys? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -193,7 +193,7 @@ Show the generated component strategy content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current component strategy content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current component strategy content
|
||||||
- Process the enhanced component insights that come back
|
- Process the enhanced component insights that come back
|
||||||
- Ask user: "Accept these improvements to the component strategy? (y/n)"
|
- Ask user: "Accept these improvements to the component strategy? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -182,7 +182,7 @@ Show the generated UX patterns content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current UX patterns content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current UX patterns content
|
||||||
- Process the enhanced pattern insights that come back
|
- Process the enhanced pattern insights that come back
|
||||||
- Ask user: "Accept these improvements to the UX patterns? (y/n)"
|
- Ask user: "Accept these improvements to the UX patterns? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to this step's A/P/C menu
|
- PROTOCOLS always return to this step's A/P/C menu
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -209,7 +209,7 @@ Show the generated responsive and accessibility content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current responsive/accessibility content
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current responsive/accessibility content
|
||||||
- Process the enhanced insights that come back
|
- Process the enhanced insights that come back
|
||||||
- Ask user: "Accept these improvements to the responsive/accessibility strategy? (y/n)"
|
- Ask user: "Accept these improvements to the responsive/accessibility strategy? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -170,7 +170,7 @@ Show the generated content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with the current context analysis
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with the current context analysis
|
||||||
- Process the enhanced architectural insights that come back
|
- Process the enhanced architectural insights that come back
|
||||||
- Ask user: "Accept these enhancements to the project context analysis? (y/n)"
|
- Ask user: "Accept these enhancements to the project context analysis? (y/n)"
|
||||||
- If yes: Update content with improvements, then return to A/P/C menu
|
- If yes: Update content with improvements, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -276,7 +276,7 @@ Show the generated content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current starter analysis
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current starter analysis
|
||||||
- Process enhanced insights about starter options or custom approaches
|
- Process enhanced insights about starter options or custom approaches
|
||||||
- Ask user: "Accept these changes to the starter template evaluation? (y/n)"
|
- Ask user: "Accept these changes to the starter template evaluation? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ This step will generate content and present choices for each decision category:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -264,7 +264,7 @@ Show the generated decisions content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with specific decision categories
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with specific decision categories
|
||||||
- Process enhanced insights about particular decisions
|
- Process enhanced insights about particular decisions
|
||||||
- Ask user: "Accept these enhancements to the architectural decisions? (y/n)"
|
- Ask user: "Accept these enhancements to the architectural decisions? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -305,7 +305,7 @@ Show the generated patterns content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current patterns
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current patterns
|
||||||
- Process enhanced consistency rules that come back
|
- Process enhanced consistency rules that come back
|
||||||
- Ask user: "Accept these additional pattern refinements? (y/n)"
|
- Ask user: "Accept these additional pattern refinements? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -325,7 +325,7 @@ Show the generated project structure content and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with current project structure
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current project structure
|
||||||
- Process enhanced organizational insights that come back
|
- Process enhanced organizational insights that come back
|
||||||
- Ask user: "Accept these changes to the project structure? (y/n)"
|
- Ask user: "Accept these changes to the project structure? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ This step will generate content and present choices:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
- When 'P' selected: Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -305,7 +305,7 @@ Show the validation results and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml with validation issues
|
- Read fully and follow: {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with validation issues
|
||||||
- Process enhanced solutions for complex concerns
|
- Process enhanced solutions for complex concerns
|
||||||
- Ask user: "Accept these architectural improvements? (y/n)"
|
- Ask user: "Accept these architectural improvements? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ outputFile: '{planning_artifacts}/epics.md'
|
||||||
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||||
outputFile: '{planning_artifacts}/epics.md'
|
outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||||
outputFile: '{planning_artifacts}/epics.md'
|
outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ workflowFile: '{workflow_path}/workflow.md'
|
||||||
outputFile: '{planning_artifacts}/epics.md'
|
outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
partyModeWorkflow: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,71 @@
|
||||||
# Retrospective - Epic Completion Review Instructions
|
---
|
||||||
|
name: retrospective
|
||||||
|
description: 'Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"'
|
||||||
|
---
|
||||||
|
|
||||||
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
|
# Retrospective Workflow
|
||||||
<critical>You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml</critical>
|
|
||||||
<critical>Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}</critical>
|
|
||||||
<critical>Generate all documents in {document_output_language}</critical>
|
|
||||||
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES - NEVER mention hours, days, weeks, months, or ANY time-based predictions. AI has fundamentally changed development speed - what once took teams weeks/months can now be done by one person in hours. DO NOT give ANY time estimates whatsoever.</critical>
|
|
||||||
|
|
||||||
<critical>
|
**Goal:** Post-epic review to extract lessons and assess success.
|
||||||
DOCUMENT OUTPUT: Retrospective analysis. Concise insights, lessons learned, action items. User skill level ({user_skill_level}) affects conversation style ONLY, not retrospective content.
|
|
||||||
|
|
||||||
FACILITATION NOTES:
|
**Your Role:** Scrum Master facilitating retrospective.
|
||||||
|
- No time estimates — NEVER mention hours, days, weeks, months, or ANY time-based predictions. AI has fundamentally changed development speed.
|
||||||
|
- Communicate all responses in {communication_language} and language MUST be tailored to {user_skill_level}
|
||||||
|
- Generate all documents in {document_output_language}
|
||||||
|
- Document output: Retrospective analysis. Concise insights, lessons learned, action items. User skill level ({user_skill_level}) affects conversation style ONLY, not retrospective content.
|
||||||
|
- Facilitation notes:
|
||||||
|
- Psychological safety is paramount - NO BLAME
|
||||||
|
- Focus on systems, processes, and learning
|
||||||
|
- Everyone contributes with specific examples preferred
|
||||||
|
- Action items must be achievable with clear ownership
|
||||||
|
- Two-part format: (1) Epic Review + (2) Next Epic Preparation
|
||||||
|
- Party mode protocol:
|
||||||
|
- ALL agent dialogue MUST use format: "Name (Role): dialogue"
|
||||||
|
- Example: Bob (Scrum Master): "Let's begin..."
|
||||||
|
- Example: {user_name} (Project Lead): [User responds]
|
||||||
|
- Create natural back-and-forth with user actively participating
|
||||||
|
- Show disagreements, diverse perspectives, authentic team dynamics
|
||||||
|
|
||||||
- Scrum Master facilitates this retrospective
|
---
|
||||||
- Psychological safety is paramount - NO BLAME
|
|
||||||
- Focus on systems, processes, and learning
|
|
||||||
- Everyone contributes with specific examples preferred
|
|
||||||
- Action items must be achievable with clear ownership
|
|
||||||
- Two-part format: (1) Epic Review + (2) Next Epic Preparation
|
|
||||||
|
|
||||||
PARTY MODE PROTOCOL:
|
## INITIALIZATION
|
||||||
|
|
||||||
- ALL agent dialogue MUST use format: "Name (Role): dialogue"
|
### Configuration Loading
|
||||||
- Example: Bob (Scrum Master): "Let's begin..."
|
|
||||||
- Example: {user_name} (Project Lead): [User responds]
|
Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
- Create natural back-and-forth with user actively participating
|
|
||||||
- Show disagreements, diverse perspectives, authentic team dynamics
|
- `project_name`, `user_name`
|
||||||
</critical>
|
- `communication_language`, `document_output_language`
|
||||||
|
- `user_skill_level`
|
||||||
|
- `planning_artifacts`, `implementation_artifacts`
|
||||||
|
- `date` as system-generated current datetime
|
||||||
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
||||||
|
|
||||||
|
### Paths
|
||||||
|
|
||||||
|
- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/retrospective`
|
||||||
|
- `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml`
|
||||||
|
|
||||||
|
### Input Files
|
||||||
|
|
||||||
|
| Input | Description | Path Pattern(s) | Load Strategy |
|
||||||
|
|-------|-------------|------------------|---------------|
|
||||||
|
| epics | The completed epic for retrospective | whole: `{planning_artifacts}/*epic*.md`, sharded_index: `{planning_artifacts}/*epic*/index.md`, sharded_single: `{planning_artifacts}/*epic*/epic-{{epic_num}}.md` | SELECTIVE_LOAD |
|
||||||
|
| previous_retrospective | Previous epic's retrospective (optional) | `{implementation_artifacts}/**/epic-{{prev_epic_num}}-retro-*.md` | SELECTIVE_LOAD |
|
||||||
|
| architecture | System architecture for context | whole: `{planning_artifacts}/*architecture*.md`, sharded: `{planning_artifacts}/*architecture*/*.md` | FULL_LOAD |
|
||||||
|
| prd | Product requirements for context | whole: `{planning_artifacts}/*prd*.md`, sharded: `{planning_artifacts}/*prd*/*.md` | FULL_LOAD |
|
||||||
|
| document_project | Brownfield project documentation (optional) | sharded: `{planning_artifacts}/*.md` | INDEX_GUIDED |
|
||||||
|
|
||||||
|
### Required Inputs
|
||||||
|
|
||||||
|
- `agent_manifest` = `{project-root}/_bmad/_config/agent-manifest.csv`
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
- `project_context` = `**/project-context.md` (load if exists)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
<workflow>
|
<workflow>
|
||||||
|
|
||||||
|
|
@ -159,7 +199,7 @@ Bob (Scrum Master): "Perfect. Epic {{epic_number}} is complete and ready for ret
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step n="0.5" goal="Discover and load project documents">
|
<step n="0.5" goal="Discover and load project documents">
|
||||||
<invoke-protocol name="discover_inputs" />
|
<action>Load input files according to the Input Files table in INITIALIZATION. For SELECTIVE_LOAD inputs, load only the epic matching {{epic_number}}. For FULL_LOAD inputs, load the complete document. For INDEX_GUIDED inputs, check the index first and load relevant sections. After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}</action>
|
||||||
<note>After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}</note>
|
<note>After discovery, these content variables are available: {epics_content} (selective load for this epic), {architecture_content}, {prd_content}, {document_project_content}</note>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
|
|
@ -1,52 +0,0 @@
|
||||||
# Retrospective - Epic Completion Review Workflow
|
|
||||||
name: "retrospective"
|
|
||||||
description: 'Post-epic review to extract lessons and assess success. Use when the user says "run a retrospective" or "lets retro the epic [epic]"'
|
|
||||||
|
|
||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
||||||
user_name: "{config_source}:user_name"
|
|
||||||
communication_language: "{config_source}:communication_language"
|
|
||||||
user_skill_level: "{config_source}:user_skill_level"
|
|
||||||
document_output_language: "{config_source}:document_output_language"
|
|
||||||
date: system-generated
|
|
||||||
planning_artifacts: "{config_source}:planning_artifacts"
|
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
|
||||||
project_context: "**/project-context.md"
|
|
||||||
|
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/retrospective"
|
|
||||||
template: false
|
|
||||||
instructions: "{installed_path}/instructions.md"
|
|
||||||
|
|
||||||
required_inputs:
|
|
||||||
- agent_manifest: "{project-root}/_bmad/_config/agent-manifest.csv"
|
|
||||||
|
|
||||||
# Smart input file references - handles both whole docs and sharded docs
|
|
||||||
# Priority: Whole document first, then sharded version
|
|
||||||
# Strategy: SELECTIVE LOAD - only load the completed epic and relevant retrospectives
|
|
||||||
input_file_patterns:
|
|
||||||
epics:
|
|
||||||
description: "The completed epic for retrospective"
|
|
||||||
whole: "{planning_artifacts}/*epic*.md"
|
|
||||||
sharded_index: "{planning_artifacts}/*epic*/index.md"
|
|
||||||
sharded_single: "{planning_artifacts}/*epic*/epic-{{epic_num}}.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD"
|
|
||||||
previous_retrospective:
|
|
||||||
description: "Previous epic's retrospective (optional)"
|
|
||||||
pattern: "{implementation_artifacts}/**/epic-{{prev_epic_num}}-retro-*.md"
|
|
||||||
load_strategy: "SELECTIVE_LOAD"
|
|
||||||
architecture:
|
|
||||||
description: "System architecture for context"
|
|
||||||
whole: "{planning_artifacts}/*architecture*.md"
|
|
||||||
sharded: "{planning_artifacts}/*architecture*/*.md"
|
|
||||||
load_strategy: "FULL_LOAD"
|
|
||||||
prd:
|
|
||||||
description: "Product requirements for context"
|
|
||||||
whole: "{planning_artifacts}/*prd*.md"
|
|
||||||
sharded: "{planning_artifacts}/*prd*/*.md"
|
|
||||||
load_strategy: "FULL_LOAD"
|
|
||||||
document_project:
|
|
||||||
description: "Brownfield project documentation (optional)"
|
|
||||||
sharded: "{planning_artifacts}/*.md"
|
|
||||||
load_strategy: "INDEX_GUIDED"
|
|
||||||
|
|
||||||
# Required files
|
|
||||||
sprint_status_file: "{implementation_artifacts}/sprint-status.yaml"
|
|
||||||
|
|
@ -1,9 +1,46 @@
|
||||||
# Sprint Status - Multi-Mode Service
|
---
|
||||||
|
name: sprint-status
|
||||||
|
description: 'Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"'
|
||||||
|
---
|
||||||
|
|
||||||
<critical>The workflow execution engine is governed by: {project-root}/_bmad/core/tasks/workflow.xml</critical>
|
# Sprint Status Workflow
|
||||||
<critical>You MUST have already loaded and processed: {project-root}/_bmad/bmm/workflows/4-implementation/sprint-status/workflow.yaml</critical>
|
|
||||||
<critical>Modes: interactive (default), validate, data</critical>
|
**Goal:** Summarize sprint status, surface risks, and recommend the next workflow action.
|
||||||
<critical>⚠️ ABSOLUTELY NO TIME ESTIMATES. Do NOT mention hours, days, weeks, or timelines.</critical>
|
|
||||||
|
**Your Role:** You are a Scrum Master providing clear, actionable sprint visibility. No time estimates — focus on status, risks, and next steps.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## INITIALIZATION
|
||||||
|
|
||||||
|
### Configuration Loading
|
||||||
|
|
||||||
|
Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
|
|
||||||
|
- `project_name`, `user_name`
|
||||||
|
- `communication_language`, `document_output_language`
|
||||||
|
- `implementation_artifacts`
|
||||||
|
- `date` as system-generated current datetime
|
||||||
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
||||||
|
|
||||||
|
### Paths
|
||||||
|
|
||||||
|
- `installed_path` = `{project-root}/_bmad/bmm/workflows/4-implementation/sprint-status`
|
||||||
|
- `sprint_status_file` = `{implementation_artifacts}/sprint-status.yaml`
|
||||||
|
|
||||||
|
### Input Files
|
||||||
|
|
||||||
|
| Input | Path | Load Strategy |
|
||||||
|
|-------|------|---------------|
|
||||||
|
| Sprint status | `{sprint_status_file}` | FULL_LOAD |
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
- `project_context` = `**/project-context.md` (load if exists)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
<workflow>
|
<workflow>
|
||||||
|
|
||||||
|
|
@ -1,25 +0,0 @@
|
||||||
# Sprint Status - Implementation Tracker
|
|
||||||
name: sprint-status
|
|
||||||
description: 'Summarize sprint status and surface risks. Use when the user says "check sprint status" or "show sprint status"'
|
|
||||||
author: "BMad"
|
|
||||||
|
|
||||||
# Critical variables from config
|
|
||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
||||||
user_name: "{config_source}:user_name"
|
|
||||||
communication_language: "{config_source}:communication_language"
|
|
||||||
document_output_language: "{config_source}:document_output_language"
|
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
|
||||||
|
|
||||||
# Workflow components
|
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/4-implementation/sprint-status"
|
|
||||||
instructions: "{installed_path}/instructions.md"
|
|
||||||
|
|
||||||
# Inputs
|
|
||||||
sprint_status_file: "{implementation_artifacts}/sprint-status.yaml"
|
|
||||||
|
|
||||||
# Smart input file references
|
|
||||||
input_file_patterns:
|
|
||||||
sprint_status:
|
|
||||||
description: "Sprint status file generated by sprint-planning"
|
|
||||||
whole: "{implementation_artifacts}/sprint-status.yaml"
|
|
||||||
load_strategy: "FULL_LOAD"
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -48,5 +48,5 @@ spec_file: '' # set at runtime before leaving this step
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
- One-shot / ready-for-dev: Read fully and follow `{installed_path}/steps/step-03-implement.md`
|
- One-shot / ready-for-dev: Read fully and follow `./steps/step-03-implement.md`
|
||||||
- Plan-code-review: Read fully and follow `{installed_path}/steps/step-02-plan.md`
|
- Plan-code-review: Read fully and follow `./steps/step-02-plan.md`
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
name: 'step-02-plan'
|
name: 'step-02-plan'
|
||||||
description: 'Investigate, generate spec, present for approval'
|
description: 'Investigate, generate spec, present for approval'
|
||||||
|
|
||||||
templateFile: '{installed_path}/tech-spec-template.md'
|
templateFile: '../tech-spec-template.md'
|
||||||
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
wipFile: '{implementation_artifacts}/tech-spec-wip.md'
|
||||||
deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
deferred_work_file: '{implementation_artifacts}/deferred-work.md'
|
||||||
---
|
---
|
||||||
|
|
@ -36,4 +36,4 @@ Present summary. If token count exceeded 1600 and user chose [K], include the to
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
Read fully and follow `{installed_path}/steps/step-03-implement.md`
|
Read fully and follow `./steps/step-03-implement.md`
|
||||||
|
|
@ -32,4 +32,4 @@ Otherwise (`execution_mode = "plan-code-review"`): hand `{spec_file}` to a sub-a
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
Read fully and follow `{installed_path}/steps/step-04-review.md`
|
Read fully and follow `./steps/step-04-review.md`
|
||||||
|
|
@ -46,7 +46,7 @@ Do NOT `git add` anything — this is read-only inspection.
|
||||||
- **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real.
|
- **reject** — noise. Drop silently. When unsure between defer and reject, prefer reject — only defer findings you are confident are real.
|
||||||
3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review.
|
3. Process findings in cascading order. If intent_gap or bad_spec findings exist, they trigger a loopback — lower findings are moot since code will be re-derived. If neither exists, process patch and defer normally. Increment `{specLoopIteration}` on each loopback. If it exceeds 5, HALT and escalate to the human. On any loopback, re-evaluate routing — if scope has grown beyond one-shot, escalate `execution_mode` to plan-code-review.
|
||||||
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve, then re-run steps 2–4.
|
- **intent_gap** — Root cause is inside `<frozen-after-approval>`. Revert code changes. Loop back to the human to resolve, then re-run steps 2–4.
|
||||||
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `{installed_path}/steps/step-03-implement.md` to re-derive the code, then this step will run again.
|
- **bad_spec** — Root cause is outside `<frozen-after-approval>`. Before reverting code: extract KEEP instructions for positive preservation (what worked well and must survive re-derivation). Revert code changes. Read the `## Spec Change Log` in `{spec_file}` and strictly respect all logged constraints when amending the non-frozen sections that contain the root cause. Append a new change-log entry recording: the triggering finding, what was amended, the known-bad state avoided, and the KEEP instructions. Read fully and follow `./steps/step-03-implement.md` to re-derive the code, then this step will run again.
|
||||||
- **patch** — Auto-fix. These are the only findings that survive loopbacks.
|
- **patch** — Auto-fix. These are the only findings that survive loopbacks.
|
||||||
- **defer** — Append to `{deferred_work_file}`.
|
- **defer** — Append to `{deferred_work_file}`.
|
||||||
- **reject** — Drop silently.
|
- **reject** — Drop silently.
|
||||||
|
|
@ -54,4 +54,4 @@ Do NOT `git add` anything — this is read-only inspection.
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
Read fully and follow `{installed_path}/steps/step-05-present.md`
|
Read fully and follow `./steps/step-05-present.md`
|
||||||
|
|
@ -4,7 +4,7 @@ description: 'Unified quick flow - clarify intent, plan, implement, review, pres
|
||||||
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
||||||
|
|
||||||
# Related workflows
|
# Related workflows
|
||||||
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
|
|
||||||
# Review building block
|
# Review building block
|
||||||
|
|
@ -81,10 +81,9 @@ YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `
|
||||||
|
|
||||||
### 2. Paths
|
### 2. Paths
|
||||||
|
|
||||||
- `installed_path` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev-new-preview`
|
- `templateFile` = `./tech-spec-template.md`
|
||||||
- `templateFile` = `{installed_path}/tech-spec-template.md`
|
|
||||||
- `wipFile` = `{implementation_artifacts}/tech-spec-wip.md`
|
- `wipFile` = `{implementation_artifacts}/tech-spec-wip.md`
|
||||||
|
|
||||||
### 3. First Step Execution
|
### 3. First Step Execution
|
||||||
|
|
||||||
Read fully and follow: `{installed_path}/steps/step-01-clarify-and-route.md` to begin the workflow.
|
Read fully and follow: `./steps/step-01-clarify-and-route.md` to begin the workflow.
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
canonicalId: bmad-quick-dev-new-preview
|
|
||||||
type: workflow
|
|
||||||
description: "Unified quick flow - clarify intent, plan, implement, review, present"
|
|
||||||
|
|
@ -41,7 +41,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
|
|
||||||
- `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md`
|
- `quick_spec_workflow` = `{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-spec/workflow.md`
|
||||||
- `party_mode_exec` = `{project-root}/_bmad/core/workflows/party-mode/workflow.md`
|
- `party_mode_exec` = `{project-root}/_bmad/core/workflows/party-mode/workflow.md`
|
||||||
- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`
|
- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ description: 'Very quick process to create implementation-ready quick specs for
|
||||||
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
||||||
|
|
||||||
# Checkpoint handler paths
|
# Checkpoint handler paths
|
||||||
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
||||||
quick_dev_workflow: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md'
|
quick_dev_workflow: '{project-root}/_bmad/bmm/workflows/bmad-quick-flow/quick-dev/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ This step will generate content and present choices for each rule category:
|
||||||
|
|
||||||
## PROTOCOL INTEGRATION:
|
## PROTOCOL INTEGRATION:
|
||||||
|
|
||||||
- When 'A' selected: Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml
|
- When 'A' selected: Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md
|
||||||
- When 'P' selected: Execute {project-root}/_bmad/core/workflows/party-mode
|
- When 'P' selected: Execute {project-root}/_bmad/core/workflows/party-mode
|
||||||
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
- PROTOCOLS always return to display this step's A/P/C menu after the A or P have completed
|
||||||
- User accepts/rejects protocol changes before proceeding
|
- User accepts/rejects protocol changes before proceeding
|
||||||
|
|
@ -267,7 +267,7 @@ After each category, show the generated rules and present choices:
|
||||||
|
|
||||||
#### If 'A' (Advanced Elicitation):
|
#### If 'A' (Advanced Elicitation):
|
||||||
|
|
||||||
- Execute advanced-elicitation.xml with current category rules
|
- Execute {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md with current category rules
|
||||||
- Process enhanced rules that come back
|
- Process enhanced rules that come back
|
||||||
- Ask user: "Accept these enhanced rules for {{category}}? (y/n)"
|
- Ask user: "Accept these enhanced rules for {{category}}? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,43 @@
|
||||||
# Quinn QA - Automate
|
---
|
||||||
|
name: qa-generate-e2e-tests
|
||||||
|
description: 'Generate end to end automated tests for existing features. Use when the user says "create qa automated tests for [feature]"'
|
||||||
|
---
|
||||||
|
|
||||||
**Goal**: Generate automated API and E2E tests for implemented code.
|
# QA Generate E2E Tests Workflow
|
||||||
|
|
||||||
**Scope**: This workflow generates tests ONLY. It does **not** perform code review or story validation (use Code Review `CR` for that).
|
**Goal:** Generate automated API and E2E tests for implemented code.
|
||||||
|
|
||||||
## Instructions
|
**Your Role:** You are a QA automation engineer. You generate tests ONLY — no code review or story validation (use Code Review `CR` for that).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## INITIALIZATION
|
||||||
|
|
||||||
|
### Configuration Loading
|
||||||
|
|
||||||
|
Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
|
|
||||||
|
- `project_name`, `user_name`
|
||||||
|
- `communication_language`, `document_output_language`
|
||||||
|
- `implementation_artifacts`
|
||||||
|
- `date` as system-generated current datetime
|
||||||
|
- YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the config `{communication_language}`
|
||||||
|
|
||||||
|
### Paths
|
||||||
|
|
||||||
|
- `installed_path` = `{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests`
|
||||||
|
- `checklist` = `{installed_path}/checklist.md`
|
||||||
|
- `test_dir` = `{project-root}/tests`
|
||||||
|
- `source_dir` = `{project-root}`
|
||||||
|
- `default_output_file` = `{implementation_artifacts}/tests/test-summary.md`
|
||||||
|
|
||||||
|
### Context
|
||||||
|
|
||||||
|
- `project_context` = `**/project-context.md` (load if exists)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
### Step 0: Detect Test Framework
|
### Step 0: Detect Test Framework
|
||||||
|
|
||||||
|
|
@ -101,10 +134,10 @@ If the project needs:
|
||||||
- Comprehensive coverage analysis
|
- Comprehensive coverage analysis
|
||||||
- Advanced testing patterns and utilities
|
- Advanced testing patterns and utilities
|
||||||
|
|
||||||
→ **Install Test Architect (TEA) module**: <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/>
|
> **Install Test Architect (TEA) module**: <https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/>
|
||||||
|
|
||||||
## Output
|
## Output
|
||||||
|
|
||||||
Save summary to: `{implementation_artifacts}/tests/test-summary.md`
|
Save summary to: `{default_output_file}`
|
||||||
|
|
||||||
**Done!** Tests generated and verified.
|
**Done!** Tests generated and verified. Validate against `{checklist}`.
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
name: qa-generate-e2e-tests
|
|
||||||
description: 'Generate end to end automated tests for existing features. Use when the user says "create qa automated tests for [feature]"'
|
|
||||||
|
|
||||||
# Critical variables from config
|
|
||||||
config_source: "{project-root}/_bmad/bmm/config.yaml"
|
|
||||||
implementation_artifacts: "{config_source}:implementation_artifacts"
|
|
||||||
user_name: "{config_source}:user_name"
|
|
||||||
communication_language: "{config_source}:communication_language"
|
|
||||||
document_output_language: "{config_source}:document_output_language"
|
|
||||||
date: system-generated
|
|
||||||
|
|
||||||
# Workflow components
|
|
||||||
installed_path: "{project-root}/_bmad/bmm/workflows/qa-generate-e2e-tests"
|
|
||||||
instructions: "{installed_path}/instructions.md"
|
|
||||||
validation: "{installed_path}/checklist.md"
|
|
||||||
template: false
|
|
||||||
|
|
||||||
# Variables and inputs
|
|
||||||
test_dir: "{project-root}/tests" # Root test directory
|
|
||||||
source_dir: "{project-root}" # Source code directory
|
|
||||||
|
|
||||||
# Output configuration
|
|
||||||
default_output_file: "{implementation_artifacts}/tests/test-summary.md"
|
|
||||||
|
|
||||||
# Required tools
|
|
||||||
required_tools:
|
|
||||||
- read_file # Read source code and existing tests
|
|
||||||
- write_file # Create test files
|
|
||||||
- create_directory # Create test directories
|
|
||||||
- list_files # Discover features
|
|
||||||
- search_repo # Find patterns
|
|
||||||
- glob # Find files
|
|
||||||
|
|
||||||
tags:
|
|
||||||
- qa
|
|
||||||
- automation
|
|
||||||
- testing
|
|
||||||
|
|
||||||
execution_hints:
|
|
||||||
interactive: false
|
|
||||||
autonomous: true
|
|
||||||
iterative: false
|
|
||||||
|
|
@ -21,6 +21,12 @@ description: 'Analyzes what is done and the users query and offers advice on wha
|
||||||
When `command` field has a value:
|
When `command` field has a value:
|
||||||
- Show the command prefixed with `/` (e.g., `/bmad-bmm-create-prd`)
|
- Show the command prefixed with `/` (e.g., `/bmad-bmm-create-prd`)
|
||||||
|
|
||||||
|
### Skill-Referenced Workflows
|
||||||
|
When `workflow-file` starts with `skill:`:
|
||||||
|
- The value is a skill reference (e.g., `skill:bmad-quick-dev-new-preview`), NOT a file path
|
||||||
|
- Do NOT attempt to resolve or load it as a file path
|
||||||
|
- Display using the `command` column value prefixed with `/` (same as command-based workflows)
|
||||||
|
|
||||||
### Agent-Based Workflows
|
### Agent-Based Workflows
|
||||||
When `command` field is empty:
|
When `command` field is empty:
|
||||||
- User loads agent first via `/agent-command`
|
- User loads agent first via `/agent-command`
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@
|
||||||
<action>Display generated content</action>
|
<action>Display generated content</action>
|
||||||
<ask> [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. <if
|
<ask> [a] Advanced Elicitation, [c] Continue, [p] Party-Mode, [y] YOLO the rest of this document only. WAIT for response. <if
|
||||||
response="a">
|
response="a">
|
||||||
<action>Start the advanced elicitation workflow {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml</action>
|
<action>Start the advanced elicitation workflow {project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md</action>
|
||||||
</if>
|
</if>
|
||||||
<if
|
<if
|
||||||
response="c">
|
response="c">
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
canonicalId: bmad-advanced-elicitation
|
||||||
|
type: workflow
|
||||||
|
description: "Push the LLM to reconsider, refine, and improve its recent output using structured reasoning methods"
|
||||||
|
|
@ -0,0 +1,138 @@
|
||||||
|
---
|
||||||
|
name: advanced-elicitation
|
||||||
|
description: 'Push the LLM to reconsider refine and improve its recent output. Use when the user asks for advanced elicitation.'
|
||||||
|
methods: '{project-root}/_bmad/core/workflows/advanced-elicitation/methods.csv'
|
||||||
|
agent_party: '{project-root}/_bmad/_config/agent-manifest.csv'
|
||||||
|
---
|
||||||
|
|
||||||
|
# Advanced Elicitation Workflow
|
||||||
|
|
||||||
|
**Goal:** Push the LLM to reconsider, refine, and improve its recent output. Use when the user asks for advanced elicitation.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## CRITICAL LLM INSTRUCTIONS
|
||||||
|
|
||||||
|
- **MANDATORY:** Execute ALL steps in the flow section IN EXACT ORDER
|
||||||
|
- DO NOT skip steps or change the sequence
|
||||||
|
- HALT immediately when halt-conditions are met
|
||||||
|
- Each action within a step is a REQUIRED action to complete that step
|
||||||
|
- Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution
|
||||||
|
- **YOU MUST ALWAYS SPEAK OUTPUT in your Agent communication style with the `communication_language`**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## INTEGRATION (When Called from Workflow)
|
||||||
|
|
||||||
|
When called during template workflow processing:
|
||||||
|
|
||||||
|
1. Receive or review the current section content that was just generated
|
||||||
|
2. Apply elicitation methods iteratively to enhance that specific content
|
||||||
|
3. Return the enhanced version back when user selects 'x' to proceed and return back
|
||||||
|
4. The enhanced content replaces the original section content in the output document
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## FLOW
|
||||||
|
|
||||||
|
### Step 1: Method Registry Loading
|
||||||
|
|
||||||
|
**Action:** Load and read `{methods}` and `{agent_party}`
|
||||||
|
|
||||||
|
#### CSV Structure
|
||||||
|
|
||||||
|
- **category:** Method grouping (core, structural, risk, etc.)
|
||||||
|
- **method_name:** Display name for the method
|
||||||
|
- **description:** Rich explanation of what the method does, when to use it, and why it's valuable
|
||||||
|
- **output_pattern:** Flexible flow guide using arrows (e.g., "analysis -> insights -> action")
|
||||||
|
|
||||||
|
#### Context Analysis
|
||||||
|
|
||||||
|
- Use conversation history
|
||||||
|
- Analyze: content type, complexity, stakeholder needs, risk level, and creative potential
|
||||||
|
|
||||||
|
#### Smart Selection
|
||||||
|
|
||||||
|
1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential
|
||||||
|
2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV
|
||||||
|
3. Select 5 methods: Choose methods that best match the context based on their descriptions
|
||||||
|
4. Balance approach: Include mix of foundational and specialized techniques as appropriate
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 2: Present Options and Handle Responses
|
||||||
|
|
||||||
|
#### Display Format
|
||||||
|
|
||||||
|
```
|
||||||
|
**Advanced Elicitation Options**
|
||||||
|
_If party mode is active, agents will join in._
|
||||||
|
Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed:
|
||||||
|
|
||||||
|
1. [Method Name]
|
||||||
|
2. [Method Name]
|
||||||
|
3. [Method Name]
|
||||||
|
4. [Method Name]
|
||||||
|
5. [Method Name]
|
||||||
|
r. Reshuffle the list with 5 new options
|
||||||
|
a. List all methods with descriptions
|
||||||
|
x. Proceed / No Further Actions
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Response Handling
|
||||||
|
|
||||||
|
**Case 1-5 (User selects a numbered method):**
|
||||||
|
|
||||||
|
- Execute the selected method using its description from the CSV
|
||||||
|
- Adapt the method's complexity and output format based on the current context
|
||||||
|
- Apply the method creatively to the current section content being enhanced
|
||||||
|
- Display the enhanced version showing what the method revealed or improved
|
||||||
|
- **CRITICAL:** Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response.
|
||||||
|
- **CRITICAL:** ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to follow the instructions given by the user.
|
||||||
|
- **CRITICAL:** Re-present the same 1-5,r,x prompt to allow additional elicitations
|
||||||
|
|
||||||
|
**Case r (Reshuffle):**
|
||||||
|
|
||||||
|
- Select 5 random methods from methods.csv, present new list with same prompt format
|
||||||
|
- When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being potentially the most useful for the document or section being discovered
|
||||||
|
|
||||||
|
**Case x (Proceed):**
|
||||||
|
|
||||||
|
- Complete elicitation and proceed
|
||||||
|
- Return the fully enhanced content back to create-doc.md
|
||||||
|
- The enhanced content becomes the final version for that section
|
||||||
|
- Signal completion back to create-doc.md to continue with next section
|
||||||
|
|
||||||
|
**Case a (List All):**
|
||||||
|
|
||||||
|
- List all methods with their descriptions from the CSV in a compact table
|
||||||
|
- Allow user to select any method by name or number from the full list
|
||||||
|
- After selection, execute the method as described in the Case 1-5 above
|
||||||
|
|
||||||
|
**Case: Direct Feedback:**
|
||||||
|
|
||||||
|
- Apply changes to current section content and re-present choices
|
||||||
|
|
||||||
|
**Case: Multiple Numbers:**
|
||||||
|
|
||||||
|
- Execute methods in sequence on the content, then re-offer choices
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 3: Execution Guidelines
|
||||||
|
|
||||||
|
- **Method execution:** Use the description from CSV to understand and apply each method
|
||||||
|
- **Output pattern:** Use the pattern as a flexible guide (e.g., "paths -> evaluation -> selection")
|
||||||
|
- **Dynamic adaptation:** Adjust complexity based on content needs (simple to sophisticated)
|
||||||
|
- **Creative application:** Interpret methods flexibly based on context while maintaining pattern consistency
|
||||||
|
- Focus on actionable insights
|
||||||
|
- **Stay relevant:** Tie elicitation to specific content being analyzed (the current section from the document being created unless user indicates otherwise)
|
||||||
|
- **Identify personas:** For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory already
|
||||||
|
- **Critical loop behavior:** Always re-offer the 1-5,r,a,x choices after each method execution
|
||||||
|
- Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session
|
||||||
|
- Each method application builds upon previous enhancements
|
||||||
|
- **Content preservation:** Track all enhancements made during elicitation
|
||||||
|
- **Iterative enhancement:** Each selected method (1-5) should:
|
||||||
|
1. Apply to the current enhanced version of the content
|
||||||
|
2. Show the improvements made
|
||||||
|
3. Return to the prompt for additional elicitations or completion
|
||||||
|
|
@ -1,118 +0,0 @@
|
||||||
<task id="_bmad/core/workflows/advanced-elicitation/workflow.xml" name="Advanced Elicitation"
|
|
||||||
description="Push the LLM to reconsider refine and improve its recent output. Use when the user asks for advanced elicitation"
|
|
||||||
methods="{project-root}/_bmad/core/workflows/advanced-elicitation/methods.csv"
|
|
||||||
agent-party="{project-root}/_bmad/_config/agent-manifest.csv">
|
|
||||||
<llm critical="true">
|
|
||||||
<i>MANDATORY: Execute ALL steps in the flow section IN EXACT ORDER</i>
|
|
||||||
<i>DO NOT skip steps or change the sequence</i>
|
|
||||||
<i>HALT immediately when halt-conditions are met</i>
|
|
||||||
<i>Each action xml tag within step xml tag is a REQUIRED action to complete that step</i>
|
|
||||||
<i>Sections outside flow (validation, output, critical-context) provide essential context - review and apply throughout execution</i>
|
|
||||||
<i>YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the `communication_language`</i>
|
|
||||||
</llm>
|
|
||||||
|
|
||||||
<integration description="When called from workflow">
|
|
||||||
<desc>When called during template workflow processing:</desc>
|
|
||||||
<i>1. Receive or review the current section content that was just generated or</i>
|
|
||||||
<i>2. Apply elicitation methods iteratively to enhance that specific content</i>
|
|
||||||
<i>3. Return the enhanced version back when user selects 'x' to proceed and return back</i>
|
|
||||||
<i>4. The enhanced content replaces the original section content in the output document</i>
|
|
||||||
</integration>
|
|
||||||
|
|
||||||
<flow>
|
|
||||||
<step n="1" title="Method Registry Loading">
|
|
||||||
<action>Load and read {{methods}} and {{agent-party}}</action>
|
|
||||||
|
|
||||||
<csv-structure>
|
|
||||||
<i>category: Method grouping (core, structural, risk, etc.)</i>
|
|
||||||
<i>method_name: Display name for the method</i>
|
|
||||||
<i>description: Rich explanation of what the method does, when to use it, and why it's valuable</i>
|
|
||||||
<i>output_pattern: Flexible flow guide using → arrows (e.g., "analysis → insights → action")</i>
|
|
||||||
</csv-structure>
|
|
||||||
|
|
||||||
<context-analysis>
|
|
||||||
<i>Use conversation history</i>
|
|
||||||
<i>Analyze: content type, complexity, stakeholder needs, risk level, and creative potential</i>
|
|
||||||
</context-analysis>
|
|
||||||
|
|
||||||
<smart-selection>
|
|
||||||
<i>1. Analyze context: Content type, complexity, stakeholder needs, risk level, creative potential</i>
|
|
||||||
<i>2. Parse descriptions: Understand each method's purpose from the rich descriptions in CSV</i>
|
|
||||||
<i>3. Select 5 methods: Choose methods that best match the context based on their descriptions</i>
|
|
||||||
<i>4. Balance approach: Include mix of foundational and specialized techniques as appropriate</i>
|
|
||||||
</smart-selection>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="2" title="Present Options and Handle Responses">
|
|
||||||
|
|
||||||
<format>
|
|
||||||
**Advanced Elicitation Options (If you launched Party Mode, they will participate randomly)**
|
|
||||||
Choose a number (1-5), [r] to Reshuffle, [a] List All, or [x] to Proceed:
|
|
||||||
|
|
||||||
1. [Method Name]
|
|
||||||
2. [Method Name]
|
|
||||||
3. [Method Name]
|
|
||||||
4. [Method Name]
|
|
||||||
5. [Method Name]
|
|
||||||
r. Reshuffle the list with 5 new options
|
|
||||||
a. List all methods with descriptions
|
|
||||||
x. Proceed / No Further Actions
|
|
||||||
</format>
|
|
||||||
|
|
||||||
<response-handling>
|
|
||||||
<case n="1-5">
|
|
||||||
<i>Execute the selected method using its description from the CSV</i>
|
|
||||||
<i>Adapt the method's complexity and output format based on the current context</i>
|
|
||||||
<i>Apply the method creatively to the current section content being enhanced</i>
|
|
||||||
<i>Display the enhanced version showing what the method revealed or improved</i>
|
|
||||||
<i>CRITICAL: Ask the user if they would like to apply the changes to the doc (y/n/other) and HALT to await response.</i>
|
|
||||||
<i>CRITICAL: ONLY if Yes, apply the changes. IF No, discard your memory of the proposed changes. If any other reply, try best to
|
|
||||||
follow the instructions given by the user.</i>
|
|
||||||
<i>CRITICAL: Re-present the same 1-5,r,x prompt to allow additional elicitations</i>
|
|
||||||
</case>
|
|
||||||
<case n="r">
|
|
||||||
<i>Select 5 random methods from advanced-elicitation-methods.csv, present new list with same prompt format</i>
|
|
||||||
<i>When selecting, try to think and pick a diverse set of methods covering different categories and approaches, with 1 and 2 being
|
|
||||||
potentially the most useful for the document or section being discovered</i>
|
|
||||||
</case>
|
|
||||||
<case n="x">
|
|
||||||
<i>Complete elicitation and proceed</i>
|
|
||||||
<i>Return the fully enhanced content back to create-doc.md</i>
|
|
||||||
<i>The enhanced content becomes the final version for that section</i>
|
|
||||||
<i>Signal completion back to create-doc.md to continue with next section</i>
|
|
||||||
</case>
|
|
||||||
<case n="a">
|
|
||||||
<i>List all methods with their descriptions from the CSV in a compact table</i>
|
|
||||||
<i>Allow user to select any method by name or number from the full list</i>
|
|
||||||
<i>After selection, execute the method as described in the n="1-5" case above</i>
|
|
||||||
</case>
|
|
||||||
<case n="direct-feedback">
|
|
||||||
<i>Apply changes to current section content and re-present choices</i>
|
|
||||||
</case>
|
|
||||||
<case n="multiple-numbers">
|
|
||||||
<i>Execute methods in sequence on the content, then re-offer choices</i>
|
|
||||||
</case>
|
|
||||||
</response-handling>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="3" title="Execution Guidelines">
|
|
||||||
<i>Method execution: Use the description from CSV to understand and apply each method</i>
|
|
||||||
<i>Output pattern: Use the pattern as a flexible guide (e.g., "paths → evaluation → selection")</i>
|
|
||||||
<i>Dynamic adaptation: Adjust complexity based on content needs (simple to sophisticated)</i>
|
|
||||||
<i>Creative application: Interpret methods flexibly based on context while maintaining pattern consistency</i>
|
|
||||||
<i>Focus on actionable insights</i>
|
|
||||||
<i>Stay relevant: Tie elicitation to specific content being analyzed (the current section from the document being created unless user
|
|
||||||
indicates otherwise)</i>
|
|
||||||
<i>Identify personas: For single or multi-persona methods, clearly identify viewpoints, and use party members if available in memory
|
|
||||||
already</i>
|
|
||||||
<i>Critical loop behavior: Always re-offer the 1-5,r,a,x choices after each method execution</i>
|
|
||||||
<i>Continue until user selects 'x' to proceed with enhanced content, confirm or ask the user what should be accepted from the session</i>
|
|
||||||
<i>Each method application builds upon previous enhancements</i>
|
|
||||||
<i>Content preservation: Track all enhancements made during elicitation</i>
|
|
||||||
<i>Iterative enhancement: Each selected method (1-5) should:</i>
|
|
||||||
<i> 1. Apply to the current enhanced version of the content</i>
|
|
||||||
<i> 2. Show the improvements made</i>
|
|
||||||
<i> 3. Return to the prompt for additional elicitations or completion</i>
|
|
||||||
</step>
|
|
||||||
</flow>
|
|
||||||
</task>
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
# Step 3: Interactive Technique Execution and Facilitation
|
# Step 3: Interactive Technique Execution and Facilitation
|
||||||
|
|
||||||
---
|
---
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml'
|
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
## MANDATORY EXECUTION RULES (READ FIRST):
|
## MANDATORY EXECUTION RULES (READ FIRST):
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
|
||||||
|
|
||||||
All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern.
|
All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern.
|
||||||
- `context_file` = Optional context file path from workflow invocation for project-specific guidance
|
- `context_file` = Optional context file path from workflow invocation for project-specific guidance
|
||||||
- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`
|
- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,154 @@
|
||||||
|
/**
|
||||||
|
* install_to_bmad Flag — Design Contract Tests
|
||||||
|
*
|
||||||
|
* Unit tests against the functions that implement the install_to_bmad flag.
|
||||||
|
* These nail down the 4 core design decisions:
|
||||||
|
*
|
||||||
|
* 1. true/omitted → skill stays in _bmad/ (default behavior)
|
||||||
|
* 2. false → skill removed from _bmad/ after IDE install
|
||||||
|
* 3. No platform → no cleanup runs (cleanup lives in installVerbatimSkills)
|
||||||
|
* 4. Mixed flags → each skill evaluated independently
|
||||||
|
*
|
||||||
|
* Usage: node test/test-install-to-bmad.js
|
||||||
|
*/
|
||||||
|
|
||||||
|
const path = require('node:path');
|
||||||
|
const os = require('node:os');
|
||||||
|
const fs = require('fs-extra');
|
||||||
|
const { loadSkillManifest, getInstallToBmad } = require('../tools/cli/installers/lib/ide/shared/skill-manifest');
|
||||||
|
|
||||||
|
// ANSI colors
|
||||||
|
const colors = {
|
||||||
|
reset: '\u001B[0m',
|
||||||
|
green: '\u001B[32m',
|
||||||
|
red: '\u001B[31m',
|
||||||
|
yellow: '\u001B[33m',
|
||||||
|
cyan: '\u001B[36m',
|
||||||
|
dim: '\u001B[2m',
|
||||||
|
};
|
||||||
|
|
||||||
|
let passed = 0;
|
||||||
|
let failed = 0;
|
||||||
|
|
||||||
|
function assert(condition, testName, errorMessage = '') {
|
||||||
|
if (condition) {
|
||||||
|
console.log(`${colors.green}✓${colors.reset} ${testName}`);
|
||||||
|
passed++;
|
||||||
|
} else {
|
||||||
|
console.log(`${colors.red}✗${colors.reset} ${testName}`);
|
||||||
|
if (errorMessage) {
|
||||||
|
console.log(` ${colors.dim}${errorMessage}${colors.reset}`);
|
||||||
|
}
|
||||||
|
failed++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function runTests() {
|
||||||
|
console.log(`${colors.cyan}========================================`);
|
||||||
|
console.log('install_to_bmad — Design Contract Tests');
|
||||||
|
console.log(`========================================${colors.reset}\n`);
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// 1. true/omitted → getInstallToBmad returns true (keep in _bmad/)
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Design decision 1: true or omitted → skill stays in _bmad/${colors.reset}\n`);
|
||||||
|
|
||||||
|
// Null manifest (no bmad-skill-manifest.yaml) → true
|
||||||
|
assert(getInstallToBmad(null, 'workflow.md') === true, 'null manifest defaults to true');
|
||||||
|
|
||||||
|
// Single-entry, flag omitted → true
|
||||||
|
assert(
|
||||||
|
getInstallToBmad({ __single: { type: 'skill' } }, 'workflow.md') === true,
|
||||||
|
'single-entry manifest with flag omitted defaults to true',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Single-entry, explicit true → true
|
||||||
|
assert(
|
||||||
|
getInstallToBmad({ __single: { type: 'skill', install_to_bmad: true } }, 'workflow.md') === true,
|
||||||
|
'single-entry manifest with explicit true returns true',
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// 2. false → getInstallToBmad returns false (remove from _bmad/)
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Design decision 2: false → skill removed from _bmad/${colors.reset}\n`);
|
||||||
|
|
||||||
|
// Single-entry, explicit false → false
|
||||||
|
assert(
|
||||||
|
getInstallToBmad({ __single: { type: 'skill', install_to_bmad: false } }, 'workflow.md') === false,
|
||||||
|
'single-entry manifest with explicit false returns false',
|
||||||
|
);
|
||||||
|
|
||||||
|
// loadSkillManifest round-trip: YAML with false is preserved through load
|
||||||
|
{
|
||||||
|
const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-itb-'));
|
||||||
|
await fs.writeFile(path.join(tmpDir, 'bmad-skill-manifest.yaml'), 'type: skill\ninstall_to_bmad: false\n');
|
||||||
|
const loaded = await loadSkillManifest(tmpDir);
|
||||||
|
assert(getInstallToBmad(loaded, 'workflow.md') === false, 'loadSkillManifest preserves install_to_bmad: false through round-trip');
|
||||||
|
await fs.remove(tmpDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// 3. No platform → cleanup only runs inside installVerbatimSkills
|
||||||
|
// (This is a design invariant: getInstallToBmad is only consulted
|
||||||
|
// during IDE install. Without a platform, the flag has no effect.)
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Design decision 3: flag is a per-skill property, not a pipeline gate${colors.reset}\n`);
|
||||||
|
|
||||||
|
// The flag value is stored but doesn't trigger any side effects by itself.
|
||||||
|
// Cleanup is driven by reading the CSV column inside installVerbatimSkills.
|
||||||
|
// We verify the flag is just data — getInstallToBmad doesn't touch the filesystem.
|
||||||
|
{
|
||||||
|
const manifest = { __single: { type: 'skill', install_to_bmad: false } };
|
||||||
|
const result = getInstallToBmad(manifest, 'workflow.md');
|
||||||
|
assert(typeof result === 'boolean', 'getInstallToBmad returns a boolean (pure data, no side effects)');
|
||||||
|
assert(result === false, 'false value is faithfully returned for consumer to act on');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// 4. Mixed flags → each skill evaluated independently
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Design decision 4: mixed flags — each skill independent${colors.reset}\n`);
|
||||||
|
|
||||||
|
// Multi-entry manifest: different files can have different flags
|
||||||
|
{
|
||||||
|
const manifest = {
|
||||||
|
'workflow.md': { type: 'skill', install_to_bmad: false },
|
||||||
|
'other.md': { type: 'skill', install_to_bmad: true },
|
||||||
|
};
|
||||||
|
assert(getInstallToBmad(manifest, 'workflow.md') === false, 'multi-entry: workflow.md with false returns false');
|
||||||
|
assert(getInstallToBmad(manifest, 'other.md') === true, 'multi-entry: other.md with true returns true');
|
||||||
|
assert(getInstallToBmad(manifest, 'unknown.md') === true, 'multi-entry: unknown file defaults to true');
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Summary
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.cyan}========================================`);
|
||||||
|
console.log('Results:');
|
||||||
|
console.log(` Passed: ${colors.green}${passed}${colors.reset}`);
|
||||||
|
console.log(` Failed: ${colors.red}${failed}${colors.reset}`);
|
||||||
|
console.log(`========================================${colors.reset}\n`);
|
||||||
|
|
||||||
|
if (failed === 0) {
|
||||||
|
console.log(`${colors.green}All install_to_bmad contract tests passed!${colors.reset}\n`);
|
||||||
|
process.exit(0);
|
||||||
|
} else {
|
||||||
|
console.log(`${colors.red}Some install_to_bmad contract tests failed${colors.reset}\n`);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
runTests().catch((error) => {
|
||||||
|
console.error(`${colors.red}Test runner failed:${colors.reset}`, error.message);
|
||||||
|
console.error(error.stack);
|
||||||
|
process.exit(1);
|
||||||
|
});
|
||||||
|
|
@ -1500,6 +1500,96 @@ async function runTests() {
|
||||||
|
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Suite 28: Pi Native Skills
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Test Suite 28: Pi Native Skills${colors.reset}\n`);
|
||||||
|
|
||||||
|
let tempProjectDir28;
|
||||||
|
let installedBmadDir28;
|
||||||
|
try {
|
||||||
|
clearCache();
|
||||||
|
const platformCodes28 = await loadPlatformCodes();
|
||||||
|
const piInstaller = platformCodes28.platforms.pi?.installer;
|
||||||
|
|
||||||
|
assert(piInstaller?.target_dir === '.pi/skills', 'Pi target_dir uses native skills path');
|
||||||
|
assert(piInstaller?.skill_format === true, 'Pi installer enables native skill output');
|
||||||
|
assert(piInstaller?.template_type === 'default', 'Pi installer uses default skill template');
|
||||||
|
|
||||||
|
tempProjectDir28 = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-pi-test-'));
|
||||||
|
installedBmadDir28 = await createTestBmadFixture();
|
||||||
|
|
||||||
|
const ideManager28 = new IdeManager();
|
||||||
|
await ideManager28.ensureInitialized();
|
||||||
|
|
||||||
|
// Verify Pi is selectable in available IDEs list
|
||||||
|
const availableIdes28 = ideManager28.getAvailableIdes();
|
||||||
|
assert(
|
||||||
|
availableIdes28.some((ide) => ide.value === 'pi'),
|
||||||
|
'Pi appears in available IDEs list',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Verify Pi is NOT detected before install
|
||||||
|
const detectedBefore28 = await ideManager28.detectInstalledIdes(tempProjectDir28);
|
||||||
|
assert(!detectedBefore28.includes('pi'), 'Pi is not detected before install');
|
||||||
|
|
||||||
|
const result28 = await ideManager28.setup('pi', tempProjectDir28, installedBmadDir28, {
|
||||||
|
silent: true,
|
||||||
|
selectedModules: ['bmm'],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert(result28.success === true, 'Pi setup succeeds against temp project');
|
||||||
|
|
||||||
|
// Verify Pi IS detected after install
|
||||||
|
const detectedAfter28 = await ideManager28.detectInstalledIdes(tempProjectDir28);
|
||||||
|
assert(detectedAfter28.includes('pi'), 'Pi is detected after install');
|
||||||
|
|
||||||
|
const skillFile28 = path.join(tempProjectDir28, '.pi', 'skills', 'bmad-master', 'SKILL.md');
|
||||||
|
assert(await fs.pathExists(skillFile28), 'Pi install writes SKILL.md directory output');
|
||||||
|
|
||||||
|
// Parse YAML frontmatter between --- markers
|
||||||
|
const skillContent28 = await fs.readFile(skillFile28, 'utf8');
|
||||||
|
const fmMatch28 = skillContent28.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
|
||||||
|
assert(fmMatch28, 'Pi SKILL.md contains valid frontmatter delimiters');
|
||||||
|
|
||||||
|
const frontmatter28 = fmMatch28[1];
|
||||||
|
const body28 = fmMatch28[2];
|
||||||
|
|
||||||
|
// Verify name in frontmatter matches directory name
|
||||||
|
const fmName28 = frontmatter28.match(/^name:\s*(.+)$/m);
|
||||||
|
assert(fmName28 && fmName28[1].trim() === 'bmad-master', 'Pi skill name frontmatter matches directory name exactly');
|
||||||
|
|
||||||
|
// Verify description exists and is non-empty
|
||||||
|
const fmDesc28 = frontmatter28.match(/^description:\s*(.+)$/m);
|
||||||
|
assert(fmDesc28 && fmDesc28[1].trim().length > 0, 'Pi skill description frontmatter is present and non-empty');
|
||||||
|
|
||||||
|
// Verify frontmatter contains only name and description keys
|
||||||
|
const fmKeys28 = [...frontmatter28.matchAll(/^([a-zA-Z0-9_-]+):/gm)].map((m) => m[1]);
|
||||||
|
assert(
|
||||||
|
fmKeys28.length === 2 && fmKeys28.includes('name') && fmKeys28.includes('description'),
|
||||||
|
'Pi skill frontmatter contains only name and description keys',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Verify body content is non-empty and contains expected activation instructions
|
||||||
|
assert(body28.trim().length > 0, 'Pi skill body content is non-empty');
|
||||||
|
assert(body28.includes('agent-activation'), 'Pi skill body contains expected agent activation instructions');
|
||||||
|
|
||||||
|
// Reinstall/upgrade: run setup again over existing output
|
||||||
|
const result28b = await ideManager28.setup('pi', tempProjectDir28, installedBmadDir28, {
|
||||||
|
silent: true,
|
||||||
|
selectedModules: ['bmm'],
|
||||||
|
});
|
||||||
|
assert(result28b.success === true, 'Pi reinstall/upgrade succeeds over existing skills');
|
||||||
|
assert(await fs.pathExists(skillFile28), 'Pi reinstall preserves SKILL.md output');
|
||||||
|
} catch (error) {
|
||||||
|
assert(false, 'Pi native skills test succeeds', error.message);
|
||||||
|
} finally {
|
||||||
|
if (tempProjectDir28) await fs.remove(tempProjectDir28).catch(() => {});
|
||||||
|
if (installedBmadDir28) await fs.remove(installedBmadDir28).catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// Summary
|
// Summary
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,12 @@ const crypto = require('node:crypto');
|
||||||
const csv = require('csv-parse/sync');
|
const csv = require('csv-parse/sync');
|
||||||
const { getSourcePath, getModulePath } = require('../../../lib/project-root');
|
const { getSourcePath, getModulePath } = require('../../../lib/project-root');
|
||||||
const prompts = require('../../../lib/prompts');
|
const prompts = require('../../../lib/prompts');
|
||||||
const { loadSkillManifest: loadSkillManifestShared, getCanonicalId: getCanonicalIdShared } = require('../ide/shared/skill-manifest');
|
const {
|
||||||
|
loadSkillManifest: loadSkillManifestShared,
|
||||||
|
getCanonicalId: getCanonicalIdShared,
|
||||||
|
getArtifactType: getArtifactTypeShared,
|
||||||
|
getInstallToBmad: getInstallToBmadShared,
|
||||||
|
} = require('../ide/shared/skill-manifest');
|
||||||
|
|
||||||
// Load package.json for version info
|
// Load package.json for version info
|
||||||
const packageJson = require('../../../../../package.json');
|
const packageJson = require('../../../../../package.json');
|
||||||
|
|
@ -16,6 +21,7 @@ const packageJson = require('../../../../../package.json');
|
||||||
class ManifestGenerator {
|
class ManifestGenerator {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.workflows = [];
|
this.workflows = [];
|
||||||
|
this.skills = [];
|
||||||
this.agents = [];
|
this.agents = [];
|
||||||
this.tasks = [];
|
this.tasks = [];
|
||||||
this.tools = [];
|
this.tools = [];
|
||||||
|
|
@ -34,6 +40,16 @@ class ManifestGenerator {
|
||||||
return getCanonicalIdShared(manifest, filename);
|
return getCanonicalIdShared(manifest, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Delegate to shared skill-manifest module */
|
||||||
|
getArtifactType(manifest, filename) {
|
||||||
|
return getArtifactTypeShared(manifest, filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Delegate to shared skill-manifest module */
|
||||||
|
getInstallToBmad(manifest, filename) {
|
||||||
|
return getInstallToBmadShared(manifest, filename);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clean text for CSV output by normalizing whitespace.
|
* Clean text for CSV output by normalizing whitespace.
|
||||||
* Note: Quote escaping is handled by escapeCsv() at write time.
|
* Note: Quote escaping is handled by escapeCsv() at write time.
|
||||||
|
|
@ -89,6 +105,9 @@ class ManifestGenerator {
|
||||||
// Filter out any undefined/null values from IDE list
|
// Filter out any undefined/null values from IDE list
|
||||||
this.selectedIdes = resolvedIdes.filter((ide) => ide && typeof ide === 'string');
|
this.selectedIdes = resolvedIdes.filter((ide) => ide && typeof ide === 'string');
|
||||||
|
|
||||||
|
// Reset files list (defensive: prevent stale data if instance is reused)
|
||||||
|
this.files = [];
|
||||||
|
|
||||||
// Collect workflow data
|
// Collect workflow data
|
||||||
await this.collectWorkflows(selectedModules);
|
await this.collectWorkflows(selectedModules);
|
||||||
|
|
||||||
|
|
@ -105,6 +124,7 @@ class ManifestGenerator {
|
||||||
const manifestFiles = [
|
const manifestFiles = [
|
||||||
await this.writeMainManifest(cfgDir),
|
await this.writeMainManifest(cfgDir),
|
||||||
await this.writeWorkflowManifest(cfgDir),
|
await this.writeWorkflowManifest(cfgDir),
|
||||||
|
await this.writeSkillManifest(cfgDir),
|
||||||
await this.writeAgentManifest(cfgDir),
|
await this.writeAgentManifest(cfgDir),
|
||||||
await this.writeTaskManifest(cfgDir),
|
await this.writeTaskManifest(cfgDir),
|
||||||
await this.writeToolManifest(cfgDir),
|
await this.writeToolManifest(cfgDir),
|
||||||
|
|
@ -127,6 +147,7 @@ class ManifestGenerator {
|
||||||
*/
|
*/
|
||||||
async collectWorkflows(selectedModules) {
|
async collectWorkflows(selectedModules) {
|
||||||
this.workflows = [];
|
this.workflows = [];
|
||||||
|
this.skills = [];
|
||||||
|
|
||||||
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
// Use updatedModules which already includes deduplicated 'core' + selectedModules
|
||||||
for (const moduleName of this.updatedModules) {
|
for (const moduleName of this.updatedModules) {
|
||||||
|
|
@ -228,6 +249,25 @@ class ManifestGenerator {
|
||||||
? `${this.bmadFolderName}/core/workflows/${relativePath}/${entry.name}`
|
? `${this.bmadFolderName}/core/workflows/${relativePath}/${entry.name}`
|
||||||
: `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/${entry.name}`;
|
: `${this.bmadFolderName}/${moduleName}/workflows/${relativePath}/${entry.name}`;
|
||||||
|
|
||||||
|
// Check if this is a type:skill entry — collect separately, skip workflow CSV
|
||||||
|
const artifactType = this.getArtifactType(skillManifest, entry.name);
|
||||||
|
if (artifactType === 'skill') {
|
||||||
|
const canonicalId = path.basename(dir);
|
||||||
|
this.skills.push({
|
||||||
|
name: workflow.name,
|
||||||
|
description: this.cleanForCSV(workflow.description),
|
||||||
|
module: moduleName,
|
||||||
|
path: installPath,
|
||||||
|
canonicalId,
|
||||||
|
install_to_bmad: this.getInstallToBmad(skillManifest, entry.name),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (debug) {
|
||||||
|
console.log(`[DEBUG] ✓ Added skill (skipped workflow CSV): ${workflow.name} as ${canonicalId}`);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// Workflows with standalone: false are filtered out above
|
// Workflows with standalone: false are filtered out above
|
||||||
workflows.push({
|
workflows.push({
|
||||||
name: workflow.name,
|
name: workflow.name,
|
||||||
|
|
@ -793,6 +833,32 @@ class ManifestGenerator {
|
||||||
return csvPath;
|
return csvPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write skill manifest CSV
|
||||||
|
* @returns {string} Path to the manifest file
|
||||||
|
*/
|
||||||
|
async writeSkillManifest(cfgDir) {
|
||||||
|
const csvPath = path.join(cfgDir, 'skill-manifest.csv');
|
||||||
|
const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
|
||||||
|
|
||||||
|
let csvContent = 'canonicalId,name,description,module,path,install_to_bmad\n';
|
||||||
|
|
||||||
|
for (const skill of this.skills) {
|
||||||
|
const row = [
|
||||||
|
escapeCsv(skill.canonicalId),
|
||||||
|
escapeCsv(skill.name),
|
||||||
|
escapeCsv(skill.description),
|
||||||
|
escapeCsv(skill.module),
|
||||||
|
escapeCsv(skill.path),
|
||||||
|
escapeCsv(skill.install_to_bmad),
|
||||||
|
].join(',');
|
||||||
|
csvContent += row + '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
await fs.writeFile(csvPath, csvContent);
|
||||||
|
return csvPath;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Write agent manifest CSV
|
* Write agent manifest CSV
|
||||||
* @returns {string} Path to the manifest file
|
* @returns {string} Path to the manifest file
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ const prompts = require('../../../lib/prompts');
|
||||||
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
const { AgentCommandGenerator } = require('./shared/agent-command-generator');
|
||||||
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
|
const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
|
||||||
const { TaskToolCommandGenerator } = require('./shared/task-tool-command-generator');
|
const { TaskToolCommandGenerator } = require('./shared/task-tool-command-generator');
|
||||||
|
const csv = require('csv-parse/sync');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Config-driven IDE setup handler
|
* Config-driven IDE setup handler
|
||||||
|
|
@ -116,39 +117,48 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup {
|
||||||
async installToTarget(projectDir, bmadDir, config, options) {
|
async installToTarget(projectDir, bmadDir, config, options) {
|
||||||
const { target_dir, template_type, artifact_types } = config;
|
const { target_dir, template_type, artifact_types } = config;
|
||||||
|
|
||||||
// Skip targets with explicitly empty artifact_types array
|
// Skip targets with explicitly empty artifact_types and no verbatim skills
|
||||||
// This prevents creating empty directories when no artifacts will be written
|
// This prevents creating empty directories when no artifacts will be written
|
||||||
if (Array.isArray(artifact_types) && artifact_types.length === 0) {
|
const skipStandardArtifacts = Array.isArray(artifact_types) && artifact_types.length === 0;
|
||||||
return { success: true, results: { agents: 0, workflows: 0, tasks: 0, tools: 0 } };
|
if (skipStandardArtifacts && !config.skill_format) {
|
||||||
|
return { success: true, results: { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 } };
|
||||||
}
|
}
|
||||||
|
|
||||||
const targetPath = path.join(projectDir, target_dir);
|
const targetPath = path.join(projectDir, target_dir);
|
||||||
await this.ensureDir(targetPath);
|
await this.ensureDir(targetPath);
|
||||||
|
|
||||||
const selectedModules = options.selectedModules || [];
|
const selectedModules = options.selectedModules || [];
|
||||||
const results = { agents: 0, workflows: 0, tasks: 0, tools: 0 };
|
const results = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
|
||||||
|
|
||||||
// Install agents
|
// Install standard artifacts (agents, workflows, tasks, tools)
|
||||||
if (!artifact_types || artifact_types.includes('agents')) {
|
if (!skipStandardArtifacts) {
|
||||||
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
// Install agents
|
||||||
const { artifacts } = await agentGen.collectAgentArtifacts(bmadDir, selectedModules);
|
if (!artifact_types || artifact_types.includes('agents')) {
|
||||||
results.agents = await this.writeAgentArtifacts(targetPath, artifacts, template_type, config);
|
const agentGen = new AgentCommandGenerator(this.bmadFolderName);
|
||||||
|
const { artifacts } = await agentGen.collectAgentArtifacts(bmadDir, selectedModules);
|
||||||
|
results.agents = await this.writeAgentArtifacts(targetPath, artifacts, template_type, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Install workflows
|
||||||
|
if (!artifact_types || artifact_types.includes('workflows')) {
|
||||||
|
const workflowGen = new WorkflowCommandGenerator(this.bmadFolderName);
|
||||||
|
const { artifacts } = await workflowGen.collectWorkflowArtifacts(bmadDir);
|
||||||
|
results.workflows = await this.writeWorkflowArtifacts(targetPath, artifacts, template_type, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Install tasks and tools using template system (supports TOML for Gemini, MD for others)
|
||||||
|
if (!artifact_types || artifact_types.includes('tasks') || artifact_types.includes('tools')) {
|
||||||
|
const taskToolGen = new TaskToolCommandGenerator(this.bmadFolderName);
|
||||||
|
const { artifacts } = await taskToolGen.collectTaskToolArtifacts(bmadDir);
|
||||||
|
const taskToolResult = await this.writeTaskToolArtifacts(targetPath, artifacts, template_type, config);
|
||||||
|
results.tasks = taskToolResult.tasks || 0;
|
||||||
|
results.tools = taskToolResult.tools || 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Install workflows
|
// Install verbatim skills (type: skill)
|
||||||
if (!artifact_types || artifact_types.includes('workflows')) {
|
if (config.skill_format) {
|
||||||
const workflowGen = new WorkflowCommandGenerator(this.bmadFolderName);
|
results.skills = await this.installVerbatimSkills(projectDir, bmadDir, targetPath, config);
|
||||||
const { artifacts } = await workflowGen.collectWorkflowArtifacts(bmadDir);
|
|
||||||
results.workflows = await this.writeWorkflowArtifacts(targetPath, artifacts, template_type, config);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Install tasks and tools using template system (supports TOML for Gemini, MD for others)
|
|
||||||
if (!artifact_types || artifact_types.includes('tasks') || artifact_types.includes('tools')) {
|
|
||||||
const taskToolGen = new TaskToolCommandGenerator(this.bmadFolderName);
|
|
||||||
const { artifacts } = await taskToolGen.collectTaskToolArtifacts(bmadDir);
|
|
||||||
const taskToolResult = await this.writeTaskToolArtifacts(targetPath, artifacts, template_type, config);
|
|
||||||
results.tasks = taskToolResult.tasks || 0;
|
|
||||||
results.tools = taskToolResult.tools || 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.printSummary(results, target_dir, options);
|
await this.printSummary(results, target_dir, options);
|
||||||
|
|
@ -164,7 +174,7 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup {
|
||||||
* @returns {Promise<Object>} Installation result
|
* @returns {Promise<Object>} Installation result
|
||||||
*/
|
*/
|
||||||
async installToMultipleTargets(projectDir, bmadDir, targets, options) {
|
async installToMultipleTargets(projectDir, bmadDir, targets, options) {
|
||||||
const allResults = { agents: 0, workflows: 0, tasks: 0, tools: 0 };
|
const allResults = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
|
||||||
|
|
||||||
for (const target of targets) {
|
for (const target of targets) {
|
||||||
const result = await this.installToTarget(projectDir, bmadDir, target, options);
|
const result = await this.installToTarget(projectDir, bmadDir, target, options);
|
||||||
|
|
@ -173,6 +183,7 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup {
|
||||||
allResults.workflows += result.results.workflows || 0;
|
allResults.workflows += result.results.workflows || 0;
|
||||||
allResults.tasks += result.results.tasks || 0;
|
allResults.tasks += result.results.tasks || 0;
|
||||||
allResults.tools += result.results.tools || 0;
|
allResults.tools += result.results.tools || 0;
|
||||||
|
allResults.skills += result.results.skills || 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -622,6 +633,94 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
return baseName.replace(/\.md$/, extension);
|
return baseName.replace(/\.md$/, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Install verbatim skill directories (type: skill entries from skill-manifest.csv).
|
||||||
|
* Copies the entire source directory into the IDE skill directory, auto-generating SKILL.md.
|
||||||
|
* @param {string} projectDir - Project directory
|
||||||
|
* @param {string} bmadDir - BMAD installation directory
|
||||||
|
* @param {string} targetPath - Target skills directory
|
||||||
|
* @param {Object} config - Installation configuration
|
||||||
|
* @returns {Promise<number>} Count of skills installed
|
||||||
|
*/
|
||||||
|
async installVerbatimSkills(projectDir, bmadDir, targetPath, config) {
|
||||||
|
const bmadFolderName = path.basename(bmadDir);
|
||||||
|
const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv');
|
||||||
|
|
||||||
|
if (!(await fs.pathExists(csvPath))) return 0;
|
||||||
|
|
||||||
|
const csvContent = await fs.readFile(csvPath, 'utf8');
|
||||||
|
const records = csv.parse(csvContent, {
|
||||||
|
columns: true,
|
||||||
|
skip_empty_lines: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
let count = 0;
|
||||||
|
|
||||||
|
for (const record of records) {
|
||||||
|
const canonicalId = record.canonicalId;
|
||||||
|
if (!canonicalId) continue;
|
||||||
|
|
||||||
|
// Derive source directory from path column
|
||||||
|
// path is like "_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md"
|
||||||
|
// Strip bmadFolderName prefix and join with bmadDir, then get dirname
|
||||||
|
const relativePath = record.path.replace(new RegExp(`^${bmadFolderName}/`), '');
|
||||||
|
const sourceFile = path.join(bmadDir, relativePath);
|
||||||
|
const sourceDir = path.dirname(sourceFile);
|
||||||
|
|
||||||
|
if (!(await fs.pathExists(sourceDir))) continue;
|
||||||
|
|
||||||
|
// Clean target before copy to prevent stale files
|
||||||
|
const skillDir = path.join(targetPath, canonicalId);
|
||||||
|
await fs.remove(skillDir);
|
||||||
|
await fs.ensureDir(skillDir);
|
||||||
|
|
||||||
|
// Parse workflow.md frontmatter for description
|
||||||
|
let description = `${canonicalId} skill`;
|
||||||
|
try {
|
||||||
|
const workflowContent = await fs.readFile(sourceFile, 'utf8');
|
||||||
|
const fmMatch = workflowContent.match(/^---\r?\n([\s\S]*?)\r?\n---/);
|
||||||
|
if (fmMatch) {
|
||||||
|
const frontmatter = yaml.parse(fmMatch[1]);
|
||||||
|
if (frontmatter?.description) {
|
||||||
|
description = frontmatter.description;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
await prompts.log.warn(`Failed to parse frontmatter from ${sourceFile}: ${error.message}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Generate SKILL.md with YAML-safe frontmatter
|
||||||
|
const frontmatterYaml = yaml.stringify({ name: canonicalId, description: String(description) }, { lineWidth: 0 }).trimEnd();
|
||||||
|
const skillMd = `---\n${frontmatterYaml}\n---\n\nIT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL workflow.md, READ its entire contents and follow its directions exactly!\n`;
|
||||||
|
await fs.writeFile(path.join(skillDir, 'SKILL.md'), skillMd);
|
||||||
|
|
||||||
|
// Copy all files except bmad-skill-manifest.yaml
|
||||||
|
const entries = await fs.readdir(sourceDir, { withFileTypes: true });
|
||||||
|
for (const entry of entries) {
|
||||||
|
if (entry.name === 'bmad-skill-manifest.yaml') continue;
|
||||||
|
const srcPath = path.join(sourceDir, entry.name);
|
||||||
|
const destPath = path.join(skillDir, entry.name);
|
||||||
|
await fs.copy(srcPath, destPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post-install cleanup: remove _bmad/ directories for skills with install_to_bmad === "false"
|
||||||
|
for (const record of records) {
|
||||||
|
if (record.install_to_bmad === 'false') {
|
||||||
|
const relativePath = record.path.replace(new RegExp(`^${bmadFolderName}/`), '');
|
||||||
|
const sourceFile = path.join(bmadDir, relativePath);
|
||||||
|
const sourceDir = path.dirname(sourceFile);
|
||||||
|
if (await fs.pathExists(sourceDir)) {
|
||||||
|
await fs.remove(sourceDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print installation summary
|
* Print installation summary
|
||||||
* @param {Object} results - Installation results
|
* @param {Object} results - Installation results
|
||||||
|
|
@ -634,6 +733,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
if (results.workflows > 0) parts.push(`${results.workflows} workflows`);
|
if (results.workflows > 0) parts.push(`${results.workflows} workflows`);
|
||||||
if (results.tasks > 0) parts.push(`${results.tasks} tasks`);
|
if (results.tasks > 0) parts.push(`${results.tasks} tasks`);
|
||||||
if (results.tools > 0) parts.push(`${results.tools} tools`);
|
if (results.tools > 0) parts.push(`${results.tools} tools`);
|
||||||
|
if (results.skills > 0) parts.push(`${results.skills} skills`);
|
||||||
await prompts.log.success(`${this.name} configured: ${parts.join(', ')} → ${targetDir}`);
|
await prompts.log.success(`${this.name} configured: ${parts.join(', ')} → ${targetDir}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -192,6 +192,16 @@ platforms:
|
||||||
skill_format: true
|
skill_format: true
|
||||||
ancestor_conflict_check: true
|
ancestor_conflict_check: true
|
||||||
|
|
||||||
|
pi:
|
||||||
|
name: "Pi"
|
||||||
|
preferred: false
|
||||||
|
category: cli
|
||||||
|
description: "Provider-agnostic terminal-native AI coding agent"
|
||||||
|
installer:
|
||||||
|
target_dir: .pi/skills
|
||||||
|
template_type: default
|
||||||
|
skill_format: true
|
||||||
|
|
||||||
qwen:
|
qwen:
|
||||||
name: "QwenCoder"
|
name: "QwenCoder"
|
||||||
preferred: false
|
preferred: false
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ async function loadSkillManifest(dirPath) {
|
||||||
const content = await fs.readFile(manifestPath, 'utf8');
|
const content = await fs.readFile(manifestPath, 'utf8');
|
||||||
const parsed = yaml.parse(content);
|
const parsed = yaml.parse(content);
|
||||||
if (!parsed || typeof parsed !== 'object') return null;
|
if (!parsed || typeof parsed !== 'object') return null;
|
||||||
if (parsed.canonicalId) return { __single: parsed };
|
if (parsed.canonicalId || parsed.type) return { __single: parsed };
|
||||||
return parsed;
|
return parsed;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.warn(`Warning: Failed to parse bmad-skill-manifest.yaml in ${dirPath}: ${error.message}`);
|
console.warn(`Warning: Failed to parse bmad-skill-manifest.yaml in ${dirPath}: ${error.message}`);
|
||||||
|
|
@ -45,4 +45,46 @@ function getCanonicalId(manifest, filename) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { loadSkillManifest, getCanonicalId };
|
/**
|
||||||
|
* Get the artifact type for a specific file from a loaded skill manifest.
|
||||||
|
* @param {Object|null} manifest - Loaded manifest (from loadSkillManifest)
|
||||||
|
* @param {string} filename - Source filename to look up
|
||||||
|
* @returns {string|null} type or null
|
||||||
|
*/
|
||||||
|
function getArtifactType(manifest, filename) {
|
||||||
|
if (!manifest) return null;
|
||||||
|
// Single-entry manifest applies to all files in the directory
|
||||||
|
if (manifest.__single) return manifest.__single.type || null;
|
||||||
|
// Multi-entry: look up by filename directly
|
||||||
|
if (manifest[filename]) return manifest[filename].type || null;
|
||||||
|
// Fallback: try alternate extensions for compiled files
|
||||||
|
const baseName = filename.replace(/\.(md|xml)$/i, '');
|
||||||
|
const agentKey = `${baseName}.agent.yaml`;
|
||||||
|
if (manifest[agentKey]) return manifest[agentKey].type || null;
|
||||||
|
const xmlKey = `${baseName}.xml`;
|
||||||
|
if (manifest[xmlKey]) return manifest[xmlKey].type || null;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the install_to_bmad flag for a specific file from a loaded skill manifest.
|
||||||
|
* @param {Object|null} manifest - Loaded manifest (from loadSkillManifest)
|
||||||
|
* @param {string} filename - Source filename to look up
|
||||||
|
* @returns {boolean} install_to_bmad value (defaults to true)
|
||||||
|
*/
|
||||||
|
function getInstallToBmad(manifest, filename) {
|
||||||
|
if (!manifest) return true;
|
||||||
|
// Single-entry manifest applies to all files in the directory
|
||||||
|
if (manifest.__single) return manifest.__single.install_to_bmad !== false;
|
||||||
|
// Multi-entry: look up by filename directly
|
||||||
|
if (manifest[filename]) return manifest[filename].install_to_bmad !== false;
|
||||||
|
// Fallback: try alternate extensions for compiled files
|
||||||
|
const baseName = filename.replace(/\.(md|xml)$/i, '');
|
||||||
|
const agentKey = `${baseName}.agent.yaml`;
|
||||||
|
if (manifest[agentKey]) return manifest[agentKey].install_to_bmad !== false;
|
||||||
|
const xmlKey = `${baseName}.xml`;
|
||||||
|
if (manifest[xmlKey]) return manifest[xmlKey].install_to_bmad !== false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { loadSkillManifest, getCanonicalId, getArtifactType, getInstallToBmad };
|
||||||
|
|
|
||||||
|
|
@ -324,6 +324,8 @@ function extractCsvRefs(filePath, content) {
|
||||||
const raw = record['workflow-file'];
|
const raw = record['workflow-file'];
|
||||||
if (!raw || raw.trim() === '') continue;
|
if (!raw || raw.trim() === '') continue;
|
||||||
if (!isResolvable(raw)) continue;
|
if (!isResolvable(raw)) continue;
|
||||||
|
// skill: prefixed references are resolved by the IDE/CLI, not as file paths
|
||||||
|
if (raw.startsWith('skill:')) continue;
|
||||||
|
|
||||||
// Line = header (1) + data row index (0-based) + 1
|
// Line = header (1) + data row index (0-based) + 1
|
||||||
const line = i + 2;
|
const line = i + 2;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue