|
1 | 1 | # Custom Content Installation |
2 | 2 |
|
3 | | -This guide explains how to create and install custom BMAD content including agents, workflows, and modules. Custom content allows you to extend BMAD's functionality with your own specialized tools and workflows that can be shared across projects or teams. |
| 3 | +This guide explains how to create and install custom BMAD content including agents, workflows, and modules. Custom content extends BMAD's functionality with specialized tools and workflows that can be shared across projects or teams. |
4 | 4 |
|
5 | | -## Types of Custom Content |
| 5 | +For detailed information about the different types of custom content available, see [Custom Content](./custom-content.md). |
6 | 6 |
|
7 | | -### 1. Custom Agents and Workflows (Standalone) |
| 7 | +If you download either of the folders within the [Sample Custom Modules](./sample-custom-modules/readme.md) folder |
8 | 8 |
|
9 | | -Custom agents and workflows are standalone content packages that can be installed without being part of a full module. These are perfect for: |
| 9 | +## Content Types Overview |
10 | 10 |
|
11 | | -- Sharing specialized agents across projects |
12 | | -- Building a personal Agent powered Notebook vault |
13 | | -- Distributing workflow templates |
14 | | -- Creating agent libraries for specific domains |
| 11 | +BMAD Core supports several categories of custom content: |
15 | 12 |
|
16 | | -#### Structure |
| 13 | +- Custom Stand Alone Modules |
| 14 | +- Custom Add On Modules |
| 15 | +- Custom Global Modules |
| 16 | +- Custom Agents |
| 17 | +- Custom Workflows |
17 | 18 |
|
18 | | -A custom agents and workflows package follows this structure: |
| 19 | +## Making Custom Content Installable |
19 | 20 |
|
20 | | -``` |
21 | | -my-custom-agents/ |
22 | | -├── module.yaml # Package configuration |
23 | | -├── agents/ # Agent definitions |
24 | | -│ └── my-agent/ |
25 | | -│ └── agent.md |
26 | | -└── workflows/ # Workflow definitions |
27 | | - └── my-workflow/ |
28 | | - └── workflow.md |
29 | | -``` |
| 21 | +### Custom Modules |
30 | 22 |
|
31 | | -#### Configuration |
| 23 | +To create an installable custom module: |
32 | 24 |
|
33 | | -Create a `module.yaml` file in your package root: |
| 25 | +1. **Folder Structure** |
| 26 | + - Create a folder with a short, abbreviated name (e.g., `cis` for Creative Intelligence Suite) |
| 27 | + - The folder name serves as the module code |
34 | 28 |
|
35 | | -```yaml |
36 | | -code: my-custom-agents |
37 | | -name: 'My Custom Agents and Workflows' |
38 | | -default_selected: true |
39 | | -``` |
| 29 | +2. **Required Files** |
| 30 | + - Include a `module.yaml` file in the root folder |
| 31 | + - This file drives the installation process when used by the BMAD installer |
| 32 | + - Reference existing modules or the BMad Builder for configuration examples |
40 | 33 |
|
41 | | -#### Example |
| 34 | +3. **Folder Organization** |
| 35 | + Follow these conventions for optimal compatibility: |
42 | 36 |
|
43 | | -See `/example-custom-content` for a working example of a folder with multiple random custom agents and workflows. Technically its also just a module, but you will be able to further pick and choose from this folders contents of what you do and do not want to include in a destination folder. This way, you can store all custom content source in one location and easily install it to different locations. |
| 37 | + ``` |
| 38 | + module-code/ |
| 39 | + module.yaml |
| 40 | + agents/ |
| 41 | + workflows/ |
| 42 | + tools/ |
| 43 | + templates/ |
| 44 | + ... |
| 45 | + ``` |
44 | 46 |
|
45 | | -### 2. Custom Modules |
| 47 | + - `agents/` - Agent definitions |
| 48 | + - `workflows/` - Workflow definitions |
| 49 | + - Additional custom folders are supported but following conventions is recommended for agent and workflow discovery |
46 | 50 |
|
47 | | -Custom modules are complete BMAD modules that can include their own configuration, documentation, along with agents and workflows that all compliment each other. Additionally they will have their own installation scripts, data, and potentially other tools. Modules can be used for: |
| 51 | +**Note:** Full documentation for global modules and add-on modules will be available as support is finalized. |
48 | 52 |
|
49 | | -- Domain-specific functionality (e.g., industry-specific workflows, entertainment, education and training, medical, etc...) |
50 | | -- Integration with external systems |
51 | | -- Specialized agent collections |
52 | | -- Custom tooling and utilities |
| 53 | +### Standalone Content (Agents, Workflows, Tasks, Tools, Templates, Prompts) |
53 | 54 |
|
54 | | -#### Structure |
| 55 | +For standalone content that isn't part of a cohesive module collection, follow this structure: |
55 | 56 |
|
56 | | -A custom module follows this structure: |
| 57 | +1. **Module Configuration** |
| 58 | + - Create a folder with a `module.yaml` file (similar to custom modules) |
| 59 | + - Add the property `unitary: true` to the module.yaml |
| 60 | + - The `unitary: true` property indicates this is a collection of potentially unrelated items that don't depend on each other |
57 | 61 |
|
58 | | -``` |
59 | | -my-module/ |
60 | | -├── _module-installer/ |
61 | | -│ ├── installer.js # optional, when it exists it will run with module installation |
62 | | -├── module.yaml # Module installation configuration with custom question and answer capture |
63 | | -├── docs/ # Module documentation |
64 | | -├── agents/ # Module-specific agents |
65 | | -├── workflows/ # Module-specific workflows |
66 | | -├── data/ # csv or other content to power agent intelligence or workflows |
67 | | -├── tools/ # Custom tools, hooks, mcp |
68 | | -└── sub-modules/ # IDE-specific customizations |
69 | | - ├── vscode/ |
70 | | - └── cursor/ |
71 | | -``` |
| 62 | +2. **Folder Structure** |
| 63 | + Organize content in specific named folders: |
72 | 64 |
|
73 | | -#### Module Configuration |
| 65 | + ``` |
| 66 | + module-name/ |
| 67 | + module.yaml # Contains unitary: true |
| 68 | + agents/ |
| 69 | + workflows/ |
| 70 | + templates/ |
| 71 | + tools/ |
| 72 | + tasks/ |
| 73 | + prompts/ |
| 74 | + ``` |
74 | 75 |
|
75 | | -The `module.yaml` file defines how your module is installed: |
| 76 | +3. **Individual Item Organization** |
| 77 | + Each item should have its own subfolder: |
| 78 | + ```text |
| 79 | + my-custom-stuff/ |
| 80 | + module.yaml |
| 81 | + agents/ |
| 82 | + larry/larry.agent.md |
| 83 | + curly/curly.agent.md |
| 84 | + moe/moe.agent.md |
| 85 | + moe/moe-sidecar/memories.csv |
| 86 | + ``` |
76 | 87 |
|
77 | | -```yaml |
78 | | -# Module metadata |
79 | | -code: my-module |
80 | | -name: 'My Custom Module' |
81 | | -default_selected: false |
| 88 | +**Future Feature:** Unitary modules will support selective installation, allowing users to pick and choose which specific items to install. |
82 | 89 |
|
83 | | -header: 'My Custom Module' |
84 | | -subheader: 'Description of what this module does' |
85 | | -
|
86 | | -# Configuration prompts |
87 | | -my_setting: |
88 | | - prompt: 'Configure your module setting' |
89 | | - default: 'default-value' |
90 | | - result: '{value}' |
91 | | -``` |
92 | | - |
93 | | -#### Example |
94 | | - |
95 | | -See `/example-custom-module` for a complete example: |
| 90 | +**Note:** Documentation explaining the distinctions between these content types and their specific use cases will be available soon. |
96 | 91 |
|
97 | 92 | ## Installation Process |
98 | 93 |
|
99 | | -### Step 1: Running the Installer |
100 | | - |
101 | | -When you run the existing normal BMAD installer - either from the cloned repo, OR via NPX, it will ask about custom content: |
102 | | - |
103 | | -``` |
104 | | -? Do you have custom content to install? |
105 | | -❯ No (skip custom content) |
106 | | - Enter a directory path |
107 | | - Enter a URL [Coming soon] |
108 | | -``` |
109 | | - |
110 | | -### Step 2: Providing Custom Content Path |
111 | | - |
112 | | -If you select "Enter a directory path", the installer will prompt for the location: |
113 | | - |
114 | | -``` |
115 | | -? Enter the path to your custom content directory: /path/to/folder/containing/content/folder |
116 | | -``` |
117 | | - |
118 | | -The installer will: |
119 | | - |
120 | | -- Scan for `module.yaml` files (modules) |
121 | | -- Display an indication of how many installable folders it has found. Note that a project with stand along agents and workflows all under a single folder like the example will just list the count as 1 for that directory. |
122 | | - |
123 | | -### Step 3: Selecting Content |
124 | | - |
125 | | -The installer presents a unified selection interface: |
126 | | - |
127 | | -``` |
128 | | -? Select modules and custom content to install: |
129 | | -[── Custom Content ──] |
130 | | - ◉ My Custom Agents and Workflows (/path/to/custom) |
131 | | -[── Official Content ──] |
132 | | - ◯ BMM: Business Method & Management |
133 | | - ◯ CIS: Creativity & Innovation Suite |
134 | | -``` |
135 | | - |
136 | | -## Agent Sidecar Support |
| 94 | +### Prerequisites |
137 | 95 |
|
138 | | -Agents with sidecar content can store personal data, memories, and working files outside of the `_bmad` directory. This separation keeps personal content separate from BMAD's core files. |
| 96 | +Ensure your content follows the proper conventions and includes a `module.yaml` file (only one per top-level folder). |
139 | 97 |
|
140 | | -### What is Sidecar Content? |
| 98 | +### New Project Installation |
141 | 99 |
|
142 | | -Sidecar content includes: |
| 100 | +When setting up a new BMAD project: |
143 | 101 |
|
144 | | -- Agent memories and learning data |
145 | | -- Personal working files |
146 | | -- Temporary data |
147 | | -- User-specific configurations |
| 102 | +1. The installer will prompt: `Would you like to install a local custom module (this includes custom agents and workflows also)? (y/N)` |
| 103 | +2. Select 'y' to specify the path to your module folder containing `module.yaml` |
148 | 104 |
|
149 | | -### Sidecar Configuration |
| 105 | +### Existing Project Modification |
150 | 106 |
|
151 | | -The sidecar folder location is configured during BMAD core installation: |
| 107 | +To add custom content to an existing BMAD project: |
152 | 108 |
|
153 | | -``` |
154 | | -? Where should users' agent sidecar memory folders be stored? |
155 | | -❯ _bmad-user-memory |
156 | | -``` |
| 109 | +1. Run the installer against your project location |
| 110 | +2. Select `Modify BMAD Installation` |
| 111 | +3. Choose the option to add, modify, or update custom modules |
157 | 112 |
|
158 | | -### How It Works |
| 113 | +### Upcoming Features |
159 | 114 |
|
160 | | -1. **Agent Declaration**: Agents declare `hasSidecar: true` in their metadata |
161 | | -2. **Sidecar Detection**: The installer automatically detects folders with "sidecar" in the name |
162 | | -3. **Installation**: Sidecar content is always copied to the destination install \_bmad/\_memory folder. |
| 115 | +- **Unitary Module Selection:** For modules with `type: unitary` (instead of `type: module`), you'll be able to select specific items to install |
| 116 | +- **Add-on Module Dependencies:** The installer will verify and install dependencies for add-on modules automatically |
163 | 117 |
|
164 | | -### Example Structure |
| 118 | +## Quick Updates |
165 | 119 |
|
166 | | -``` |
167 | | -my-agent/ |
168 | | -├── agent.md # Agent definition |
169 | | -└── my-agent-sidecar/ # Sidecar content folder |
170 | | - ├── memories/ |
171 | | - ├── working/ |
172 | | - └── config/ |
173 | | -``` |
| 120 | +When updates to BMAD Core or core modules (BMM, CIS, etc.) become available, the quick update process will: |
174 | 121 |
|
175 | | -### Git Integration |
| 122 | +1. Apply available updates to core modules |
| 123 | +2. Recompile all agents with customizations from the `_config/agents` folder |
| 124 | +3. Retain your custom content from a cached location |
| 125 | +4. Preserve your existing configurations and customizations |
176 | 126 |
|
177 | | -Since sidecar content is stored outside the `_bmad` directory (and typically outside version control), users can: |
| 127 | +This means you don't need to keep the source module files locally. When updates are available, simply point to the updated module location during the update process. |
178 | 128 |
|
179 | | -- Add the sidecar folder to `.gitignore` to exclude personal data |
180 | | -- Share agent definitions without exposing personal content |
181 | | -- Maintain separate configurations for different projects |
| 129 | +## Important Considerations |
182 | 130 |
|
183 | | -Example `.gitignore` entry: |
| 131 | +### Module Naming Conflicts |
184 | 132 |
|
185 | | -``` |
186 | | -# Exclude agent personal data |
187 | | -_bmad-user-memory/ |
188 | | -``` |
| 133 | +When installing unofficial modules, ensure unique identification to avoid conflicts: |
189 | 134 |
|
190 | | -## Creating Custom Content with BMAD Builder |
| 135 | +1. **Module Codes:** Each module must have a unique code (e.g., don't use `bmm` for custom modules) |
| 136 | +2. **Module Names:** Avoid using names that conflict with existing modules |
| 137 | +3. **Multiple Custom Modules:** If creating multiple custom modules, use distinct codes for each |
191 | 138 |
|
192 | | -The BMAD Builder provides workflows that will guide you to produce your own custom content: |
| 139 | +**Examples of conflicts to avoid:** |
193 | 140 |
|
194 | | -1. **Agent Templates**: Use standardized agent templates with proper structure |
195 | | -2. **Workflow Templates**: Create workflows using proven patterns |
196 | | -3. **Validation Tools**: Validate your content before distribution |
197 | | -4. **Package Generation**: Generate properly structured packages |
| 141 | +- Don't create a custom module with code `bmm` (already used by BMad Method) |
| 142 | +- Don't name multiple custom modules with the same code like `mca` |
198 | 143 |
|
199 | 144 | ### Best Practices |
200 | 145 |
|
201 | | -1. **Use Clear Naming**: Make your content codes and names descriptive |
202 | | -2. **Provide Documentation**: Include clear setup and usage instructions |
203 | | -3. **Test Installation**: Test your content in a clean environment |
204 | | -4. **Version Management**: Use semantic versioning for updates |
205 | | -5. **Respect User Privacy**: Keep personal data in sidecar folders |
206 | | -
|
207 | | -## Distribution |
208 | | -
|
209 | | -Custom content can be distributed: |
210 | | -
|
211 | | -1. **File System**: Copy folders directly to users |
212 | | -2. **Git Repositories**: Clone or download from version control |
213 | | -3. **Package Managers**: [Coming soon] npm package support |
214 | | -4. **URL Installation**: [Coming soon] Direct URL installation, including an official community vetted module forge |
215 | | -
|
216 | | -## Troubleshooting |
217 | | -
|
218 | | -### No Custom Content Found |
219 | | -
|
220 | | -- Ensure your `module.yaml` files are properly named |
221 | | -- Check file permissions |
222 | | -- Verify the directory path is correct |
223 | | -
|
224 | | -### Installation Errors |
225 | | -
|
226 | | -- Run the installer with verbose logging |
227 | | -- Check for syntax errors in YAML configuration files |
228 | | -- Verify all required files are present |
229 | | -
|
230 | | -### Sidecar Issues |
231 | | -
|
232 | | -- Ensure the agent has `hasSidecar: true` in metadata |
233 | | -- Check that sidecar folders contain "-sidecar" in the name |
234 | | -- Verify the folder on install got cloned to \_bmad/\_memory |
235 | | -- Ensure the custom agent has proper language in it to actually use the sidecar content, including loading memories on agent load. |
236 | | -
|
237 | | -## Support |
238 | | -
|
239 | | -For help with custom content creation or installation: |
240 | | -
|
241 | | -1. Check the examples in `/example-custom-content` and `/example-custom-module` |
242 | | -2. Review the BMAD documentation |
243 | | -3. Create an issue in the BMAD repository |
244 | | -4. Join the BMAD community discussions on discord |
| 146 | +- Use descriptive, unique codes for your modules |
| 147 | +- Document any dependencies your custom modules have |
| 148 | +- Test custom modules in isolation before sharing |
| 149 | +- Consider version numbering for your custom content to track updates |
0 commit comments