bmad-method 4.17.0 → 4.19.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 (60) hide show
  1. package/.claude/commands/bmad-master.md +0 -1
  2. package/CHANGELOG.md +20 -0
  3. package/bmad-core/core-config.yml +0 -1
  4. package/{bmad-core → common}/tasks/create-doc.md +2 -2
  5. package/{expansion-packs/expansion-creator/common-tasks → common/tasks}/execute-checklist.md +2 -6
  6. package/common/utils/workflow-management.md +69 -0
  7. package/dist/agents/analyst.txt +2 -2
  8. package/dist/agents/architect.txt +4 -8
  9. package/dist/agents/bmad-master.txt +35 -270
  10. package/dist/agents/bmad-orchestrator.txt +33 -187
  11. package/dist/agents/dev.txt +2 -6
  12. package/dist/agents/pm.txt +4 -8
  13. package/dist/agents/po.txt +2 -6
  14. package/dist/agents/sm.txt +2 -6
  15. package/dist/agents/ux-expert.txt +4 -8
  16. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-designer.txt +4 -8
  17. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-developer.txt +2 -6
  18. package/dist/expansion-packs/bmad-2d-phaser-game-dev/agents/game-sm.txt +2 -6
  19. package/dist/expansion-packs/bmad-2d-phaser-game-dev/teams/phaser-2d-nodejs-game-team.txt +35 -193
  20. package/dist/expansion-packs/bmad-infrastructure-devops/agents/infra-devops-platform.txt +2 -2
  21. package/dist/expansion-packs/expansion-creator/agents/bmad-the-creator.txt +5 -5
  22. package/dist/teams/team-all.txt +35 -193
  23. package/dist/teams/team-fullstack.txt +35 -193
  24. package/dist/teams/team-ide-minimal.txt +35 -193
  25. package/dist/teams/team-no-ui.txt +35 -193
  26. package/docs/working-in-the-brownfield.md +2 -2
  27. package/expansion-packs/bmad-2d-phaser-game-dev/config.yml +5 -0
  28. package/expansion-packs/bmad-creator-tools/config.yml +5 -0
  29. package/expansion-packs/{expansion-creator → bmad-creator-tools}/tasks/generate-expansion-pack.md +5 -5
  30. package/expansion-packs/bmad-infrastructure-devops/config.yml +5 -0
  31. package/package.json +1 -1
  32. package/test-ide-paths.js +41 -0
  33. package/tools/builders/web-builder.js +60 -19
  34. package/tools/installer/config/ide-agent-config.yml +58 -0
  35. package/tools/installer/config/install.config.yml +0 -85
  36. package/tools/installer/lib/config-loader.js +89 -41
  37. package/tools/installer/lib/file-manager.js +1 -0
  38. package/tools/installer/lib/ide-setup.js +150 -116
  39. package/tools/installer/lib/installer.js +263 -9
  40. package/tools/installer/package.json +1 -1
  41. package/tools/lib/dependency-resolver.js +15 -0
  42. package/bmad-core/tasks/core-dump.md +0 -74
  43. package/bmad-core/tasks/execute-checklist.md +0 -97
  44. package/bmad-core/utils/file-resolution-context.md +0 -10
  45. package/bmad-core/utils/workflow-management.md +0 -223
  46. package/expansion-packs/bmad-2d-phaser-game-dev/manifest.yml +0 -45
  47. package/expansion-packs/bmad-infrastructure-devops/manifest.yml +0 -23
  48. package/expansion-packs/bmad-infrastructure-devops/tasks/create-doc.md +0 -74
  49. package/expansion-packs/expansion-creator/common-tasks/create-doc.md +0 -74
  50. package/expansion-packs/expansion-creator/manifest.yml +0 -12
  51. package/expansion-packs/expansion-creator/utils/template-format.md +0 -26
  52. package/expansion-packs/expansion-creator/utils/workflow-management.md +0 -223
  53. /package/{bmad-core → common}/utils/template-format.md +0 -0
  54. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/README.md +0 -0
  55. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/agents/bmad-the-creator.md +0 -0
  56. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/tasks/create-agent.md +0 -0
  57. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/templates/agent-teams-tmpl.md +0 -0
  58. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/templates/agent-tmpl.md +0 -0
  59. /package/expansion-packs/{expansion-creator → bmad-creator-tools}/templates/expansion-pack-plan-tmpl.md +0 -0
  60. /package/{bmad-core/utils → tools/md-assets}/web-agent-startup-instructions.md +0 -0
@@ -225,6 +225,10 @@ class Installer {
225
225
  const sourceDir = configLoader.getBmadCorePath();
226
226
  const bmadCoreDestDir = path.join(installDir, ".bmad-core");
227
227
  await fileManager.copyDirectory(sourceDir, bmadCoreDestDir);
228
+
229
+ // Copy common/ items to .bmad-core
230
+ spinner.text = "Copying common utilities...";
231
+ await this.copyCommonItems(installDir, ".bmad-core", spinner);
228
232
 
229
233
  // Get list of all files for manifest
230
234
  const glob = require("glob");
@@ -283,6 +287,11 @@ class Installer {
283
287
  }
284
288
  }
285
289
  }
290
+
291
+ // Copy common/ items to .bmad-core
292
+ spinner.text = "Copying common utilities...";
293
+ const commonFiles = await this.copyCommonItems(installDir, ".bmad-core", spinner);
294
+ files.push(...commonFiles);
286
295
  } else if (config.installType === "team") {
287
296
  // Team installation
288
297
  spinner.text = `Installing ${config.team} team...`;
@@ -313,6 +322,11 @@ class Installer {
313
322
  }
314
323
  }
315
324
  }
325
+
326
+ // Copy common/ items to .bmad-core
327
+ spinner.text = "Copying common utilities...";
328
+ const commonFiles = await this.copyCommonItems(installDir, ".bmad-core", spinner);
329
+ files.push(...commonFiles);
316
330
  } else if (config.installType === "expansion-only") {
317
331
  // Expansion-only installation - create minimal .bmad-core structure
318
332
  spinner.text = "Creating minimal .bmad-core structure for expansion packs...";
@@ -341,6 +355,10 @@ class Installer {
341
355
  );
342
356
  files.push(...copiedFiles.map(f => `.bmad-core/${f}`));
343
357
  }
358
+
359
+ // Copy common/ items to .bmad-core
360
+ spinner.text = "Copying common utilities...";
361
+ await this.copyCommonItems(installDir, ".bmad-core", spinner);
344
362
  }
345
363
 
346
364
  // Install expansion packs if requested
@@ -607,8 +625,10 @@ class Installer {
607
625
  console.log(chalk.green("✓ .bmad-core framework installed with all agents and workflows"));
608
626
 
609
627
  if (config.expansionPacks && config.expansionPacks.length > 0) {
610
- const packNames = config.expansionPacks.join(", ");
611
- console.log(chalk.green(`✓ Expansion packs installed: ${packNames}`));
628
+ console.log(chalk.green(`✓ Expansion packs installed:`));
629
+ for (const packId of config.expansionPacks) {
630
+ console.log(chalk.green(` - ${packId} → .${packId}/`));
631
+ }
612
632
  }
613
633
 
614
634
  if (config.includeWebBundles && config.webBundlesDirectory) {
@@ -797,9 +817,13 @@ class Installer {
797
817
  continue;
798
818
  }
799
819
 
800
- const expansionPackDir = path.dirname(pack.manifestPath);
820
+ const expansionPackDir = pack.packPath;
801
821
 
802
- // Define the folders to copy from expansion packs to .bmad-core
822
+ // Create dedicated dot folder for this expansion pack
823
+ const expansionDotFolder = path.join(installDir, `.${packId}`);
824
+ await fileManager.ensureDirectory(expansionDotFolder);
825
+
826
+ // Define the folders to copy from expansion packs
803
827
  const foldersToSync = [
804
828
  'agents',
805
829
  'agent-teams',
@@ -824,21 +848,47 @@ class Installer {
824
848
  nodir: true
825
849
  });
826
850
 
827
- // Copy each file to the destination
851
+ // Copy each file to the expansion pack's dot folder
828
852
  for (const file of files) {
829
853
  const sourcePath = path.join(sourceFolder, file);
830
- const destPath = path.join(installDir, '.bmad-core', folder, file);
854
+ const destPath = path.join(expansionDotFolder, folder, file);
831
855
 
832
856
  if (await fileManager.copyFile(sourcePath, destPath)) {
833
- installedFiles.push(path.join('.bmad-core', folder, file));
857
+ installedFiles.push(path.join(`.${packId}`, folder, file));
834
858
  }
835
859
  }
836
860
  }
837
861
  }
838
862
 
839
- // Web bundles are now available in the dist/ directory and don't need to be copied
863
+ // Copy config.yml
864
+ const configPath = path.join(expansionPackDir, 'config.yml');
865
+ if (await fileManager.pathExists(configPath)) {
866
+ const configDestPath = path.join(expansionDotFolder, 'config.yml');
867
+ if (await fileManager.copyFile(configPath, configDestPath)) {
868
+ installedFiles.push(path.join(`.${packId}`, 'config.yml'));
869
+ }
870
+ }
871
+
872
+ // Copy README if it exists
873
+ const readmePath = path.join(expansionPackDir, 'README.md');
874
+ if (await fileManager.pathExists(readmePath)) {
875
+ const readmeDestPath = path.join(expansionDotFolder, 'README.md');
876
+ if (await fileManager.copyFile(readmePath, readmeDestPath)) {
877
+ installedFiles.push(path.join(`.${packId}`, 'README.md'));
878
+ }
879
+ }
880
+
881
+ // Copy common/ items to expansion pack folder
882
+ spinner.text = `Copying common utilities to ${packId}...`;
883
+ await this.copyCommonItems(installDir, `.${packId}`, spinner);
884
+
885
+ // Check and resolve core dependencies
886
+ await this.resolveExpansionPackCoreDependencies(installDir, expansionDotFolder, packId, spinner);
887
+
888
+ // Check and resolve core agents referenced by teams
889
+ await this.resolveExpansionPackCoreAgents(installDir, expansionDotFolder, packId, spinner);
840
890
 
841
- console.log(chalk.green(`✓ Installed expansion pack: ${pack.name}`));
891
+ console.log(chalk.green(`✓ Installed expansion pack: ${pack.name} to ${`.${packId}`}`));
842
892
  } catch (error) {
843
893
  console.error(chalk.red(`Failed to install expansion pack ${packId}: ${error.message}`));
844
894
  }
@@ -847,6 +897,168 @@ class Installer {
847
897
  return installedFiles;
848
898
  }
849
899
 
900
+ async resolveExpansionPackCoreDependencies(installDir, expansionDotFolder, packId, spinner) {
901
+ const glob = require('glob');
902
+ const yaml = require('yaml');
903
+ const fs = require('fs').promises;
904
+
905
+ // Find all agent files in the expansion pack
906
+ const agentFiles = glob.sync('agents/*.md', {
907
+ cwd: expansionDotFolder
908
+ });
909
+
910
+ for (const agentFile of agentFiles) {
911
+ const agentPath = path.join(expansionDotFolder, agentFile);
912
+ const agentContent = await fs.readFile(agentPath, 'utf8');
913
+
914
+ // Extract YAML frontmatter to check dependencies
915
+ const yamlMatch = agentContent.match(/```yaml\n([\s\S]*?)```/);
916
+ if (yamlMatch) {
917
+ try {
918
+ const agentConfig = yaml.parse(yamlMatch[1]);
919
+ const dependencies = agentConfig.dependencies || {};
920
+
921
+ // Check for core dependencies (those that don't exist in the expansion pack)
922
+ for (const depType of ['tasks', 'templates', 'checklists', 'workflows', 'utils', 'data']) {
923
+ const deps = dependencies[depType] || [];
924
+
925
+ for (const dep of deps) {
926
+ const depFileName = dep.endsWith('.md') ? dep : `${dep}.md`;
927
+ const expansionDepPath = path.join(expansionDotFolder, depType, depFileName);
928
+
929
+ // Check if dependency exists in expansion pack
930
+ if (!(await fileManager.pathExists(expansionDepPath))) {
931
+ // Try to find it in core
932
+ const coreDepPath = path.join(configLoader.getBmadCorePath(), depType, depFileName);
933
+
934
+ if (await fileManager.pathExists(coreDepPath)) {
935
+ spinner.text = `Copying core dependency ${dep} for ${packId}...`;
936
+
937
+ // Copy from core to expansion pack dot folder
938
+ const destPath = path.join(expansionDotFolder, depType, depFileName);
939
+ await fileManager.copyFile(coreDepPath, destPath);
940
+
941
+ console.log(chalk.dim(` Added core dependency: ${depType}/${depFileName}`));
942
+ } else {
943
+ console.warn(chalk.yellow(` Warning: Dependency ${depType}/${dep} not found in core or expansion pack`));
944
+ }
945
+ }
946
+ }
947
+ }
948
+ } catch (error) {
949
+ console.warn(chalk.yellow(` Warning: Could not parse agent dependencies: ${error.message}`));
950
+ }
951
+ }
952
+ }
953
+ }
954
+
955
+ async resolveExpansionPackCoreAgents(installDir, expansionDotFolder, packId, spinner) {
956
+ const glob = require('glob');
957
+ const yaml = require('yaml');
958
+ const fs = require('fs').promises;
959
+
960
+ // Find all team files in the expansion pack
961
+ const teamFiles = glob.sync('agent-teams/*.yml', {
962
+ cwd: expansionDotFolder
963
+ });
964
+
965
+ // Also get existing agents in the expansion pack
966
+ const existingAgents = new Set();
967
+ const agentFiles = glob.sync('agents/*.md', {
968
+ cwd: expansionDotFolder
969
+ });
970
+ for (const agentFile of agentFiles) {
971
+ const agentName = path.basename(agentFile, '.md');
972
+ existingAgents.add(agentName);
973
+ }
974
+
975
+ // Process each team file
976
+ for (const teamFile of teamFiles) {
977
+ const teamPath = path.join(expansionDotFolder, teamFile);
978
+ const teamContent = await fs.readFile(teamPath, 'utf8');
979
+
980
+ try {
981
+ const teamConfig = yaml.parse(teamContent);
982
+ const agents = teamConfig.agents || [];
983
+
984
+ // Add bmad-orchestrator if not present (required for all teams)
985
+ if (!agents.includes('bmad-orchestrator')) {
986
+ agents.unshift('bmad-orchestrator');
987
+ }
988
+
989
+ // Check each agent in the team
990
+ for (const agentId of agents) {
991
+ if (!existingAgents.has(agentId)) {
992
+ // Agent not in expansion pack, try to get from core
993
+ const coreAgentPath = path.join(configLoader.getBmadCorePath(), 'agents', `${agentId}.md`);
994
+
995
+ if (await fileManager.pathExists(coreAgentPath)) {
996
+ spinner.text = `Copying core agent ${agentId} for ${packId}...`;
997
+
998
+ // Copy agent file
999
+ const destPath = path.join(expansionDotFolder, 'agents', `${agentId}.md`);
1000
+ await fileManager.copyFile(coreAgentPath, destPath);
1001
+ existingAgents.add(agentId);
1002
+
1003
+ console.log(chalk.dim(` Added core agent: ${agentId}`));
1004
+
1005
+ // Now resolve this agent's dependencies too
1006
+ const agentContent = await fs.readFile(coreAgentPath, 'utf8');
1007
+ const yamlMatch = agentContent.match(/```ya?ml\n([\s\S]*?)```/);
1008
+
1009
+ if (yamlMatch) {
1010
+ try {
1011
+ // Clean up the YAML to handle command descriptions
1012
+ let yamlContent = yamlMatch[1];
1013
+ yamlContent = yamlContent.replace(/^(\s*-)(\s*"[^"]+")(\s*-\s*.*)$/gm, '$1$2');
1014
+
1015
+ const agentConfig = yaml.parse(yamlContent);
1016
+ const dependencies = agentConfig.dependencies || {};
1017
+
1018
+ // Copy all dependencies for this agent
1019
+ for (const depType of ['tasks', 'templates', 'checklists', 'workflows', 'utils', 'data']) {
1020
+ const deps = dependencies[depType] || [];
1021
+
1022
+ for (const dep of deps) {
1023
+ const depFileName = dep.endsWith('.md') || dep.endsWith('.yml') ? dep : `${dep}.md`;
1024
+ const expansionDepPath = path.join(expansionDotFolder, depType, depFileName);
1025
+
1026
+ // Check if dependency exists in expansion pack
1027
+ if (!(await fileManager.pathExists(expansionDepPath))) {
1028
+ // Try to find it in core
1029
+ const coreDepPath = path.join(configLoader.getBmadCorePath(), depType, depFileName);
1030
+
1031
+ if (await fileManager.pathExists(coreDepPath)) {
1032
+ const destDepPath = path.join(expansionDotFolder, depType, depFileName);
1033
+ await fileManager.copyFile(coreDepPath, destDepPath);
1034
+ console.log(chalk.dim(` Added agent dependency: ${depType}/${depFileName}`));
1035
+ } else {
1036
+ // Try common folder
1037
+ const commonDepPath = path.join(this.rootDir, 'common', depType, depFileName);
1038
+ if (await fileManager.pathExists(commonDepPath)) {
1039
+ const destDepPath = path.join(expansionDotFolder, depType, depFileName);
1040
+ await fileManager.copyFile(commonDepPath, destDepPath);
1041
+ console.log(chalk.dim(` Added agent dependency from common: ${depType}/${depFileName}`));
1042
+ }
1043
+ }
1044
+ }
1045
+ }
1046
+ }
1047
+ } catch (error) {
1048
+ console.warn(chalk.yellow(` Warning: Could not parse agent ${agentId} dependencies: ${error.message}`));
1049
+ }
1050
+ }
1051
+ } else {
1052
+ console.warn(chalk.yellow(` Warning: Core agent ${agentId} not found for team ${path.basename(teamFile, '.yml')}`));
1053
+ }
1054
+ }
1055
+ }
1056
+ } catch (error) {
1057
+ console.warn(chalk.yellow(` Warning: Could not parse team file ${teamFile}: ${error.message}`));
1058
+ }
1059
+ }
1060
+ }
1061
+
850
1062
  getWebBundleInfo(config) {
851
1063
  const webBundleType = config.webBundleType || 'all';
852
1064
 
@@ -944,6 +1156,48 @@ class Installer {
944
1156
  }
945
1157
  }
946
1158
 
1159
+ async copyCommonItems(installDir, targetSubdir, spinner) {
1160
+ const glob = require('glob');
1161
+ const fs = require('fs').promises;
1162
+ const sourceBase = path.dirname(path.dirname(path.dirname(path.dirname(__filename)))); // Go up to project root
1163
+ const commonPath = path.join(sourceBase, 'common');
1164
+ const targetPath = path.join(installDir, targetSubdir);
1165
+ const copiedFiles = [];
1166
+
1167
+ // Check if common/ exists
1168
+ if (!(await fileManager.pathExists(commonPath))) {
1169
+ console.warn(chalk.yellow('Warning: common/ folder not found'));
1170
+ return copiedFiles;
1171
+ }
1172
+
1173
+ // Copy all items from common/ to target
1174
+ const commonItems = glob.sync('**/*', {
1175
+ cwd: commonPath,
1176
+ nodir: true
1177
+ });
1178
+
1179
+ for (const item of commonItems) {
1180
+ const sourcePath = path.join(commonPath, item);
1181
+ const destPath = path.join(targetPath, item);
1182
+
1183
+ // Read the file content
1184
+ const content = await fs.readFile(sourcePath, 'utf8');
1185
+
1186
+ // Replace {root} with the target subdirectory
1187
+ const updatedContent = content.replace(/\{root\}/g, targetSubdir);
1188
+
1189
+ // Ensure directory exists
1190
+ await fileManager.ensureDirectory(path.dirname(destPath));
1191
+
1192
+ // Write the updated content
1193
+ await fs.writeFile(destPath, updatedContent, 'utf8');
1194
+ copiedFiles.push(path.join(targetSubdir, item));
1195
+ }
1196
+
1197
+ console.log(chalk.dim(` Added ${commonItems.length} common utilities`));
1198
+ return copiedFiles;
1199
+ }
1200
+
947
1201
  async findInstallation() {
948
1202
  // Look for .bmad-core in current directory or parent directories
949
1203
  let currentDir = process.cwd();
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bmad-method",
3
- "version": "4.17.0",
3
+ "version": "4.19.0",
4
4
  "description": "BMAD Method installer - AI-powered Agile development framework",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {
@@ -6,6 +6,7 @@ class DependencyResolver {
6
6
  constructor(rootDir) {
7
7
  this.rootDir = rootDir;
8
8
  this.bmadCore = path.join(rootDir, 'bmad-core');
9
+ this.common = path.join(rootDir, 'common');
9
10
  this.cache = new Map();
10
11
  }
11
12
 
@@ -123,6 +124,7 @@ class DependencyResolver {
123
124
  let content = null;
124
125
  let filePath = null;
125
126
 
127
+ // First try bmad-core
126
128
  for (const ext of extensions) {
127
129
  try {
128
130
  filePath = path.join(this.bmadCore, type, `${id}${ext}`);
@@ -132,6 +134,19 @@ class DependencyResolver {
132
134
  // Try next extension
133
135
  }
134
136
  }
137
+
138
+ // If not found in bmad-core, try common folder
139
+ if (!content) {
140
+ for (const ext of extensions) {
141
+ try {
142
+ filePath = path.join(this.common, type, `${id}${ext}`);
143
+ content = await fs.readFile(filePath, 'utf8');
144
+ break;
145
+ } catch (e) {
146
+ // Try next extension
147
+ }
148
+ }
149
+ }
135
150
 
136
151
  if (!content) {
137
152
  console.warn(`Resource not found: ${type}/${id}`);
@@ -1,74 +0,0 @@
1
- # Core Dump Task
2
-
3
- ## Purpose
4
-
5
- To create a concise memory recording file (`.ai/core-dump-n.md`) that captures the essential context of the current agent session, enabling seamless continuation of work in future agent sessions. This task ensures persistent context across agent conversations while maintaining minimal token usage for efficient context loading.
6
-
7
- ## Inputs for this Task
8
-
9
- - Current session conversation history and accomplishments
10
- - Files created, modified, or deleted during the session
11
- - Key decisions made and procedures followed
12
- - Current project state and next logical steps
13
- - User requests and agent responses that shaped the session
14
-
15
- ## Task Execution Instructions
16
-
17
- ### 0. Check Existing Core Dump
18
-
19
- Before proceeding, check if `.ai/core-dump.md` already exists:
20
-
21
- - If file exists, ask user: "Core dump file exists. Should I: 1. Overwrite, 2. Update, 3. Append or 4. Create new?"
22
- - **Overwrite**: Replace entire file with new content
23
- - **Update**: Merge new session info with existing content, updating relevant sections
24
- - **Append**: Add new session as a separate entry while preserving existing content
25
- - **Create New**: Create a new file, appending the next possible -# to the file, such as core-dump-3.md if 1 and 2 already exist.
26
- - If file doesn't exist, proceed with creation of `core-dump-1.md`
27
-
28
- ### 1. Analyze Session Context
29
-
30
- - Review the entire conversation to identify key accomplishments
31
- - Note any specific tasks, procedures, or workflows that were executed
32
- - Identify important decisions made or problems solved
33
- - Capture the user's working style and preferences observed during the session
34
-
35
- ### 2. Document What Was Accomplished
36
-
37
- - **Primary Actions**: List the main tasks completed concisely
38
- - **Story Progress**: For story work, use format "Tasks Complete: 1-6, 8. Next Task Pending: 7, 9"
39
- - **Problem Solving**: Document any challenges encountered and how they were resolved
40
- - **User Communications**: Summarize key user requests, preferences, and discussion points
41
-
42
- ### 3. Record File System Changes (Concise Format)
43
-
44
- - **Files Created**: `filename.ext` (brief purpose/size)
45
- - **Files Modified**: `filename.ext` (what changed)
46
- - **Files Deleted**: `filename.ext` (why removed)
47
- - Focus on essential details, avoid verbose descriptions
48
-
49
- ### 4. Capture Current Project State
50
-
51
- - **Project Progress**: Where the project stands after this session
52
- - **Current Issues**: Any blockers or problems that need resolution
53
- - **Next Logical Steps**: What would be the natural next actions to take
54
-
55
- ### 5. Create/Update Core Dump File
56
-
57
- Based on user's choice from step 0, handle the file accordingly:
58
-
59
- ### 6. Optimize for Minimal Context
60
-
61
- - Keep descriptions concise but informative
62
- - Use abbreviated formats where possible (file sizes, task numbers)
63
- - Focus on actionable information rather than detailed explanations
64
- - Avoid redundant information that can be found in project documentation
65
- - Prioritize information that would be lost without this recording
66
- - Ensure the file can be quickly scanned and understood
67
-
68
- ### 7. Validate Completeness
69
-
70
- - Verify all significant session activities are captured
71
- - Ensure a future agent could understand the current state
72
- - Check that file changes are accurately recorded
73
- - Confirm next steps are clear and actionable
74
- - Verify user communication style and preferences are noted
@@ -1,97 +0,0 @@
1
- # Checklist Validation Task
2
-
3
- This task provides instructions for validating documentation against checklists. The agent MUST follow these instructions to ensure thorough and systematic validation of documents.
4
-
5
- ## Context
6
-
7
- The BMAD Method uses various checklists to ensure quality and completeness of different artifacts. Each checklist contains embedded prompts and instructions to guide the LLM through thorough validation and advanced elicitation. The checklists automatically identify their required artifacts and guide the validation process.
8
-
9
- ## Available Checklists
10
-
11
- If the user asks or does not specify a specific checklist, list the checklists available to the agent persona. If the task is being run not with a specific agent, tell the user to check the bmad-core/checklists folder to select the appropriate one to run.
12
-
13
- ## Instructions
14
-
15
- 1. **Initial Assessment**
16
-
17
- - If user or the task being run provides a checklist name:
18
- - Try fuzzy matching (e.g. "architecture checklist" -> "architect-checklist")
19
- - If multiple matches found, ask user to clarify
20
- - Load the appropriate checklist from bmad-core/checklists/
21
- - If no checklist specified:
22
- - Ask the user which checklist they want to use
23
- - Present the available options from the files in the checklists folder
24
- - Confirm if they want to work through the checklist:
25
- - Section by section (interactive mode - very time consuming)
26
- - All at once (YOLO mode - recommended for checklists, there will be a summary of sections at the end to discuss)
27
-
28
- 2. **Document and Artifact Gathering**
29
-
30
- - Each checklist will specify its required documents/artifacts at the beginning
31
- - Follow the checklist's specific instructions for what to gather, generally a file can be resolved in the docs folder, if not or unsure, halt and ask or confirm with the user.
32
-
33
- 3. **Checklist Processing**
34
-
35
- If in interactive mode:
36
-
37
- - Work through each section of the checklist one at a time
38
- - For each section:
39
- - Review all items in the section following instructions for that section embedded in the checklist
40
- - Check each item against the relevant documentation or artifacts as appropriate
41
- - Present summary of findings for that section, highlighting warnings, errors and non applicable items (rationale for non-applicability).
42
- - Get user confirmation before proceeding to next section or if any thing major do we need to halt and take corrective action
43
-
44
- If in YOLO mode:
45
-
46
- - Process all sections at once
47
- - Create a comprehensive report of all findings
48
- - Present the complete analysis to the user
49
-
50
- 4. **Validation Approach**
51
-
52
- For each checklist item:
53
-
54
- - Read and understand the requirement
55
- - Look for evidence in the documentation that satisfies the requirement
56
- - Consider both explicit mentions and implicit coverage
57
- - Aside from this, follow all checklist llm instructions
58
- - Mark items as:
59
- - ✅ PASS: Requirement clearly met
60
- - ❌ FAIL: Requirement not met or insufficient coverage
61
- - ⚠️ PARTIAL: Some aspects covered but needs improvement
62
- - N/A: Not applicable to this case
63
-
64
- 5. **Section Analysis**
65
-
66
- For each section:
67
-
68
- - think step by step to calculate pass rate
69
- - Identify common themes in failed items
70
- - Provide specific recommendations for improvement
71
- - In interactive mode, discuss findings with user
72
- - Document any user decisions or explanations
73
-
74
- 6. **Final Report**
75
-
76
- Prepare a summary that includes:
77
-
78
- - Overall checklist completion status
79
- - Pass rates by section
80
- - List of failed items with context
81
- - Specific recommendations for improvement
82
- - Any sections or items marked as N/A with justification
83
-
84
- ## Checklist Execution Methodology
85
-
86
- Each checklist now contains embedded LLM prompts and instructions that will:
87
-
88
- 1. **Guide thorough thinking** - Prompts ensure deep analysis of each section
89
- 2. **Request specific artifacts** - Clear instructions on what documents/access is needed
90
- 3. **Provide contextual guidance** - Section-specific prompts for better validation
91
- 4. **Generate comprehensive reports** - Final summary with detailed findings
92
-
93
- The LLM will:
94
-
95
- - Execute the complete checklist validation
96
- - Present a final report with pass/fail rates and key findings
97
- - Offer to provide detailed analysis of any section, especially those with warnings or failures
@@ -1,10 +0,0 @@
1
- # File Resolution Context
2
-
3
- Update the installer/upgrader so that when agents are added to a project (under Add these two lines to any agent's `activation-instructions` for ide installation:
4
-
5
- ```yaml
6
- - IDE-FILE-RESOLUTION: Dependencies map to files as {root}/{type}/{name}.md where root=".bmad-core", type=folder (tasks/templates/checklists/utils), name=dependency name.
7
- - REQUEST-RESOLUTION: Match user requests to your commands/dependencies flexibly (e.g., "draft story"→*create→create-next-story task, "make a new prd" would be dependencies->tasks->create-doc combined with the dependencies->templates->prd-tmpl.md), or ask for clarification if ambiguous.
8
- ```
9
-
10
- and add `root: .bmad-core` as the first root yml property.