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.
Files changed (55) hide show
  1. package/.vscode/settings.json +2 -0
  2. package/CHANGELOG.md +15 -0
  3. package/README.md +29 -282
  4. package/bmad-core/agents/analyst.md +3 -1
  5. package/bmad-core/agents/bmad-master.md +5 -1
  6. package/bmad-core/agents/bmad-orchestrator.md +1 -1
  7. package/bmad-core/core-config.yaml +1 -1
  8. package/bmad-core/data/bmad-kb.md +74 -15
  9. package/bmad-core/data/brainstorming-techniques.md +36 -0
  10. package/bmad-core/data/elicitation-methods.md +134 -0
  11. package/bmad-core/tasks/advanced-elicitation.md +82 -57
  12. package/bmad-core/tasks/facilitate-brainstorming-session.md +136 -0
  13. package/bmad-core/templates/architecture-tmpl.md +23 -23
  14. package/bmad-core/templates/brainstorming-output-tmpl.md +149 -0
  15. package/bmad-core/templates/prd-tmpl.md +6 -6
  16. package/bmad-core/templates/prd-tmpl2.yaml +202 -0
  17. package/bmad-core/utils/plan-management.md +9 -13
  18. package/bmad-core/workflows/greenfield-service.yaml +1 -1
  19. package/common/tasks/create-doc.md +4 -4
  20. package/common/tasks/create-doc2.md +65 -0
  21. package/common/utils/bmad-doc-template.md +296 -0
  22. package/dist/agents/analyst.txt +481 -305
  23. package/dist/agents/architect.txt +60 -59
  24. package/dist/agents/bmad-master.txt +694 -399
  25. package/dist/agents/bmad-orchestrator.txt +197 -116
  26. package/dist/agents/dev.txt +18 -17
  27. package/dist/agents/pm.txt +47 -46
  28. package/dist/agents/po.txt +31 -30
  29. package/dist/agents/qa.txt +15 -14
  30. package/dist/agents/sm.txt +23 -22
  31. package/dist/agents/ux-expert.txt +29 -28
  32. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +33 -32
  33. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +19 -18
  34. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +21 -20
  35. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +385 -297
  36. package/dist/expansion-packs/bmad-creator-tools/agents/bmad-the-creator.txt +103 -77
  37. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +29 -28
  38. package/dist/teams/team-all.txt +610 -438
  39. package/dist/teams/team-fullstack.txt +597 -425
  40. package/dist/teams/team-ide-minimal.txt +238 -157
  41. package/dist/teams/team-no-ui.txt +583 -411
  42. package/docs/agentic-tools/github-copilot-guide.md +29 -9
  43. package/docs/bmad-workflow-guide.md +2 -2
  44. package/expansion-packs/bmad-2d-phaser-game-dev/config.yaml +1 -1
  45. package/expansion-packs/bmad-2d-phaser-game-dev/tasks/create-game-story.md +2 -2
  46. package/expansion-packs/bmad-creator-tools/config.yaml +1 -1
  47. package/expansion-packs/bmad-infrastructure-devops/config.yaml +1 -1
  48. package/package.json +1 -1
  49. package/tools/builders/web-builder.js +117 -22
  50. package/tools/installer/config/install.config.yaml +2 -2
  51. package/tools/installer/lib/ide-setup.js +2 -2
  52. package/tools/installer/package.json +1 -1
  53. package/tools/lib/dependency-resolver.js +3 -3
  54. package/tools/md-assets/web-agent-startup-instructions.md +10 -10
  55. package/bmad-core/tasks/brainstorming-techniques.md +0 -238
@@ -1,22 +1,42 @@
1
- # BMad Method Guide for Github Copilot
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 **Github Copilot** as your IDE. This command will perform the following actions:
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 BMad Agents in VS Code
13
+ ## Using BMAD Agents in GitHub Copilot
14
14
 
15
- 1. In the GitHub Copilot Chat window, select **Agent** from the chat mode dropdown list.
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
- ## VS Code Specific Features
20
+ ## Available Agents
18
21
 
19
- - **Dynamic Configuration**: When you first invoke an agent (e.g., `@dev`), VS Code will automatically update `.vscode/settings.json` by adding the configuration for that chat mode.
20
- - **Activation**: Use the `@` prefix in the GitHub Copilot Chat for instant switching between agents.
21
- - **Collaboration**: Fully compatible with **Live Share**, allowing you, your team, and BMad agents to work together in real-time.
22
- - **Project Context**: Agents have full access to your workspace, including open files and the selected code.
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 Github Copilot)
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
- - **Github Copilot**: Open the Chat view (`⌃⌘I` on Mac, `Ctrl+Alt+I` on Windows/Linux) and select **Agent** from the chat mode selector.
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
 
