bmad-method 6.2.1-next.15 → 6.2.1-next.16

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "bmad-method",
4
- "version": "6.2.1-next.15",
4
+ "version": "6.2.1-next.16",
5
5
  "description": "Breakthrough Method of Agile AI-driven Development",
6
6
  "keywords": [
7
7
  "agile",
@@ -82,11 +82,11 @@ class DependencyResolver {
82
82
  // Check if this is a source directory (has 'src' subdirectory)
83
83
  const srcDir = path.join(bmadDir, 'src');
84
84
  if (await fs.pathExists(srcDir)) {
85
- // Source directory structure: src/core or src/bmm
85
+ // Source directory structure: src/core-skills or src/bmm-skills
86
86
  if (module === 'core') {
87
- moduleDir = path.join(srcDir, 'core');
87
+ moduleDir = path.join(srcDir, 'core-skills');
88
88
  } else if (module === 'bmm') {
89
- moduleDir = path.join(srcDir, 'bmm');
89
+ moduleDir = path.join(srcDir, 'bmm-skills');
90
90
  }
91
91
  }
92
92
 
@@ -401,8 +401,8 @@ class DependencyResolver {
401
401
  const bmadPath = dep.dependency.replace(/^bmad\//, '');
402
402
 
403
403
  // Try to resolve as if it's in src structure
404
- // bmad/core/tasks/foo.md -> src/core/tasks/foo.md
405
- // bmad/bmm/tasks/bar.md -> src/bmm/tasks/bar.md (bmm is directly under src/)
404
+ // bmad/core/tasks/foo.md -> src/core-skills/tasks/foo.md
405
+ // bmad/bmm/tasks/bar.md -> src/bmm-skills/tasks/bar.md (bmm is directly under src/)
406
406
  // bmad/cis/agents/bar.md -> src/modules/cis/agents/bar.md
407
407
 
408
408
  if (bmadPath.startsWith('core/')) {
@@ -584,11 +584,11 @@ class DependencyResolver {
584
584
  const relative = path.relative(bmadDir, filePath);
585
585
  const parts = relative.split(path.sep);
586
586
 
587
- // Handle source directory structure (src/core, src/bmm, or src/modules/xxx)
587
+ // Handle source directory structure (src/core-skills, src/bmm-skills, or src/modules/xxx)
588
588
  if (parts[0] === 'src') {
589
- if (parts[1] === 'core') {
589
+ if (parts[1] === 'core-skills') {
590
590
  return 'core';
591
- } else if (parts[1] === 'bmm') {
591
+ } else if (parts[1] === 'bmm-skills') {
592
592
  return 'bmm';
593
593
  } else if (parts[1] === 'modules' && parts.length > 2) {
594
594
  return parts[2];
@@ -631,11 +631,11 @@ class DependencyResolver {
631
631
  let moduleBase;
632
632
 
633
633
  // Check if file is in source directory structure
634
- if (file.includes('/src/core/') || file.includes('/src/bmm/')) {
634
+ if (file.includes('/src/core-skills/') || file.includes('/src/bmm-skills/')) {
635
635
  if (module === 'core') {
636
- moduleBase = path.join(bmadDir, 'src', 'core');
636
+ moduleBase = path.join(bmadDir, 'src', 'core-skills');
637
637
  } else if (module === 'bmm') {
638
- moduleBase = path.join(bmadDir, 'src', 'bmm');
638
+ moduleBase = path.join(bmadDir, 'src', 'bmm-skills');
639
639
  }
640
640
  } else {
641
641
  moduleBase = module === 'core' ? path.join(bmadDir, 'core') : path.join(bmadDir, 'modules', module);
@@ -1789,8 +1789,8 @@ class Installer {
1789
1789
  .filter((entry) => entry.isDirectory() && entry.name !== '_config' && entry.name !== 'docs' && entry.name !== '_memory')
1790
1790
  .map((entry) => entry.name);
1791
1791
 
1792
- // Add core module to scan (it's installed at root level as _config, but we check src/core)
1793
- const coreModulePath = getSourcePath('core');
1792
+ // Add core module to scan (it's installed at root level as _config, but we check src/core-skills)
1793
+ const coreModulePath = getSourcePath('core-skills');
1794
1794
  const modulePaths = new Map();
1795
1795
 
1796
1796
  // Map all module source paths
@@ -2709,7 +2709,7 @@ class Installer {
2709
2709
  // Get source path
2710
2710
  let sourcePath;
2711
2711
  if (moduleId === 'core') {
2712
- sourcePath = getSourcePath('core');
2712
+ sourcePath = getSourcePath('core-skills');
2713
2713
  } else {
2714
2714
  // First check if it's in the custom cache
2715
2715
  if (customModuleSources.has(moduleId)) {
@@ -764,10 +764,10 @@ class Manifest {
764
764
  const configs = {};
765
765
 
766
766
  for (const moduleName of modules) {
767
- // Handle core module differently - it's in src/core not src/modules/core
767
+ // Handle core module differently - it's in src/core-skills not src/modules/core
768
768
  const configPath =
769
769
  moduleName === 'core'
770
- ? path.join(process.cwd(), 'src', 'core', 'config.yaml')
770
+ ? path.join(process.cwd(), 'src', 'core-skills', 'config.yaml')
771
771
  : path.join(process.cwd(), 'src', 'modules', moduleName, 'config.yaml');
772
772
 
773
773
  try {
@@ -146,13 +146,13 @@ When running any workflow:
146
146
  transformWorkflowPath(workflowPath) {
147
147
  let transformed = workflowPath;
148
148
 
149
- if (workflowPath.includes('/src/bmm/')) {
150
- const match = workflowPath.match(/\/src\/bmm\/(.+)/);
149
+ if (workflowPath.includes('/src/bmm-skills/')) {
150
+ const match = workflowPath.match(/\/src\/bmm-skills\/(.+)/);
151
151
  if (match) {
152
152
  transformed = `{project-root}/${this.bmadFolderName}/bmm/${match[1]}`;
153
153
  }
154
- } else if (workflowPath.includes('/src/core/')) {
155
- const match = workflowPath.match(/\/src\/core\/(.+)/);
154
+ } else if (workflowPath.includes('/src/core-skills/')) {
155
+ const match = workflowPath.match(/\/src\/core-skills\/(.+)/);
156
156
  if (match) {
157
157
  transformed = `{project-root}/${this.bmadFolderName}/core/${match[1]}`;
158
158
  }
@@ -187,7 +187,7 @@ class ModuleManager {
187
187
 
188
188
  /**
189
189
  * List all available modules (excluding core which is always installed)
190
- * bmm is the only built-in module, directly under src/bmm
190
+ * bmm is the only built-in module, directly under src/bmm-skills
191
191
  * All other modules come from external-official-modules.yaml
192
192
  * @returns {Object} Object with modules array and customModules array
193
193
  */
@@ -195,10 +195,10 @@ class ModuleManager {
195
195
  const modules = [];
196
196
  const customModules = [];
197
197
 
198
- // Add built-in bmm module (directly under src/bmm)
199
- const bmmPath = getSourcePath('bmm');
198
+ // Add built-in bmm module (directly under src/bmm-skills)
199
+ const bmmPath = getSourcePath('bmm-skills');
200
200
  if (await fs.pathExists(bmmPath)) {
201
- const bmmInfo = await this.getModuleInfo(bmmPath, 'bmm', 'src/bmm');
201
+ const bmmInfo = await this.getModuleInfo(bmmPath, 'bmm', 'src/bmm-skills');
202
202
  if (bmmInfo) {
203
203
  modules.push(bmmInfo);
204
204
  }
@@ -251,7 +251,8 @@ class ModuleManager {
251
251
  }
252
252
 
253
253
  // Mark as custom if it's using custom.yaml OR if it's outside src/bmm or src/core
254
- const isCustomSource = sourceDescription !== 'src/bmm' && sourceDescription !== 'src/core' && sourceDescription !== 'src/modules';
254
+ const isCustomSource =
255
+ sourceDescription !== 'src/bmm-skills' && sourceDescription !== 'src/core-skills' && sourceDescription !== 'src/modules';
255
256
  const moduleInfo = {
256
257
  id: defaultName,
257
258
  path: modulePath,
@@ -300,9 +301,9 @@ class ModuleManager {
300
301
  return this.customModulePaths.get(moduleCode);
301
302
  }
302
303
 
303
- // Check for built-in bmm module (directly under src/bmm)
304
+ // Check for built-in bmm module (directly under src/bmm-skills)
304
305
  if (moduleCode === 'bmm') {
305
- const bmmPath = getSourcePath('bmm');
306
+ const bmmPath = getSourcePath('bmm-skills');
306
307
  if (await fs.pathExists(bmmPath)) {
307
308
  return bmmPath;
308
309
  }
@@ -1141,10 +1142,10 @@ class ModuleManager {
1141
1142
  const projectRoot = path.dirname(bmadDir);
1142
1143
  const emptyResult = { createdDirs: [], movedDirs: [], createdWdsFolders: [] };
1143
1144
 
1144
- // Special handling for core module - it's in src/core not src/modules
1145
+ // Special handling for core module - it's in src/core-skills not src/modules
1145
1146
  let sourcePath;
1146
1147
  if (moduleName === 'core') {
1147
- sourcePath = getSourcePath('core');
1148
+ sourcePath = getSourcePath('core-skills');
1148
1149
  } else {
1149
1150
  sourcePath = await this.findModuleSource(moduleName, { silent: true });
1150
1151
  if (!sourcePath) {
@@ -16,7 +16,7 @@ function findProjectRoot(startPath = __dirname) {
16
16
  try {
17
17
  const pkg = fs.readJsonSync(packagePath);
18
18
  // Check if this is the BMAD project
19
- if (pkg.name === 'bmad-method' || fs.existsSync(path.join(currentPath, 'src', 'core'))) {
19
+ if (pkg.name === 'bmad-method' || fs.existsSync(path.join(currentPath, 'src', 'core-skills'))) {
20
20
  return currentPath;
21
21
  }
22
22
  } catch {
@@ -24,8 +24,8 @@ function findProjectRoot(startPath = __dirname) {
24
24
  }
25
25
  }
26
26
 
27
- // Also check for src/core as a marker
28
- if (fs.existsSync(path.join(currentPath, 'src', 'core', 'agents'))) {
27
+ // Also check for src/core-skills as a marker
28
+ if (fs.existsSync(path.join(currentPath, 'src', 'core-skills', 'agents'))) {
29
29
  return currentPath;
30
30
  }
31
31
 
@@ -61,10 +61,10 @@ function getSourcePath(...segments) {
61
61
  */
62
62
  function getModulePath(moduleName, ...segments) {
63
63
  if (moduleName === 'core') {
64
- return getSourcePath('core', ...segments);
64
+ return getSourcePath('core-skills', ...segments);
65
65
  }
66
66
  if (moduleName === 'bmm') {
67
- return getSourcePath('bmm', ...segments);
67
+ return getSourcePath('bmm-skills', ...segments);
68
68
  }
69
69
  return getSourcePath('modules', moduleName, ...segments);
70
70
  }
@@ -495,7 +495,7 @@ class YamlXmlBuilder {
495
495
 
496
496
  // Extract module from path (e.g., /path/to/modules/bmm/agents/pm.yaml -> bmm)
497
497
  // or /path/to/bmad/bmm/agents/pm.yaml -> bmm
498
- // or /path/to/src/bmm/agents/pm.yaml -> bmm
498
+ // or /path/to/src/bmm-skills/agents/pm.yaml -> bmm
499
499
  let module = 'core'; // default to core
500
500
  const pathParts = agentYamlPath.split(path.sep);
501
501
 
@@ -515,10 +515,12 @@ class YamlXmlBuilder {
515
515
  module = potentialModule;
516
516
  }
517
517
  } else if (srcIndex !== -1 && pathParts[srcIndex + 1]) {
518
- // Path contains /src/{module}/ (bmm and core are directly under src/)
518
+ // Path contains /src/{module}/ (bmm-skills and core-skills are directly under src/)
519
519
  const potentialModule = pathParts[srcIndex + 1];
520
- if (potentialModule === 'bmm' || potentialModule === 'core') {
521
- module = potentialModule;
520
+ if (potentialModule === 'bmm-skills') {
521
+ module = 'bmm';
522
+ } else if (potentialModule === 'core-skills') {
523
+ module = 'core';
522
524
  }
523
525
  }
524
526