Compare commits

...

11 Commits

Author SHA1 Message Date
Ajay Kumar 018fa8da92
Merge ace23f6902 into efc69ffb2c 2026-03-02 15:43:12 +01:00
Brian Madison efc69ffb2c config for agent teams opt in and subagents opt out core config 2026-03-01 13:27:39 -06:00
Brian Madison 44972d62b9 chore(release): bump to v6.0.4 2026-02-28 19:20:45 -06:00
Brian Madison deedf18fc5 changelog: prepare v6.0.4 release 2026-02-28 19:20:28 -06:00
Brian Madison 17fe438452 fix brainstorming so that it will not overwrite previous brainstormings, and it will also ask if you want to continue a previous one or start a new one when older brainstormings are found. 2026-02-28 19:16:44 -06:00
Dicky Moore d036d34892
fix(templates): replace @ path prefixes with {project-root} (#1769)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-02-28 18:49:31 -06:00
Alex Verkhovsky bc7c7f0757
fix(core): remove zero-findings halt condition from edge case hunter (#1797)
The "HALT if zero findings" condition pressures the LLM to hallucinate
findings when reviewing trivial diffs with no branching logic. Since
this task runs non-interactively as a subagent, it cannot ask for
guidance either. Zero findings is a valid outcome for clean code.
2026-02-28 18:37:13 -06:00
Alex Verkhovsky ace23f6902
Merge branch 'main' into feat/quick-spec-adversarial-review-copy-paste-command 2026-02-25 15:19:40 -07:00
ak95asb d756b79322 fix(quick-spec): fix slash command formatting and file path quoting in step-04
- Add `/` prefix to `quick-dev` slash command references for clarity
  - Quote `{finalFile}` in copy-paste commands to handle spaces in paths
  - Update wording from "To run" to "Load and follow" for precision
  - Add inline note clarifying both are BMAD slash commands/skills
2026-02-25 13:10:47 +05:30
PinkyD 622e1fd813 fix(installer): remove double-escaping of quotes in CSV manifest pipeline (#1746)
* fix(installer): remove double-escaping of quotes in CSV manifest pipeline

cleanForCSV() pre-escaped " to "" before storing in memory, then
escapeCsv() escaped again at CSV write time. After csv-parse round-trip
(which only un-escapes once), descriptions retained doubled quotes
instead of originals, corrupting generated output files.

Fix: remove the redundant quote escaping from cleanForCSV() since
escapeCsv() already handles CSV quoting correctly at write time.

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

* fix(installer): use single quotes for description in Gemini workflow templates

Replace triple-quoted """{{description}}""" with single-quoted '{{description}}'
to avoid TOML escaping issues in Gemini workflow templates.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-25 13:10:47 +05:30
NOI03_Ajay Singh 2632f6c538 feat(quick-spec): add copy-paste command for adversarial review in step-04 final menu
Adds /bmad-review-adversarial-general {finalFile} copy-paste block alongside
the existing quick-dev command, ensuring consistent fresh-context UX for both
adversarial review and development. Fixes #1659.
2026-02-24 12:57:15 +05:30
16 changed files with 88 additions and 41 deletions

View File

@ -1,5 +1,20 @@
# Changelog # Changelog
## [6.0.4]
### 🎁 Features
* Add edge case hunter review task - new reusable review task that exhaustively traces branching paths and boundary conditions in code, reporting only unhandled gaps. Method-driven analysis complementary to adversarial review (#1790)
### 🐛 Bug Fixes
* Fix brainstorming to not overwrite previous sessions; now prompts to continue existing brainstorming or start a new one when older brainstorming sessions are found
* Fix installer templates - replace legacy `@` path prefixes with explicit `{project-root}` syntax for consistency (#1769)
* Fix edge case hunter - remove zero-findings halt condition that was pressuring the LLM to hallucinate findings when none legitimately exist (#1797)
* Fix broken docs domain references in README and GitHub issue templates (#1777)
---
## [6.0.3] ## [6.0.3]
### 🎁 Features ### 🎁 Features

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "bmad-method", "name": "bmad-method",
"version": "6.0.3", "version": "6.0.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "bmad-method", "name": "bmad-method",
"version": "6.0.3", "version": "6.0.4",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@clack/core": "^1.0.0", "@clack/core": "^1.0.0",

View File

@ -1,7 +1,7 @@
{ {
"$schema": "https://json.schemastore.org/package.json", "$schema": "https://json.schemastore.org/package.json",
"name": "bmad-method", "name": "bmad-method",
"version": "6.0.3", "version": "6.0.4",
"description": "Breakthrough Method of Agile AI-driven Development", "description": "Breakthrough Method of Agile AI-driven Development",
"keywords": [ "keywords": [
"agile", "agile",

View File

@ -124,13 +124,21 @@ Saved to: {finalFile}
Once you are fully satisfied with the spec (ideally after **Adversarial Review** and maybe a few rounds of **Advanced Elicitation**), it is recommended to run implementation in a FRESH CONTEXT for best results. Once you are fully satisfied with the spec (ideally after **Adversarial Review** and maybe a few rounds of **Advanced Elicitation**), it is recommended to run implementation in a FRESH CONTEXT for best results.
Copy this prompt to start dev: Load and follow **Adversarial Review** in a fresh context (recommended for information asymmetry):
\`\`\` \`\`\`
quick-dev {finalFile} /bmad-review-adversarial-general "{finalFile}"
\`\`\` \`\`\`
This ensures the dev agent has clean context focused solely on implementation. Load and follow **development** in a fresh context:
\`\`\`
/quick-dev "{finalFile}"
\`\`\`
_(Both are slash commands — prefix `/` invokes a BMAD skill or workflow.)_
This ensures the agent has clean context focused solely on its task.
``` ```
b) **HALT and wait for user selection.** b) **HALT and wait for user selection.**
@ -179,7 +187,7 @@ b) **HALT and wait for user selection.**
When you're ready to implement, run: When you're ready to implement, run:
``` ```
quick-dev {finalFile} /quick-dev {finalFile}
``` ```
Ship it!" Ship it!"

View File

@ -2,7 +2,7 @@ code: core
name: "BMad Core Module" name: "BMad Core Module"
header: "BMad Core Configuration" header: "BMad Core Configuration"
subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all modules and agents." subheader: "Configure the core settings for your BMad installation.\nThese settings will be used across all installed bmad skills, workflows, and agents."
user_name: user_name:
prompt: "What should agents call you? (Use your name or a team name)" prompt: "What should agents call you? (Use your name or a team name)"
@ -23,3 +23,13 @@ output_folder:
prompt: "Where should output files be saved?" prompt: "Where should output files be saved?"
default: "_bmad-output" default: "_bmad-output"
result: "{project-root}/{value}" result: "{project-root}/{value}"
tool_supports_subagents:
prompt: "Subagents are supported by the LLM or Tool I will be using?"
default: true
result: "{value}"
tool_supports_agent_teams:
prompt: "Agent Teams are supported by the LLM or Tool I will be using?"
default: false
result: "{value}"

View File

@ -57,7 +57,6 @@ No extra text, no explanations, no markdown wrapping.</output-format>
</flow> </flow>
<halt-conditions> <halt-conditions>
<condition>HALT if zero findings - this is suspicious, re-analyze or ask for guidance</condition>
<condition>HALT if content is empty or unreadable</condition> <condition>HALT if content is empty or unreadable</condition>
</halt-conditions> </halt-conditions>

View File

@ -29,23 +29,30 @@ Initialize the brainstorming workflow by detecting continuation state and settin
## INITIALIZATION SEQUENCE: ## INITIALIZATION SEQUENCE:
### 1. Check for Existing Workflow ### 1. Check for Existing Sessions
First, check if the output document already exists: First, check the brainstorming sessions folder for existing sessions:
- Look for file at `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` - List all files in `{output_folder}/brainstorming/`
- If exists, read the complete file including frontmatter - **DO NOT read any file contents** - only list filenames
- If not exists, this is a fresh workflow - If files exist, identify the most recent by date/time in the filename
- If no files exist, this is a fresh workflow
### 2. Handle Continuation (If Document Exists) ### 2. Handle Existing Sessions (If Files Found)
If the document exists and has frontmatter with `stepsCompleted`: If existing session files are found:
- **STOP here** and load `./step-01b-continue.md` immediately - Display the most recent session filename (do NOT read its content)
- Do not proceed with any initialization tasks - Ask the user: "Found existing session: `[filename]`. Would you like to:
- Let step-01b handle the continuation logic **[1]** Continue this session
**[2]** Start a new session
**[3]** See all existing sessions"
### 3. Fresh Workflow Setup (If No Document) - If user selects **[1]** (continue): Set `{brainstorming_session_output_file}` to that file path and load `./step-01b-continue.md`
- If user selects **[2]** (new): Generate new filename with current date/time and proceed to step 3
- If user selects **[3]** (see all): List all session filenames and ask which to continue or if new
### 3. Fresh Workflow Setup (If No Files or User Chooses New)
If no document exists or no `stepsCompleted` in frontmatter: If no document exists or no `stepsCompleted` in frontmatter:
@ -55,10 +62,10 @@ Create the brainstorming session document:
```bash ```bash
# Create directory if needed # Create directory if needed
mkdir -p "$(dirname "{output_folder}/brainstorming/brainstorming-session-{{date}}.md")" mkdir -p "$(dirname "{brainstorming_session_output_file}")"
# Initialize from template # Initialize from template
cp "{template_path}" "{output_folder}/brainstorming/brainstorming-session-{{date}}.md" cp "{template_path}" "{brainstorming_session_output_file}"
``` ```
#### B. Context File Check and Loading #### B. Context File Check and Loading
@ -134,7 +141,7 @@ _[Content based on conversation about session parameters and facilitator approac
## APPEND TO DOCUMENT: ## APPEND TO DOCUMENT:
When user selects approach, append the session overview content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from above. When user selects approach, append the session overview content directly to `{brainstorming_session_output_file}` using the structure from above.
### E. Continue to Technique Selection ### E. Continue to Technique Selection
@ -152,7 +159,7 @@ Which approach appeals to you most? (Enter 1-4)"
#### When user selects approach number: #### When user selects approach number:
- **Append initial session overview to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`** - **Append initial session overview to `{brainstorming_session_output_file}`**
- **Update frontmatter:** `stepsCompleted: [1]`, `selected_approach: '[selected approach]'` - **Update frontmatter:** `stepsCompleted: [1]`, `selected_approach: '[selected approach]'`
- **Load the appropriate step-02 file** based on selection - **Load the appropriate step-02 file** based on selection
@ -167,7 +174,9 @@ After user selects approach number:
## SUCCESS METRICS: ## SUCCESS METRICS:
✅ Existing workflow detected and continuation handled properly ✅ Existing sessions detected without reading file contents
✅ User prompted to continue existing session or start new
✅ Correct session file selected for continuation
✅ Fresh workflow initialized with correct document structure ✅ Fresh workflow initialized with correct document structure
✅ Session context gathered and understood clearly ✅ Session context gathered and understood clearly
✅ User's approach selection captured and routed correctly ✅ User's approach selection captured and routed correctly
@ -176,7 +185,9 @@ After user selects approach number:
## FAILURE MODES: ## FAILURE MODES:
❌ Not checking for existing document before creating new one ❌ Reading file contents during session detection (wastes context)
❌ Not asking user before continuing existing session
❌ Not properly routing user's continue/new session selection
❌ Missing continuation detection leading to duplicate work ❌ Missing continuation detection leading to duplicate work
❌ Insufficient session context gathering ❌ Insufficient session context gathering
❌ Not properly routing user's approach selection ❌ Not properly routing user's approach selection
@ -184,7 +195,9 @@ After user selects approach number:
## SESSION SETUP PROTOCOLS: ## SESSION SETUP PROTOCOLS:
- Always verify document existence before initialization - Always list sessions folder WITHOUT reading file contents
- Ask user before continuing any existing session
- Only load continue step after user confirms
- Load brain techniques CSV only when needed for technique presentation - Load brain techniques CSV only when needed for technique presentation
- Use collaborative facilitation language throughout - Use collaborative facilitation language throughout
- Maintain psychological safety for creative exploration - Maintain psychological safety for creative exploration

View File

@ -35,7 +35,7 @@ Load existing document and analyze current state:
**Document Analysis:** **Document Analysis:**
- Read existing `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` - Read existing `{brainstorming_session_output_file}`
- Examine frontmatter for `stepsCompleted`, `session_topic`, `session_goals` - Examine frontmatter for `stepsCompleted`, `session_topic`, `session_goals`
- Review content to understand session progress and outcomes - Review content to understand session progress and outcomes
- Identify current stage and next logical steps - Identify current stage and next logical steps

View File

@ -296,7 +296,7 @@ After final technique element:
#### If 'C' (Move to organization): #### If 'C' (Move to organization):
- **Append the technique execution content to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`** - **Append the technique execution content to `{brainstorming_session_output_file}`**
- **Update frontmatter:** `stepsCompleted: [1, 2, 3]` - **Update frontmatter:** `stepsCompleted: [1, 2, 3]`
- **Load:** `./step-04-idea-organization.md` - **Load:** `./step-04-idea-organization.md`
@ -356,7 +356,7 @@ _[Short narrative describing the user and AI collaboration journey - what made t
## APPEND TO DOCUMENT: ## APPEND TO DOCUMENT:
When user selects 'C', append the content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from above. When user selects 'C', append the content directly to `{brainstorming_session_output_file}` using the structure from above.
## SUCCESS METRICS: ## SUCCESS METRICS:

View File

@ -253,14 +253,14 @@ Provide final session wrap-up and forward guidance:
#### If [C] Complete: #### If [C] Complete:
- **Append the final session content to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md`** - **Append the final session content to `{brainstorming_session_output_file}`**
- Update frontmatter: `stepsCompleted: [1, 2, 3, 4]` - Update frontmatter: `stepsCompleted: [1, 2, 3, 4]`
- Set `session_active: false` and `workflow_completed: true` - Set `session_active: false` and `workflow_completed: true`
- Complete workflow with positive closure message - Complete workflow with positive closure message
## APPEND TO DOCUMENT: ## APPEND TO DOCUMENT:
When user selects 'C', append the content directly to `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` using the structure from step 7. When user selects 'C', append the content directly to `{brainstorming_session_output_file}` using the structure from step 7.
## SUCCESS METRICS: ## SUCCESS METRICS:

View File

@ -45,7 +45,9 @@ Load config from `{project-root}/_bmad/core/config.yaml` and resolve:
- `installed_path` = `{project-root}/_bmad/core/workflows/brainstorming` - `installed_path` = `{project-root}/_bmad/core/workflows/brainstorming`
- `template_path` = `{installed_path}/template.md` - `template_path` = `{installed_path}/template.md`
- `brain_techniques_path` = `{installed_path}/brain-methods.csv` - `brain_techniques_path` = `{installed_path}/brain-methods.csv`
- `default_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}.md` - `brainstorming_session_output_file` = `{output_folder}/brainstorming/brainstorming-session-{{date}}-{{time}}.md` (evaluated once at workflow start)
All steps MUST reference `{brainstorming_session_output_file}` instead of the full path pattern.
- `context_file` = Optional context file path from workflow invocation for project-specific guidance - `context_file` = Optional context file path from workflow invocation for project-specific guidance
- `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml` - `advancedElicitationTask` = `{project-root}/_bmad/core/workflows/advanced-elicitation/workflow.xml`

View File

@ -6,7 +6,7 @@ description: '{{description}}'
You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command. You must fully embody this agent's persona and follow all activation instructions exactly as specified. NEVER break character until given an exit command.
<agent-activation CRITICAL="TRUE"> <agent-activation CRITICAL="TRUE">
1. LOAD the FULL agent file from @_bmad/{{module}}/agents/{{path}} 1. LOAD the FULL agent file from {project-root}/_bmad/{{module}}/agents/{{path}}
2. READ its entire contents - this contains the complete agent persona, menu, and instructions 2. READ its entire contents - this contains the complete agent persona, menu, and instructions
3. Execute ALL activation steps exactly as written in the agent file 3. Execute ALL activation steps exactly as written in the agent file
4. Follow the agent's persona and menu system precisely 4. Follow the agent's persona and menu system precisely

View File

@ -6,9 +6,9 @@ description: '{{description}}'
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
<steps CRITICAL="TRUE"> <steps CRITICAL="TRUE">
1. Always LOAD the FULL @{project-root}/{{bmadFolderName}}/core/tasks/workflow.xml 1. Always LOAD the FULL {project-root}/{{bmadFolderName}}/core/tasks/workflow.xml
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{project-root}/{{bmadFolderName}}/{{path}} 2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{bmadFolderName}}/{{path}}
3. Pass the yaml path @{project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions 3. Pass the yaml path {project-root}/{{bmadFolderName}}/{{path}} as 'workflow-config' parameter to the workflow.xml instructions
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions 4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
5. Save outputs after EACH section when generating any documents from templates 5. Save outputs after EACH section when generating any documents from templates
</steps> </steps>

View File

@ -3,4 +3,4 @@ name: '{{name}}'
description: '{{description}}' description: '{{description}}'
--- ---
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{project-root}/{{bmadFolderName}}/{{path}}, READ its entire contents and follow its directions exactly! IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL {project-root}/{{bmadFolderName}}/{{path}}, READ its entire contents and follow its directions exactly!

View File

@ -5,8 +5,8 @@ description: '{{description}}'
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded: IT IS CRITICAL THAT YOU FOLLOW THESE STEPS - while staying in character as the current agent persona you may have loaded:
<steps CRITICAL="TRUE"> <steps CRITICAL="TRUE">
1. Always LOAD the FULL @_bmad/core/tasks/workflow.xml 1. Always LOAD the FULL {project-root}/_bmad/core/tasks/workflow.xml
2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config @{{workflow_path}} 2. READ its entire contents - this is the CORE OS for EXECUTING the specific workflow-config {project-root}/{{workflow_path}}
3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions 3. Pass the yaml path {{workflow_path}} as 'workflow-config' parameter to the workflow.xml instructions
4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions 4. Follow workflow.xml instructions EXACTLY as written to process and follow the specific workflow config and its instructions
5. Save outputs after EACH section when generating any documents from templates 5. Save outputs after EACH section when generating any documents from templates

View File

@ -2,4 +2,4 @@
description: '{{description}}' description: '{{description}}'
--- ---
IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL @{{workflow_path}}, READ its entire contents and follow its directions exactly! IT IS CRITICAL THAT YOU FOLLOW THIS COMMAND: LOAD the FULL {project-root}/{{workflow_path}}, READ its entire contents and follow its directions exactly!