@@ -1,5 +1,5 @@
1
1
  name: bmad-2d-phaser-game-dev
2
- version: 1.6.0
2
+ version: 1.7.0
3
3
  short-title: 2D game development with Phaser 3 & TypeScript
4
4
  description: >-
5
5
  2D Game Development expansion pack for BMad Method - Phaser 3 & TypeScript
@@ -57,7 +57,7 @@ Before creating stories, ensure you have:
57
57
  ### 3. Template Execution
58
58
 
59
59
  **Load Template:**
60
- Use `templates#game-story-tmpl` following all embedded LLM instructions
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#game-story-dod-checklist` against completed story
96
+ Execute `{root}/checklists/game-story-dod-checklist.md` against completed story
97
97
 
98
98
  **Story Criteria:**
99
99
 
@@ -1,5 +1,5 @@
1
1
  name: bmad-creator-tools
2
- version: 1.5.0
2
+ version: 1.6.0
3
3
  short-title: Tools for creating BMad framework components
4
4
  description: Tools for creating and extending BMad framework components.
5
5
  author: Brian (BMad)
@@ -1,5 +1,5 @@
1
1
  name: bmad-infrastructure-devops
2
- version: 1.5.0
2
+ version: 1.6.0
3
3
  short-title: Infrastructure and DevOps capabilities
4
4
  description: >-
5
5
  This expansion pack extends BMad Method with comprehensive infrastructure and
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "4.26.0",
3
+ "version": "4.27.0",
4
4
  "description": "Breakthrough Method of Agile AI-driven Development",
5
5
  "main": "tools/cli.js",
6
6
  "bin": {
@@ -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 = await fs.readFile(this.templatePath, "utf8");
146
+ const template = this.generateWebInstructions('agent');
77
147
 
78
148
  const sections = [template];
79
149
 
80
150
  // Add agent configuration
81
- sections.push(this.formatSection(dependencies.agent.path, dependencies.agent.content));
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
- sections.push(this.formatSection(resource.path, resource.content));
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 = await fs.readFile(this.templatePath, "utf8");
165
+ const template = this.generateWebInstructions('team');
94
166
 
95
167
  const sections = [template];
96
168
 
97
169
  // Add team configuration
98
- sections.push(this.formatSection(dependencies.team.path, dependencies.team.content));
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
- sections.push(this.formatSection(agent.path, agent.content));
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
- sections.push(this.formatSection(resource.path, resource.content));
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.startsWith("agents#")) {
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 = await fs.readFile(this.templatePath, "utf8");
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
- sections.push(this.formatSection(`agents#${agentName}`, agentContent));
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(`${resourceType}#${resourceName}`, resourceContent)
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(`${resourceType}#${resourceName}`, coreContent)
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(`${resourceType}#${resourceName}`, commonContent)
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 = await fs.readFile(this.templatePath, "utf8");
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
- sections.push(this.formatSection(`agent-teams#${teamFileName}`, teamContent));
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
- sections.push(this.formatSection(`agents#${agentId}`, agentContent));
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
- sections.push(this.formatSection(`agents#${agentId}`, coreAgentContent));
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
- sections.push(this.formatSection(key, content));
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
- sections.push(this.formatSection(key, content));
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
- sections.push(this.formatSection(key, content));
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
- sections.push(this.formatSection(resourceKey, fileContent));
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.99+ with `chat.agent.enabled: true` in settings
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 `/help` to see available commands and agents
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.setupVsCodeCopilot(installDir, selectedAgent, spinner);
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 setupVsCodeCopilot(installDir, selectedAgent, spinner = null) {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "4.26.0",
3
+ "version": "4.27.0",
4
4
  "description": "BMad Method installer - AI-powered Agile development framework",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {
@@ -26,7 +26,7 @@ class DependencyResolver {
26
26
  const dependencies = {
27
27
  agent: {
28
28
  id: agentId,
29
- path: `agents#${agentId}`,
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: `agent-teams#${teamId}`,
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: `${type}#${id}`,
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
- 1. **Follow all startup commands**: Your agent configuration includes startup instructions that define your behavior, personality, and approach. These MUST be followed exactly.
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
- 2. **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
9
+ ### **Resource Navigation**: This bundle contains all resources you need. Resources are marked with tags like:
10
10
 
11
- - `==================== START: folder#filename ====================`
12
- - `==================== END: folder#filename ====================`
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 `folder#filename` (e.g., `personas#analyst`, `tasks#create-story`)
18
- - If a section is specified (e.g., `tasks#create-story#section-name`), navigate to that section within the file
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#template-format ====================`
33
- - `tasks: create-story` → Look for `==================== START: tasks#create-story ====================`
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
- 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.
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
- 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.
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
  ---