bmad-method 4.26.0 → 4.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +2 -0
- package/CHANGELOG.md +15 -0
- package/README.md +29 -282
- package/bmad-core/agents/analyst.md +3 -1
- package/bmad-core/agents/bmad-master.md +5 -1
- package/bmad-core/agents/bmad-orchestrator.md +1 -1
- package/bmad-core/core-config.yaml +1 -1
- package/bmad-core/data/bmad-kb.md +74 -15
- package/bmad-core/data/brainstorming-techniques.md +36 -0
- package/bmad-core/data/elicitation-methods.md +134 -0
- package/bmad-core/tasks/advanced-elicitation.md +82 -57
- package/bmad-core/tasks/facilitate-brainstorming-session.md +136 -0
- package/bmad-core/templates/architecture-tmpl.md +23 -23
- package/bmad-core/templates/brainstorming-output-tmpl.md +149 -0
- package/bmad-core/templates/prd-tmpl.md +6 -6
- package/bmad-core/templates/prd-tmpl2.yaml +202 -0
- package/bmad-core/utils/plan-management.md +9 -13
- package/bmad-core/workflows/greenfield-service.yaml +1 -1
- package/common/tasks/create-doc.md +4 -4
- package/common/tasks/create-doc2.md +65 -0
- package/common/utils/bmad-doc-template.md +296 -0
- package/dist/agents/analyst.txt +481 -305
- package/dist/agents/architect.txt +60 -59
- package/dist/agents/bmad-master.txt +694 -399
- package/dist/agents/bmad-orchestrator.txt +197 -116
- package/dist/agents/dev.txt +18 -17
- package/dist/agents/pm.txt +47 -46
- package/dist/agents/po.txt +31 -30
- package/dist/agents/qa.txt +15 -14
- package/dist/agents/sm.txt +23 -22
- package/dist/agents/ux-expert.txt +29 -28
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +33 -32
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +19 -18
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +21 -20
- package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +385 -297
- package/dist/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.txt +103 -77
- package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +29 -28
- package/dist/teams/team-all.txt +610 -438
- package/dist/teams/team-fullstack.txt +597 -425
- package/dist/teams/team-ide-minimal.txt +238 -157
- package/dist/teams/team-no-ui.txt +583 -411
- package/docs/agentic-tools/github-copilot-guide.md +29 -9
- package/docs/bmad-workflow-guide.md +2 -2
- package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
- package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +2 -2
- package/expansion-packs/bmad-creator-tools/config.yaml +1 -1
- package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
- package/package.json +1 -1
- package/tools/builders/web-builder.js +117 -22
- package/tools/installer/config/install.config.yaml +2 -2
- package/tools/installer/lib/ide-setup.js +2 -2
- package/tools/installer/package.json +1 -1
- package/tools/lib/dependency-resolver.js +3 -3
- package/tools/md-assets/web-agent-startup-instructions.md +10 -10
- package/bmad-core/tasks/brainstorming-techniques.md +0 -238
|
@@ -1,22 +1,42 @@
|
|
|
1
|
-
# BMad Method Guide for
|
|
1
|
+
# BMad Method Guide for GitHub Copilot
|
|
2
2
|
|
|
3
3
|
For the complete workflow, see the [BMad Workflow Guide](../bmad-workflow-guide.md).
|
|
4
4
|
|
|
5
5
|
## Installation
|
|
6
6
|
|
|
7
|
-
When running `npx bmad-method install`, select **
|
|
7
|
+
When running `npx bmad-method install`, select **GitHub Copilot** as your IDE. This command will perform the following actions:
|
|
8
8
|
|
|
9
9
|
- Create the `.bmad-core/` directory with all the agent rule files.
|
|
10
10
|
- Create the `.vscode/` directory and add a `settings.json` file if it does not already exist, and add the basic configuration to enable GitHub Copilot's agent mode.
|
|
11
11
|
- Create a chatmodes file under your .github folder for each specific agent being added
|
|
12
12
|
|
|
13
|
-
## Using
|
|
13
|
+
## Using BMAD Agents in GitHub Copilot
|
|
14
14
|
|
|
15
|
-
1.
|
|
15
|
+
1. **Open GitHub Copilot chat** in VS Code (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux).
|
|
16
|
+
2. Select the agent you want to use from the chat input's participant selector (e.g., `@workspace` > `dev`).
|
|
17
|
+
3. The agent adopts that persona for the conversation.
|
|
18
|
+
4. Use `*help` to see the commands available for the selected agent.
|
|
16
19
|
|
|
17
|
-
##
|
|
20
|
+
## Available Agents
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
22
|
+
You can switch between agents using the chat participant selector. The following agents are available for GitHub Copilot:
|
|
23
|
+
|
|
24
|
+
- `bmad-master` - Master Task Executor
|
|
25
|
+
- `dev` - Development expert
|
|
26
|
+
- `qa` - Quality Assurance specialist
|
|
27
|
+
- `ux-expert` - UX specialist
|
|
28
|
+
|
|
29
|
+
## GitHub Copilot-Specific Features
|
|
30
|
+
|
|
31
|
+
- **Settings**: Use the `.vscode/settings.json` file to configure Copilot behavior. The installer can configure these for you.
|
|
32
|
+
- `chat.agent.maxRequests`: Maximum requests per agent session (recommended: 15).
|
|
33
|
+
- `github.copilot.chat.agent.runTasks`: Allow agents to run workspace tasks (e.g., from `package.json` scripts).
|
|
34
|
+
- `github.copilot.chat.agent.autoFix`: Enable automatic error detection and fixing in generated code.
|
|
35
|
+
- `chat.tools.autoApprove`: Auto-approve ALL tools without confirmation (use with caution).
|
|
36
|
+
- **VS Code integration**: Works within VS Code's GitHub Copilot chat panel.
|
|
37
|
+
- **Tool Confirmation**: Copilot will ask for confirmation before running tools that can modify files. You can approve a tool once, for the session, or always.
|
|
38
|
+
|
|
39
|
+
## Tips for GitHub Copilot Users
|
|
40
|
+
|
|
41
|
+
- You can use a `.github/copilot-instructions.md` file to provide additional context or instructions for your projects that are not covered by the BMAD framework.
|
|
42
|
+
- BMAD agents can come with a pre-configured set of tools. You can see which tools an agent uses by looking at the `tools` section in its `.github/chatmodes/[agent].chatmode.md` file.
|
|
@@ -22,7 +22,7 @@ The BMad Method follows a structured approach to AI-assisted software developmen
|
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
- Choose "Complete installation"
|
|
25
|
-
- Select your IDE (Cursor, Claude Code, Windsurf, Trae, Roo Code, or
|
|
25
|
+
- Select your IDE (Cursor, Claude Code, Windsurf, Trae, Roo Code, or GitHub Copilot)
|
|
26
26
|
|
|
27
27
|
2. **Verify installation**:
|
|
28
28
|
- `.bmad-core/` folder created with all agents
|
|
@@ -114,7 +114,7 @@ Follow the SM → Dev cycle for systematic story development:
|
|
|
114
114
|
- **Windsurf**: `@agent-name` (e.g., `@bmad-master`)
|
|
115
115
|
- **Trae**: `@agent-name` (e.g., `@bmad-master`)
|
|
116
116
|
- **Roo Code**: Select mode from mode selector (e.g., `bmad-bmad-master`)
|
|
117
|
-
- **
|
|
117
|
+
- **GitHub Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
|
118
118
|
|
|
119
119
|
### Chat Management:
|
|
120
120
|
|
|
@@ -57,7 +57,7 @@ Before creating stories, ensure you have:
|
|
|
57
57
|
### 3. Template Execution
|
|
58
58
|
|
|
59
59
|
**Load Template:**
|
|
60
|
-
Use `templates
|
|
60
|
+
Use `{root}/templates/game-story-tmpl.md` following all embedded LLM instructions
|
|
61
61
|
|
|
62
62
|
**Key Focus Areas:**
|
|
63
63
|
|
|
@@ -93,7 +93,7 @@ Use `templates#game-story-tmpl` following all embedded LLM instructions
|
|
|
93
93
|
### 5. Quality Assurance
|
|
94
94
|
|
|
95
95
|
**Apply Checklist:**
|
|
96
|
-
Execute `checklists
|
|
96
|
+
Execute `{root}/checklists/game-story-dod-checklist.md` against completed story
|
|
97
97
|
|
|
98
98
|
**Story Criteria:**
|
|
99
99
|
|
package/package.json
CHANGED
|
@@ -21,6 +21,76 @@ class WebBuilder {
|
|
|
21
21
|
return yaml.load(content);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
convertToWebPath(filePath, bundleRoot = 'bmad-core') {
|
|
25
|
+
// Convert absolute paths to web bundle paths with dot prefix
|
|
26
|
+
// All resources get installed under the bundle root, so use that path
|
|
27
|
+
const relativePath = path.relative(this.rootDir, filePath);
|
|
28
|
+
const pathParts = relativePath.split(path.sep);
|
|
29
|
+
|
|
30
|
+
let resourcePath;
|
|
31
|
+
if (pathParts[0] === 'expansion-packs') {
|
|
32
|
+
// For expansion packs, remove 'expansion-packs/packname' and use the rest
|
|
33
|
+
resourcePath = pathParts.slice(2).join('/');
|
|
34
|
+
} else {
|
|
35
|
+
// For bmad-core, common, etc., remove the first part
|
|
36
|
+
resourcePath = pathParts.slice(1).join('/');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return `.${bundleRoot}/${resourcePath}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
generateWebInstructions(bundleType, packName = null) {
|
|
43
|
+
// Generate dynamic web instructions based on bundle type
|
|
44
|
+
const rootExample = packName ? `.${packName}` : '.bmad-core';
|
|
45
|
+
const examplePath = packName ? `.${packName}/folder/filename.md` : '.bmad-core/folder/filename.md';
|
|
46
|
+
const personasExample = packName ? `.${packName}/personas/analyst.md` : '.bmad-core/personas/analyst.md';
|
|
47
|
+
const tasksExample = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md';
|
|
48
|
+
const utilsExample = packName ? `.${packName}/utils/template-format.md` : '.bmad-core/utils/template-format.md';
|
|
49
|
+
const tasksRef = packName ? `.${packName}/tasks/create-story.md` : '.bmad-core/tasks/create-story.md';
|
|
50
|
+
|
|
51
|
+
return `# Web Agent Bundle Instructions
|
|
52
|
+
|
|
53
|
+
You are now operating as a specialized AI agent from the BMad-Method framework. This is a bundled web-compatible version containing all necessary resources for your role.
|
|
54
|
+
|
|
55
|
+
## Important Instructions
|
|
56
|
+
|
|
57
|
+
1. **Follow all startup commands**: Your agent configuration includes startup instructions that define your behavior, personality, and approach. These MUST be followed exactly.
|
|
58
|
+
|
|
59
|
+
2. **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
|
|
60
|
+
|
|
61
|
+
- \`==================== START: ${examplePath} ====================\`
|
|
62
|
+
- \`==================== END: ${examplePath} ====================\`
|
|
63
|
+
|
|
64
|
+
When you need to reference a resource mentioned in your instructions:
|
|
65
|
+
|
|
66
|
+
- Look for the corresponding START/END tags
|
|
67
|
+
- The format is always the full path with dot prefix (e.g., \`${personasExample}\`, \`${tasksExample}\`)
|
|
68
|
+
- If a section is specified (e.g., \`{root}/tasks/create-story.md#section-name\`), navigate to that section within the file
|
|
69
|
+
|
|
70
|
+
**Understanding YAML References**: In the agent configuration, resources are referenced in the dependencies section. For example:
|
|
71
|
+
|
|
72
|
+
\`\`\`yaml
|
|
73
|
+
dependencies:
|
|
74
|
+
utils:
|
|
75
|
+
- template-format
|
|
76
|
+
tasks:
|
|
77
|
+
- create-story
|
|
78
|
+
\`\`\`
|
|
79
|
+
|
|
80
|
+
These references map directly to bundle sections:
|
|
81
|
+
|
|
82
|
+
- \`utils: template-format\` → Look for \`==================== START: ${utilsExample} ====================\`
|
|
83
|
+
- \`tasks: create-story\` → Look for \`==================== START: ${tasksRef} ====================\`
|
|
84
|
+
|
|
85
|
+
3. **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance.
|
|
86
|
+
|
|
87
|
+
4. **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role according to the BMad-Method framework.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
`;
|
|
92
|
+
}
|
|
93
|
+
|
|
24
94
|
async cleanOutputDirs() {
|
|
25
95
|
for (const dir of this.outputDirs) {
|
|
26
96
|
try {
|
|
@@ -73,16 +143,18 @@ class WebBuilder {
|
|
|
73
143
|
|
|
74
144
|
async buildAgentBundle(agentId) {
|
|
75
145
|
const dependencies = await this.resolver.resolveAgentDependencies(agentId);
|
|
76
|
-
const template =
|
|
146
|
+
const template = this.generateWebInstructions('agent');
|
|
77
147
|
|
|
78
148
|
const sections = [template];
|
|
79
149
|
|
|
80
150
|
// Add agent configuration
|
|
81
|
-
|
|
151
|
+
const agentPath = this.convertToWebPath(dependencies.agent.path, 'bmad-core');
|
|
152
|
+
sections.push(this.formatSection(agentPath, dependencies.agent.content, 'bmad-core'));
|
|
82
153
|
|
|
83
154
|
// Add all dependencies
|
|
84
155
|
for (const resource of dependencies.resources) {
|
|
85
|
-
|
|
156
|
+
const resourcePath = this.convertToWebPath(resource.path, 'bmad-core');
|
|
157
|
+
sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
|
|
86
158
|
}
|
|
87
159
|
|
|
88
160
|
return sections.join("\n");
|
|
@@ -90,21 +162,24 @@ class WebBuilder {
|
|
|
90
162
|
|
|
91
163
|
async buildTeamBundle(teamId) {
|
|
92
164
|
const dependencies = await this.resolver.resolveTeamDependencies(teamId);
|
|
93
|
-
const template =
|
|
165
|
+
const template = this.generateWebInstructions('team');
|
|
94
166
|
|
|
95
167
|
const sections = [template];
|
|
96
168
|
|
|
97
169
|
// Add team configuration
|
|
98
|
-
|
|
170
|
+
const teamPath = this.convertToWebPath(dependencies.team.path, 'bmad-core');
|
|
171
|
+
sections.push(this.formatSection(teamPath, dependencies.team.content, 'bmad-core'));
|
|
99
172
|
|
|
100
173
|
// Add all agents
|
|
101
174
|
for (const agent of dependencies.agents) {
|
|
102
|
-
|
|
175
|
+
const agentPath = this.convertToWebPath(agent.path, 'bmad-core');
|
|
176
|
+
sections.push(this.formatSection(agentPath, agent.content, 'bmad-core'));
|
|
103
177
|
}
|
|
104
178
|
|
|
105
179
|
// Add all deduplicated resources
|
|
106
180
|
for (const resource of dependencies.resources) {
|
|
107
|
-
|
|
181
|
+
const resourcePath = this.convertToWebPath(resource.path, 'bmad-core');
|
|
182
|
+
sections.push(this.formatSection(resourcePath, resource.content, 'bmad-core'));
|
|
108
183
|
}
|
|
109
184
|
|
|
110
185
|
return sections.join("\n");
|
|
@@ -161,14 +236,17 @@ class WebBuilder {
|
|
|
161
236
|
}
|
|
162
237
|
}
|
|
163
238
|
|
|
164
|
-
formatSection(path, content) {
|
|
239
|
+
formatSection(path, content, bundleRoot = 'bmad-core') {
|
|
165
240
|
const separator = "====================";
|
|
166
241
|
|
|
167
242
|
// Process agent content if this is an agent file
|
|
168
|
-
if (path.
|
|
243
|
+
if (path.includes("/agents/")) {
|
|
169
244
|
content = this.processAgentContent(content);
|
|
170
245
|
}
|
|
171
246
|
|
|
247
|
+
// Replace {root} references with the actual bundle root
|
|
248
|
+
content = this.replaceRootReferences(content, bundleRoot);
|
|
249
|
+
|
|
172
250
|
return [
|
|
173
251
|
`${separator} START: ${path} ${separator}`,
|
|
174
252
|
content.trim(),
|
|
@@ -177,6 +255,11 @@ class WebBuilder {
|
|
|
177
255
|
].join("\n");
|
|
178
256
|
}
|
|
179
257
|
|
|
258
|
+
replaceRootReferences(content, bundleRoot) {
|
|
259
|
+
// Replace {root} with the appropriate bundle root path
|
|
260
|
+
return content.replace(/\{root\}/g, `.${bundleRoot}`);
|
|
261
|
+
}
|
|
262
|
+
|
|
180
263
|
async validate() {
|
|
181
264
|
console.log("Validating agent configurations...");
|
|
182
265
|
const agents = await this.resolver.listAgents();
|
|
@@ -288,13 +371,14 @@ class WebBuilder {
|
|
|
288
371
|
}
|
|
289
372
|
|
|
290
373
|
async buildExpansionAgentBundle(packName, packDir, agentName) {
|
|
291
|
-
const template =
|
|
374
|
+
const template = this.generateWebInstructions('expansion-agent', packName);
|
|
292
375
|
const sections = [template];
|
|
293
376
|
|
|
294
377
|
// Add agent configuration
|
|
295
378
|
const agentPath = path.join(packDir, "agents", `${agentName}.md`);
|
|
296
379
|
const agentContent = await fs.readFile(agentPath, "utf8");
|
|
297
|
-
|
|
380
|
+
const agentWebPath = this.convertToWebPath(agentPath, packName);
|
|
381
|
+
sections.push(this.formatSection(agentWebPath, agentContent, packName));
|
|
298
382
|
|
|
299
383
|
// Resolve and add agent dependencies
|
|
300
384
|
const yamlContent = yamlUtils.extractYamlFromAgent(agentContent);
|
|
@@ -316,8 +400,9 @@ class WebBuilder {
|
|
|
316
400
|
const resourcePath = path.join(packDir, resourceType, `${resourceName}${ext}`);
|
|
317
401
|
try {
|
|
318
402
|
const resourceContent = await fs.readFile(resourcePath, "utf8");
|
|
403
|
+
const resourceWebPath = this.convertToWebPath(resourcePath, packName);
|
|
319
404
|
sections.push(
|
|
320
|
-
this.formatSection(
|
|
405
|
+
this.formatSection(resourceWebPath, resourceContent, packName)
|
|
321
406
|
);
|
|
322
407
|
found = true;
|
|
323
408
|
break;
|
|
@@ -337,8 +422,9 @@ class WebBuilder {
|
|
|
337
422
|
);
|
|
338
423
|
try {
|
|
339
424
|
const coreContent = await fs.readFile(corePath, "utf8");
|
|
425
|
+
const coreWebPath = this.convertToWebPath(corePath, packName);
|
|
340
426
|
sections.push(
|
|
341
|
-
this.formatSection(
|
|
427
|
+
this.formatSection(coreWebPath, coreContent, packName)
|
|
342
428
|
);
|
|
343
429
|
found = true;
|
|
344
430
|
break;
|
|
@@ -359,8 +445,9 @@ class WebBuilder {
|
|
|
359
445
|
);
|
|
360
446
|
try {
|
|
361
447
|
const commonContent = await fs.readFile(commonPath, "utf8");
|
|
448
|
+
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
|
362
449
|
sections.push(
|
|
363
|
-
this.formatSection(
|
|
450
|
+
this.formatSection(commonWebPath, commonContent, packName)
|
|
364
451
|
);
|
|
365
452
|
found = true;
|
|
366
453
|
break;
|
|
@@ -388,7 +475,7 @@ class WebBuilder {
|
|
|
388
475
|
}
|
|
389
476
|
|
|
390
477
|
async buildExpansionTeamBundle(packName, packDir, teamConfigPath) {
|
|
391
|
-
const template =
|
|
478
|
+
const template = this.generateWebInstructions('expansion-team', packName);
|
|
392
479
|
|
|
393
480
|
const sections = [template];
|
|
394
481
|
|
|
@@ -396,7 +483,8 @@ class WebBuilder {
|
|
|
396
483
|
const teamContent = await fs.readFile(teamConfigPath, "utf8");
|
|
397
484
|
const teamFileName = path.basename(teamConfigPath, ".yaml");
|
|
398
485
|
const teamConfig = this.parseYaml(teamContent);
|
|
399
|
-
|
|
486
|
+
const teamWebPath = this.convertToWebPath(teamConfigPath, packName);
|
|
487
|
+
sections.push(this.formatSection(teamWebPath, teamContent, packName));
|
|
400
488
|
|
|
401
489
|
// Get list of expansion pack agents
|
|
402
490
|
const expansionAgents = new Set();
|
|
@@ -446,7 +534,8 @@ class WebBuilder {
|
|
|
446
534
|
// Use expansion pack version (override)
|
|
447
535
|
const agentPath = path.join(agentsDir, `${agentId}.md`);
|
|
448
536
|
const agentContent = await fs.readFile(agentPath, "utf8");
|
|
449
|
-
|
|
537
|
+
const expansionAgentWebPath = this.convertToWebPath(agentPath, packName);
|
|
538
|
+
sections.push(this.formatSection(expansionAgentWebPath, agentContent, packName));
|
|
450
539
|
|
|
451
540
|
// Parse and collect dependencies from expansion agent
|
|
452
541
|
const agentYaml = agentContent.match(/```yaml\n([\s\S]*?)\n```/);
|
|
@@ -474,7 +563,8 @@ class WebBuilder {
|
|
|
474
563
|
try {
|
|
475
564
|
const coreAgentPath = path.join(this.rootDir, "bmad-core", "agents", `${agentId}.md`);
|
|
476
565
|
const coreAgentContent = await fs.readFile(coreAgentPath, "utf8");
|
|
477
|
-
|
|
566
|
+
const coreAgentWebPath = this.convertToWebPath(coreAgentPath, packName);
|
|
567
|
+
sections.push(this.formatSection(coreAgentWebPath, coreAgentContent, packName));
|
|
478
568
|
|
|
479
569
|
// Parse and collect dependencies from core agent
|
|
480
570
|
const yamlContent = yamlUtils.extractYamlFromAgent(coreAgentContent, true);
|
|
@@ -516,7 +606,8 @@ class WebBuilder {
|
|
|
516
606
|
const expansionPath = path.join(packDir, dep.type, `${dep.name}${ext}`);
|
|
517
607
|
try {
|
|
518
608
|
const content = await fs.readFile(expansionPath, "utf8");
|
|
519
|
-
|
|
609
|
+
const expansionWebPath = this.convertToWebPath(expansionPath, packName);
|
|
610
|
+
sections.push(this.formatSection(expansionWebPath, content, packName));
|
|
520
611
|
console.log(` ✓ Using expansion override for ${key}`);
|
|
521
612
|
found = true;
|
|
522
613
|
break;
|
|
@@ -532,7 +623,8 @@ class WebBuilder {
|
|
|
532
623
|
const corePath = path.join(this.rootDir, "bmad-core", dep.type, `${dep.name}${ext}`);
|
|
533
624
|
try {
|
|
534
625
|
const content = await fs.readFile(corePath, "utf8");
|
|
535
|
-
|
|
626
|
+
const coreWebPath = this.convertToWebPath(corePath, packName);
|
|
627
|
+
sections.push(this.formatSection(coreWebPath, content, packName));
|
|
536
628
|
found = true;
|
|
537
629
|
break;
|
|
538
630
|
} catch (error) {
|
|
@@ -547,7 +639,8 @@ class WebBuilder {
|
|
|
547
639
|
const commonPath = path.join(this.rootDir, "common", dep.type, `${dep.name}${ext}`);
|
|
548
640
|
try {
|
|
549
641
|
const content = await fs.readFile(commonPath, "utf8");
|
|
550
|
-
|
|
642
|
+
const commonWebPath = this.convertToWebPath(commonPath, packName);
|
|
643
|
+
sections.push(this.formatSection(commonWebPath, content, packName));
|
|
551
644
|
found = true;
|
|
552
645
|
break;
|
|
553
646
|
} catch (error) {
|
|
@@ -576,7 +669,9 @@ class WebBuilder {
|
|
|
576
669
|
// Only add if not already included as a dependency
|
|
577
670
|
const resourceKey = `${resourceDir}#${fileName}`;
|
|
578
671
|
if (!allDependencies.has(resourceKey)) {
|
|
579
|
-
|
|
672
|
+
const fullResourcePath = path.join(resourcePath, resourceFile);
|
|
673
|
+
const resourceWebPath = this.convertToWebPath(fullResourcePath, packName);
|
|
674
|
+
sections.push(this.formatSection(resourceWebPath, fileContent, packName));
|
|
580
675
|
}
|
|
581
676
|
}
|
|
582
677
|
} catch (error) {
|
|
@@ -86,6 +86,6 @@ ide-configurations:
|
|
|
86
86
|
# 1. The installer creates a .github/chatmodes/ directory in your project
|
|
87
87
|
# 2. Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
|
|
88
88
|
# 3. The agent will adopt that persona for the conversation
|
|
89
|
-
# 4. Requires VS Code 1.
|
|
89
|
+
# 4. Requires VS Code 1.101+ with `chat.agent.enabled: true` in settings
|
|
90
90
|
# 5. Agent files are stored in .github/chatmodes/
|
|
91
|
-
# 6. Use
|
|
91
|
+
# 6. Use `*help` to see available commands and agents
|
|
@@ -66,7 +66,7 @@ class IdeSetup {
|
|
|
66
66
|
case "gemini":
|
|
67
67
|
return this.setupGeminiCli(installDir, selectedAgent);
|
|
68
68
|
case "github-copilot":
|
|
69
|
-
return this.
|
|
69
|
+
return this.setupGitHubCopilot(installDir, selectedAgent, spinner);
|
|
70
70
|
default:
|
|
71
71
|
console.log(chalk.yellow(`\nIDE ${ide} not yet supported`));
|
|
72
72
|
return false;
|
|
@@ -566,7 +566,7 @@ class IdeSetup {
|
|
|
566
566
|
return true;
|
|
567
567
|
}
|
|
568
568
|
|
|
569
|
-
async
|
|
569
|
+
async setupGitHubCopilot(installDir, selectedAgent, spinner = null) {
|
|
570
570
|
await initializeModules();
|
|
571
571
|
|
|
572
572
|
// Configure VS Code workspace settings first to avoid UI conflicts with loading spinners
|
|
@@ -26,7 +26,7 @@ class DependencyResolver {
|
|
|
26
26
|
const dependencies = {
|
|
27
27
|
agent: {
|
|
28
28
|
id: agentId,
|
|
29
|
-
path:
|
|
29
|
+
path: agentPath,
|
|
30
30
|
content: agentContent,
|
|
31
31
|
config: agentConfig
|
|
32
32
|
},
|
|
@@ -56,7 +56,7 @@ class DependencyResolver {
|
|
|
56
56
|
const dependencies = {
|
|
57
57
|
team: {
|
|
58
58
|
id: teamId,
|
|
59
|
-
path:
|
|
59
|
+
path: teamPath,
|
|
60
60
|
content: teamContent,
|
|
61
61
|
config: teamConfig
|
|
62
62
|
},
|
|
@@ -152,7 +152,7 @@ class DependencyResolver {
|
|
|
152
152
|
const resource = {
|
|
153
153
|
type,
|
|
154
154
|
id,
|
|
155
|
-
path:
|
|
155
|
+
path: filePath,
|
|
156
156
|
content
|
|
157
157
|
};
|
|
158
158
|
|
|
@@ -4,18 +4,18 @@ You are now operating as a specialized AI agent from the BMad-Method framework.
|
|
|
4
4
|
|
|
5
5
|
## Important Instructions
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### **Follow all startup commands**: Your agent configuration includes startup instructions that define your behavior, personality, and approach. These MUST be followed exactly.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
|
|
10
10
|
|
|
11
|
-
- `==================== START: folder
|
|
12
|
-
- `==================== END: folder
|
|
11
|
+
- `==================== START: .bmad-core/folder/filename.md ====================`
|
|
12
|
+
- `==================== END: .bmad-core/folder/filename.md ====================`
|
|
13
13
|
|
|
14
14
|
When you need to reference a resource mentioned in your instructions:
|
|
15
15
|
|
|
16
16
|
- Look for the corresponding START/END tags
|
|
17
|
-
- The format is always
|
|
18
|
-
- If a section is specified (e.g., `tasks
|
|
17
|
+
- The format is always the full path with dot prefix (e.g., `.bmad-core/personas/analyst.md`, `.bmad-core/tasks/create-story.md`)
|
|
18
|
+
- If a section is specified (e.g., `{root}/tasks/create-story.md#section-name`), navigate to that section within the file
|
|
19
19
|
|
|
20
20
|
**Understanding YAML References**: In the agent configuration, resources are referenced in the dependencies section. For example:
|
|
21
21
|
|
|
@@ -29,11 +29,11 @@ dependencies:
|
|
|
29
29
|
|
|
30
30
|
These references map directly to bundle sections:
|
|
31
31
|
|
|
32
|
-
- `utils: template-format` → Look for `==================== START: utils
|
|
33
|
-
- `
|
|
32
|
+
- `dependencies.utils: template-format` → Look for `==================== START: .bmad-core/utils/template-format.md ====================`
|
|
33
|
+
- `dependencies.utils: create-story` → Look for `==================== START: .bmad-core/tasks/create-story.md ====================`
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
### **Execution Context**: You are operating in a web environment. All your capabilities and knowledge are contained within this bundle. Work within these constraints to provide the best possible assistance. You have no file system to write to, so you will maintain document history being drafted in your memory unless a canvas feature is available and the user confirms its usage.
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
## **Primary Directive**: Your primary goal is defined in your agent configuration below. Focus on fulfilling your designated role explicitly as defined.
|
|
38
38
|
|
|
39
39
|
---
|