Compare commits

..

8 Commits

Author SHA1 Message Date
murat
5add70b60b fix: issue 459 prod install fails 2026-01-29 08:51:42 -06:00
Michael Pursifull
903710be1b fix: HELP_STEP placeholder not replaced in compiled agents, fix hardcoded path, fix single quote in HELP_STEP (#1437)
* fix: correct malformed XML syntax and remove hardcoded path

- Fix missing opening quote in activation-steps.txt: `n={HELP_STEP}"` → `n="{HELP_STEP}"`
- Remove spurious hyphen: `-Let` → `Let`
- Replace hardcoded `/Users/brianmadison/...` path with relative path

Fixes #1435

* fix: add missing HELP_STEP placeholder replacement

The activation-steps.txt template includes a {HELP_STEP} placeholder,
but activation-builder.js never calculated or replaced it. This caused
the literal string "{HELP_STEP}" to appear in compiled agent files.

Added helpStep calculation between menuStep and haltStep, and adjusted
subsequent step numbers accordingly.

Fixes #1441

* Update src/bmm/workflows/2-plan-workflows/create-prd/validation-report-prd-workflow.md

---------

Co-authored-by: Alex Verkhovsky <alexey.verkhovsky@gmail.com>
2026-01-29 05:58:56 -08:00
Brian Madison
98b97cf4fd Bump version to 6.0.0-Beta.4
- Activation steps formatting fix
- Custom module installation fix
2026-01-28 23:08:06 -08:00
Brian Madison
bb29d5067b missing opening quote causes an infrequent menu rendering issue 2026-01-28 23:04:23 -08:00
Brian Madison
4f0285a2e8 fix custom module instalation 2026-01-28 22:55:54 -08:00
Brian Madison
cf80e9b127 Bump version to 6.0.0-Beta.3
- SDET Module Replaces TEA: TEA moved to external, SDET added with automate workflow
- Gemini CLI TOML Support: IDE integration now supports TOML config format
- File System Sprint Status: Default project_key support
- Quick-flow workflow path fix
- PRD edit flow path fixes
- Agent file handling improvements
- Documentation typo fixes
2026-01-28 22:39:51 -08:00
Alex Verkhovsky
f01c5cef4d Set default project_key for file-system sprint status (#1446)
Co-authored-by: Brian <bmadcode@gmail.com>
2026-01-28 22:27:54 -08:00
Murat K Ozcan
98bce75905 feat: removed tea module, added sdet with 1 workflow for automate (#1443)
* feat: removed tea module, added sdet with 1 workflow for automate

* fix: addressed PR comments

* fix: addressed Alex's comments

* fix: addressed Brian 2nd round of comments
2026-01-28 22:26:04 -08:00
18 changed files with 91 additions and 44 deletions

View File

@@ -1,5 +1,41 @@
# Changelog
## [6.0.0-Beta.4]
### 🐛 Bug Fixes
- **Activation steps formatting fix**: Fixed missing opening quote that caused infrequent menu rendering issues
- **Custom module installation fix**: Added missing yaml require in manifest.js to fix custom module installation
---
## [6.0.0-Beta.3]
### 🌟 Key Highlights
1. **SDET Module Replaces TEA**: TEA module removed from core, SDET module added with "automate" workflow for test automation
2. **Gemini CLI TOML Support**: IDE integration now supports the TOML config format used by Gemini CLI
3. **File System Sprint Status**: Default project_key support for file-system based sprint status tracking
### 🔧 Features & Improvements
**Module Changes:**
- **TEA Module Moved to External** (#1430, #1443): The TEA module is now external. SDET module added with a single "automate" workflow focused on test automation
- **SDET Module**: New module with streamlined test automation capabilities
**IDE Integration:**
- **Gemini CLI TOML Format** (#1431): Previous update accidentally switched Gemini to md instead of toml.
**Sprint Status:**
- **Default project_key** (#1446): File-system based sprint status now uses a default project_key so certain LLMs do not complain
### 🐛 Bug Fixes
- **Quick-flow workflow path fix** (#1368): Fixed incorrect workflow_path in bmad-quick-flow/quick-spec steps (step-01, step-02, step-03) - changed from non-existent 'create-tech-spec' to correct 'quick-spec'
- **PRD edit flow paths**: Fixed path references in PRD editing workflow
- **Agent file handling**: Changes to prevent double agent files and use .agent.md file extensions
- **README link fix**: Corrected broken documentation links
## [6.0.0-Beta.2]
- Fix installer so commands match what is installed, centralize most ide into a central file instead of separate files for each ide.

View File

@@ -79,12 +79,12 @@ BMad Method extends with official modules for specialized domains. Modules are a
BMad provides two testing options to fit your needs:
### Quinn (SDET) - Built-in
### Quinn (QA) - Built-in
**Quick test automation for rapid coverage**
-**Always available** in BMM module (no separate install)
-**Simple**: One workflow (`QA` - Quick Automate)
-**Simple**: One workflow (`QA` - Automate)
-**Beginner-friendly**: Standard test framework patterns
-**Fast**: Generate tests and ship

View File

@@ -53,10 +53,13 @@ Build it, one story at a time.
| `sprint-planning` | Initialize tracking (once per project) | `sprint-status.yaml` |
| `create-story` | Prepare next story for implementation | `story-[slug].md` |
| `dev-story` | Implement the story | Working code + tests |
| `automate` (QA) | Generate tests for existing features | Test suite |
| `code-review` | Validate implementation quality | Approved or changes requested |
| `correct-course` | Handle significant mid-sprint changes | Updated plan or re-routing |
| `retrospective` | Review after epic completion | Lessons learned |
**Quinn (QA Agent):** Built-in QA agent for test automation. Trigger with `QA` or `bmad-bmm-automate`. Generates standard API and E2E tests using your project's test framework. Beginner-friendly, no configuration needed. For advanced test strategy, install [Test Architect (TEA)](https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/) module.
## Quick Flow (Parallel Track)
Skip phases 1-3 for small, well-understood work.

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "bmad-method",
"version": "6.0.0-Beta.2",
"version": "6.0.0-Beta.4",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "bmad-method",
"version": "6.0.0-Beta.2",
"version": "6.0.0-Beta.4",
"license": "MIT",
"dependencies": {
"@clack/prompts": "^0.11.0",

View File

@@ -1,7 +1,7 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "bmad-method",
"version": "6.0.0-Beta.2",
"version": "6.0.0-Beta.4",
"description": "Breakthrough Method of Agile AI-driven Development",
"keywords": [
"agile",
@@ -39,7 +39,7 @@
"lint": "eslint . --ext .js,.cjs,.mjs,.yaml --max-warnings=0",
"lint:fix": "eslint . --ext .js,.cjs,.mjs,.yaml --fix",
"lint:md": "markdownlint-cli2 \"**/*.md\"",
"prepare": "husky",
"prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
"rebundle": "node tools/cli/bundlers/bundle-web.js rebundle",
"release:major": "gh workflow run \"Manual Release\" -f version_bump=major",
"release:minor": "gh workflow run \"Manual Release\" -f version_bump=minor",

View File

@@ -2,13 +2,13 @@ agent:
metadata:
id: "_bmad/bmm/agents/quinn"
name: Quinn
title: Software Development Engineer in Test (SDET)
title: QA Engineer
icon: 🧪
module: bmm
hasSidecar: false
persona:
role: Software Development Engineer in Test (SDET)
role: QA Engineer
identity: |
Pragmatic test automation engineer focused on rapid test coverage.
Specializes in generating tests quickly for existing features using standard test framework patterns.
@@ -17,12 +17,7 @@ agent:
Practical and straightforward. Gets tests written fast without overthinking.
'Ship it and iterate' mentality. Focuses on coverage first, optimization later.
principles:
- Fast test generation over perfect architecture
- Coverage first, optimization later
- Standard test framework patterns (no advanced utilities required)
- Works well for beginners and small teams
- Simpler decision-making than full test architecture
- Happy path + critical edge cases = good enough
- Generate API and E2E tests for implemented code
- Tests should pass on first run
critical_actions:
@@ -33,13 +28,13 @@ agent:
menu:
- trigger: QA
workflow: "{project-root}/_bmad/bmm/workflows/sdet/automate/workflow.yaml"
description: "[QA] Quick Automate - Generate tests for existing features (simplified)"
workflow: "{project-root}/_bmad/bmm/workflows/qa/automate/workflow.yaml"
description: "[QA] Automate - Generate tests for existing features (simplified)"
prompts:
- id: welcome
content: |
👋 Hi, I'm Quinn - your Software Development Engineer in Test (SDET).
👋 Hi, I'm Quinn - your QA Engineer.
I help you generate tests quickly using standard test framework patterns.
@@ -59,4 +54,4 @@ agent:
For comprehensive test strategy, risk-based planning, quality gates, and enterprise features,
install the Test Architect (TEA) module: https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/
Ready to generate some tests? Just say `QA` or `bmad-bmm-quick-automate`!
Ready to generate some tests? Just say `QA` or `bmad-bmm-automate`!

View File

@@ -29,4 +29,4 @@ bmm,4-implementation,Validate Story,VS,35,_bmad/bmm/workflows/4-implementation/c
bmm,4-implementation,Dev Story,DS,40,_bmad/bmm/workflows/4-implementation/dev-story/workflow.yaml,bmad-bmm-dev-story,true,dev,Create Mode,"Story cycle: Execute story implementation tasks and tests then CR then back to DS if fixes needed",,,
bmm,4-implementation,Code Review,CR,50,_bmad/bmm/workflows/4-implementation/code-review/workflow.yaml,bmad-bmm-code-review,false,dev,Create Mode,"Story cycle: If issues back to DS if approved then next CS or ER if epic complete",,,
bmm,4-implementation,Retrospective,ER,60,_bmad/bmm/workflows/4-implementation/retrospective/workflow.yaml,bmad-bmm-retrospective,false,sm,Create Mode,"Optional at epic end: Review completed work lessons learned and next epic or if major issues consider CC",implementation_artifacts,retrospective,
bmm,4-implementation,Quick Automate,QA,45,_bmad/bmm/workflows/sdet/automate/workflow.yaml,bmad-bmm-quick-automate,false,quinn,Create Mode,"Generate tests quickly for existing features (not code review) using standard test patterns",implementation_artifacts,"test suite",
bmm,4-implementation,Automate,QA,45,_bmad/bmm/workflows/qa/automate/workflow.yaml,bmad-bmm-automate,false,quinn,Create Mode,"Generate automated API and E2E tests for implemented code using the project's existing test framework (detects Playwright, Jest, Vitest, etc). Use after implementation to add test coverage. NOT for code review or story validation - use CR for that.",implementation_artifacts,"test suite",
Can't render this file because it has a wrong number of fields in line 7.

View File

@@ -18,4 +18,3 @@ name,displayName,title,icon,role,identity,communicationStyle,principles,module,p
"lateral-thinker","Edward de Bono","Lateral Thinking Pioneer","🧩","Creator of Creative Thinking Tools","Inventor of lateral thinking and Six Thinking Hats methodology. Master of deliberate creativity through systematic pattern-breaking techniques.","You stand at a crossroads. Choose wisely, adventurer! Presents choices with dice-roll energy, proposes deliberate provocations, breaks patterns methodically.","Logic gets you from A to B. Creativity gets you everywhere else. Use tools to escape habitual thinking patterns.","cis",""
"mythic-storyteller","Joseph Campbell","Mythic Storyteller","🌟","Master of the Hero's Journey + Archetypal Wisdom","Scholar who decoded the universal story patterns across all cultures. Expert in mythology, comparative religion, and archetypal narratives.","I sense challenge and reward on the path ahead. Speaks in prophetic mythological metaphors - EVERY story is a hero's journey, references ancient wisdom.","Follow your bliss. All stories share the monomyth. Myths reveal universal human truths. The call to adventure is irresistible.","cis",""
"combinatorial-genius","Steve Jobs","Combinatorial Genius","🍎","Master of Intersection Thinking + Taste Curator","Legendary innovator who connected technology with liberal arts. Master at seeing patterns across disciplines and combining them into elegant products.","I'll be back... with results! Talks in reality distortion field mode - insanely great, magical, revolutionary, makes impossible seem inevitable.","Innovation happens at intersections. Taste is about saying NO to 1000 things. Stay hungry stay foolish. Simplicity is sophistication.","cis",""
"quinn","Quinn","SDET","🧪","Software Development Engineer in Test","Pragmatic test automation engineer focused on rapid test coverage. Specializes in generating tests quickly for existing features using standard test patterns.","Practical and straightforward. Gets tests written fast without overthinking.","Fast test generation over perfect architecture. Coverage first, optimization later. Standard test patterns. Works well for beginners and small teams.","bmm","_bmad/bmm/agents/quinn.agent.yaml"
1 name displayName title icon role identity communicationStyle principles module path
18 lateral-thinker Edward de Bono Lateral Thinking Pioneer 🧩 Creator of Creative Thinking Tools Inventor of lateral thinking and Six Thinking Hats methodology. Master of deliberate creativity through systematic pattern-breaking techniques. You stand at a crossroads. Choose wisely, adventurer! Presents choices with dice-roll energy, proposes deliberate provocations, breaks patterns methodically. Logic gets you from A to B. Creativity gets you everywhere else. Use tools to escape habitual thinking patterns. cis
19 mythic-storyteller Joseph Campbell Mythic Storyteller 🌟 Master of the Hero's Journey + Archetypal Wisdom Scholar who decoded the universal story patterns across all cultures. Expert in mythology, comparative religion, and archetypal narratives. I sense challenge and reward on the path ahead. Speaks in prophetic mythological metaphors - EVERY story is a hero's journey, references ancient wisdom. Follow your bliss. All stories share the monomyth. Myths reveal universal human truths. The call to adventure is irresistible. cis
20 combinatorial-genius Steve Jobs Combinatorial Genius 🍎 Master of Intersection Thinking + Taste Curator Legendary innovator who connected technology with liberal arts. Master at seeing patterns across disciplines and combining them into elegant products. I'll be back... with results! Talks in reality distortion field mode - insanely great, magical, revolutionary, makes impossible seem inevitable. Innovation happens at intersections. Taste is about saying NO to 1000 things. Stay hungry stay foolish. Simplicity is sophistication. cis
quinn Quinn SDET 🧪 Software Development Engineer in Test Pragmatic test automation engineer focused on rapid test coverage. Specializes in generating tests quickly for existing features using standard test patterns. Practical and straightforward. Gets tests written fast without overthinking. Fast test generation over perfect architecture. Coverage first, optimization later. Standard test patterns. Works well for beginners and small teams. bmm _bmad/bmm/agents/quinn.agent.yaml

View File

@@ -8,7 +8,7 @@ validationStatus: COMPLETE - PRODUCTION READY
# PRD Workflow Validation Report
**Workflow Being Validated:** /Users/brianmadison/dev/BMAD-METHOD/src/bmm/workflows/2-plan-workflows/create-prd
**Workflow Being Validated:** _bmad/bmm/workflows/2-plan-workflows/create-prd
**Validation Date:** 2026-01-08
**Validator:** BMAD Workflow Validation System

View File

@@ -36,7 +36,7 @@
generated: 05-06-2-2025 21:30
project: My Awesome Project
project_key: jira-1234
project_key: NOKEY
tracking_system: file-system
story_location: "{story_location}"

View File

@@ -26,6 +26,7 @@ variables:
# Tracking system configuration
tracking_system: "file-system" # Options: file-system, Future will support other options from config of mcp such as jira, linear, trello
project_key: "NOKEY" # Placeholder for tracker integrations; file-system uses a no-op key
story_location: "{config_source}:implementation_artifacts" # Relative path for file-system, Future will support URL for Jira/Linear/Trello
story_location_absolute: "{config_source}:implementation_artifacts" # Absolute path for file operations

View File

@@ -1,4 +1,4 @@
# Quinn Quick Automate - Validation Checklist
# Quinn Automate - Validation Checklist
## Test Generation

View File

@@ -1,11 +1,23 @@
# Quinn SDET - Quick Automate
# Quinn QA - Automate
**Goal**: Generate tests quickly for existing features using standard test patterns.
**Goal**: Generate automated API and E2E tests for implemented code.
**Scope**: This workflow only generates tests. It does **not** perform code review or story validation (use Code Review `CR` for that).
**Scope**: This workflow generates tests ONLY. It does **not** perform code review or story validation (use Code Review `CR` for that).
## Instructions
### Step 0: Detect Test Framework
Check project for existing test framework:
- Look for `package.json` dependencies (playwright, jest, vitest, cypress, etc.)
- Check for existing test files to understand patterns
- Use whatever test framework the project already has
- If no framework exists:
- Analyze source code to determine project type (React, Vue, Node API, etc.)
- Search online for current recommended test framework for that stack
- Suggest the meta framework and use it (or ask user to confirm)
### Step 1: Identify Features
Ask user what to test:

View File

@@ -1,5 +1,5 @@
# Quinn SDET workflow: Quick Automate
name: sdet-quick-automate
# Quinn QA workflow: Automate
name: qa-automate
description: "Generate tests quickly for existing features using standard test patterns"
author: "BMad"
@@ -13,7 +13,7 @@ document_output_language: "{config_source}:document_output_language"
date: system-generated
# Workflow components
installed_path: "{project-root}/_bmad/bmm/workflows/sdet/automate"
installed_path: "{project-root}/_bmad/bmm/workflows/qa/automate"
instructions: "{installed_path}/instructions.md"
validation: "{installed_path}/checklist.md"
template: false
@@ -38,10 +38,8 @@ required_tools:
tags:
- qa
- sdet
- automation
- testing
- coverage
execution_hints:
interactive: false

View File

@@ -8,7 +8,7 @@
<step n="3">Remember: user's name is {user_name}</step>
{AGENT_SPECIFIC_STEPS}
<step n="{MENU_STEP}">Show greeting using {user_name} from config, communicate in {communication_language}, then display numbered list of ALL menu items from menu section</step>
<step n={HELP_STEP}">-Let {user_name} know they can type command `/bmad-help` at any time to get advice on what to do next, and that they can combine that with what they need help with <example>`/bmad-help where should I start with an idea I have that does XYZ`</example></step>
<step n="{HELP_STEP}">Let {user_name} know they can type command `/bmad-help` at any time to get advice on what to do next, and that they can combine that with what they need help with <example>`/bmad-help where should I start with an idea I have that does XYZ`</example></step>
<step n="{HALT_STEP}">STOP and WAIT for user input - do NOT execute menu items automatically - accept number or cmd trigger or fuzzy command match</step>
<step n="{INPUT_STEP}">On user input: Number → process menu item[n] | Text → case-insensitive substring match | Multiple matches → ask user to clarify | No match → show "Not recognized"</step>
<step n="{EXECUTE_STEP}">When processing a menu item: Check menu-handlers section below - extract any attributes from the selected menu item (workflow, exec, tmpl, data, action, validate-workflow) and follow the corresponding handler instructions</step>

View File

@@ -158,30 +158,30 @@ async function runTests() {
console.log('');
// ============================================================
// Test 5: SDET Agent Compilation
// Test 5: QA Agent Compilation
// ============================================================
console.log(`${colors.yellow}Test Suite 5: SDET Agent Compilation${colors.reset}\n`);
console.log(`${colors.yellow}Test Suite 5: QA Agent Compilation${colors.reset}\n`);
try {
const builder = new YamlXmlBuilder();
const sdetAgentPath = path.join(projectRoot, 'src/bmm/agents/quinn.agent.yaml');
const tempOutput = path.join(__dirname, 'temp-sdet-agent.md');
const qaAgentPath = path.join(projectRoot, 'src/bmm/agents/quinn.agent.yaml');
const tempOutput = path.join(__dirname, 'temp-qa-agent.md');
try {
const result = await builder.buildAgent(sdetAgentPath, null, tempOutput, { includeMetadata: true });
const result = await builder.buildAgent(qaAgentPath, null, tempOutput, { includeMetadata: true });
const compiled = await fs.readFile(tempOutput, 'utf8');
assert(compiled.includes('Software Development Engineer in Test'), 'SDET agent compilation includes agent title');
assert(compiled.includes('QA Engineer'), 'QA agent compilation includes agent title');
assert(compiled.includes('sdet/automate'), 'SDET agent menu includes automate workflow');
assert(compiled.includes('qa/automate'), 'QA agent menu includes automate workflow');
// Cleanup
await fs.remove(tempOutput);
} catch (error) {
assert(false, 'SDET agent compiles successfully', error.message);
assert(false, 'QA agent compiles successfully', error.message);
}
} catch (error) {
assert(false, 'SDET compilation test setup', error.message);
assert(false, 'QA compilation test setup', error.message);
}
console.log('');

View File

@@ -835,6 +835,7 @@ class Manifest {
*/
async getModuleVersionInfo(moduleName, bmadDir, moduleSourcePath = null) {
const os = require('node:os');
const yaml = require('yaml');
// Built-in modules use BMad version (only core and bmm are in BMAD-METHOD repo)
if (['core', 'bmm'].includes(moduleName)) {

View File

@@ -121,9 +121,10 @@ class ActivationBuilder {
// Calculate final step numbers
const menuStep = currentStepNum;
const haltStep = currentStepNum + 1;
const inputStep = currentStepNum + 2;
const executeStep = currentStepNum + 3;
const helpStep = currentStepNum + 1;
const haltStep = currentStepNum + 2;
const inputStep = currentStepNum + 3;
const executeStep = currentStepNum + 4;
// Replace placeholders
const processed = stepsTemplate
@@ -131,6 +132,7 @@ class ActivationBuilder {
.replace('{{module}}', metadata.module || 'core') // Fixed to use {{module}}
.replace('{AGENT_SPECIFIC_STEPS}', agentStepsXml)
.replace('{MENU_STEP}', menuStep.toString())
.replace('{HELP_STEP}', helpStep.toString())
.replace('{HALT_STEP}', haltStep.toString())
.replace('{INPUT_STEP}', inputStep.toString())
.replace('{EXECUTE_STEP}', executeStep.toString());