# Installers Domain

## File Index

### Core CLI

- @/tools/cli/bmad-cli.js - Main CLI entry (uses Commander.js, auto-loads commands)
- @/tools/cli/README.md - CLI documentation

### Commands Directory

- @/tools/cli/commands/install.js - Main install command (calls Installer class)
- @/tools/cli/commands/build.js - Build operations
- @/tools/cli/commands/list.js - List resources
- @/tools/cli/commands/update.js - Update operations
- @/tools/cli/commands/status.js - Status checks
- @/tools/cli/commands/agent-install.js - Custom agent installation
- @/tools/cli/commands/uninstall.js - Uninstall operations

### Core Installer Logic

- @/tools/cli/installers/lib/core/installer.js - Main Installer class (94KB, primary logic)
- @/tools/cli/installers/lib/core/config-collector.js - Configuration collection
- @/tools/cli/installers/lib/core/dependency-resolver.js - Dependency resolution
- @/tools/cli/installers/lib/core/detector.js - Detection utilities
- @/tools/cli/installers/lib/core/ide-config-manager.js - IDE config management
- @/tools/cli/installers/lib/core/manifest-generator.js - Manifest generation
- @/tools/cli/installers/lib/core/manifest.js - Manifest utilities

### IDE Manager & Base

- @/tools/cli/installers/lib/ide/manager.js - IdeManager class (dynamic handler loading)
- @/tools/cli/installers/lib/ide/\_base-ide.js - BaseIdeSetup class (all handlers extend this)

### Shared Utilities

- @/tools/cli/installers/lib/ide/shared/agent-command-generator.js
- @/tools/cli/installers/lib/ide/shared/workflow-command-generator.js
- @/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js
- @/tools/cli/installers/lib/ide/shared/module-injections.js
- @/tools/cli/installers/lib/ide/shared/bmad-artifacts.js

### CLI Library Files

- @/tools/cli/lib/ui.js - User interface prompts
- @/tools/cli/lib/config.js - Configuration utilities
- @/tools/cli/lib/project-root.js - Project root detection
- @/tools/cli/lib/platform-codes.js - Platform code definitions
- @/tools/cli/lib/xml-handler.js - XML processing
- @/tools/cli/lib/yaml-format.js - YAML formatting
- @/tools/cli/lib/file-ops.js - File operations
- @/tools/cli/lib/agent/compiler.js - Agent YAML to XML compilation
- @/tools/cli/lib/agent/installer.js - Agent installation
- @/tools/cli/lib/agent/template-engine.js - Template processing

## IDE Handler Registry (16 IDEs)

### Preferred IDEs (shown first in installer)

| IDE            | Name           | Config Location           | File Format                   |
| -------------- | -------------- | ------------------------- | ----------------------------- |
| claude-code    | Claude Code    | .claude/commands/         | .md with frontmatter          |
| codex          | Codex          | (varies)                  | .md                           |
| cursor         | Cursor         | .cursor/rules/bmad/       | .mdc with MDC frontmatter     |
| github-copilot | GitHub Copilot | .github/                  | .md                           |
| opencode       | OpenCode       | .opencode/                | .md                           |
| windsurf       | Windsurf       | .windsurf/workflows/bmad/ | .md with workflow frontmatter |

### Other IDEs

| IDE         | Name               | Config Location       |
| ----------- | ------------------ | --------------------- |
| antigravity | Google Antigravity | .agent/               |
| auggie      | Auggie CLI         | .augment/             |
| cline       | Cline              | .clinerules/          |
| crush       | Crush              | .crush/               |
| gemini      | Gemini CLI         | .gemini/              |
| iflow       | iFlow CLI          | .iflow/               |
| kilo        | Kilo Code          | .kilocodemodes (file) |
| qwen        | Qwen Code          | .qwen/                |
| roo         | Roo Code           | .roomodes (file)      |
| trae        | Trae               | .trae/                |

## Architecture Patterns

### IDE Handler Interface

Each handler must implement:

- `constructor()` - Call super(name, displayName, preferred)
- `setup(projectDir, bmadDir, options)` - Main installation
- `cleanup(projectDir)` - Remove old installation
- `installCustomAgentLauncher(...)` - Custom agent support

### Module Installer Pattern

Modules can have custom installers at:
`src/modules/{module-name}/_module-installer/installer.js`

Export: `async function install(options)` with:

- options.projectRoot
- options.config
- options.installedIDEs
- options.logger

### Sub-module Pattern (IDE-specific customizations)

Location: `src/modules/{module-name}/sub-modules/{ide-name}/`
Contains:

- injections.yaml - Content injections
- config.yaml - Configuration
- sub-agents/ - IDE-specific agents

## Common Tasks

- Add new IDE handler: Create file in /tools/cli/installers/lib/ide/, extend BaseIdeSetup
- Fix installer bug: Check installer.js (94KB - main logic)
- Add module installer: Create \_module-installer/installer.js if custom installer logic needed
- Update shared generators: Modify files in /shared/ directory

## Relationships

- Installers may trigger bundlers for web output
- Installers create files that tests validate
- Changes here often need docs updates
- IDE handlers use shared generators

---

## Domain Memories

<!-- Vexor appends installer-specific learnings here -->
