Compare commits

..

No commits in common. "a6f089cfd27946d0f92051e96b7cc0a4a8c92b4c" and "be04d687dc75ba3e59b89733ed3f78f416d9f907" have entirely different histories.

13 changed files with 31 additions and 93 deletions

2
.gitignore vendored
View File

@ -67,5 +67,3 @@ z*/
.bmad .bmad
.claude .claude
.agent
.codex

View File

@ -321,7 +321,7 @@ The BMad Method Module (BMM) provides a comprehensive team of specialized AI age
**Workflows:** **Workflows:**
- `workflow-status` - Check what to do next - `workflow-status` - Check what to do next
- `create-ux-design` - Conduct design thinking workshop to define UX specification with: - `create-design` - Conduct design thinking workshop to define UX specification with:
- Visual exploration and generation - Visual exploration and generation
- Collaborative decision-making - Collaborative decision-making
- AI-assisted design tools (v0, Lovable) - AI-assisted design tools (v0, Lovable)
@ -944,7 +944,7 @@ Quick reference for agent selection:
| ----------------------- | ---- | ------------------ | --------------------------------------------- | ------------------------------------- | | ----------------------- | ---- | ------------------ | --------------------------------------------- | ------------------------------------- |
| **Analyst** | 📊 | 1 (Analysis) | brainstorm, brief, research, document-project | Discovery, requirements, brownfield | | **Analyst** | 📊 | 1 (Analysis) | brainstorm, brief, research, document-project | Discovery, requirements, brownfield |
| **PM** | 📋 | 2 (Planning) | prd, tech-spec, epics-stories | Planning, requirements docs | | **PM** | 📋 | 2 (Planning) | prd, tech-spec, epics-stories | Planning, requirements docs |
| **UX Designer** | 🎨 | 2 (Planning) | create-ux-design, validate-design | UX-heavy projects, design | | **UX Designer** | 🎨 | 2 (Planning) | create-design, validate-design | UX-heavy projects, design |
| **Architect** | 🏗️ | 3 (Solutioning) | architecture, implementation-readiness | Technical design, architecture | | **Architect** | 🏗️ | 3 (Solutioning) | architecture, implementation-readiness | Technical design, architecture |
| **SM** | 🏃 | 4 (Implementation) | sprint-planning, create-story, story-context | Story management, sprint coordination | | **SM** | 🏃 | 4 (Implementation) | sprint-planning, create-story, story-context | Story management, sprint coordination |
| **DEV** | 💻 | 4 (Implementation) | develop-story, code-review, story-done | Implementation, coding | | **DEV** | 💻 | 4 (Implementation) | develop-story, code-review, story-done | Implementation, coding |

View File

@ -240,7 +240,7 @@ Continuous deployment to production
**UX Designer Workflow:** **UX Designer Workflow:**
```bash ```bash
bmad ux *create-ux-design bmad ux *create-design
``` ```
**BMad produces:** **BMad produces:**

View File

@ -295,7 +295,7 @@ These cheat sheets map TEA workflows to the **BMad Method and Enterprise tracks*
| Workflow Stage | Test Architect | Dev / Team | Outputs | | Workflow Stage | Test Architect | Dev / Team | Outputs |
| -------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | -------------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **Phase 1**: Discovery | - | Analyst `*research`, `*product-brief` | Domain research, compliance analysis, product brief | | **Phase 1**: Discovery | - | Analyst `*research`, `*product-brief` | Domain research, compliance analysis, product brief |
| **Phase 2**: Planning | Run `*nfr-assess` | PM `*prd` (creates PRD with FRs/NFRs), UX `*create-ux-design` | Enterprise PRD with FRs/NFRs, UX design, NFR documentation | | **Phase 2**: Planning | Run `*nfr-assess` | PM `*prd` (creates PRD with FRs/NFRs), UX `*create-design` | Enterprise PRD with FRs/NFRs, UX design, NFR documentation |
| **Phase 3**: Solutioning | Run `*framework`, `*ci` AFTER architecture and epic creation | Architect `*architecture`, `*create-epics-and-stories`, `*implementation-readiness` | Architecture, epics/stories, test framework, CI pipeline | | **Phase 3**: Solutioning | Run `*framework`, `*ci` AFTER architecture and epic creation | Architect `*architecture`, `*create-epics-and-stories`, `*implementation-readiness` | Architecture, epics/stories, test framework, CI pipeline |
| **Phase 4**: Sprint Start | - | SM `*sprint-planning` | Sprint plan with all epics | | **Phase 4**: Sprint Start | - | SM `*sprint-planning` | Sprint plan with all epics |
| **Phase 4**: Epic Planning | Run `*test-design` for THIS epic 🔄 (compliance focus) | Review epic scope and compliance requirements | `test-design-epic-N.md` with security/performance/compliance focus | | **Phase 4**: Epic Planning | Run `*test-design` for THIS epic 🔄 (compliance focus) | Review epic scope and compliance requirements | `test-design-epic-N.md` with security/performance/compliance focus |

View File

@ -26,12 +26,12 @@
<check if="status file found"> <check if="status file found">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action> <action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Parse workflow_status section</action> <action>Parse workflow_status section</action>
<action>Check status of "create-ux-design" workflow</action> <action>Check status of "create-design" workflow</action>
<action>Get project_level from YAML metadata</action> <action>Get project_level from YAML metadata</action>
<action>Find first non-completed workflow (next expected workflow)</action> <action>Find first non-completed workflow (next expected workflow)</action>
<check if="create-ux-design status is file path (already completed)"> <check if="create-design status is file path (already completed)">
<output>⚠️ UX Design already completed: {{create-ux-design status}}</output> <output>⚠️ UX Design already completed: {{create-design status}}</output>
<ask>Re-running will overwrite the existing UX design. Continue? (y/n)</ask> <ask>Re-running will overwrite the existing UX design. Continue? (y/n)</ask>
<check if="n"> <check if="n">
<output>Exiting. Use workflow-status to see your next step.</output> <output>Exiting. Use workflow-status to see your next step.</output>
@ -39,7 +39,7 @@
</check> </check>
</check> </check>
<check if="create-ux-design is not the next expected workflow"> <check if="create-design is not the next expected workflow">
<output>⚠️ Next expected workflow: {{next_workflow}}. UX Design is out of sequence.</output> <output>⚠️ Next expected workflow: {{next_workflow}}. UX Design is out of sequence.</output>
<ask>Continue with UX Design anyway? (y/n)</ask> <ask>Continue with UX Design anyway? (y/n)</ask>
<check if="n"> <check if="n">
@ -1139,9 +1139,9 @@ Based on your deployment intent: {{recommendation}}
<check if="standalone_mode != true"> <check if="standalone_mode != true">
<action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action> <action>Load the FULL file: {output_folder}/bmm-workflow-status.yaml</action>
<action>Find workflow_status key "create-ux-design"</action> <action>Find workflow_status key "create-design"</action>
<critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical> <critical>ONLY write the file path as the status value - no other text, notes, or metadata</critical>
<action>Update workflow_status["create-ux-design"] = "{default_output_file}"</action> <action>Update workflow_status["create-design"] = "{default_output_file}"</action>
<action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action> <action>Save file, preserving ALL comments and structure including STATUS DEFINITIONS</action>
<action>Find first non-completed workflow in workflow_status (next workflow to do)</action> <action>Find first non-completed workflow in workflow_status (next workflow to do)</action>

View File

@ -652,7 +652,7 @@ Your PRD is complete!"
<action>Check workflow path to determine next expected workflows: <action>Check workflow path to determine next expected workflows:
- Look for "create-epics-and-stories" as optional after PRD - Look for "create-epics-and-stories" as optional after PRD
- Look for "create-ux-design" as conditional (if_has_ui) - Look for "create-design" as conditional (if_has_ui)
- Look for "create-epics-and-stories-after-ux" as optional - Look for "create-epics-and-stories-after-ux" as optional
- Identify the required next phase workflow - Identify the required next phase workflow
</action> </action>
@ -675,7 +675,7 @@ Based on your {{project_track}} workflow path, you can:
<check if="UI_exists"> <check if="UI_exists">
**Option B: UX Design First** (Recommended if UI) **Option B: UX Design First** (Recommended if UI)
`workflow create-ux-design` `workflow create-design`
- Design user experience and interactions - Design user experience and interactions
- Epic breakdown can incorporate UX details later - Epic breakdown can incorporate UX details later
</check> </check>
@ -691,7 +691,7 @@ Based on your {{project_track}} workflow path, you can:
<check if="standalone_mode == true"> <check if="standalone_mode == true">
**Typical next workflows:** **Typical next workflows:**
1. `workflow create-ux-design` - UX Design (if UI exists) 1. `workflow create-design` - UX Design (if UI exists)
2. `workflow create-architecture` - Technical architecture 2. `workflow create-architecture` - Technical architecture
3. `workflow create-epics-and-stories` - Epic breakdown 3. `workflow create-epics-and-stories` - Epic breakdown

View File

@ -60,10 +60,10 @@ phases:
agent: "pm" agent: "pm"
command: "validate-prd" command: "validate-prd"
- id: "create-ux-design" - id: "create-design"
recommended: true recommended: true
agent: "ux-designer" agent: "ux-designer"
command: "create-ux-design" command: "create-design"
note: "Recommended - must integrate with existing UX patterns" note: "Recommended - must integrate with existing UX patterns"
- phase: 2 - phase: 2

View File

@ -48,10 +48,10 @@ phases:
agent: "pm" agent: "pm"
command: "validate-prd" command: "validate-prd"
- id: "create-ux-design" - id: "create-design"
recommended: true recommended: true
agent: "ux-designer" agent: "ux-designer"
command: "create-ux-design" command: "create-design"
note: "Highly recommended for enterprise - design system and patterns" note: "Highly recommended for enterprise - design system and patterns"
- phase: 2 - phase: 2

View File

@ -59,10 +59,10 @@ phases:
agent: "pm" agent: "pm"
command: "validate-prd" command: "validate-prd"
- id: "create-ux-design" - id: "create-design"
conditional: "if_has_ui" conditional: "if_has_ui"
agent: "ux-designer" agent: "ux-designer"
command: "create-ux-design" command: "create-design"
- phase: 2 - phase: 2
name: "Solutioning" name: "Solutioning"

View File

@ -48,10 +48,10 @@ phases:
command: "validate-prd" command: "validate-prd"
note: "Quality check for PRD completeness" note: "Quality check for PRD completeness"
- id: "create-ux-design" - id: "create-design"
conditional: "if_has_ui" conditional: "if_has_ui"
agent: "ux-designer" agent: "ux-designer"
command: "create-ux-design" command: "create-design"
note: "Determined after PRD - user/agent decides if needed" note: "Determined after PRD - user/agent decides if needed"
- phase: 2 - phase: 2

View File

@ -359,25 +359,6 @@ class ConfigCollector {
return result; return result;
} }
/**
* Get the default username from the system
* @returns {string} Capitalized username\
*/
getDefaultUsername() {
let result = 'BMad';
try {
const os = require('node:os');
const userInfo = os.userInfo();
if (userInfo && userInfo.username) {
const username = userInfo.username;
result = username.charAt(0).toUpperCase() + username.slice(1);
}
} catch {
// Do nothing, just return 'BMad'
}
return result;
}
/** /**
* Collect configuration for a single module * Collect configuration for a single module
* @param {string} moduleName - Module name * @param {string} moduleName - Module name
@ -623,11 +604,6 @@ class ConfigCollector {
} }
} }
// Special handling for user_name: default to system user
if (moduleName === 'core' && key === 'user_name' && !existingValue) {
item.default = this.getDefaultUsername();
}
// Determine question type and default value // Determine question type and default value
let questionType = 'input'; let questionType = 'input';
let defaultValue = item.default; let defaultValue = item.default;

View File

@ -20,7 +20,7 @@ const { getAgentsFromBmad, getAgentsFromDir } = require('./shared/bmad-artifacts
*/ */
class AntigravitySetup extends BaseIdeSetup { class AntigravitySetup extends BaseIdeSetup {
constructor() { constructor() {
super('antigravity', 'Google Antigravity', true); super('antigravity', 'Google Antigravity', false);
this.configDir = '.agent'; this.configDir = '.agent';
this.workflowsDir = 'workflows'; this.workflowsDir = 'workflows';
} }

View File

@ -201,51 +201,15 @@ class UI {
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure'); CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
let answers; const answers = await inquirer.prompt([
let userConfirmedNoTools = false; {
type: 'checkbox',
// Loop until user selects at least one tool OR explicitly confirms no tools name: 'ides',
while (!userConfirmedNoTools) { message: 'Select tools to configure:',
answers = await inquirer.prompt([ choices: ideChoices,
{ pageSize: 15,
type: 'checkbox', },
name: 'ides', ]);
message: 'Select tools to configure:',
choices: ideChoices,
pageSize: 15,
},
]);
// If tools were selected, we're done
if (answers.ides && answers.ides.length > 0) {
break;
}
// Warn that no tools were selected - users often miss the spacebar requirement
console.log();
console.log(chalk.red.bold('⚠️ WARNING: No tools were selected!'));
console.log(chalk.red(' You must press SPACEBAR to select items, then ENTER to confirm.'));
console.log(chalk.red(' Simply highlighting an item does NOT select it.'));
console.log();
const { goBack } = await inquirer.prompt([
{
type: 'confirm',
name: 'goBack',
message: chalk.yellow('Would you like to go back and select at least one tool?'),
default: true,
},
]);
if (goBack) {
// Re-display the section header before looping back
console.log();
CLIUtils.displaySection('Tool Integration', 'Select AI coding assistants and IDEs to configure');
} else {
// User explicitly chose to proceed without tools
userConfirmedNoTools = true;
}
}
return { return {
ides: answers.ides || [], ides: answers.ides || [],