feat: add Zed IDE integration
- Add Zed configuration to installer with .zed/assistants/ directory structure - Implement setupZed() method in ide-setup.js following existing IDE patterns - Add Zed agent ordering configuration in ide-agent-config.yaml - Create Zed-specific configuration file (zed-config.json) and user guide (zed-readme.md) - Support @agent-name activation in Zed AI assistant panel - Remove development-only test files and documentation - Integration tested and working in actual Zed IDE
This commit is contained in:
parent
bfaaa0ee11
commit
44d80c3a03
|
|
@ -30,6 +30,7 @@
|
||||||
"version:expansion:all:patch": "node tools/bump-all-versions.js patch",
|
"version:expansion:all:patch": "node tools/bump-all-versions.js patch",
|
||||||
"release": "semantic-release",
|
"release": "semantic-release",
|
||||||
"release:test": "semantic-release --dry-run --no-ci || echo 'Config test complete - authentication errors are expected locally'",
|
"release:test": "semantic-release --dry-run --no-ci || echo 'Config test complete - authentication errors are expected locally'",
|
||||||
|
|
||||||
"prepare": "husky"
|
"prepare": "husky"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|
|
||||||
|
|
@ -56,3 +56,25 @@ cline-order:
|
||||||
game-developer: 13
|
game-developer: 13
|
||||||
game-sm: 14
|
game-sm: 14
|
||||||
infra-devops-platform: 15
|
infra-devops-platform: 15
|
||||||
|
|
||||||
|
# Zed agent ordering (reuses cline ordering for consistency)
|
||||||
|
# Lower numbers appear first in the list
|
||||||
|
# Agents not listed get order 99
|
||||||
|
zed-order:
|
||||||
|
# Core agents
|
||||||
|
bmad-master: 1
|
||||||
|
bmad-orchestrator: 2
|
||||||
|
pm: 3
|
||||||
|
analyst: 4
|
||||||
|
architect: 5
|
||||||
|
po: 6
|
||||||
|
sm: 7
|
||||||
|
dev: 8
|
||||||
|
qa: 9
|
||||||
|
ux-expert: 10
|
||||||
|
# Expansion pack agents
|
||||||
|
bmad-the-creator: 11
|
||||||
|
game-designer: 12
|
||||||
|
game-developer: 13
|
||||||
|
game-sm: 14
|
||||||
|
infra-devops-platform: 15
|
||||||
|
|
@ -66,6 +66,17 @@ ide-configurations:
|
||||||
# 2. Type @agent-name (e.g., "@dev", "@pm", "@architect")
|
# 2. Type @agent-name (e.g., "@dev", "@pm", "@architect")
|
||||||
# 3. The agent will adopt that persona for the conversation
|
# 3. The agent will adopt that persona for the conversation
|
||||||
# 4. Rules are stored in .clinerules/ directory in your project
|
# 4. Rules are stored in .clinerules/ directory in your project
|
||||||
|
zed:
|
||||||
|
name: Zed
|
||||||
|
rule-dir: .zed/assistants/
|
||||||
|
format: multi-file
|
||||||
|
command-suffix: .md
|
||||||
|
instructions: |
|
||||||
|
# To use BMad agents in Zed:
|
||||||
|
# 1. Open the AI assistant panel (Cmd+I on Mac, Ctrl+I on Windows/Linux)
|
||||||
|
# 2. Type @agent-name (e.g., "@dev", "@pm", "@architect")
|
||||||
|
# 3. The agent will adopt that persona for the conversation
|
||||||
|
# 4. Assistants are stored in .zed/assistants/ directory in your project
|
||||||
gemini:
|
gemini:
|
||||||
name: Gemini CLI
|
name: Gemini CLI
|
||||||
rule-dir: .gemini/bmad-method/
|
rule-dir: .gemini/bmad-method/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"assistants": {
|
||||||
|
"bmad-method": {
|
||||||
|
"description": "BMad Method AI Agent Framework",
|
||||||
|
"version": "4.31.0",
|
||||||
|
"assistants_dir": ".zed/assistants",
|
||||||
|
"usage": {
|
||||||
|
"activation": "Type @agent-name to activate a specific agent",
|
||||||
|
"examples": [
|
||||||
|
"@dev - Activate the Developer agent",
|
||||||
|
"@pm - Activate the Product Manager agent",
|
||||||
|
"@architect - Activate the Architect agent",
|
||||||
|
"@qa - Activate the QA agent",
|
||||||
|
"@po - Activate the Product Owner agent",
|
||||||
|
"@sm - Activate the Scrum Master agent",
|
||||||
|
"@analyst - Activate the Analyst agent",
|
||||||
|
"@ux-expert - Activate the UX Expert agent"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"project_integration": {
|
||||||
|
"documentation": ".bmad-core/",
|
||||||
|
"templates": ".bmad-core/templates/",
|
||||||
|
"tasks": ".bmad-core/tasks/",
|
||||||
|
"checklists": ".bmad-core/checklists/",
|
||||||
|
"data": ".bmad-core/data/"
|
||||||
|
},
|
||||||
|
"features": {
|
||||||
|
"file_access": "Full access to project files",
|
||||||
|
"context_awareness": "Understands project structure and conventions",
|
||||||
|
"template_system": "Access to BMad document templates",
|
||||||
|
"task_execution": "Can execute specific BMad tasks",
|
||||||
|
"quality_assurance": "Access to BMad checklists and validation"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"setup_instructions": {
|
||||||
|
"installation": "Run 'npx bmad-method install' and select 'zed' as your IDE",
|
||||||
|
"activation": "Open Zed AI assistant panel (Cmd+I on Mac, Ctrl+I on Windows/Linux)",
|
||||||
|
"usage": "Type @agent-name to activate specific BMad agents"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
# BMad Method - Zed Integration
|
||||||
|
|
||||||
|
This document explains how to use BMad Method agents within Zed, the fast and modern code editor.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
1. **Install BMad Method in your project:**
|
||||||
|
```bash
|
||||||
|
npx bmad-method install
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Select Zed as your IDE** when prompted during installation.
|
||||||
|
|
||||||
|
3. **The installer will create:**
|
||||||
|
- `.zed/assistants/` - Directory containing all BMad agent assistants
|
||||||
|
- `.zed/bmad-config.json` - Configuration file for Zed integration
|
||||||
|
- Numbered assistant files (e.g., `01-bmad-master.md`, `02-pm.md`)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Activating Agents
|
||||||
|
|
||||||
|
1. **Open Zed AI Assistant Panel:**
|
||||||
|
- **Mac:** `Cmd+I`
|
||||||
|
- **Windows/Linux:** `Ctrl+I`
|
||||||
|
|
||||||
|
2. **Activate an agent by typing:**
|
||||||
|
```
|
||||||
|
@agent-name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Available Agents
|
||||||
|
|
||||||
|
| Agent | Command | Description |
|
||||||
|
|-------|---------|-------------|
|
||||||
|
| BMad Master | `@bmad-master` | Master agent that can perform any task |
|
||||||
|
| Product Manager | `@pm` | Product requirements and planning |
|
||||||
|
| Analyst | `@analyst` | Market research and analysis |
|
||||||
|
| Architect | `@architect` | System architecture and design |
|
||||||
|
| Product Owner | `@po` | Story management and prioritization |
|
||||||
|
| Scrum Master | `@sm` | Process management and story creation |
|
||||||
|
| Developer | `@dev` | Code implementation and development |
|
||||||
|
| QA Engineer | `@qa` | Testing and quality assurance |
|
||||||
|
| UX Expert | `@ux-expert` | User experience and interface design |
|
||||||
|
|
||||||
|
### Example Interactions
|
||||||
|
|
||||||
|
```
|
||||||
|
@dev Create a React component for user authentication
|
||||||
|
@pm Review the current sprint progress
|
||||||
|
@architect Design the database schema for the user system
|
||||||
|
@qa Review the authentication component and suggest tests
|
||||||
|
```
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Project Context Awareness
|
||||||
|
- Agents understand your project structure
|
||||||
|
- Access to `.bmad-core/` documentation and templates
|
||||||
|
- Knowledge of project conventions and standards
|
||||||
|
|
||||||
|
### File System Integration
|
||||||
|
- Full access to read and modify project files
|
||||||
|
- Can create new files and update existing ones
|
||||||
|
- Follows project file organization patterns
|
||||||
|
|
||||||
|
### Template System
|
||||||
|
- Access to BMad document templates
|
||||||
|
- Can generate PRDs, architecture docs, user stories
|
||||||
|
- Maintains consistency with BMad methodology
|
||||||
|
|
||||||
|
### Task Execution
|
||||||
|
- Can execute specific BMad tasks
|
||||||
|
- Access to quality assurance checklists
|
||||||
|
- Follows BMad workflows and processes
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The integration creates several configuration files:
|
||||||
|
|
||||||
|
### `.zed/assistants/`
|
||||||
|
Contains individual assistant files for each BMad agent, numbered for ordering.
|
||||||
|
|
||||||
|
### `.zed/bmad-config.json`
|
||||||
|
Configuration file that describes the BMad integration and available features.
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Agents Not Appearing
|
||||||
|
- Ensure you ran `npx bmad-method install` and selected Zed
|
||||||
|
- Check that `.zed/assistants/` directory exists
|
||||||
|
- Restart Zed after installation
|
||||||
|
|
||||||
|
### Agent Not Responding
|
||||||
|
- Verify you're using the correct `@agent-name` syntax
|
||||||
|
- Check that the agent file exists in `.zed/assistants/`
|
||||||
|
- Try refreshing the AI assistant panel
|
||||||
|
|
||||||
|
### File Access Issues
|
||||||
|
- Ensure Zed has permission to access your project directory
|
||||||
|
- Check that the agent has the necessary file permissions
|
||||||
|
- Verify project structure matches BMad expectations
|
||||||
|
|
||||||
|
## Advanced Usage
|
||||||
|
|
||||||
|
### Custom Agent Ordering
|
||||||
|
You can modify the agent ordering by editing the configuration in:
|
||||||
|
- `tools/installer/config/ide-agent-config.yaml` (before installation)
|
||||||
|
- `.zed/assistants/` file numbering (after installation)
|
||||||
|
|
||||||
|
### Expansion Packs
|
||||||
|
If you have BMad expansion packs installed, their agents will also be available:
|
||||||
|
- Game development agents (if game dev expansion is installed)
|
||||||
|
- Infrastructure agents (if infrastructure expansion is installed)
|
||||||
|
- Other domain-specific agents
|
||||||
|
|
||||||
|
### Project-Specific Customization
|
||||||
|
- Agents automatically load project-specific documentation
|
||||||
|
- They adapt to your project's coding standards and conventions
|
||||||
|
- Can reference project-specific templates and checklists
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
For issues with Zed integration:
|
||||||
|
1. Check the BMad documentation: `bmad-core/user-guide.md`
|
||||||
|
2. Review the installation logs for any errors
|
||||||
|
3. Ensure you're using a compatible version of Zed
|
||||||
|
4. Join the BMad community for help and support
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Note:** This integration is designed to work with Zed's AI assistant system. Make sure you have the latest version of Zed installed for the best experience.
|
||||||
|
|
@ -53,6 +53,8 @@ class IdeSetup extends BaseIdeSetup {
|
||||||
return this.setupRoo(installDir, selectedAgent);
|
return this.setupRoo(installDir, selectedAgent);
|
||||||
case "cline":
|
case "cline":
|
||||||
return this.setupCline(installDir, selectedAgent);
|
return this.setupCline(installDir, selectedAgent);
|
||||||
|
case "zed":
|
||||||
|
return this.setupZed(installDir, selectedAgent);
|
||||||
case "gemini":
|
case "gemini":
|
||||||
return this.setupGeminiCli(installDir, selectedAgent);
|
return this.setupGeminiCli(installDir, selectedAgent);
|
||||||
case "github-copilot":
|
case "github-copilot":
|
||||||
|
|
@ -780,6 +782,85 @@ class IdeSetup extends BaseIdeSetup {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async setupZed(installDir, selectedAgent) {
|
||||||
|
const zedAssistantsDir = path.join(installDir, ".zed", "assistants");
|
||||||
|
const agents = selectedAgent ? [selectedAgent] : await this.getAllAgentIds(installDir);
|
||||||
|
|
||||||
|
await fileManager.ensureDirectory(zedAssistantsDir);
|
||||||
|
|
||||||
|
// Load dynamic agent ordering from configuration
|
||||||
|
const config = await this.loadIdeAgentConfig();
|
||||||
|
const agentOrder = config['zed-order'] || config['cline-order'] || {}; // Use Zed-specific ordering, fallback to cline
|
||||||
|
|
||||||
|
for (const agentId of agents) {
|
||||||
|
// Find the agent file
|
||||||
|
const agentPath = await this.findAgentPath(agentId, installDir);
|
||||||
|
|
||||||
|
if (agentPath) {
|
||||||
|
const agentContent = await fileManager.readFile(agentPath);
|
||||||
|
|
||||||
|
// Get numeric prefix for ordering
|
||||||
|
const order = agentOrder[agentId] || 99;
|
||||||
|
const prefix = order.toString().padStart(2, '0');
|
||||||
|
const mdPath = path.join(zedAssistantsDir, `${prefix}-${agentId}.md`);
|
||||||
|
|
||||||
|
// Create MD content for Zed (similar to Cline but optimized for Zed's assistant system)
|
||||||
|
let mdContent = `# ${await this.getAgentTitle(agentId, installDir)} Assistant\n\n`;
|
||||||
|
mdContent += `This assistant defines the ${await this.getAgentTitle(agentId, installDir)} persona for Zed AI.\n\n`;
|
||||||
|
mdContent += "## Assistant Activation\n\n";
|
||||||
|
mdContent +=
|
||||||
|
"When the user types `@" + agentId + "` or `@agent-name`, adopt this persona and follow these guidelines:\n\n";
|
||||||
|
mdContent += "```yaml\n";
|
||||||
|
// Extract just the YAML content from the agent file
|
||||||
|
const yamlContent = extractYamlFromAgent(agentContent);
|
||||||
|
if (yamlContent) {
|
||||||
|
mdContent += yamlContent;
|
||||||
|
} else {
|
||||||
|
// If no YAML found, include the whole content minus the header
|
||||||
|
mdContent += agentContent.replace(/^#.*$/m, "").trim();
|
||||||
|
}
|
||||||
|
mdContent += "\n```\n\n";
|
||||||
|
mdContent += "## Project Context\n\n";
|
||||||
|
mdContent += `- Maintain consistency with project documentation in .bmad-core/\n`;
|
||||||
|
mdContent += `- Follow the agent's specific guidelines and constraints\n`;
|
||||||
|
mdContent += `- Update relevant project files when making changes\n`;
|
||||||
|
mdContent += `- Work within the project's file structure and conventions\n`;
|
||||||
|
const relativePath = path.relative(installDir, agentPath).replace(/\\/g, '/');
|
||||||
|
mdContent += `- Reference the complete agent definition in [${relativePath}](${relativePath})\n\n`;
|
||||||
|
mdContent += "## Zed Integration\n\n";
|
||||||
|
mdContent += `- Use Zed's file system access to read and modify project files\n`;
|
||||||
|
mdContent += `- Leverage Zed's AI capabilities for code generation and analysis\n`;
|
||||||
|
mdContent += `- Follow Zed's coding standards and best practices\n\n`;
|
||||||
|
mdContent += "## Usage\n\n";
|
||||||
|
mdContent += `Type \`@${agentId}\` to activate this ${await this.getAgentTitle(agentId, installDir)} assistant.\n`;
|
||||||
|
|
||||||
|
await fileManager.writeFile(mdPath, mdContent);
|
||||||
|
console.log(chalk.green(`✓ Created assistant: ${prefix}-${agentId}.md`));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create Zed configuration file
|
||||||
|
const zedConfigPath = path.join(installDir, ".zed", "bmad-config.json");
|
||||||
|
const zedConfigContent = await fileManager.readFile(path.join(__dirname, '..', 'config', 'zed-config.json'));
|
||||||
|
await fileManager.writeFile(zedConfigPath, zedConfigContent);
|
||||||
|
console.log(chalk.green(`✓ Created Zed configuration: bmad-config.json`));
|
||||||
|
|
||||||
|
// Create Zed README file
|
||||||
|
const zedReadmePath = path.join(installDir, ".zed", "README.md");
|
||||||
|
const zedReadmeContent = await fileManager.readFile(path.join(__dirname, '..', 'config', 'zed-readme.md'));
|
||||||
|
await fileManager.writeFile(zedReadmePath, zedReadmeContent);
|
||||||
|
console.log(chalk.green(`✓ Created Zed README: README.md`));
|
||||||
|
|
||||||
|
console.log(chalk.green(`\n✓ Created Zed assistants in ${zedAssistantsDir}`));
|
||||||
|
console.log(chalk.dim("Assistants will be available when you open this project in Zed"));
|
||||||
|
console.log(chalk.cyan("\n📋 Zed Integration Complete!"));
|
||||||
|
console.log(chalk.dim("• Open Zed AI assistant panel (Cmd+I on Mac, Ctrl+I on Windows/Linux)"));
|
||||||
|
console.log(chalk.dim("• Type @agent-name to activate BMad agents"));
|
||||||
|
console.log(chalk.dim("• Example: @dev, @pm, @architect, @qa"));
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
async setupGeminiCli(installDir) {
|
async setupGeminiCli(installDir) {
|
||||||
const geminiDir = path.join(installDir, ".gemini");
|
const geminiDir = path.join(installDir, ".gemini");
|
||||||
const bmadMethodDir = path.join(geminiDir, "bmad-method");
|
const bmadMethodDir = path.join(geminiDir, "bmad-method");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue