Compare commits

...

13 Commits

Author SHA1 Message Date
Mathieu Santostefano ec02c04bc1
Merge d8a4f84b52 into 75ec4aa504 2026-03-12 17:06:39 +00:00
Alex Verkhovsky 75ec4aa504 ci(publish): restrict workflow to upstream repo only
Prevent publish job from running on forks by gating on
github.repository == 'bmad-code-org/BMAD-METHOD'.
2026-03-12 11:00:52 -06:00
Alex Verkhovsky 7b4875be79
fix(installer): separate skill and agent counts in summary (#1932)
Subtract agents from total skill directories so the summary shows
non-agent skills and agents as distinct counts (e.g. 34 skills, 10
agents) instead of double-counting agents in the skill total.
2026-03-12 09:13:14 -06:00
Alex Verkhovsky c57506464f
fix(installer): simplify install summary (#1915)
* fix(installer): simplify install summary

* style: fix prettier formatting in test file

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(installer): clean up temp dir leak and conditional IDE footer

- Return fixture root from createSkillCollisionFixture so cleanup
  removes the parent temp directory, not just the _bmad child
- Only show bmad-help next-step line when IDEs are configured

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 08:39:10 -06:00
Alex Verkhovsky 861716fbe3
fix: address PR review findings from party-mode skill conversion (#1919)
- Fix bare directory ref missing /workflow.md in step-02-generate.md
- Remove stale workflowType: 'party-mode' from workflow.md and step-03
- Remove unused decorative aliases from quick-dev-new-preview workflow

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 00:37:30 -06:00
Brian Madison 0ba809c3e8 temporarily disable bmm from installation 2026-03-12 00:16:42 -05:00
Nikolas Hor 42aa184074
fix: add .npmignore to reduce npm tarball from 533 to 348 files (#1900)
The package was shipping 6.2 MB including docs/, website/, test/,
.github/, banner images, and dev config files. With .npmignore,
the tarball drops to 555 KB (91% reduction) while keeping all
runtime files (src/, tools/cli/, tools/lib/).

Fixes #1870

Co-authored-by: Brian <bmadcode@gmail.com>
2026-03-11 22:49:46 -05:00
Alex Verkhovsky 5a5ade333a
refactor(skills): convert party-mode to native skill directory (#1906)
- Rename party-mode → bmad-party-mode (canonical ID convention)
- Change bmad-skill-manifest.yaml from type:workflow to type:skill
- Add SKILL.md with frontmatter for installer discovery
- Remove installed_path, use relative ./steps/ refs internally
- Update module-help.csv to skill:bmad-party-mode
- Update compiler.js hardcoded PM menu path
- Update 43 cross-references to IDE-agnostic _bmad/ path
- Update test fixtures for renamed directory

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 22:48:29 -05:00
Nikolas Hor 7f7ce8c5e3
docs: document which agent triggers require arguments (#1908)
Adds a "Trigger Types" section to the agents reference page
explaining the difference between workflow triggers (no arguments)
and conversational triggers (arguments required). Lists all
Technical Writer triggers that expect user-provided input with
examples of proper usage.

Fixes #1682
2026-03-11 22:46:56 -05:00
Nikolas Hor 5e1149dc14
fix: consume UX Design Specification as first-class input in create-epics-and-stories (#1909)
The create-epics-and-stories workflow previously relegated UX Design
requirements to a vague "Additional Requirements" list, causing
actionable UX work items (design tokens, component proposals,
accessibility audits) to be silently dropped from the epic/story
breakdown.

Changes:
- step-01: Elevate UX Design extraction to first-class with dedicated
  UX-DR identifiers and thorough extraction guidance
- step-03: Add UX Design integration guidance for story creation and
  final validation coverage check
- epics-template: Add dedicated UX Design Requirements section

Co-authored-by: Brian <bmadcode@gmail.com>
2026-03-11 22:39:31 -05:00
Nikolas Hor df9a7f9b67
docs: fix contradictory Quinn workflow placement in testing reference (#1911)
The testing reference page incorrectly described Quinn's Automate
workflow as running per-story before Code Review, contradicting the
workflow map which positions it after epic completion. Align the testing
page with the workflow map: Quinn runs after all stories in an epic are
implemented and code-reviewed.
2026-03-11 22:35:27 -05:00
Nikolas Hor 9cd362d2d8
fix: remove mandatory minimum issue count from code review workflow (#1913)
The code review workflow required finding 3-10 issues minimum per review
and forced the agent to keep looking if fewer than 3 were found. This
created an endless review cycle where every review manufactures issues
even after previous fixes were applied, because the workflow cannot
conclude with "no issues found."

Replace the hard minimum with a zero-issue sanity check that allows
clean reviews after a thorough re-examination, while preserving the
adversarial review approach for genuine issues.
2026-03-11 22:33:50 -05:00
Copilot d8a4f84b52
feat: add Mistral Vibe CLI platform support (#1)
* Initial plan

* feat: add Mistral Vibe CLI platform support

Co-authored-by: welcoMattic <773875+welcoMattic@users.noreply.github.com>

* docs: add Mistral Vibe to installation documentation

Co-authored-by: welcoMattic <773875+welcoMattic@users.noreply.github.com>

* Fix directory name for Mistral Vibe skills in docs

* Update Mistral Vibe target directory in tests

* Change target directory for Mistral's CLI installer

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: welcoMattic <773875+welcoMattic@users.noreply.github.com>
Co-authored-by: Mathieu Santostefano <msantostefano@proton.me>
2026-03-11 13:39:31 +01:00
69 changed files with 445 additions and 129 deletions

View File

@ -37,7 +37,7 @@ permissions:
jobs: jobs:
publish: publish:
if: github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/main' if: github.repository == 'bmad-code-org/BMAD-METHOD' && (github.event_name != 'workflow_dispatch' || github.ref == 'refs/heads/main')
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout

40
.npmignore Normal file
View File

@ -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

View File

@ -58,6 +58,7 @@ Pick which AI tools you use:
- Claude Code - Claude Code
- Cursor - Cursor
- Mistral Vibe
- Others - Others
Each tool has its own way of integrating skills. The installer creates tiny prompt files to activate workflows and agents — it just puts them where your tool expects to find them. Each tool has its own way of integrating skills. The installer creates tiny prompt files to activate workflows and agents — it just puts them where your tool expects to find them.
@ -89,7 +90,10 @@ your-project/
│ ├── bmad-help/ │ ├── bmad-help/
│ ├── bmad-persona/ │ ├── bmad-persona/
│ └── ... │ └── ...
└── .cursor/ # Cursor skills (if using Cursor) ├── .cursor/ # Cursor skills (if using Cursor)
│ └── skills/
│ └── ...
└── .vibe/ # Mistral Vibe skills (if using Mistral Vibe)
└── skills/ └── skills/
└── ... └── ...
``` ```

View File

@ -61,6 +61,8 @@ Available tool IDs for the `--tools` flag:
**Preferred:** `claude-code`, `cursor` **Preferred:** `claude-code`, `cursor`
**Other CLIs:** `mistral`, `gemini`, `codex`, `auggie`, `pi`
Run `npx bmad-method install` interactively once to see the full current list of supported tools, or check the [platform codes configuration](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/tools/cli/installers/lib/ide/platform-codes.yaml). Run `npx bmad-method install` interactively once to see the full current list of supported tools, or check the [platform codes configuration](https://github.com/bmad-code-org/BMAD-METHOD/blob/main/tools/cli/installers/lib/ide/platform-codes.yaml).
## Installation Modes ## Installation Modes

View File

@ -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
```

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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'
--- ---

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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'

View File

@ -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:

View File

@ -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'

View File

@ -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}}

View File

@ -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>

View File

@ -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

View File

@ -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`
--- ---

View File

@ -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'
--- ---

View File

@ -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

View File

@ -1,6 +1,6 @@
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,,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,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,,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,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.",,

Can't render this file because it has a wrong number of fields in line 2.

View File

@ -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).

View File

@ -0,0 +1 @@
type: skill

View File

@ -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

View File

@ -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

View File

@ -1,3 +0,0 @@
canonicalId: bmad-party-mode
type: workflow
description: "Orchestrates group discussions between all installed BMAD agents"

View File

@ -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",,

1 module phase name code sequence workflow-file command required agent options description output-location outputs
2 core anytime Brainstorming BSP _bmad/core/workflows/brainstorming/workflow.md bmad-brainstorming false analyst Generate ideas {output_folder}/brainstorming.md
3 core anytime Party Mode PM _bmad/core/workflows/party-mode/workflow.md _bmad/core/workflows/bmad-party-mode/workflow.md bmad-party-mode false facilitator Multi-agent discussion

View File

@ -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', () => {

View File

@ -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
*/ */
@ -1591,9 +1645,99 @@ async function runTests() {
console.log(''); console.log('');
// ============================================================ // ============================================================
// Suite 29: Unified Skill Scanner — collectSkills // Suite 29: Mistral Vibe CLI Native Skills
// ============================================================ // ============================================================
console.log(`${colors.yellow}Test Suite 29: Unified Skill Scanner${colors.reset}\n`); console.log(`${colors.yellow}Test Suite 29: Mistral Vibe CLI Native Skills${colors.reset}\n`);
let tempProjectDir29;
let installedBmadDir29;
try {
clearCache();
const platformCodes29 = await loadPlatformCodes();
const mistralInstaller = platformCodes29.platforms.mistral?.installer;
assert(mistralInstaller?.target_dir === '.vibe/skills', 'Mistral Vibe target_dir uses native skills path');
assert(mistralInstaller?.skill_format === true, 'Mistral Vibe installer enables native skill output');
assert(mistralInstaller?.template_type === 'default', 'Mistral Vibe installer uses default skill template');
tempProjectDir29 = await fs.mkdtemp(path.join(os.tmpdir(), 'bmad-mistral-test-'));
installedBmadDir29 = await createTestBmadFixture();
const ideManager29 = new IdeManager();
await ideManager29.ensureInitialized();
// Verify Mistral Vibe is selectable in available IDEs list
const availableIdes29 = ideManager29.getAvailableIdes();
assert(
availableIdes29.some((ide) => ide.value === 'mistral'),
'Mistral Vibe appears in available IDEs list',
);
// Verify Mistral Vibe is NOT detected before install
const detectedBefore29 = await ideManager29.detectInstalledIdes(tempProjectDir29);
assert(!detectedBefore29.includes('mistral'), 'Mistral Vibe is not detected before install');
const result29 = await ideManager29.setup('mistral', tempProjectDir29, installedBmadDir29, {
silent: true,
selectedModules: ['bmm'],
});
assert(result29.success === true, 'Mistral Vibe setup succeeds against temp project');
// Verify Mistral Vibe IS detected after install
const detectedAfter29 = await ideManager29.detectInstalledIdes(tempProjectDir29);
assert(detectedAfter29.includes('mistral'), 'Mistral Vibe is detected after install');
const skillFile29 = path.join(tempProjectDir29, '.vibe', 'skills', 'bmad-master', 'SKILL.md');
assert(await fs.pathExists(skillFile29), 'Mistral Vibe install writes SKILL.md directory output');
// Parse YAML frontmatter between --- markers
const skillContent29 = await fs.readFile(skillFile29, 'utf8');
const fmMatch29 = skillContent29.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
assert(fmMatch29, 'Mistral Vibe SKILL.md contains valid frontmatter delimiters');
const frontmatter29 = fmMatch29[1];
const body29 = fmMatch29[2];
// Verify name in frontmatter matches directory name
const fmName29 = frontmatter29.match(/^name:\s*(.+)$/m);
assert(fmName29 && fmName29[1].trim() === 'bmad-master', 'Mistral Vibe skill name frontmatter matches directory name exactly');
// Verify description exists and is non-empty
const fmDesc29 = frontmatter29.match(/^description:\s*(.+)$/m);
assert(fmDesc29 && fmDesc29[1].trim().length > 0, 'Mistral Vibe skill description frontmatter is present and non-empty');
// Verify frontmatter contains only name and description keys
const fmKeys29 = [...frontmatter29.matchAll(/^([a-zA-Z0-9_-]+):/gm)].map((m) => m[1]);
assert(
fmKeys29.length === 2 && fmKeys29.includes('name') && fmKeys29.includes('description'),
'Mistral Vibe skill frontmatter contains only name and description keys',
);
// Verify body content is non-empty and contains expected activation instructions
assert(body29.trim().length > 0, 'Mistral Vibe skill body content is non-empty');
assert(body29.includes('agent-activation'), 'Mistral Vibe skill body contains expected agent activation instructions');
// Reinstall/upgrade: run setup again over existing output
const result29b = await ideManager29.setup('mistral', tempProjectDir29, installedBmadDir29, {
silent: true,
selectedModules: ['bmm'],
});
assert(result29b.success === true, 'Mistral Vibe reinstall/upgrade succeeds over existing skills');
assert(await fs.pathExists(skillFile29), 'Mistral Vibe reinstall preserves SKILL.md output');
} catch (error) {
assert(false, 'Mistral Vibe native skills test succeeds', error.message);
} finally {
if (tempProjectDir29) await fs.remove(tempProjectDir29).catch(() => {});
if (installedBmadDir29) await fs.remove(installedBmadDir29).catch(() => {});
}
console.log('');
// ============================================================
// Suite 30: Unified Skill Scanner — collectSkills
// ============================================================
console.log(`${colors.yellow}Test Suite 30: Unified Skill Scanner${colors.reset}\n`);
let tempFixture29; let tempFixture29;
try { try {
@ -1704,9 +1848,9 @@ async function runTests() {
console.log(''); console.log('');
// ============================================================ // ============================================================
// Suite 30: parseSkillMd validation (negative cases) // Suite 31: parseSkillMd validation (negative cases)
// ============================================================ // ============================================================
console.log(`${colors.yellow}Test Suite 30: parseSkillMd Validation${colors.reset}\n`); console.log(`${colors.yellow}Test Suite 31: parseSkillMd Validation${colors.reset}\n`);
let tempFixture30; let tempFixture30;
try { try {
@ -1770,6 +1914,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
// ============================================================ // ============================================================

View File

@ -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

View File

@ -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!');
} }

View File

@ -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}`);
} }

View File

@ -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)

View File

@ -176,6 +176,16 @@ platforms:
template_type: kiro template_type: kiro
skill_format: true skill_format: true
mistral:
name: "Mistral Vibe"
preferred: false
category: cli
description: "Mistral's AI coding CLI"
installer:
target_dir: .vibe/skills
template_type: default
skill_format: true
opencode: opencode:
name: "OpenCode" name: "OpenCode"
preferred: false preferred: false

View File

@ -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';