Compare commits
16 Commits
d933d78d29
...
9cbb46053c
| Author | SHA1 | Date |
|---|---|---|
|
|
9cbb46053c | |
|
|
7b4875be79 | |
|
|
c57506464f | |
|
|
861716fbe3 | |
|
|
0ba809c3e8 | |
|
|
42aa184074 | |
|
|
5a5ade333a | |
|
|
7f7ce8c5e3 | |
|
|
5e1149dc14 | |
|
|
df9a7f9b67 | |
|
|
9cd362d2d8 | |
|
|
e64cef80b6 | |
|
|
32693f1a6b | |
|
|
874ae40bb2 | |
|
|
6292b0323f | |
|
|
b0318dab0c |
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Development & Testing
|
||||||
|
test/
|
||||||
|
.husky/
|
||||||
|
.github/
|
||||||
|
.vscode/
|
||||||
|
.augment/
|
||||||
|
coverage/
|
||||||
|
test-output/
|
||||||
|
|
||||||
|
# Documentation site (users access docs online)
|
||||||
|
docs/
|
||||||
|
website/
|
||||||
|
|
||||||
|
# Configuration files (development only)
|
||||||
|
.coderabbit.yaml
|
||||||
|
.markdownlint-cli2.yaml
|
||||||
|
.prettierignore
|
||||||
|
.nvmrc
|
||||||
|
eslint.config.mjs
|
||||||
|
prettier.config.mjs
|
||||||
|
|
||||||
|
# Build tools (not needed at runtime)
|
||||||
|
tools/build-docs.mjs
|
||||||
|
tools/fix-doc-links.js
|
||||||
|
tools/validate-doc-links.js
|
||||||
|
tools/validate-file-refs.js
|
||||||
|
tools/validate-agent-schema.js
|
||||||
|
|
||||||
|
# Images (branding/marketing only)
|
||||||
|
banner-bmad-method.png
|
||||||
|
Wordmark.png
|
||||||
|
|
||||||
|
# Repository metadata
|
||||||
|
CONTRIBUTING.md
|
||||||
|
CONTRIBUTORS.md
|
||||||
|
SECURITY.md
|
||||||
|
TRADEMARK.md
|
||||||
|
CHANGELOG.md
|
||||||
|
CNAME
|
||||||
|
CODE_OF_CONDUCT.md
|
||||||
|
|
@ -26,3 +26,33 @@ This page lists the default BMM (Agile suite) agents that install with BMad Meth
|
||||||
| Quick Flow Solo Dev (Barry) | `bmad-master` | `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) | `bmad-ux-designer` | `CU` | Create UX Design |
|
| UX Designer (Sally) | `bmad-ux-designer` | `CU` | Create UX Design |
|
||||||
| Technical Writer (Paige) | `bmad-tech-writer` | `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 |
|
||||||
|
|
||||||
|
## Trigger Types
|
||||||
|
|
||||||
|
Agent menu triggers use two different invocation types. Knowing which type a trigger uses helps you provide the right input.
|
||||||
|
|
||||||
|
### Workflow triggers (no arguments needed)
|
||||||
|
|
||||||
|
Most triggers load a structured workflow file. Type the trigger code and the agent starts the workflow, prompting you for input at each step.
|
||||||
|
|
||||||
|
Examples: `CP` (Create PRD), `DS` (Dev Story), `CA` (Create Architecture), `QS` (Quick Spec)
|
||||||
|
|
||||||
|
### Conversational triggers (arguments required)
|
||||||
|
|
||||||
|
Some triggers start a free-form conversation instead of a structured workflow. These expect you to describe what you need alongside the trigger code.
|
||||||
|
|
||||||
|
| Agent | Trigger | What to provide |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Technical Writer (Paige) | `WD` | Description of the document to write |
|
||||||
|
| Technical Writer (Paige) | `US` | Preferences or conventions to add to standards |
|
||||||
|
| Technical Writer (Paige) | `MG` | Diagram description and type (sequence, flowchart, etc.) |
|
||||||
|
| Technical Writer (Paige) | `VD` | Document to validate and focus areas |
|
||||||
|
| Technical Writer (Paige) | `EC` | Concept name to explain |
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```text
|
||||||
|
WD Write a deployment guide for our Docker setup
|
||||||
|
MG Create a sequence diagram showing the auth flow
|
||||||
|
EC Explain how the module system works
|
||||||
|
```
|
||||||
|
|
|
||||||
|
|
@ -95,11 +95,11 @@ TEA also supports P0-P3 risk-based prioritization and optional integrations with
|
||||||
|
|
||||||
## How Testing Fits into Workflows
|
## How Testing Fits into Workflows
|
||||||
|
|
||||||
Quinn's Automate workflow appears in Phase 4 (Implementation) of the BMad Method workflow map. A typical sequence:
|
Quinn's Automate workflow appears in Phase 4 (Implementation) of the BMad Method workflow map. It is designed to run **after a full epic is complete** — once all stories in an epic have been implemented and code-reviewed. A typical sequence:
|
||||||
|
|
||||||
1. Implement a story with the Dev workflow (`DS`)
|
1. For each story in the epic: implement with Dev (`DS`), then validate with Code Review (`CR`)
|
||||||
2. Generate tests with Quinn (`QA`) or TEA's Automate workflow
|
2. After the epic is complete: generate tests with Quinn (`QA`) or TEA's Automate workflow
|
||||||
3. Validate implementation with Code Review (`CR`)
|
3. Run retrospective (`bmad-retrospective`) to capture lessons learned
|
||||||
|
|
||||||
Quinn works directly from source code without loading planning documents (PRD, architecture). TEA workflows can integrate with upstream planning artifacts for traceability.
|
Quinn works directly from source code without loading planning documents (PRD, architecture). TEA workflows can integrate with upstream planning artifacts for traceability.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 2: Product Vision Discovery
|
# Step 2: Product Vision Discovery
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 3: Target Users Discovery
|
# Step 3: Target Users Discovery
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 4: Success Metrics Definition
|
# Step 4: Success Metrics Definition
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/product-brief-{{project_name}}-{{date}}.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 5: MVP Scope Definition
|
# Step 5: MVP Scope Definition
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ domainComplexityCSV: '../data/domain-complexity.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 2: Project Discovery
|
# Step 2: Project Discovery
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 2b: Product Vision Discovery
|
# Step 2b: Product Vision Discovery
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 2c: Executive Summary Generation
|
# Step 2c: Executive Summary Generation
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 3: Success Criteria Definition
|
# Step 3: Success Criteria Definition
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 4: User Journey Mapping
|
# Step 4: User Journey Mapping
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ domainComplexityCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 5: Domain-Specific Requirements (Optional)
|
# Step 5: Domain-Specific Requirements (Optional)
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ projectTypesCSV: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 6: Innovation Discovery
|
# Step 6: Innovation Discovery
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ projectTypesCSV: '../data/project-types.csv'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 7: Project-Type Deep Dive
|
# Step 7: Project-Type Deep Dive
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 8: Scoping Exercise - MVP & Future Features
|
# Step 8: Scoping Exercise - MVP & Future Features
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 9: Functional Requirements Synthesis
|
# Step 9: Functional Requirements Synthesis
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ outputFile: '{planning_artifacts}/prd.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 10: Non-Functional Requirements
|
# Step 10: Non-Functional Requirements
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ purposeFile: '{project-root}/_bmad/bmm/workflows/2-plan-workflows/create-prd/dat
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step 11: Document Polish
|
# Step 11: Document Polish
|
||||||
|
|
@ -99,6 +99,22 @@ Review the entire document with PRD purpose principles in mind:
|
||||||
- Are technical terms used appropriately?
|
- Are technical terms used appropriately?
|
||||||
- Would stakeholders find this easy to understand?
|
- Would stakeholders find this easy to understand?
|
||||||
|
|
||||||
|
### 2b. Brainstorming Reconciliation (if brainstorming input exists)
|
||||||
|
|
||||||
|
**Check the PRD frontmatter `inputDocuments` for any brainstorming document** (e.g., `brainstorming-session*.md`, `brainstorming-report.md`). If a brainstorming document was used as input:
|
||||||
|
|
||||||
|
1. **Load the brainstorming document** and extract all distinct ideas, themes, and recommendations
|
||||||
|
2. **Cross-reference against the PRD** — for each brainstorming idea, check if it landed in any PRD section (requirements, success criteria, user journeys, scope, etc.)
|
||||||
|
3. **Identify dropped ideas** — ideas from brainstorming that do not appear anywhere in the PRD. Pay special attention to:
|
||||||
|
- Tone, personality, and interaction design ideas (these are most commonly lost)
|
||||||
|
- Design philosophy and coaching approach ideas
|
||||||
|
- "What should this feel like" ideas (UX feel, not just UX function)
|
||||||
|
- Qualitative/soft ideas that don't map cleanly to functional requirements
|
||||||
|
4. **Present findings to user**: "These brainstorming ideas did not make it into the PRD: [list]. Should any be incorporated?"
|
||||||
|
5. **If user wants to incorporate dropped ideas**: Add them to the most appropriate PRD section (success criteria, non-functional requirements, or a new section if needed)
|
||||||
|
|
||||||
|
**Why this matters**: Brainstorming documents are often long, and the PRD's structured template has an implicit bias toward concrete/structural ideas. Soft ideas (tone, philosophy, interaction feel) frequently get silently dropped because they don't map cleanly to FR/NFR format.
|
||||||
|
|
||||||
### 3. Optimization Actions
|
### 3. Optimization Actions
|
||||||
|
|
||||||
Make targeted improvements:
|
Make targeted improvements:
|
||||||
|
|
@ -193,6 +209,7 @@ When user selects 'C', replace the entire document content with the polished ver
|
||||||
✅ User's voice and intent preserved
|
✅ User's voice and intent preserved
|
||||||
✅ Document is more readable and professional
|
✅ Document is more readable and professional
|
||||||
✅ A/P/C menu presented and handled correctly
|
✅ A/P/C menu presented and handled correctly
|
||||||
|
✅ Brainstorming reconciliation completed (if brainstorming input exists)
|
||||||
✅ Polished document saved when C selected
|
✅ Polished document saved when C selected
|
||||||
|
|
||||||
## FAILURE MODES:
|
## FAILURE MODES:
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ description: 'Discovery & Understanding - Understand what user wants to edit and
|
||||||
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.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
# Step E-1: Discovery & Understanding
|
# Step E-1: Discovery & Understanding
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,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.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
prdPurpose: '../data/prd-purpose.md'
|
prdPurpose: '../data/prd-purpose.md'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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 core experience content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current core experience definition
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current core experience definition
|
||||||
- Process the collaborative experience improvements that come back
|
- Process the collaborative experience improvements that come back
|
||||||
- Ask user: "Accept these changes to the core experience definition? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -172,7 +172,7 @@ Show the generated emotional response content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current emotional response definition
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current emotional response definition
|
||||||
- Process the collaborative emotional insights that come back
|
- Process the collaborative emotional insights that come back
|
||||||
- Ask user: "Accept these changes to the emotional response definition? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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 inspiration analysis content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current inspiration analysis
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current inspiration analysis
|
||||||
- Process the collaborative pattern insights that come back
|
- Process the collaborative pattern insights that come back
|
||||||
- Ask user: "Accept these changes to the inspiration analysis? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -205,7 +205,7 @@ Show the generated design system content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current design system choice
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current design system choice
|
||||||
- Process the collaborative design system insights that come back
|
- Process the collaborative design system insights that come back
|
||||||
- Ask user: "Accept these changes to the design system decision? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -207,7 +207,7 @@ Show the generated defining experience content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current defining experience
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current defining experience
|
||||||
- Process the collaborative experience insights that come back
|
- Process the collaborative experience insights that come back
|
||||||
- Ask user: "Accept these changes to the defining experience? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -177,7 +177,7 @@ Show the generated visual foundation content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current visual foundation
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current visual foundation
|
||||||
- Process the collaborative visual insights that come back
|
- Process the collaborative visual insights that come back
|
||||||
- Ask user: "Accept these changes to the visual foundation? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -177,7 +177,7 @@ Show the generated design direction content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current design direction
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current design direction
|
||||||
- Process the collaborative design insights that come back
|
- Process the collaborative design insights that come back
|
||||||
- Ask user: "Accept these changes to the design direction? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -195,7 +195,7 @@ Show the generated user journey content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current user journeys
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current user journeys
|
||||||
- Process the collaborative journey insights that come back
|
- Process the collaborative journey insights that come back
|
||||||
- Ask user: "Accept these changes to the user journeys? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -201,7 +201,7 @@ Show the generated component strategy content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current component strategy
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current component strategy
|
||||||
- Process the collaborative component insights that come back
|
- Process the collaborative component insights that come back
|
||||||
- Ask user: "Accept these changes to the component strategy? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -190,7 +190,7 @@ Show the generated UX patterns content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current UX patterns
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current UX patterns
|
||||||
- Process the collaborative pattern insights that come back
|
- Process the collaborative pattern insights that come back
|
||||||
- Ask user: "Accept these changes to the UX patterns? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -217,7 +217,7 @@ Show the generated responsive and accessibility content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current responsive/accessibility strategy
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current responsive/accessibility strategy
|
||||||
- Process the collaborative insights that come back
|
- Process the collaborative insights that come back
|
||||||
- Ask user: "Accept these changes to the responsive/accessibility strategy? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -178,7 +178,7 @@ Show the generated content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with the current project context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with the current project context
|
||||||
- Process the collaborative improvements to architectural understanding
|
- Process the collaborative improvements to architectural understanding
|
||||||
- Ask user: "Accept these changes to the project context analysis? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -284,7 +284,7 @@ Show the generated content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with starter evaluation context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with starter evaluation context
|
||||||
- Process collaborative insights about starter trade-offs
|
- Process collaborative insights about starter trade-offs
|
||||||
- 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
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -272,7 +272,7 @@ Show the generated decisions content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with architectural decisions context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with architectural decisions context
|
||||||
- Process collaborative insights about decision trade-offs
|
- Process collaborative insights about decision trade-offs
|
||||||
- Ask user: "Accept these changes to the architectural decisions? (y/n)"
|
- Ask user: "Accept these changes 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
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -313,7 +313,7 @@ Show the generated patterns content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with implementation patterns context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with implementation patterns context
|
||||||
- Process collaborative insights about potential conflicts
|
- Process collaborative insights about potential conflicts
|
||||||
- Ask user: "Accept these changes to the implementation patterns? (y/n)"
|
- Ask user: "Accept these changes to the implementation patterns? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -333,7 +333,7 @@ Show the generated project structure content and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with project structure context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with project structure context
|
||||||
- Process collaborative insights about organization trade-offs
|
- Process collaborative insights about organization trade-offs
|
||||||
- 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
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
@ -313,7 +313,7 @@ Show the validation results and present choices:
|
||||||
|
|
||||||
#### If 'P' (Party Mode):
|
#### If 'P' (Party Mode):
|
||||||
|
|
||||||
- Read fully and follow: {project-root}/_bmad/core/workflows/party-mode/workflow.md with validation context
|
- Read fully and follow: {project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md with validation context
|
||||||
- Process collaborative insights on implementation readiness
|
- Process collaborative insights on implementation readiness
|
||||||
- Ask user: "Accept these changes to the validation results? (y/n)"
|
- Ask user: "Accept these changes to the validation results? (y/n)"
|
||||||
- If yes: Update content, then return to A/P/C menu
|
- If yes: Update content, then return to A/P/C menu
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
@ -154,20 +154,31 @@ Review the Architecture document for technical requirements that impact epic and
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
### 6. Extract Additional Requirements from UX (if exists)
|
### 6. Extract UX Design Requirements (if UX document exists)
|
||||||
|
|
||||||
Review the UX document for requirements that affect epic and story creation:
|
**IMPORTANT**: The UX Design Specification is a first-class input document, not supplementary material. Requirements from the UX spec must be extracted with the same rigor as PRD functional requirements.
|
||||||
|
|
||||||
|
Read the FULL UX Design document and extract ALL actionable work items:
|
||||||
|
|
||||||
**Look for:**
|
**Look for:**
|
||||||
|
|
||||||
- Responsive design requirements
|
- **Design token work**: Color systems, spacing scales, typography tokens that need implementation or consolidation
|
||||||
- Accessibility requirements
|
- **Component proposals**: Reusable UI components identified in the UX spec (e.g., ConfirmActions, StatusMessage, EmptyState, FocusIndicator)
|
||||||
- Browser/device compatibility
|
- **Visual standardization**: Semantic CSS classes, consistent color palette usage, design pattern consolidation
|
||||||
- User interaction patterns that need implementation
|
- **Accessibility requirements**: Contrast audit fixes, ARIA patterns, keyboard navigation, screen reader support
|
||||||
- Animation or transition requirements
|
- **Responsive design requirements**: Breakpoints, layout adaptations, mobile-specific interactions
|
||||||
- Error handling UX requirements
|
- **Interaction patterns**: Animations, transitions, loading states, error handling UX
|
||||||
|
- **Browser/device compatibility**: Target platforms, progressive enhancement requirements
|
||||||
|
|
||||||
**Add these to Additional Requirements list.**
|
**Format UX Design Requirements as a SEPARATE section (not merged into Additional Requirements):**
|
||||||
|
|
||||||
|
```
|
||||||
|
UX-DR1: [Actionable UX design requirement with clear implementation scope]
|
||||||
|
UX-DR2: [Actionable UX design requirement with clear implementation scope]
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
**🚨 CRITICAL**: Do NOT reduce UX requirements to vague summaries. Each UX-DR must be specific enough to generate a story with testable acceptance criteria. If the UX spec identifies 6 reusable components, list all 6 — not "create reusable components."
|
||||||
|
|
||||||
### 7. Load and Initialize Template
|
### 7. Load and Initialize Template
|
||||||
|
|
||||||
|
|
@ -178,7 +189,8 @@ Load {epicsTemplate} and initialize {outputFile}:
|
||||||
3. Replace placeholder sections with extracted requirements:
|
3. Replace placeholder sections with extracted requirements:
|
||||||
- {{fr_list}} → extracted FRs
|
- {{fr_list}} → extracted FRs
|
||||||
- {{nfr_list}} → extracted NFRs
|
- {{nfr_list}} → extracted NFRs
|
||||||
- {{additional_requirements}} → extracted additional requirements
|
- {{additional_requirements}} → extracted additional requirements (from Architecture)
|
||||||
|
- {{ux_design_requirements}} → extracted UX Design Requirements (if UX document exists)
|
||||||
4. Leave {{requirements_coverage_map}} and {{epics_list}} as placeholders for now
|
4. Leave {{requirements_coverage_map}} and {{epics_list}} as placeholders for now
|
||||||
|
|
||||||
### 8. Present Extracted Requirements
|
### 8. Present Extracted Requirements
|
||||||
|
|
@ -197,12 +209,17 @@ Display to user:
|
||||||
- Display key NFRs
|
- Display key NFRs
|
||||||
- Ask if any constraints were missed
|
- Ask if any constraints were missed
|
||||||
|
|
||||||
**Additional Requirements:**
|
**Additional Requirements (Architecture):**
|
||||||
|
|
||||||
- Summarize technical requirements from Architecture
|
- Summarize technical requirements from Architecture
|
||||||
- Summarize UX requirements (if applicable)
|
|
||||||
- Verify completeness
|
- Verify completeness
|
||||||
|
|
||||||
|
**UX Design Requirements (if applicable):**
|
||||||
|
|
||||||
|
- Show count of UX-DRs found
|
||||||
|
- Display key UX Design requirements (design tokens, components, accessibility)
|
||||||
|
- Verify each UX-DR is specific enough for story creation
|
||||||
|
|
||||||
### 9. Get User Confirmation
|
### 9. Get User Confirmation
|
||||||
|
|
||||||
Ask: "Do these extracted requirements accurately represent what needs to be built? Any additions or corrections?"
|
Ask: "Do these extracted requirements accurately represent what needs to be built? Any additions or corrections?"
|
||||||
|
|
@ -216,6 +233,7 @@ After extraction and confirmation, update {outputFile} with:
|
||||||
- Complete FR list in {{fr_list}} section
|
- Complete FR list in {{fr_list}} section
|
||||||
- Complete NFR list in {{nfr_list}} section
|
- Complete NFR list in {{nfr_list}} section
|
||||||
- All additional requirements in {{additional_requirements}} section
|
- All additional requirements in {{additional_requirements}} section
|
||||||
|
- UX Design requirements in {{ux_design_requirements}} section (if UX document exists)
|
||||||
|
|
||||||
### 10. Present MENU OPTIONS
|
### 10. Present MENU OPTIONS
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
@ -76,7 +76,8 @@ Load {outputFile} and review:
|
||||||
2. **Requirements Grouping**: Group related FRs that deliver cohesive user outcomes
|
2. **Requirements Grouping**: Group related FRs that deliver cohesive user outcomes
|
||||||
3. **Incremental Delivery**: Each epic should deliver value independently
|
3. **Incremental Delivery**: Each epic should deliver value independently
|
||||||
4. **Logical Flow**: Natural progression from user's perspective
|
4. **Logical Flow**: Natural progression from user's perspective
|
||||||
5. **🔗 Dependency-Free Within Epic**: Stories within an epic must NOT depend on future stories
|
5. **Dependency-Free Within Epic**: Stories within an epic must NOT depend on future stories
|
||||||
|
6. **Implementation Efficiency**: Consider consolidating epics that all modify the same core files into fewer epics
|
||||||
|
|
||||||
**⚠️ CRITICAL PRINCIPLE:**
|
**⚠️ CRITICAL PRINCIPLE:**
|
||||||
Organize by USER VALUE, not technical layers:
|
Organize by USER VALUE, not technical layers:
|
||||||
|
|
@ -95,6 +96,18 @@ Organize by USER VALUE, not technical layers:
|
||||||
- Epic 3: Frontend Components (creates reusable components) - **No user value**
|
- Epic 3: Frontend Components (creates reusable components) - **No user value**
|
||||||
- Epic 4: Deployment Pipeline (CI/CD setup) - **No user value**
|
- Epic 4: Deployment Pipeline (CI/CD setup) - **No user value**
|
||||||
|
|
||||||
|
**❌ WRONG Epic Examples (File Churn on Same Component):**
|
||||||
|
|
||||||
|
- Epic 1: File Upload (modifies model, controller, web form, web API)
|
||||||
|
- Epic 2: File Status (modifies model, controller, web form, web API)
|
||||||
|
- Epic 3: File Access permissions (modifies model, controller, web form, web API)
|
||||||
|
- All three epics touch the same files — consolidate into one epic with ordered stories
|
||||||
|
|
||||||
|
**✅ CORRECT Alternative:**
|
||||||
|
|
||||||
|
- Epic 1: File Management Enhancement (upload, status, permissions as stories within one epic)
|
||||||
|
- Rationale: Single component, fully pre-designed, no feedback loop between epics
|
||||||
|
|
||||||
**🔗 DEPENDENCY RULES:**
|
**🔗 DEPENDENCY RULES:**
|
||||||
|
|
||||||
- Each epic must deliver COMPLETE functionality for its domain
|
- Each epic must deliver COMPLETE functionality for its domain
|
||||||
|
|
@ -103,21 +116,38 @@ Organize by USER VALUE, not technical layers:
|
||||||
|
|
||||||
### 3. Design Epic Structure Collaboratively
|
### 3. Design Epic Structure Collaboratively
|
||||||
|
|
||||||
**Step A: Identify User Value Themes**
|
**Step A: Assess Context and Identify Themes**
|
||||||
|
|
||||||
|
First, assess how much of the solution design is already validated (Architecture, UX, Test Design).
|
||||||
|
When the outcome is certain and direction changes between epics are unlikely, prefer fewer but larger epics.
|
||||||
|
Split into multiple epics when there is a genuine risk boundary or when early feedback could change direction
|
||||||
|
of following epics.
|
||||||
|
|
||||||
|
Then, identify user value themes:
|
||||||
|
|
||||||
- Look for natural groupings in the FRs
|
- Look for natural groupings in the FRs
|
||||||
- Identify user journeys or workflows
|
- Identify user journeys or workflows
|
||||||
- Consider user types and their goals
|
- Consider user types and their goals
|
||||||
|
|
||||||
**Step B: Propose Epic Structure**
|
**Step B: Propose Epic Structure**
|
||||||
For each proposed epic:
|
|
||||||
|
For each proposed epic (considering whether epics share the same core files):
|
||||||
|
|
||||||
1. **Epic Title**: User-centric, value-focused
|
1. **Epic Title**: User-centric, value-focused
|
||||||
2. **User Outcome**: What users can accomplish after this epic
|
2. **User Outcome**: What users can accomplish after this epic
|
||||||
3. **FR Coverage**: Which FR numbers this epic addresses
|
3. **FR Coverage**: Which FR numbers this epic addresses
|
||||||
4. **Implementation Notes**: Any technical or UX considerations
|
4. **Implementation Notes**: Any technical or UX considerations
|
||||||
|
|
||||||
**Step C: Create the epics_list**
|
**Step C: Review for File Overlap**
|
||||||
|
|
||||||
|
Assess whether multiple proposed epics repeatedly target the same core files. If overlap is significant:
|
||||||
|
|
||||||
|
- Distinguish meaningful overlap (same component end-to-end) from incidental sharing
|
||||||
|
- Ask whether to consolidate into one epic with ordered stories
|
||||||
|
- If confirmed, merge the epic FRs into a single epic, preserving dependency flow: each story must still fit within
|
||||||
|
a single dev agent's context
|
||||||
|
|
||||||
|
**Step D: Create the epics_list**
|
||||||
|
|
||||||
Format the epics_list as:
|
Format the epics_list as:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
@ -66,9 +66,11 @@ Load {outputFile} and review:
|
||||||
|
|
||||||
- Approved epics_list from Step 2
|
- Approved epics_list from Step 2
|
||||||
- FR coverage map
|
- FR coverage map
|
||||||
- All requirements (FRs, NFRs, additional)
|
- All requirements (FRs, NFRs, additional, **UX Design requirements if present**)
|
||||||
- Template structure at the end of the document
|
- Template structure at the end of the document
|
||||||
|
|
||||||
|
**UX Design Integration**: If UX Design Requirements (UX-DRs) were extracted in Step 1, ensure they are visible during story creation. UX-DRs must be covered by stories — either within existing epics (e.g., accessibility fixes for a feature epic) or in a dedicated "Design System / UX Polish" epic.
|
||||||
|
|
||||||
### 2. Explain Story Creation Approach
|
### 2. Explain Story Creation Approach
|
||||||
|
|
||||||
**STORY CREATION GUIDELINES:**
|
**STORY CREATION GUIDELINES:**
|
||||||
|
|
@ -146,6 +148,7 @@ Display:
|
||||||
- Epic goal statement
|
- Epic goal statement
|
||||||
- FRs covered by this epic
|
- FRs covered by this epic
|
||||||
- Any NFRs or additional requirements relevant
|
- Any NFRs or additional requirements relevant
|
||||||
|
- Any UX Design Requirements (UX-DRs) relevant to this epic
|
||||||
|
|
||||||
#### B. Story Breakdown
|
#### B. Story Breakdown
|
||||||
|
|
||||||
|
|
@ -207,6 +210,7 @@ After all epics and stories are generated:
|
||||||
- Verify the document follows template structure exactly
|
- Verify the document follows template structure exactly
|
||||||
- Ensure all placeholders are replaced
|
- Ensure all placeholders are replaced
|
||||||
- Confirm all FRs are covered
|
- Confirm all FRs are covered
|
||||||
|
- **Confirm all UX Design Requirements (UX-DRs) are covered by at least one story** (if UX document was an input)
|
||||||
- Check formatting consistency
|
- Check formatting consistency
|
||||||
|
|
||||||
## TEMPLATE STRUCTURE COMPLIANCE:
|
## TEMPLATE STRUCTURE COMPLIANCE:
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ outputFile: '{planning_artifacts}/epics.md'
|
||||||
|
|
||||||
# Task References
|
# Task References
|
||||||
advancedElicitationTask: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-party-mode/workflow.md'
|
||||||
|
|
||||||
# Template References
|
# Template References
|
||||||
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
epicsTemplate: '{workflow_path}/templates/epics-template.md'
|
||||||
|
|
@ -110,6 +110,12 @@ Review the complete epic and story breakdown to ensure EVERY FR is covered:
|
||||||
- Dependencies flow naturally
|
- Dependencies flow naturally
|
||||||
- Foundation stories only setup what's needed
|
- Foundation stories only setup what's needed
|
||||||
- No big upfront technical work
|
- No big upfront technical work
|
||||||
|
- **File Churn Check:** Do multiple epics repeatedly modify the same core files?
|
||||||
|
- Assess whether the overlap pattern suggests unnecessary churn or is incidental
|
||||||
|
- If overlap is significant: Validate that splitting provides genuine value (risk mitigation, feedback loops, context size limits)
|
||||||
|
- If no justification for the split: Recommend consolidation into fewer epics
|
||||||
|
- ❌ WRONG: Multiple epics each modify the same core files with no feedback loop between them
|
||||||
|
- ✅ RIGHT: Epics target distinct files/components, OR consolidation was explicitly considered and rejected with rationale
|
||||||
|
|
||||||
### 5. Dependency Validation (CRITICAL)
|
### 5. Dependency Validation (CRITICAL)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,10 @@ This document provides the complete epic and story breakdown for {{project_name}
|
||||||
|
|
||||||
{{additional_requirements}}
|
{{additional_requirements}}
|
||||||
|
|
||||||
|
### UX Design Requirements
|
||||||
|
|
||||||
|
{{ux_design_requirements}}
|
||||||
|
|
||||||
### FR Coverage Map
|
### FR Coverage Map
|
||||||
|
|
||||||
{{requirements_coverage_map}}
|
{{requirements_coverage_map}}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ description: 'Perform adversarial code review finding specific issues. Use when
|
||||||
- Generate all documents in {document_output_language}
|
- Generate all documents in {document_output_language}
|
||||||
- Your purpose: Validate story file claims against actual implementation
|
- Your purpose: Validate story file claims against actual implementation
|
||||||
- Challenge everything: Are tasks marked [x] actually done? Are ACs really implemented?
|
- Challenge everything: Are tasks marked [x] actually done? Are ACs really implemented?
|
||||||
- Find 3-10 specific issues in every review minimum - no lazy "looks good" reviews - YOU are so much better than the dev agent that wrote this slop
|
- Be thorough and specific — find real issues, not manufactured ones. If the code is genuinely good after fixes, say so
|
||||||
- Read EVERY file in the File List - verify implementation against story requirements
|
- Read EVERY file in the File List - verify implementation against story requirements
|
||||||
- Tasks marked complete but not done = CRITICAL finding
|
- Tasks marked complete but not done = CRITICAL finding
|
||||||
- Acceptance Criteria not implemented = HIGH severity finding
|
- Acceptance Criteria not implemented = HIGH severity finding
|
||||||
|
|
@ -136,17 +136,14 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
5. **Test Quality**: Are tests real assertions or placeholders?
|
5. **Test Quality**: Are tests real assertions or placeholders?
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
<check if="total_issues_found lt 3">
|
<check if="total_issues_found == 0">
|
||||||
<critical>NOT LOOKING HARD ENOUGH - Find more problems!</critical>
|
<action>Double-check by re-examining code for:
|
||||||
<action>Re-examine code for:
|
|
||||||
- Edge cases and null handling
|
- Edge cases and null handling
|
||||||
- Architecture violations
|
- Architecture violations
|
||||||
- Documentation gaps
|
|
||||||
- Integration issues
|
- Integration issues
|
||||||
- Dependency problems
|
- Dependency problems
|
||||||
- Git commit message quality (if applicable)
|
|
||||||
</action>
|
</action>
|
||||||
<action>Find at least 3 more specific, actionable issues</action>
|
<action>If still no issues found after thorough re-examination, that is a valid outcome — report a clean review</action>
|
||||||
</check>
|
</check>
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
name: bmad-quick-dev-new-preview
|
name: bmad-quick-dev-new-preview
|
||||||
description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the projects existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.'
|
description: 'Implements any user intent, requirement, story, bug fix or change request by producing clean working code artifacts that follow the project''s existing architecture, patterns and conventions. Use when the user wants to build, fix, tweak, refactor, add or modify any code, component or feature.'
|
||||||
---
|
---
|
||||||
|
|
||||||
Follow the instructions in [workflow.md](workflow.md).
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
|
||||||
|
|
@ -43,13 +43,11 @@ Do NOT `git add` anything — this is read-only inspection.
|
||||||
- **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention.
|
- **defer** — pre-existing issue not caused by this story, surfaced incidentally by the review. Collect for later focused attention.
|
||||||
- **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. Once resolved, read fully and follow `./steps/step-02-plan.md` to 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 `./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.
|
||||||
4. Commit.
|
|
||||||
|
|
||||||
## NEXT
|
## NEXT
|
||||||
|
|
||||||
Read fully and follow `./steps/step-05-present.md`
|
Read fully and follow `./steps/step-05-present.md`
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ description: 'Present findings, get approval, create PR'
|
||||||
|
|
||||||
## INSTRUCTIONS
|
## INSTRUCTIONS
|
||||||
|
|
||||||
1. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
|
1. Change `{spec_file}` status to `done` in the frontmatter.
|
||||||
2. Change `{spec_file}` status to `done` in the frontmatter.
|
2. If version control is available and the tree is dirty, create a local commit with a conventional message derived from the spec title.
|
||||||
3. Display summary of your work to the user, including the commit hash if one was created. Advise on how to review the changes. Offer to push and/or create a pull request.
|
3. Display summary of your work to the user, including the commit hash if one was created. Advise on how to review the changes. Offer to push and/or create a pull request.
|
||||||
|
|
||||||
Workflow complete.
|
Workflow complete.
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
---
|
---
|
||||||
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
||||||
|
|
||||||
# Related workflows
|
|
||||||
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
|
||||||
party_mode_exec: '{project-root}/_bmad/core/workflows/party-mode/workflow.md'
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Quick Dev New Preview Workflow
|
# Quick Dev New Preview Workflow
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ Load config from `{project-root}/_bmad/bmm/config.yaml` and resolve:
|
||||||
### Related Workflows
|
### Related Workflows
|
||||||
|
|
||||||
- `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/bmad-party-mode/workflow.md`
|
||||||
- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md`
|
- `advanced_elicitation` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ main_config: '{project-root}/_bmad/bmm/config.yaml'
|
||||||
|
|
||||||
# Checkpoint handler paths
|
# Checkpoint handler paths
|
||||||
advanced_elicitation: '{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.md'
|
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/bmad-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'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,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.md
|
- 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/bmad-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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs
|
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs
|
||||||
core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate diverse ideas through interactive techniques. Use early in ideation phase or when stuck generating ideas.",{output_folder}/brainstorming/brainstorming-session-{{date}}.md,,
|
core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate diverse ideas through interactive techniques. Use early in ideation phase or when stuck generating ideas.",{output_folder}/brainstorming/brainstorming-session-{{date}}.md,,
|
||||||
core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",,
|
core,anytime,Party Mode,PM,,skill:bmad-party-mode,bmad-party-mode,false,party-mode facilitator,,"Orchestrate multi-agent discussions. Use when you need multiple agent perspectives or want agents to collaborate.",,
|
||||||
core,anytime,bmad-help,BH,,skill:bmad-help,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",,
|
core,anytime,bmad-help,BH,,skill:bmad-help,bmad-help,false,,,"Get unstuck by showing what workflow steps come next or answering BMad Method questions.",,
|
||||||
core,anytime,Index Docs,ID,,_bmad/core/tasks/index-docs.xml,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",,
|
core,anytime,Index Docs,ID,,skill:bmad-index-docs,bmad-index-docs,false,,,"Create lightweight index for quick LLM scanning. Use when LLM needs to understand available docs without loading everything.",,
|
||||||
core,anytime,Shard Document,SD,,_bmad/core/tasks/shard-doc.xml,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",,
|
core,anytime,Shard Document,SD,,skill:bmad-shard-doc,bmad-shard-doc,false,,,"Split large documents into smaller files by sections. Use when doc becomes too large (>500 lines) to manage effectively.",,
|
||||||
core,anytime,Editorial Review - Prose,EP,,skill:bmad-editorial-review-prose,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes",
|
core,anytime,Editorial Review - Prose,EP,,skill:bmad-editorial-review-prose,bmad-editorial-review-prose,false,,,"Review prose for clarity, tone, and communication issues. Use after drafting to polish written content.",report located with target document,"three-column markdown table with suggested fixes",
|
||||||
core,anytime,Editorial Review - Structure,ES,,skill:bmad-editorial-review-structure,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document,
|
core,anytime,Editorial Review - Structure,ES,,skill:bmad-editorial-review-structure,bmad-editorial-review-structure,false,,,"Propose cuts, reorganization, and simplification while preserving comprehension. Use when doc produced from multiple subprocesses or needs structural improvement.",report located with target document,
|
||||||
core,anytime,Adversarial Review (General),AR,,skill:bmad-review-adversarial-general,bmad-review-adversarial-general,false,,,"Review content critically to find issues and weaknesses. Use for quality assurance or before finalizing deliverables. Code Review in other modules run this automatically, but its useful also for document reviews",,
|
core,anytime,Adversarial Review (General),AR,,skill:bmad-review-adversarial-general,bmad-review-adversarial-general,false,,,"Review content critically to find issues and weaknesses. Use for quality assurance or before finalizing deliverables. Code Review in other modules run this automatically, but its useful also for document reviews",,
|
||||||
|
|
|
||||||
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
name: bmad-index-docs
|
||||||
|
description: 'Generates or updates an index.md to reference all docs in the folder. Use if user requests to create or update an index of all files in a specific folder'
|
||||||
|
---
|
||||||
|
|
||||||
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -0,0 +1,61 @@
|
||||||
|
# Index Docs
|
||||||
|
|
||||||
|
**Goal:** Generate or update an index.md to reference all docs in a target folder.
|
||||||
|
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
|
### Step 1: Scan Directory
|
||||||
|
|
||||||
|
- List all files and subdirectories in the target location
|
||||||
|
|
||||||
|
### Step 2: Group Content
|
||||||
|
|
||||||
|
- Organize files by type, purpose, or subdirectory
|
||||||
|
|
||||||
|
### Step 3: Generate Descriptions
|
||||||
|
|
||||||
|
- Read each file to understand its actual purpose and create brief (3-10 word) descriptions based on the content, not just the filename
|
||||||
|
|
||||||
|
### Step 4: Create/Update Index
|
||||||
|
|
||||||
|
- Write or update index.md with organized file listings
|
||||||
|
|
||||||
|
|
||||||
|
## OUTPUT FORMAT
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Directory Index
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
- **[filename.ext](./filename.ext)** - Brief description
|
||||||
|
- **[another-file.ext](./another-file.ext)** - Brief description
|
||||||
|
|
||||||
|
## Subdirectories
|
||||||
|
|
||||||
|
### subfolder/
|
||||||
|
|
||||||
|
- **[file1.ext](./subfolder/file1.ext)** - Brief description
|
||||||
|
- **[file2.ext](./subfolder/file2.ext)** - Brief description
|
||||||
|
|
||||||
|
### another-folder/
|
||||||
|
|
||||||
|
- **[file3.ext](./another-folder/file3.ext)** - Brief description
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## HALT CONDITIONS
|
||||||
|
|
||||||
|
- HALT if target directory does not exist or is inaccessible
|
||||||
|
- HALT if user does not have write permissions to create index.md
|
||||||
|
|
||||||
|
|
||||||
|
## VALIDATION
|
||||||
|
|
||||||
|
- Use relative paths starting with ./
|
||||||
|
- Group similar files together
|
||||||
|
- Read file contents to generate accurate descriptions - don't guess from filenames
|
||||||
|
- Keep descriptions concise but informative (3-10 words)
|
||||||
|
- Sort alphabetically within groups
|
||||||
|
- Skip hidden files (starting with .) unless specified
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
name: bmad-shard-doc
|
||||||
|
description: 'Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document'
|
||||||
|
---
|
||||||
|
|
||||||
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Shard Document
|
||||||
|
|
||||||
|
**Goal:** Split large markdown documents into smaller, organized files based on level 2 sections using `npx @kayvan/markdown-tree-parser`.
|
||||||
|
|
||||||
|
## CRITICAL RULES
|
||||||
|
|
||||||
|
- MANDATORY: Execute ALL steps in the EXECUTION 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
|
||||||
|
|
||||||
|
## EXECUTION
|
||||||
|
|
||||||
|
### Step 1: Get Source Document
|
||||||
|
|
||||||
|
- Ask user for the source document path if not provided already
|
||||||
|
- Verify file exists and is accessible
|
||||||
|
- Verify file is markdown format (.md extension)
|
||||||
|
- If file not found or not markdown: HALT with error message
|
||||||
|
|
||||||
|
### Step 2: Get Destination Folder
|
||||||
|
|
||||||
|
- Determine default destination: same location as source file, folder named after source file without .md extension
|
||||||
|
- Example: `/path/to/architecture.md` --> `/path/to/architecture/`
|
||||||
|
- Ask user for the destination folder path (`[y]` to confirm use of default: `[suggested-path]`, else enter a new path)
|
||||||
|
- If user accepts default: use the suggested destination path
|
||||||
|
- If user provides custom path: use the custom destination path
|
||||||
|
- Verify destination folder exists or can be created
|
||||||
|
- Check write permissions for destination
|
||||||
|
- If permission denied: HALT with error message
|
||||||
|
|
||||||
|
### Step 3: Execute Sharding
|
||||||
|
|
||||||
|
- Inform user that sharding is beginning
|
||||||
|
- Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]`
|
||||||
|
- Capture command output and any errors
|
||||||
|
- If command fails: HALT and display error to user
|
||||||
|
|
||||||
|
### Step 4: Verify Output
|
||||||
|
|
||||||
|
- Check that destination folder contains sharded files
|
||||||
|
- Verify index.md was created in destination folder
|
||||||
|
- Count the number of files created
|
||||||
|
- If no files created: HALT with error message
|
||||||
|
|
||||||
|
### Step 5: Report Completion
|
||||||
|
|
||||||
|
- Display completion report to user including:
|
||||||
|
- Source document path and name
|
||||||
|
- Destination folder path
|
||||||
|
- Number of section files created
|
||||||
|
- Confirmation that index.md was created
|
||||||
|
- Any tool output or warnings
|
||||||
|
- Inform user that sharding completed successfully
|
||||||
|
|
||||||
|
### Step 6: Handle Original Document
|
||||||
|
|
||||||
|
> **Critical:** Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion.
|
||||||
|
|
||||||
|
Present user with options for the original document:
|
||||||
|
|
||||||
|
> What would you like to do with the original document `[source-document-name]`?
|
||||||
|
>
|
||||||
|
> Options:
|
||||||
|
> - `[d]` Delete - Remove the original (recommended - shards can always be recombined)
|
||||||
|
> - `[m]` Move to archive - Move original to a backup/archive location
|
||||||
|
> - `[k]` Keep - Leave original in place (NOT recommended - defeats sharding purpose)
|
||||||
|
>
|
||||||
|
> Your choice (d/m/k):
|
||||||
|
|
||||||
|
#### If user selects `d` (delete)
|
||||||
|
|
||||||
|
- Delete the original source document file
|
||||||
|
- Confirm deletion to user: "Original document deleted: [source-document-path]"
|
||||||
|
- Note: The document can be reconstructed from shards by concatenating all section files in order
|
||||||
|
|
||||||
|
#### If user selects `m` (move)
|
||||||
|
|
||||||
|
- Determine default archive location: same directory as source, in an `archive` subfolder
|
||||||
|
- Example: `/path/to/architecture.md` --> `/path/to/archive/architecture.md`
|
||||||
|
- Ask: Archive location (`[y]` to use default: `[default-archive-path]`, or provide custom path)
|
||||||
|
- If user accepts default: use default archive path
|
||||||
|
- If user provides custom path: use custom archive path
|
||||||
|
- Create archive directory if it does not exist
|
||||||
|
- Move original document to archive location
|
||||||
|
- Confirm move to user: "Original document moved to: [archive-path]"
|
||||||
|
|
||||||
|
#### If user selects `k` (keep)
|
||||||
|
|
||||||
|
- Display warning to user:
|
||||||
|
- Keeping both original and sharded versions is NOT recommended
|
||||||
|
- The discover_inputs protocol may load the wrong version
|
||||||
|
- Updates to one will not reflect in the other
|
||||||
|
- Duplicate content taking up space
|
||||||
|
- Consider deleting or archiving the original document
|
||||||
|
- Confirm user choice: "Original document kept at: [source-document-path]"
|
||||||
|
|
||||||
|
## HALT CONDITIONS
|
||||||
|
|
||||||
|
- HALT if npx command fails or produces no output files
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
index-docs.xml:
|
|
||||||
canonicalId: bmad-index-docs
|
|
||||||
type: task
|
|
||||||
description: "Generates or updates an index.md to reference all docs in the folder"
|
|
||||||
|
|
||||||
shard-doc.xml:
|
|
||||||
canonicalId: bmad-shard-doc
|
|
||||||
type: task
|
|
||||||
description: "Splits large markdown documents into smaller, organized files based on sections"
|
|
||||||
|
|
@ -1,65 +0,0 @@
|
||||||
<task id="_bmad/core/tasks/index-docs" name="Index Docs"
|
|
||||||
description="Generates or updates an index.md to reference all docs in the folder. Use if user requests to create or update an index of all files in a specific folder">
|
|
||||||
<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>
|
|
||||||
</llm>
|
|
||||||
|
|
||||||
<flow>
|
|
||||||
<step n="1" title="Scan Directory">
|
|
||||||
<i>List all files and subdirectories in the target location</i>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="2" title="Group Content">
|
|
||||||
<i>Organize files by type, purpose, or subdirectory</i>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="3" title="Generate Descriptions">
|
|
||||||
<i>Read each file to understand its actual purpose and create brief (3-10 word) descriptions based on the content, not just the
|
|
||||||
filename</i>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="4" title="Create/Update Index">
|
|
||||||
<i>Write or update index.md with organized file listings</i>
|
|
||||||
</step>
|
|
||||||
</flow>
|
|
||||||
|
|
||||||
<output-format>
|
|
||||||
<example>
|
|
||||||
# Directory Index
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- **[filename.ext](./filename.ext)** - Brief description
|
|
||||||
- **[another-file.ext](./another-file.ext)** - Brief description
|
|
||||||
|
|
||||||
## Subdirectories
|
|
||||||
|
|
||||||
### subfolder/
|
|
||||||
|
|
||||||
- **[file1.ext](./subfolder/file1.ext)** - Brief description
|
|
||||||
- **[file2.ext](./subfolder/file2.ext)** - Brief description
|
|
||||||
|
|
||||||
### another-folder/
|
|
||||||
|
|
||||||
- **[file3.ext](./another-folder/file3.ext)** - Brief description
|
|
||||||
</example>
|
|
||||||
</output-format>
|
|
||||||
|
|
||||||
<halt-conditions critical="true">
|
|
||||||
<i>HALT if target directory does not exist or is inaccessible</i>
|
|
||||||
<i>HALT if user does not have write permissions to create index.md</i>
|
|
||||||
</halt-conditions>
|
|
||||||
|
|
||||||
<validation>
|
|
||||||
<i>Use relative paths starting with ./</i>
|
|
||||||
<i>Group similar files together</i>
|
|
||||||
<i>Read file contents to generate accurate descriptions - don't guess from filenames</i>
|
|
||||||
<i>Keep descriptions concise but informative (3-10 words)</i>
|
|
||||||
<i>Sort alphabetically within groups</i>
|
|
||||||
<i>Skip hidden files (starting with .) unless specified</i>
|
|
||||||
</validation>
|
|
||||||
</task>
|
|
||||||
|
|
@ -1,108 +0,0 @@
|
||||||
<task id="_bmad/core/tasks/shard-doc" name="Shard Document"
|
|
||||||
description="Splits large markdown documents into smaller, organized files based on level 2 (default) sections. Use if the user says perform shard document">
|
|
||||||
<objective>Split large markdown documents into smaller, organized files based on level 2 sections using @kayvan/markdown-tree-parser tool</objective>
|
|
||||||
|
|
||||||
<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>
|
|
||||||
</llm>
|
|
||||||
|
|
||||||
<critical-context>
|
|
||||||
<i>Uses `npx @kayvan/markdown-tree-parser` to automatically shard documents by level 2 headings and generate an index</i>
|
|
||||||
</critical-context>
|
|
||||||
|
|
||||||
<flow>
|
|
||||||
<step n="1" title="Get Source Document">
|
|
||||||
<action>Ask user for the source document path if not provided already</action>
|
|
||||||
<action>Verify file exists and is accessible</action>
|
|
||||||
<action>Verify file is markdown format (.md extension)</action>
|
|
||||||
<action if="file not found or not markdown">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="2" title="Get Destination Folder">
|
|
||||||
<action>Determine default destination: same location as source file, folder named after source file without .md extension</action>
|
|
||||||
<action>Example: /path/to/architecture.md → /path/to/architecture/</action>
|
|
||||||
<action>Ask user for the destination folder path ([y] to confirm use of default: [suggested-path], else enter a new path)</action>
|
|
||||||
<action if="user accepts default">Use the suggested destination path</action>
|
|
||||||
<action if="user provides custom path">Use the custom destination path</action>
|
|
||||||
<action>Verify destination folder exists or can be created</action>
|
|
||||||
<action>Check write permissions for destination</action>
|
|
||||||
<action if="permission denied">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="3" title="Execute Sharding">
|
|
||||||
<action>Inform user that sharding is beginning</action>
|
|
||||||
<action>Execute command: `npx @kayvan/markdown-tree-parser explode [source-document] [destination-folder]`</action>
|
|
||||||
<action>Capture command output and any errors</action>
|
|
||||||
<action if="command fails">HALT and display error to user</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="4" title="Verify Output">
|
|
||||||
<action>Check that destination folder contains sharded files</action>
|
|
||||||
<action>Verify index.md was created in destination folder</action>
|
|
||||||
<action>Count the number of files created</action>
|
|
||||||
<action if="no files created">HALT with error message</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="5" title="Report Completion">
|
|
||||||
<action>Display completion report to user including:</action>
|
|
||||||
<i>- Source document path and name</i>
|
|
||||||
<i>- Destination folder path</i>
|
|
||||||
<i>- Number of section files created</i>
|
|
||||||
<i>- Confirmation that index.md was created</i>
|
|
||||||
<i>- Any tool output or warnings</i>
|
|
||||||
<action>Inform user that sharding completed successfully</action>
|
|
||||||
</step>
|
|
||||||
|
|
||||||
<step n="6" title="Handle Original Document">
|
|
||||||
<critical>Keeping both the original and sharded versions defeats the purpose of sharding and can cause confusion</critical>
|
|
||||||
<action>Present user with options for the original document:</action>
|
|
||||||
|
|
||||||
<ask>What would you like to do with the original document `[source-document-name]`?
|
|
||||||
|
|
||||||
Options:
|
|
||||||
[d] Delete - Remove the original (recommended - shards can always be recombined)
|
|
||||||
[m] Move to archive - Move original to a backup/archive location
|
|
||||||
[k] Keep - Leave original in place (NOT recommended - defeats sharding purpose)
|
|
||||||
|
|
||||||
Your choice (d/m/k):</ask>
|
|
||||||
|
|
||||||
<check if="user selects 'd' (delete)">
|
|
||||||
<action>Delete the original source document file</action>
|
|
||||||
<action>Confirm deletion to user: "✓ Original document deleted: [source-document-path]"</action>
|
|
||||||
<note>The document can be reconstructed from shards by concatenating all section files in order</note>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user selects 'm' (move)">
|
|
||||||
<action>Determine default archive location: same directory as source, in an "archive" subfolder</action>
|
|
||||||
<action>Example: /path/to/architecture.md → /path/to/archive/architecture.md</action>
|
|
||||||
<ask>Archive location ([y] to use default: [default-archive-path], or provide custom path):</ask>
|
|
||||||
<action if="user accepts default">Use default archive path</action>
|
|
||||||
<action if="user provides custom path">Use custom archive path</action>
|
|
||||||
<action>Create archive directory if it doesn't exist</action>
|
|
||||||
<action>Move original document to archive location</action>
|
|
||||||
<action>Confirm move to user: "✓ Original document moved to: [archive-path]"</action>
|
|
||||||
</check>
|
|
||||||
|
|
||||||
<check if="user selects 'k' (keep)">
|
|
||||||
<action>Display warning to user:</action>
|
|
||||||
<output>⚠️ WARNING: Keeping both original and sharded versions is NOT recommended.
|
|
||||||
|
|
||||||
This creates confusion because:
|
|
||||||
- The discover_inputs protocol may load the wrong version
|
|
||||||
- Updates to one won't reflect in the other
|
|
||||||
- You'll have duplicate content taking up space
|
|
||||||
|
|
||||||
Consider deleting or archiving the original document.</output>
|
|
||||||
<action>Confirm user choice: "Original document kept at: [source-document-path]"</action>
|
|
||||||
</check>
|
|
||||||
</step>
|
|
||||||
</flow>
|
|
||||||
|
|
||||||
<halt-conditions critical="true">
|
|
||||||
<i>HALT if npx command fails or produces no output files</i>
|
|
||||||
</halt-conditions>
|
|
||||||
</task>
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
name: bmad-party-mode
|
||||||
|
description: 'Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations. Use when user requests party mode.'
|
||||||
|
---
|
||||||
|
|
||||||
|
Follow the instructions in [workflow.md](workflow.md).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
type: skill
|
||||||
|
|
@ -93,7 +93,6 @@ Final workflow completion steps:
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
stepsCompleted: [1, 2, 3]
|
stepsCompleted: [1, 2, 3]
|
||||||
workflowType: 'party-mode'
|
|
||||||
user_name: '{{user_name}}'
|
user_name: '{{user_name}}'
|
||||||
date: '{{date}}'
|
date: '{{date}}'
|
||||||
agents_loaded: true
|
agents_loaded: true
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: party-mode
|
name: bmad-party-mode
|
||||||
description: 'Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations. Use when user requests party mode.'
|
description: 'Orchestrates group discussions between all installed BMAD agents, enabling natural multi-agent conversations. Use when user requests party mode.'
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -36,7 +36,6 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
|
||||||
|
|
||||||
### Paths
|
### Paths
|
||||||
|
|
||||||
- `installed_path` = `{project-root}/_bmad/core/workflows/party-mode`
|
|
||||||
- `agent_manifest_path` = `{project-root}/_bmad/_config/agent-manifest.csv`
|
- `agent_manifest_path` = `{project-root}/_bmad/_config/agent-manifest.csv`
|
||||||
- `standalone_mode` = `true` (party mode is an interactive workflow)
|
- `standalone_mode` = `true` (party mode is an interactive workflow)
|
||||||
|
|
||||||
|
|
@ -115,7 +114,6 @@ Load step: `./steps/step-02-discussion-orchestration.md`
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
stepsCompleted: [1]
|
stepsCompleted: [1]
|
||||||
workflowType: 'party-mode'
|
|
||||||
user_name: '{{user_name}}'
|
user_name: '{{user_name}}'
|
||||||
date: '{{date}}'
|
date: '{{date}}'
|
||||||
agents_loaded: true
|
agents_loaded: true
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
canonicalId: bmad-party-mode
|
|
||||||
type: workflow
|
|
||||||
description: "Orchestrates group discussions between all installed BMAD agents"
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs
|
module,phase,name,code,sequence,workflow-file,command,required,agent,options,description,output-location,outputs
|
||||||
core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate ideas",{output_folder}/brainstorming.md,
|
core,anytime,Brainstorming,BSP,,_bmad/core/workflows/brainstorming/workflow.md,bmad-brainstorming,false,analyst,,"Generate ideas",{output_folder}/brainstorming.md,
|
||||||
core,anytime,Party Mode,PM,,_bmad/core/workflows/party-mode/workflow.md,bmad-party-mode,false,facilitator,,"Multi-agent discussion",,
|
core,anytime,Party Mode,PM,,_bmad/core/workflows/bmad-party-mode/workflow.md,bmad-party-mode,false,facilitator,,"Multi-agent discussion",,
|
||||||
|
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ test('core-style.csv: extracts refs from core module-help format', () => {
|
||||||
const refs = extractCsvRefs(fullPath, content);
|
const refs = extractCsvRefs(fullPath, content);
|
||||||
assert(refs.length === 2, `Expected 2 refs, got ${refs.length}`);
|
assert(refs.length === 2, `Expected 2 refs, got ${refs.length}`);
|
||||||
assert(refs[0].raw === '_bmad/core/workflows/brainstorming/workflow.md', `Wrong raw[0]: ${refs[0].raw}`);
|
assert(refs[0].raw === '_bmad/core/workflows/brainstorming/workflow.md', `Wrong raw[0]: ${refs[0].raw}`);
|
||||||
assert(refs[1].raw === '_bmad/core/workflows/party-mode/workflow.md', `Wrong raw[1]: ${refs[1].raw}`);
|
assert(refs[1].raw === '_bmad/core/workflows/bmad-party-mode/workflow.md', `Wrong raw[1]: ${refs[1].raw}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('minimal.csv: extracts refs from minimal 3-column CSV', () => {
|
test('minimal.csv: extracts refs from minimal 3-column CSV', () => {
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,60 @@ async function createTestBmadFixture() {
|
||||||
return fixtureDir;
|
return fixtureDir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function createSkillCollisionFixture() {
|
||||||
|
const fixtureRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-skill-collision-'));
|
||||||
|
const fixtureDir = path.join(fixtureRoot, '_bmad');
|
||||||
|
const configDir = path.join(fixtureDir, '_config');
|
||||||
|
await fs.ensureDir(configDir);
|
||||||
|
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(configDir, 'agent-manifest.csv'),
|
||||||
|
[
|
||||||
|
'name,displayName,title,icon,capabilities,role,identity,communicationStyle,principles,module,path,canonicalId',
|
||||||
|
'"bmad-master","BMAD Master","","","","","","","","core","_bmad/core/agents/bmad-master.md","bmad-master"',
|
||||||
|
'',
|
||||||
|
].join('\n'),
|
||||||
|
);
|
||||||
|
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(configDir, 'workflow-manifest.csv'),
|
||||||
|
[
|
||||||
|
'name,description,module,path,canonicalId',
|
||||||
|
'"help","Workflow help","core","_bmad/core/workflows/help/workflow.md","bmad-help"',
|
||||||
|
'',
|
||||||
|
].join('\n'),
|
||||||
|
);
|
||||||
|
|
||||||
|
await fs.writeFile(path.join(configDir, 'task-manifest.csv'), 'name,displayName,description,module,path,standalone,canonicalId\n');
|
||||||
|
await fs.writeFile(path.join(configDir, 'tool-manifest.csv'), 'name,displayName,description,module,path,standalone,canonicalId\n');
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(configDir, 'skill-manifest.csv'),
|
||||||
|
[
|
||||||
|
'canonicalId,name,description,module,path,install_to_bmad',
|
||||||
|
'"bmad-help","bmad-help","Native help skill","core","_bmad/core/tasks/bmad-help/SKILL.md","true"',
|
||||||
|
'',
|
||||||
|
].join('\n'),
|
||||||
|
);
|
||||||
|
|
||||||
|
const skillDir = path.join(fixtureDir, 'core', 'tasks', 'bmad-help');
|
||||||
|
await fs.ensureDir(skillDir);
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(skillDir, 'SKILL.md'),
|
||||||
|
['---', 'name: bmad-help', 'description: Native help skill', '---', '', 'Use this skill directly.'].join('\n'),
|
||||||
|
);
|
||||||
|
|
||||||
|
const agentDir = path.join(fixtureDir, 'core', 'agents');
|
||||||
|
await fs.ensureDir(agentDir);
|
||||||
|
await fs.writeFile(
|
||||||
|
path.join(agentDir, 'bmad-master.md'),
|
||||||
|
['---', 'name: BMAD Master', 'description: Master agent', '---', '', '<agent name="BMAD Master" title="Master">', '</agent>'].join(
|
||||||
|
'\n',
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
return { root: fixtureRoot, bmadDir: fixtureDir };
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test Suite
|
* Test Suite
|
||||||
*/
|
*/
|
||||||
|
|
@ -1770,6 +1824,50 @@ async function runTests() {
|
||||||
|
|
||||||
console.log('');
|
console.log('');
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// Test 31: Skill-format installs report unique skill directories
|
||||||
|
// ============================================================
|
||||||
|
console.log(`${colors.yellow}Test Suite 31: Skill Count Reporting${colors.reset}\n`);
|
||||||
|
|
||||||
|
let collisionFixtureRoot = null;
|
||||||
|
let collisionProjectDir = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
clearCache();
|
||||||
|
const collisionFixture = await createSkillCollisionFixture();
|
||||||
|
collisionFixtureRoot = collisionFixture.root;
|
||||||
|
collisionProjectDir = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-antigravity-test-'));
|
||||||
|
|
||||||
|
const ideManager = new IdeManager();
|
||||||
|
await ideManager.ensureInitialized();
|
||||||
|
const result = await ideManager.setup('antigravity', collisionProjectDir, collisionFixture.bmadDir, {
|
||||||
|
silent: true,
|
||||||
|
selectedModules: ['core'],
|
||||||
|
});
|
||||||
|
|
||||||
|
assert(result.success === true, 'Antigravity setup succeeds with overlapping skill names');
|
||||||
|
assert(result.detail === '2 agents', 'Installer detail reports agents separately from skills');
|
||||||
|
assert(result.handlerResult.results.skillDirectories === 2, 'Result exposes unique skill directory count');
|
||||||
|
assert(result.handlerResult.results.agents === 2, 'Result retains generated agent write count');
|
||||||
|
assert(result.handlerResult.results.workflows === 1, 'Result retains generated workflow count');
|
||||||
|
assert(result.handlerResult.results.skills === 1, 'Result retains verbatim skill count');
|
||||||
|
assert(
|
||||||
|
await fs.pathExists(path.join(collisionProjectDir, '.agent', 'skills', 'bmad-agent-bmad-master', 'SKILL.md')),
|
||||||
|
'Agent skill directory is created',
|
||||||
|
);
|
||||||
|
assert(
|
||||||
|
await fs.pathExists(path.join(collisionProjectDir, '.agent', 'skills', 'bmad-help', 'SKILL.md')),
|
||||||
|
'Overlapping skill directory is created once',
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
assert(false, 'Skill-format unique count test succeeds', error.message);
|
||||||
|
} finally {
|
||||||
|
if (collisionProjectDir) await fs.remove(collisionProjectDir).catch(() => {});
|
||||||
|
if (collisionFixtureRoot) await fs.remove(collisionFixtureRoot).catch(() => {});
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
|
||||||
// ============================================================
|
// ============================================================
|
||||||
// Summary
|
// Summary
|
||||||
// ============================================================
|
// ============================================================
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,15 @@
|
||||||
# allowing us to keep the source of these projects in separate repos.
|
# allowing us to keep the source of these projects in separate repos.
|
||||||
|
|
||||||
modules:
|
modules:
|
||||||
bmad-builder:
|
# bmad-builder:
|
||||||
url: https://github.com/bmad-code-org/bmad-builder
|
# url: https://github.com/bmad-code-org/bmad-builder
|
||||||
module-definition: src/module.yaml
|
# module-definition: src/module.yaml
|
||||||
code: bmb
|
# code: bmb
|
||||||
name: "BMad Builder"
|
# name: "BMad Builder"
|
||||||
description: "Agent, Workflow and Module Builder"
|
# description: "Agent, Workflow and Module Builder"
|
||||||
defaultSelected: false
|
# defaultSelected: false
|
||||||
type: bmad-org
|
# type: bmad-org
|
||||||
npmPackage: bmad-builder
|
# npmPackage: bmad-builder
|
||||||
|
|
||||||
bmad-creative-intelligence-suite:
|
bmad-creative-intelligence-suite:
|
||||||
url: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite
|
url: https://github.com/bmad-code-org/bmad-module-creative-intelligence-suite
|
||||||
|
|
|
||||||
|
|
@ -1153,12 +1153,6 @@ class Installer {
|
||||||
preservedModules: modulesForCsvPreserve,
|
preservedModules: modulesForCsvPreserve,
|
||||||
});
|
});
|
||||||
|
|
||||||
addResult(
|
|
||||||
'Manifests',
|
|
||||||
'ok',
|
|
||||||
`${manifestStats.workflows} workflows, ${manifestStats.agents} agents, ${manifestStats.tasks} tasks, ${manifestStats.tools} tools`,
|
|
||||||
);
|
|
||||||
|
|
||||||
// Merge help catalogs
|
// Merge help catalogs
|
||||||
message('Generating help catalog...');
|
message('Generating help catalog...');
|
||||||
await this.mergeModuleHelpCatalogs(bmadDir);
|
await this.mergeModuleHelpCatalogs(bmadDir);
|
||||||
|
|
@ -1379,10 +1373,27 @@ class Installer {
|
||||||
*/
|
*/
|
||||||
async renderInstallSummary(results, context = {}) {
|
async renderInstallSummary(results, context = {}) {
|
||||||
const color = await prompts.getColor();
|
const color = await prompts.getColor();
|
||||||
|
const selectedIdes = new Set((context.ides || []).map((ide) => String(ide).toLowerCase()));
|
||||||
|
|
||||||
// Build step lines with status indicators
|
// Build step lines with status indicators
|
||||||
const lines = [];
|
const lines = [];
|
||||||
for (const r of results) {
|
for (const r of results) {
|
||||||
|
let stepLabel = null;
|
||||||
|
|
||||||
|
if (r.status !== 'ok') {
|
||||||
|
stepLabel = r.step;
|
||||||
|
} else if (r.step === 'Core') {
|
||||||
|
stepLabel = 'BMAD';
|
||||||
|
} else if (r.step.startsWith('Module: ')) {
|
||||||
|
stepLabel = r.step;
|
||||||
|
} else if (selectedIdes.has(String(r.step).toLowerCase())) {
|
||||||
|
stepLabel = r.step;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!stepLabel) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
let icon;
|
let icon;
|
||||||
if (r.status === 'ok') {
|
if (r.status === 'ok') {
|
||||||
icon = color.green('\u2713');
|
icon = color.green('\u2713');
|
||||||
|
|
@ -1392,7 +1403,11 @@ class Installer {
|
||||||
icon = color.red('\u2717');
|
icon = color.red('\u2717');
|
||||||
}
|
}
|
||||||
const detail = r.detail ? color.dim(` (${r.detail})`) : '';
|
const detail = r.detail ? color.dim(` (${r.detail})`) : '';
|
||||||
lines.push(` ${icon} ${r.step}${detail}`);
|
lines.push(` ${icon} ${stepLabel}${detail}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((context.ides || []).length === 0) {
|
||||||
|
lines.push(` ${color.green('\u2713')} No IDE selected ${color.dim('(installed in _bmad only)')}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Context and warnings
|
// Context and warnings
|
||||||
|
|
@ -1415,8 +1430,10 @@ class Installer {
|
||||||
` Join our Discord: ${color.dim('https://discord.gg/gk8jAdXWmj')}`,
|
` Join our Discord: ${color.dim('https://discord.gg/gk8jAdXWmj')}`,
|
||||||
` Star us on GitHub: ${color.dim('https://github.com/bmad-code-org/BMAD-METHOD/')}`,
|
` Star us on GitHub: ${color.dim('https://github.com/bmad-code-org/BMAD-METHOD/')}`,
|
||||||
` Subscribe on YouTube: ${color.dim('https://www.youtube.com/@BMadCode')}`,
|
` Subscribe on YouTube: ${color.dim('https://www.youtube.com/@BMadCode')}`,
|
||||||
` Invoke the ${color.cyan('bmad-help')} skill in your IDE Agent to get started`,
|
|
||||||
);
|
);
|
||||||
|
if (context.ides && context.ides.length > 0) {
|
||||||
|
lines.push(` Invoke the ${color.cyan('bmad-help')} skill in your IDE Agent to get started`);
|
||||||
|
}
|
||||||
|
|
||||||
await prompts.note(lines.join('\n'), 'BMAD is ready to use!');
|
await prompts.note(lines.join('\n'), 'BMAD is ready to use!');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,7 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup {
|
||||||
|
|
||||||
const selectedModules = options.selectedModules || [];
|
const selectedModules = options.selectedModules || [];
|
||||||
const results = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
|
const results = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
|
||||||
|
this.skillWriteTracker = config.skill_format ? new Set() : null;
|
||||||
|
|
||||||
// Install standard artifacts (agents, workflows, tasks, tools)
|
// Install standard artifacts (agents, workflows, tasks, tools)
|
||||||
if (!skipStandardArtifacts) {
|
if (!skipStandardArtifacts) {
|
||||||
|
|
@ -159,9 +160,11 @@ class ConfigDrivenIdeSetup extends BaseIdeSetup {
|
||||||
// Install verbatim skills (type: skill)
|
// Install verbatim skills (type: skill)
|
||||||
if (config.skill_format) {
|
if (config.skill_format) {
|
||||||
results.skills = await this.installVerbatimSkills(projectDir, bmadDir, targetPath, config);
|
results.skills = await this.installVerbatimSkills(projectDir, bmadDir, targetPath, config);
|
||||||
|
results.skillDirectories = this.skillWriteTracker ? this.skillWriteTracker.size : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.printSummary(results, target_dir, options);
|
await this.printSummary(results, target_dir, options);
|
||||||
|
this.skillWriteTracker = null;
|
||||||
return { success: true, results };
|
return { success: true, results };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -495,6 +498,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
// Create skill directory
|
// Create skill directory
|
||||||
const skillDir = path.join(targetPath, skillName);
|
const skillDir = path.join(targetPath, skillName);
|
||||||
await this.ensureDir(skillDir);
|
await this.ensureDir(skillDir);
|
||||||
|
this.skillWriteTracker?.add(skillName);
|
||||||
|
|
||||||
// Transform content: rewrite frontmatter for skills format
|
// Transform content: rewrite frontmatter for skills format
|
||||||
const skillContent = this.transformToSkillFormat(content, skillName);
|
const skillContent = this.transformToSkillFormat(content, skillName);
|
||||||
|
|
@ -667,6 +671,7 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
const skillDir = path.join(targetPath, canonicalId);
|
const skillDir = path.join(targetPath, canonicalId);
|
||||||
await fs.remove(skillDir);
|
await fs.remove(skillDir);
|
||||||
await fs.ensureDir(skillDir);
|
await fs.ensureDir(skillDir);
|
||||||
|
this.skillWriteTracker?.add(canonicalId);
|
||||||
|
|
||||||
// Copy all skill files, filtering OS/editor artifacts recursively
|
// Copy all skill files, filtering OS/editor artifacts recursively
|
||||||
const skipPatterns = new Set(['.DS_Store', 'Thumbs.db', 'desktop.ini']);
|
const skipPatterns = new Set(['.DS_Store', 'Thumbs.db', 'desktop.ini']);
|
||||||
|
|
@ -707,11 +712,11 @@ LOAD and execute from: {project-root}/{{bmadFolderName}}/{{path}}
|
||||||
async printSummary(results, targetDir, options = {}) {
|
async printSummary(results, targetDir, options = {}) {
|
||||||
if (options.silent) return;
|
if (options.silent) return;
|
||||||
const parts = [];
|
const parts = [];
|
||||||
|
const totalDirs =
|
||||||
|
results.skillDirectories || (results.workflows || 0) + (results.tasks || 0) + (results.tools || 0) + (results.skills || 0);
|
||||||
|
const skillCount = totalDirs - (results.agents || 0);
|
||||||
|
if (skillCount > 0) parts.push(`${skillCount} skills`);
|
||||||
if (results.agents > 0) parts.push(`${results.agents} agents`);
|
if (results.agents > 0) parts.push(`${results.agents} agents`);
|
||||||
if (results.workflows > 0) parts.push(`${results.workflows} workflows`);
|
|
||||||
if (results.tasks > 0) parts.push(`${results.tasks} tasks`);
|
|
||||||
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}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -162,10 +162,10 @@ class IdeManager {
|
||||||
// Config-driven handlers return { success, results: { agents, workflows, tasks, tools } }
|
// Config-driven handlers return { success, results: { agents, workflows, tasks, tools } }
|
||||||
const r = handlerResult.results;
|
const r = handlerResult.results;
|
||||||
const parts = [];
|
const parts = [];
|
||||||
|
const totalDirs = r.skillDirectories || (r.workflows || 0) + (r.tasks || 0) + (r.tools || 0) + (r.skills || 0);
|
||||||
|
const skillCount = totalDirs - (r.agents || 0);
|
||||||
|
if (skillCount > 0) parts.push(`${skillCount} skills`);
|
||||||
if (r.agents > 0) parts.push(`${r.agents} agents`);
|
if (r.agents > 0) parts.push(`${r.agents} agents`);
|
||||||
if (r.workflows > 0) parts.push(`${r.workflows} workflows`);
|
|
||||||
if (r.tasks > 0) parts.push(`${r.tasks} tasks`);
|
|
||||||
if (r.tools > 0) parts.push(`${r.tools} tools`);
|
|
||||||
detail = parts.join(', ');
|
detail = parts.join(', ');
|
||||||
}
|
}
|
||||||
// Propagate handler's success status (default true for backward compat)
|
// Propagate handler's success status (default true for backward compat)
|
||||||
|
|
|
||||||
|
|
@ -157,7 +157,7 @@ function buildMenuXml(menuItems) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
xml += ` <item cmd="PM or fuzzy match on party-mode" exec="{project-root}/_bmad/core/workflows/party-mode/workflow.md">[PM] Start Party Mode</item>\n`;
|
xml += ` <item cmd="PM or fuzzy match on party-mode" exec="{project-root}/_bmad/core/workflows/bmad-party-mode/workflow.md">[PM] Start Party Mode</item>\n`;
|
||||||
xml += ` <item cmd="DA or fuzzy match on exit, leave, goodbye or dismiss agent">[DA] Dismiss Agent</item>\n`;
|
xml += ` <item cmd="DA or fuzzy match on exit, leave, goodbye or dismiss agent">[DA] Dismiss Agent</item>\n`;
|
||||||
|
|
||||||
xml += ' </menu>\n';
|
xml += ' </menu>\n';
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue