Compare commits
7 Commits
2c1cd8dca7
...
c2b8ace3fd
| Author | SHA1 | Date |
|---|---|---|
|
|
c2b8ace3fd | |
|
|
3b6a507ab8 | |
|
|
415026b0eb | |
|
|
91c8e12777 | |
|
|
458704f82b | |
|
|
37e5fd50dd | |
|
|
52f6889089 |
|
|
@ -0,0 +1,5 @@
|
|||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Discord Community Support
|
||||
url: https://discord.gg/gk8jAdXWmj
|
||||
about: Please join our Discord server for general questions and community discussion before opening an issue.
|
||||
|
|
@ -26,7 +26,7 @@ jobs:
|
|||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
token: ${{ secrets.GH_PAT }}
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
|
|
|
|||
31
README.md
31
README.md
|
|
@ -1,5 +1,36 @@
|
|||
# BMAD-METHOD™: Universal AI Agent Framework
|
||||
|
||||
> ## 🚨 **IMPORTANT VERSION ANNOUNCEMENT** 🚨
|
||||
>
|
||||
> ### Current Stable: v4.x | Next Major: v6 Alpha
|
||||
>
|
||||
> - **v4.x** - The current stable release version available via npm
|
||||
> - **v5** - Skipped (replaced by v6)
|
||||
> - **[v6-alpha](https://github.com/bmad-code-org/BMAD-METHOD/tree/v6-alpha)** - **NOW AVAILABLE FOR EARLY TESTING!**
|
||||
>
|
||||
> ### 🧪 Try v6 Alpha (Early Adopters Only)
|
||||
>
|
||||
> The next major version of BMAD-METHOD is now available for early experimentation and testing. This is a complete rewrite with significant architectural changes.
|
||||
>
|
||||
> **⚠️ WARNING: v6-alpha is for early adopters who are comfortable with:**
|
||||
>
|
||||
> - Potential breaking changes
|
||||
> - Daily updates and instability
|
||||
> - Incomplete features
|
||||
> - Experimental functionality
|
||||
>
|
||||
> **📅 Timeline:** Official beta version will be merged mid-October 2025
|
||||
>
|
||||
> **To try v6-alpha:**
|
||||
>
|
||||
> ```bash
|
||||
> git clone https://github.com/bmad-code-org/BMAD-METHOD.git
|
||||
> cd BMAD-METHOD
|
||||
> git checkout v6-alpha
|
||||
> ```
|
||||
>
|
||||
> ---
|
||||
|
||||
[](https://www.npmjs.com/package/bmad-method)
|
||||
[](LICENSE)
|
||||
[](https://nodejs.org)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -33,8 +33,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
|
|||
|
|
@ -1608,7 +1608,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
|
|||
|
|
@ -2817,7 +2817,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
@ -7114,7 +7114,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -7132,8 +7132,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -933,7 +933,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -951,8 +951,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -4528,7 +4528,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
@ -8654,7 +8654,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -8672,8 +8672,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -6407,7 +6407,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
@ -8648,7 +8648,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -8666,8 +8666,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -2588,7 +2588,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -2606,8 +2606,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -5945,7 +5945,7 @@ sections:
|
|||
1. **Verify Complexity**: Confirm this enhancement requires architectural planning. For simple additions, recommend: "For simpler changes that don't require architectural planning, consider using the brownfield-create-epic or brownfield-create-story task with the Product Owner instead."
|
||||
|
||||
2. **REQUIRED INPUTS**:
|
||||
- Completed brownfield-prd.md
|
||||
- Completed prd.md
|
||||
- Existing project technical documentation (from docs folder or user-provided)
|
||||
- Access to existing project structure (IDE or uploaded files)
|
||||
|
||||
|
|
@ -8186,7 +8186,7 @@ First, determine the project type by checking:
|
|||
|
||||
2. Is this a BROWNFIELD project (enhancing existing system)?
|
||||
- Look for: References to existing codebase, enhancement/modification language
|
||||
- Check for: brownfield-prd.md, brownfield-architecture.md, existing system analysis
|
||||
- Check for: prd.md, architecture.md, existing system analysis
|
||||
|
||||
3. Does the project include UI/UX components?
|
||||
- Check for: frontend-architecture.md, UI/UX specifications, design files
|
||||
|
|
@ -8204,8 +8204,8 @@ For GREENFIELD projects:
|
|||
|
||||
For BROWNFIELD projects:
|
||||
|
||||
- brownfield-prd.md - The brownfield enhancement requirements
|
||||
- brownfield-architecture.md - The enhancement architecture
|
||||
- prd.md - The brownfield enhancement requirements
|
||||
- architecture.md - The enhancement architecture
|
||||
- Existing project codebase access (CRITICAL - cannot proceed without this)
|
||||
- Current deployment configuration and infrastructure details
|
||||
- Database schemas, API documentation, monitoring setup
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "bmad-method",
|
||||
"version": "4.43.0",
|
||||
"version": "4.44.0",
|
||||
"description": "Breakthrough Method of Agile AI-driven Development",
|
||||
"keywords": [
|
||||
"agile",
|
||||
|
|
|
|||
|
|
@ -132,15 +132,15 @@ ide-configurations:
|
|||
|
||||
qwen-code:
|
||||
name: Qwen Code
|
||||
rule-dir: .qwen/bmad-method/
|
||||
format: single-file
|
||||
command-suffix: .md
|
||||
rule-dir: .qwen/commands/BMad/
|
||||
format: multi-file
|
||||
command-suffix: .toml
|
||||
instructions: |
|
||||
# To use BMad agents with Qwen Code:
|
||||
# 1. The installer creates a .qwen/bmad-method/ directory in your project.
|
||||
# 2. It concatenates all agent files into a single QWEN.md file.
|
||||
# 3. Simply mention the agent in your prompt (e.g., "As *dev, ...").
|
||||
# 4. The Qwen Code CLI will automatically have the context for that agent.
|
||||
# 1. The installer creates a `BMad` folder in `.qwen/commands`.
|
||||
# 2. This adds custom commands for each agent and task.
|
||||
# 3. Type /BMad:agents:<agent-name> (e.g., "/BMad:agents:dev", "/BMad:agents:pm") or /BMad:tasks:<task-name> (e.g., "/BMad:tasks:create-doc").
|
||||
# 4. The agent will adopt that persona for the conversation or perform the task.
|
||||
|
||||
auggie-cli:
|
||||
name: Auggie CLI (Augment Code)
|
||||
|
|
|
|||
|
|
@ -2184,94 +2184,86 @@ CRITICAL: You are to execute the BMad Task defined below.
|
|||
}
|
||||
|
||||
async setupQwenCode(installDir, selectedAgent) {
|
||||
const qwenDir = path.join(installDir, '.qwen');
|
||||
const bmadMethodDir = path.join(qwenDir, 'bmad-method');
|
||||
await fileManager.ensureDirectory(bmadMethodDir);
|
||||
const ideConfig = await configLoader.getIdeConfiguration('qwen-code');
|
||||
const bmadCommandsDir = path.join(installDir, ideConfig['rule-dir']);
|
||||
|
||||
// Update logic for existing settings.json
|
||||
const settingsPath = path.join(qwenDir, 'settings.json');
|
||||
if (await fileManager.pathExists(settingsPath)) {
|
||||
try {
|
||||
const settingsContent = await fileManager.readFile(settingsPath);
|
||||
const settings = JSON.parse(settingsContent);
|
||||
let updated = false;
|
||||
const agentCommandsDir = path.join(bmadCommandsDir, 'agents');
|
||||
const taskCommandsDir = path.join(bmadCommandsDir, 'tasks');
|
||||
await fileManager.ensureDirectory(agentCommandsDir);
|
||||
await fileManager.ensureDirectory(taskCommandsDir);
|
||||
|
||||
// Handle contextFileName property
|
||||
if (settings.contextFileName && Array.isArray(settings.contextFileName)) {
|
||||
const originalLength = settings.contextFileName.length;
|
||||
settings.contextFileName = settings.contextFileName.filter(
|
||||
(fileName) => !fileName.startsWith('agents/'),
|
||||
);
|
||||
if (settings.contextFileName.length !== originalLength) {
|
||||
updated = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (updated) {
|
||||
await fileManager.writeFile(settingsPath, JSON.stringify(settings, null, 2));
|
||||
console.log(chalk.green('✓ Updated .qwen/settings.json - removed agent file references'));
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn(chalk.yellow('Could not update .qwen/settings.json'), error);
|
||||
}
|
||||
}
|
||||
|
||||
// Remove old agents directory
|
||||
const agentsDir = path.join(qwenDir, 'agents');
|
||||
if (await fileManager.pathExists(agentsDir)) {
|
||||
await fileManager.removeDirectory(agentsDir);
|
||||
console.log(chalk.green('✓ Removed old .qwen/agents directory'));
|
||||
}
|
||||
|
||||
// Get all available agents
|
||||
// Process Agents
|
||||
const agents = selectedAgent ? [selectedAgent] : await this.getAllAgentIds(installDir);
|
||||
let concatenatedContent = '';
|
||||
|
||||
for (const agentId of agents) {
|
||||
// Find the source agent file
|
||||
const agentPath = await this.findAgentPath(agentId, installDir);
|
||||
if (!agentPath) {
|
||||
console.log(chalk.yellow(`✗ Agent file not found for ${agentId}, skipping.`));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (agentPath) {
|
||||
const agentTitle = await this.getAgentTitle(agentId, installDir);
|
||||
const commandPath = path.join(agentCommandsDir, `${agentId}.toml`);
|
||||
|
||||
// Get relative path from installDir to agent file for @{file} reference
|
||||
const relativeAgentPath = path.relative(installDir, agentPath).replaceAll('\\', '/');
|
||||
|
||||
// Read the agent content
|
||||
const agentContent = await fileManager.readFile(agentPath);
|
||||
|
||||
// Create properly formatted agent rule content (similar to gemini)
|
||||
let agentRuleContent = `# ${agentId.toUpperCase()} Agent Rule\n\n`;
|
||||
agentRuleContent += `This rule is triggered when the user types \`*${agentId}\` and activates the ${await this.getAgentTitle(
|
||||
agentId,
|
||||
installDir,
|
||||
)} agent persona.\n\n`;
|
||||
agentRuleContent += '## Agent Activation\n\n';
|
||||
agentRuleContent +=
|
||||
'CRITICAL: Read the full YAML, start activation to alter your state of being, follow startup section instructions, stay in this being until told to exit this mode:\n\n';
|
||||
agentRuleContent += '```yaml\n';
|
||||
// Extract just the YAML content from the agent file
|
||||
const yamlContent = extractYamlFromAgent(agentContent);
|
||||
if (yamlContent) {
|
||||
agentRuleContent += yamlContent;
|
||||
} else {
|
||||
// If no YAML found, include the whole content minus the header
|
||||
agentRuleContent += agentContent.replace(/^#.*$/m, '').trim();
|
||||
}
|
||||
agentRuleContent += '\n```\n\n';
|
||||
agentRuleContent += '## File Reference\n\n';
|
||||
const relativePath = path.relative(installDir, agentPath).replaceAll('\\', '/');
|
||||
agentRuleContent += `The complete agent definition is available in [${relativePath}](${relativePath}).\n\n`;
|
||||
agentRuleContent += '## Usage\n\n';
|
||||
agentRuleContent += `When the user types \`*${agentId}\`, activate this ${await this.getAgentTitle(
|
||||
agentId,
|
||||
installDir,
|
||||
)} persona and follow all instructions defined in the YAML configuration above.\n`;
|
||||
const tomlContent = `description = " Activates the ${agentTitle} agent from the BMad Method."
|
||||
prompt = """
|
||||
CRITICAL: You are now the BMad '${agentTitle}' agent. Adopt its persona, follow its instructions, and use its capabilities.
|
||||
|
||||
// Add to concatenated content with separator
|
||||
concatenatedContent += agentRuleContent + '\n\n---\n\n';
|
||||
console.log(chalk.green(`✓ Added context for *${agentId}`));
|
||||
}
|
||||
READ THIS BEFORE ANSWERING AS THE PERSONA!
|
||||
|
||||
${agentContent}
|
||||
"""`;
|
||||
|
||||
await fileManager.writeFile(commandPath, tomlContent);
|
||||
console.log(chalk.green(`✓ Created agent command: /bmad:agents:${agentId}`));
|
||||
}
|
||||
|
||||
// Write the concatenated content to QWEN.md
|
||||
const qwenMdPath = path.join(bmadMethodDir, 'QWEN.md');
|
||||
await fileManager.writeFile(qwenMdPath, concatenatedContent);
|
||||
console.log(chalk.green(`\n✓ Created QWEN.md in ${bmadMethodDir}`));
|
||||
// Process Tasks
|
||||
const tasks = await this.getAllTaskIds(installDir);
|
||||
for (const taskId of tasks) {
|
||||
const taskPath = await this.findTaskPath(taskId, installDir);
|
||||
if (!taskPath) {
|
||||
console.log(chalk.yellow(`✗ Task file not found for ${taskId}, skipping.`));
|
||||
continue;
|
||||
}
|
||||
|
||||
const taskTitle = taskId
|
||||
.split('-')
|
||||
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
||||
.join(' ');
|
||||
const commandPath = path.join(taskCommandsDir, `${taskId}.toml`);
|
||||
|
||||
// Get relative path from installDir to task file for @{file} reference
|
||||
const relativeTaskPath = path.relative(installDir, taskPath).replaceAll('\\', '/');
|
||||
|
||||
// Read the task content
|
||||
const taskContent = await fileManager.readFile(taskPath);
|
||||
|
||||
const tomlContent = `description = " Executes the BMad Task: ${taskTitle}"
|
||||
prompt = """
|
||||
CRITICAL: You are to execute the BMad Task defined below.
|
||||
|
||||
READ THIS BEFORE EXECUTING THE TASK AS THE INSTRUCTIONS SPECIFIED!
|
||||
|
||||
${taskContent}
|
||||
"""`;
|
||||
|
||||
await fileManager.writeFile(commandPath, tomlContent);
|
||||
console.log(chalk.green(`✓ Created task command: /bmad:tasks:${taskId}`));
|
||||
}
|
||||
|
||||
console.log(
|
||||
chalk.green(`
|
||||
✓ Created Qwen Code extension in ${bmadCommandsDir}`),
|
||||
);
|
||||
console.log(
|
||||
chalk.dim('You can now use commands like /bmad:agents:dev or /bmad:tasks:create-doc.'),
|
||||
);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue