wizz-method 1.0.2 → 1.0.3

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 (210) hide show
  1. package/.claude-plugin/marketplace.json +9 -9
  2. package/README.md +4 -4
  3. package/build/artifacts/llms-full.txt +218 -218
  4. package/build/artifacts/llms.txt +4 -4
  5. package/build/site/explanation/advanced-elicitation/index.html +2 -2
  6. package/build/site/explanation/adversarial-review/index.html +2 -2
  7. package/build/site/explanation/analysis-phase/index.html +2 -2
  8. package/build/site/explanation/brainstorming/index.html +2 -2
  9. package/build/site/explanation/checkpoint-preview/index.html +2 -2
  10. package/build/site/explanation/established-projects-faq/index.html +2 -2
  11. package/build/site/explanation/forensic-investigation/index.html +2 -2
  12. package/build/site/explanation/named-agents/index.html +6 -6
  13. package/build/site/explanation/party-mode/index.html +3 -3
  14. package/build/site/explanation/preventing-agent-conflicts/index.html +2 -2
  15. package/build/site/explanation/project-context/index.html +2 -2
  16. package/build/site/explanation/quick-dev/index.html +2 -2
  17. package/build/site/explanation/web-bundles/index.html +2 -2
  18. package/build/site/explanation/why-solutioning-matters/index.html +2 -2
  19. package/build/site/how-to/{customize-bmad → customize-wizz}/index.html +6 -6
  20. package/build/site/how-to/established-projects/index.html +2 -2
  21. package/build/site/how-to/{expand-bmad-for-your-org → expand-wizz-for-your-org}/index.html +7 -7
  22. package/build/site/how-to/{get-answers-about-bmad → get-answers-about-wizz}/index.html +3 -3
  23. package/build/site/how-to/install-custom-modules/index.html +3 -3
  24. package/build/site/how-to/{install-bmad → install-wizz}/index.html +6 -6
  25. package/build/site/how-to/non-interactive-installation/index.html +3 -3
  26. package/build/site/how-to/project-context/index.html +2 -2
  27. package/build/site/how-to/quick-fixes/index.html +2 -2
  28. package/build/site/how-to/shard-large-documents/index.html +2 -2
  29. package/build/site/how-to/upgrade-to-v6/index.html +8 -8
  30. package/build/site/how-to/use-web-bundles/index.html +2 -2
  31. package/build/site/index.html +3 -3
  32. package/build/site/llms-full.txt +218 -218
  33. package/build/site/llms.txt +4 -4
  34. package/build/site/pagefind/fragment/en_296ddb9.pf_fragment +0 -0
  35. package/build/site/pagefind/fragment/en_583316f.pf_fragment +0 -0
  36. package/build/site/pagefind/fragment/en_67825a4.pf_fragment +0 -0
  37. package/build/site/pagefind/fragment/{en_41cab15.pf_fragment → en_887ce56.pf_fragment} +0 -0
  38. package/build/site/pagefind/fragment/en_92d7cc7.pf_fragment +0 -0
  39. package/build/site/pagefind/fragment/{en_56b1635.pf_fragment → en_9b57d7d.pf_fragment} +0 -0
  40. package/build/site/pagefind/fragment/en_ba9fb37.pf_fragment +0 -0
  41. package/build/site/pagefind/fragment/en_bfc56b6.pf_fragment +0 -0
  42. package/build/site/pagefind/fragment/en_c6d9e48.pf_fragment +0 -0
  43. package/build/site/pagefind/fragment/en_cdd885c.pf_fragment +0 -0
  44. package/build/site/pagefind/fragment/en_d890205.pf_fragment +0 -0
  45. package/build/site/pagefind/index/en_5b9d8c6.pf_index +0 -0
  46. package/build/site/pagefind/index/en_868614c.pf_index +0 -0
  47. package/build/site/pagefind/index/en_e4f9bff.pf_index +0 -0
  48. package/build/site/pagefind/pagefind-entry.json +1 -1
  49. package/build/site/pagefind/pagefind.en_4e69d7f053.pf_meta +0 -0
  50. package/build/site/reference/agents/index.html +2 -2
  51. package/build/site/reference/commands/index.html +3 -3
  52. package/build/site/reference/core-tools/index.html +3 -3
  53. package/build/site/reference/modules/index.html +4 -4
  54. package/build/site/reference/testing/index.html +2 -2
  55. package/build/site/reference/workflow-map/index.html +2 -2
  56. package/build/site/roadmap/index.html +2 -2
  57. package/build/site/sitemap-0.xml +1 -1
  58. package/build/site/tutorials/getting-started/index.html +4 -4
  59. package/build/site/workflow-map-diagram-fr.html +2 -2
  60. package/package.json +8 -8
  61. package/removals.txt +46 -46
  62. package/src/bmm-skills/1-analysis/research/wizz-domain-research/customize.toml +1 -1
  63. package/src/bmm-skills/1-analysis/research/wizz-market-research/customize.toml +1 -1
  64. package/src/bmm-skills/1-analysis/research/wizz-technical-research/customize.toml +2 -1
  65. package/src/bmm-skills/1-analysis/wizz-agent-analyst/customize.toml +2 -2
  66. package/src/bmm-skills/1-analysis/wizz-agent-tech-writer/customize.toml +2 -2
  67. package/src/bmm-skills/1-analysis/wizz-document-project/customize.toml +1 -1
  68. package/src/bmm-skills/1-analysis/wizz-document-project/templates/index-template.md +1 -1
  69. package/src/bmm-skills/1-analysis/wizz-document-project/templates/project-overview-template.md +1 -1
  70. package/src/bmm-skills/1-analysis/wizz-document-project/templates/source-tree-template.md +1 -1
  71. package/src/bmm-skills/1-analysis/wizz-prfaq/customize.toml +1 -1
  72. package/src/bmm-skills/1-analysis/wizz-product-brief/SKILL.md +1 -1
  73. package/src/bmm-skills/1-analysis/wizz-product-brief/customize.toml +1 -1
  74. package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/customize.toml +2 -2
  75. package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/customize.toml +2 -2
  76. package/src/bmm-skills/2-plan-workflows/wizz-create-prd/SKILL.md +1 -1
  77. package/src/bmm-skills/2-plan-workflows/wizz-create-prd/customize.toml +1 -1
  78. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +1 -1
  79. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/customize.toml +1 -1
  80. package/src/bmm-skills/2-plan-workflows/wizz-prd/SKILL.md +3 -3
  81. package/src/bmm-skills/2-plan-workflows/wizz-prd/customize.toml +2 -2
  82. package/src/bmm-skills/2-plan-workflows/wizz-ux/SKILL.md +2 -2
  83. package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/SKILL.md +1 -1
  84. package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/customize.toml +1 -1
  85. package/src/bmm-skills/3-solutioning/wizz-agent-architect/customize.toml +2 -2
  86. package/src/bmm-skills/3-solutioning/wizz-architecture/SKILL.md +2 -2
  87. package/src/bmm-skills/3-solutioning/wizz-architecture/customize.toml +4 -2
  88. package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/customize.toml +1 -1
  89. package/src/bmm-skills/3-solutioning/wizz-create-architecture/SKILL.md +1 -1
  90. package/src/bmm-skills/3-solutioning/wizz-create-architecture/customize.toml +1 -1
  91. package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/customize.toml +1 -1
  92. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/customize.toml +1 -1
  93. package/src/bmm-skills/4-implementation/wizz-agent-dev/customize.toml +3 -2
  94. package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/customize.toml +1 -1
  95. package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +1 -1
  96. package/src/bmm-skills/4-implementation/wizz-correct-course/customize.toml +1 -1
  97. package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +2 -2
  98. package/src/bmm-skills/4-implementation/wizz-create-story/customize.toml +1 -1
  99. package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
  100. package/src/bmm-skills/4-implementation/wizz-dev-story/customize.toml +1 -1
  101. package/src/bmm-skills/4-implementation/wizz-investigate/customize.toml +1 -1
  102. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/customize.toml +1 -1
  103. package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +1 -1
  104. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-01-clarify-and-route.md +1 -1
  105. package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +1 -1
  106. package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -1
  107. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
  108. package/src/bmm-skills/4-implementation/wizz-sprint-status/customize.toml +1 -1
  109. package/src/bmm-skills/module-help.csv +32 -32
  110. package/src/bmm-skills/module.yaml +1 -1
  111. package/src/core-skills/module-help.csv +3 -3
  112. package/src/core-skills/module.yaml +4 -4
  113. package/src/core-skills/wizz-brainstorming/SKILL.md +1 -1
  114. package/src/core-skills/wizz-brainstorming/analysis/catalog-analysis.md +4 -4
  115. package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +5 -5
  116. package/src/core-skills/wizz-brainstorming/customize.toml +1 -1
  117. package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
  118. package/src/core-skills/wizz-brainstorming/scripts/brain.py +5 -5
  119. package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +1 -1
  120. package/src/core-skills/wizz-brainstorming/scripts/tests/test_memlog.py +3 -3
  121. package/src/core-skills/wizz-customize/SKILL.md +6 -6
  122. package/src/core-skills/wizz-customize/scripts/list_customizable_skills.py +3 -3
  123. package/src/core-skills/wizz-customize/scripts/tests/test_list_customizable_skills.py +13 -13
  124. package/src/core-skills/wizz-editorial-review-structure/SKILL.md +1 -1
  125. package/src/core-skills/wizz-help/SKILL.md +3 -3
  126. package/src/core-skills/wizz-party-mode/SKILL.md +5 -3
  127. package/src/core-skills/wizz-party-mode/customize.toml +2 -2
  128. package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +2 -2
  129. package/src/core-skills/wizz-party-mode/scripts/tests/test-resolve_party.py +1 -1
  130. package/src/core-skills/wizz-spec/SKILL.md +3 -3
  131. package/src/core-skills/wizz-spec/customize.toml +2 -2
  132. package/src/modules/wizz/README.md +5 -5
  133. package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
  134. package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
  135. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  136. package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
  137. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +2 -2
  138. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  139. package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
  140. package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
  141. package/src/modules/wizz/overrides/{bmad-agent-analyst.toml → wizz-agent-analyst.toml} +1 -1
  142. package/src/modules/wizz/overrides/{bmad-agent-architect.toml → wizz-agent-architect.toml} +1 -1
  143. package/src/modules/wizz/overrides/{bmad-agent-dev.toml → wizz-agent-dev.toml} +1 -1
  144. package/src/modules/wizz/overrides/{bmad-agent-pm.toml → wizz-agent-pm.toml} +1 -1
  145. package/src/modules/wizz/overrides/{bmad-agent-tech-writer.toml → wizz-agent-tech-writer.toml} +1 -1
  146. package/src/modules/wizz/overrides/{bmad-agent-ux-designer.toml → wizz-agent-ux-designer.toml} +1 -1
  147. package/src/modules/wizz/scripts/wizz-init.mjs +7 -7
  148. package/src/scripts/resolve_config.py +7 -7
  149. package/src/scripts/resolve_customization.py +2 -2
  150. package/src/scripts/tests/test_memlog.py +1 -1
  151. package/tools/bundle-web-bundles.js +1 -1
  152. package/tools/format-workflow-md.js +2 -2
  153. package/tools/installer/commands/install.js +1 -1
  154. package/tools/installer/commands/status.js +9 -9
  155. package/tools/installer/commands/uninstall.js +5 -5
  156. package/tools/installer/core/existing-install.js +8 -8
  157. package/tools/installer/core/install-paths.js +13 -13
  158. package/tools/installer/core/installer.js +102 -102
  159. package/tools/installer/core/legacy-warnings.js +16 -16
  160. package/tools/installer/core/manifest-generator.js +30 -30
  161. package/tools/installer/core/manifest.js +30 -30
  162. package/tools/installer/core/python-check.js +7 -7
  163. package/tools/installer/ide/_config-driven.js +97 -97
  164. package/tools/installer/ide/manager.js +17 -17
  165. package/tools/installer/ide/platform-codes.yaml +5 -5
  166. package/tools/installer/ide/shared/installed-skills.js +13 -13
  167. package/tools/installer/ide/shared/path-utils.js +46 -46
  168. package/tools/installer/ide/shared/skill-manifest.js +4 -4
  169. package/tools/installer/install-messages.yaml +1 -1
  170. package/tools/installer/list-options.js +3 -3
  171. package/tools/installer/modules/channel-plan.js +1 -1
  172. package/tools/installer/modules/channel-resolver.js +1 -1
  173. package/tools/installer/modules/custom-module-manager.js +16 -16
  174. package/tools/installer/modules/external-manager.js +6 -6
  175. package/tools/installer/modules/official-modules.js +42 -42
  176. package/tools/installer/modules/plugin-resolver.js +3 -3
  177. package/tools/installer/project-root.js +13 -13
  178. package/tools/installer/prompts.js +1 -1
  179. package/tools/installer/set-overrides.js +6 -6
  180. package/tools/installer/ui.js +29 -29
  181. package/tools/installer/yaml-format.js +1 -1
  182. package/tools/migrate-custom-module-paths.js +11 -11
  183. package/tools/skill-validator.md +6 -6
  184. package/tools/validate-skills.js +10 -5
  185. package/web-bundles/README.md +4 -4
  186. package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +1 -1
  187. package/web-bundles/bundles.json +6 -6
  188. package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +1 -1
  189. package/web-bundles/prd-coach/INSTRUCTIONS.md +3 -3
  190. package/web-bundles/prfaq-coach/INSTRUCTIONS.md +3 -3
  191. package/web-bundles/product-brief-coach/INSTRUCTIONS.md +3 -3
  192. package/web-bundles/ux-coach/INSTRUCTIONS.md +1 -1
  193. package/{bmad-modules.yaml → wizz-modules.yaml} +15 -15
  194. package/build/site/pagefind/fragment/en_5ad92a9.pf_fragment +0 -0
  195. package/build/site/pagefind/fragment/en_7aea5bc.pf_fragment +0 -0
  196. package/build/site/pagefind/fragment/en_81bcd7f.pf_fragment +0 -0
  197. package/build/site/pagefind/fragment/en_938e9c4.pf_fragment +0 -0
  198. package/build/site/pagefind/fragment/en_b51d75b.pf_fragment +0 -0
  199. package/build/site/pagefind/fragment/en_c9fea21.pf_fragment +0 -0
  200. package/build/site/pagefind/fragment/en_e07e982.pf_fragment +0 -0
  201. package/build/site/pagefind/fragment/en_f4389af.pf_fragment +0 -0
  202. package/build/site/pagefind/fragment/en_f52c9f9.pf_fragment +0 -0
  203. package/build/site/pagefind/index/en_82c64dc.pf_index +0 -0
  204. package/build/site/pagefind/index/en_d0dd3c7.pf_index +0 -0
  205. package/build/site/pagefind/index/en_e890f88.pf_index +0 -0
  206. package/build/site/pagefind/pagefind.en_ee1b8a17c8.pf_meta +0 -0
  207. /package/build/site/img/{bmad-dark.png → wizz-dark.png} +0 -0
  208. /package/build/site/img/{bmad-light.png → wizz-light.png} +0 -0
  209. /package/src/bmm-skills/1-analysis/wizz-prfaq/{bmad-manifest.json → wizz-manifest.json} +0 -0
  210. /package/tools/installer/{bmad-cli.js → wizz-cli.js} +0 -0
@@ -264,27 +264,27 @@ class OfficialModules {
264
264
  /**
265
265
  * Install a module
266
266
  * @param {string} moduleName - Code of the module to install (from module.yaml)
267
- * @param {string} bmadDir - Target bmad directory
267
+ * @param {string} wizzDir - Target wizz directory
268
268
  * @param {Function} fileTrackingCallback - Optional callback to track installed files
269
269
  * @param {Object} options - Additional installation options
270
270
  * @param {Array<string>} options.installedIDEs - Array of IDE codes that were installed
271
271
  * @param {Object} options.moduleConfig - Module configuration from config collector
272
272
  * @param {Object} options.logger - Logger instance for output
273
273
  */
274
- async install(moduleName, bmadDir, fileTrackingCallback = null, options = {}) {
274
+ async install(moduleName, wizzDir, fileTrackingCallback = null, options = {}) {
275
275
  // Check if this module has a plugin resolution (custom marketplace install)
276
276
  const { CustomModuleManager } = require('./custom-module-manager');
277
277
  const customMgr = new CustomModuleManager();
278
278
  const resolved = customMgr.getResolution(moduleName);
279
279
  if (resolved) {
280
- return this.installFromResolution(resolved, bmadDir, fileTrackingCallback, options);
280
+ return this.installFromResolution(resolved, wizzDir, fileTrackingCallback, options);
281
281
  }
282
282
 
283
283
  const sourcePath = await this.findModuleSource(moduleName, {
284
284
  silent: options.silent,
285
285
  channelOptions: options.channelOptions,
286
286
  });
287
- const targetPath = path.join(bmadDir, moduleName);
287
+ const targetPath = path.join(wizzDir, moduleName);
288
288
 
289
289
  if (!sourcePath) {
290
290
  throw new Error(
@@ -299,18 +299,18 @@ class OfficialModules {
299
299
  await this.copyModuleWithFiltering(sourcePath, targetPath, fileTrackingCallback, options.moduleConfig);
300
300
 
301
301
  if (!options.skipModuleInstaller) {
302
- await this.createModuleDirectories(moduleName, bmadDir, options);
302
+ await this.createModuleDirectories(moduleName, wizzDir, options);
303
303
  }
304
304
 
305
305
  const { Manifest } = require('../core/manifest');
306
306
  const manifestObj = new Manifest();
307
- const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, bmadDir, sourcePath);
307
+ const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, wizzDir, sourcePath);
308
308
 
309
309
  // Pick up channel resolution recorded by the external manager (the only
310
310
  // manager that does pre-clone resolution now that community is retired).
311
311
  const resolution = this.externalModuleManager.getResolution(moduleName);
312
312
 
313
- await manifestObj.addModule(bmadDir, moduleName, {
313
+ await manifestObj.addModule(wizzDir, moduleName, {
314
314
  version: resolution?.version || versionInfo.version,
315
315
  source: versionInfo.source,
316
316
  npmPackage: versionInfo.npmPackage,
@@ -326,12 +326,12 @@ class OfficialModules {
326
326
  * Install a module from a PluginResolver resolution result.
327
327
  * Copies specific skill directories and places module-help.csv at the target root.
328
328
  * @param {Object} resolved - ResolvedModule from PluginResolver
329
- * @param {string} bmadDir - Target bmad directory
329
+ * @param {string} wizzDir - Target wizz directory
330
330
  * @param {Function} fileTrackingCallback - Optional callback to track installed files
331
331
  * @param {Object} options - Installation options
332
332
  */
333
- async installFromResolution(resolved, bmadDir, fileTrackingCallback = null, options = {}) {
334
- const targetPath = path.join(bmadDir, resolved.code);
333
+ async installFromResolution(resolved, wizzDir, fileTrackingCallback = null, options = {}) {
334
+ const targetPath = path.join(wizzDir, resolved.code);
335
335
 
336
336
  if (await fs.pathExists(targetPath)) {
337
337
  await fs.remove(targetPath);
@@ -361,7 +361,7 @@ class OfficialModules {
361
361
 
362
362
  // Create directories declared in module.yaml (strategies 1-4 may have these)
363
363
  if (!options.skipModuleInstaller) {
364
- await this.createModuleDirectories(resolved.code, bmadDir, options);
364
+ await this.createModuleDirectories(resolved.code, wizzDir, options);
365
365
  }
366
366
 
367
367
  // Update manifest. For custom-source installs we derive channel from the
@@ -382,7 +382,7 @@ class OfficialModules {
382
382
  if (resolved.rawInput) manifestEntry.rawSource = resolved.rawInput;
383
383
  }
384
384
  if (resolved.localPath) manifestEntry.localPath = resolved.localPath;
385
- await manifestObj.addModule(bmadDir, resolved.code, manifestEntry);
385
+ await manifestObj.addModule(wizzDir, resolved.code, manifestEntry);
386
386
 
387
387
  return {
388
388
  success: true,
@@ -400,11 +400,11 @@ class OfficialModules {
400
400
  /**
401
401
  * Update an existing module
402
402
  * @param {string} moduleName - Name of the module to update
403
- * @param {string} bmadDir - Target bmad directory
403
+ * @param {string} wizzDir - Target wizz directory
404
404
  */
405
- async update(moduleName, bmadDir) {
405
+ async update(moduleName, wizzDir) {
406
406
  const sourcePath = await this.findModuleSource(moduleName);
407
- const targetPath = path.join(bmadDir, moduleName);
407
+ const targetPath = path.join(wizzDir, moduleName);
408
408
 
409
409
  if (!sourcePath) {
410
410
  throw new Error(`Module '${moduleName}' not found in any source location`);
@@ -426,10 +426,10 @@ class OfficialModules {
426
426
  /**
427
427
  * Remove a module
428
428
  * @param {string} moduleName - Name of the module to remove
429
- * @param {string} bmadDir - Target bmad directory
429
+ * @param {string} wizzDir - Target wizz directory
430
430
  */
431
- async remove(moduleName, bmadDir) {
432
- const targetPath = path.join(bmadDir, moduleName);
431
+ async remove(moduleName, wizzDir) {
432
+ const targetPath = path.join(wizzDir, moduleName);
433
433
 
434
434
  if (!(await fs.pathExists(targetPath))) {
435
435
  throw new Error(`Module '${moduleName}' is not installed`);
@@ -446,22 +446,22 @@ class OfficialModules {
446
446
  /**
447
447
  * Check if a module is installed
448
448
  * @param {string} moduleName - Name of the module
449
- * @param {string} bmadDir - Target bmad directory
449
+ * @param {string} wizzDir - Target wizz directory
450
450
  * @returns {boolean} True if module is installed
451
451
  */
452
- async isInstalled(moduleName, bmadDir) {
453
- const targetPath = path.join(bmadDir, moduleName);
452
+ async isInstalled(moduleName, wizzDir) {
453
+ const targetPath = path.join(wizzDir, moduleName);
454
454
  return await fs.pathExists(targetPath);
455
455
  }
456
456
 
457
457
  /**
458
458
  * Get installed module info
459
459
  * @param {string} moduleName - Name of the module
460
- * @param {string} bmadDir - Target bmad directory
460
+ * @param {string} wizzDir - Target wizz directory
461
461
  * @returns {Object|null} Module info or null if not installed
462
462
  */
463
- async getInstalledInfo(moduleName, bmadDir) {
464
- const targetPath = path.join(bmadDir, moduleName);
463
+ async getInstalledInfo(moduleName, wizzDir) {
464
+ const targetPath = path.join(wizzDir, moduleName);
465
465
 
466
466
  if (!(await fs.pathExists(targetPath))) {
467
467
  return null;
@@ -557,17 +557,17 @@ class OfficialModules {
557
557
  * This replaces the security-risky module installer pattern with declarative config
558
558
  * During updates, if a directory path changed, moves the old directory to the new path
559
559
  * @param {string} moduleName - Name of the module
560
- * @param {string} bmadDir - Target bmad directory
560
+ * @param {string} wizzDir - Target wizz directory
561
561
  * @param {Object} options - Installation options
562
562
  * @param {Object} options.moduleConfig - Module configuration from config collector
563
563
  * @param {Object} options.existingModuleConfig - Previous module config (for detecting path changes during updates)
564
564
  * @param {Object} options.coreConfig - Core configuration
565
565
  * @returns {Promise<{createdDirs: string[], movedDirs: string[], createdWdsFolders: string[]}>} Created directories info
566
566
  */
567
- async createModuleDirectories(moduleName, bmadDir, options = {}) {
567
+ async createModuleDirectories(moduleName, wizzDir, options = {}) {
568
568
  const moduleConfig = options.moduleConfig || {};
569
569
  const existingModuleConfig = options.existingModuleConfig || {};
570
- const projectRoot = path.dirname(bmadDir);
570
+ const projectRoot = path.dirname(wizzDir);
571
571
  const emptyResult = { createdDirs: [], movedDirs: [], createdWdsFolders: [] };
572
572
 
573
573
  // Special handling for core module - it's in src/core-skills not src/modules
@@ -781,16 +781,16 @@ class OfficialModules {
781
781
  // ─── Config collection methods (merged from ConfigCollector) ───
782
782
 
783
783
  /**
784
- * Find the bmad installation directory in a project
784
+ * Find the wizz installation directory in a project
785
785
  * V6+ installations can use ANY folder name but ALWAYS have _config/manifest.yaml
786
786
  * @param {string} projectDir - Project directory
787
- * @returns {Promise<string>} Path to bmad directory
787
+ * @returns {Promise<string>} Path to wizz directory
788
788
  */
789
- async findBmadDir(projectDir) {
789
+ async findWizzDir(projectDir) {
790
790
  // Check if project directory exists
791
791
  if (!(await fs.pathExists(projectDir))) {
792
792
  // Project doesn't exist yet, return default
793
- return path.join(projectDir, 'bmad');
793
+ return path.join(projectDir, 'wizz');
794
794
  }
795
795
 
796
796
  // V6+ strategy: Look for ANY directory with _config/manifest.yaml
@@ -812,15 +812,15 @@ class OfficialModules {
812
812
 
813
813
  // No V6+ installation found, return default
814
814
  // This will be used for new installations
815
- return path.join(projectDir, 'bmad');
815
+ return path.join(projectDir, 'wizz');
816
816
  }
817
817
 
818
818
  /**
819
- * Detect the existing BMAD folder name in a project
819
+ * Detect the existing WIZZ folder name in a project
820
820
  * @param {string} projectDir - Project directory
821
821
  * @returns {Promise<string|null>} Folder name (just the name, not full path) or null if not found
822
822
  */
823
- async detectExistingBmadFolder(projectDir) {
823
+ async detectExistingWizzFolder(projectDir) {
824
824
  // Check if project directory exists
825
825
  if (!(await fs.pathExists(projectDir))) {
826
826
  return null;
@@ -857,11 +857,11 @@ class OfficialModules {
857
857
  return false;
858
858
  }
859
859
 
860
- // Find the actual bmad directory (handles custom folder names)
861
- const bmadDir = await this.findBmadDir(projectDir);
860
+ // Find the actual wizz directory (handles custom folder names)
861
+ const wizzDir = await this.findWizzDir(projectDir);
862
862
 
863
- // Check if bmad directory exists
864
- if (!(await fs.pathExists(bmadDir))) {
863
+ // Check if wizz directory exists
864
+ if (!(await fs.pathExists(wizzDir))) {
865
865
  return false;
866
866
  }
867
867
 
@@ -871,7 +871,7 @@ class OfficialModules {
871
871
  // every reinstall.
872
872
  let foundAny = false;
873
873
  for (const fileName of ['config.toml', 'config.user.toml']) {
874
- const tomlPath = path.join(bmadDir, fileName);
874
+ const tomlPath = path.join(wizzDir, fileName);
875
875
  if (!(await fs.pathExists(tomlPath))) continue;
876
876
  try {
877
877
  const content = await fs.readFile(tomlPath, 'utf8');
@@ -893,7 +893,7 @@ class OfficialModules {
893
893
  }
894
894
 
895
895
  // Fallback: legacy per-module config.yaml files (pre-v6 installations).
896
- const entries = await fs.readdir(bmadDir, { withFileTypes: true });
896
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
897
897
  const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']);
898
898
  for (const entry of entries) {
899
899
  if (entry.isDirectory()) {
@@ -901,7 +901,7 @@ class OfficialModules {
901
901
  continue;
902
902
  }
903
903
 
904
- const moduleConfigPath = path.join(bmadDir, entry.name, 'config.yaml');
904
+ const moduleConfigPath = path.join(wizzDir, entry.name, 'config.yaml');
905
905
 
906
906
  if (await fs.pathExists(moduleConfigPath)) {
907
907
  try {
@@ -1447,7 +1447,7 @@ class OfficialModules {
1447
1447
  result = username.charAt(0).toUpperCase() + username.slice(1);
1448
1448
  }
1449
1449
  } catch {
1450
- // Do nothing, just return 'BMad'
1450
+ // Do nothing, just return 'Wizz'
1451
1451
  }
1452
1452
  return result;
1453
1453
  }
@@ -354,12 +354,12 @@ class PluginResolver {
354
354
 
355
355
  /**
356
356
  * Format a kebab-case or snake_case name into a display name.
357
- * Strips common prefixes like "bmad-" or "bmad-agent-".
357
+ * Strips common prefixes like "wizz-" or "wizz-agent-".
358
358
  * @param {string} name - Raw name
359
359
  * @returns {string} Formatted display name
360
360
  */
361
361
  _formatDisplayName(name) {
362
- let cleaned = name.replace(/^bmad-agent-/, '').replace(/^bmad-/, '');
362
+ let cleaned = name.replace(/^wizz-agent-/, '').replace(/^wizz-/, '');
363
363
  return cleaned
364
364
  .split(/[-_]/)
365
365
  .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
@@ -373,7 +373,7 @@ class PluginResolver {
373
373
  * @returns {string} Menu code (e.g., "CC" for "code-coach")
374
374
  */
375
375
  _generateMenuCode(name) {
376
- const cleaned = name.replace(/^bmad-agent-/, '').replace(/^bmad-/, '');
376
+ const cleaned = name.replace(/^wizz-agent-/, '').replace(/^wizz-/, '');
377
377
  const words = cleaned.split(/[-_]/).filter((w) => w.length > 0);
378
378
  return words
379
379
  .map((w) => w.charAt(0).toUpperCase())
@@ -4,21 +4,21 @@ const yaml = require('yaml');
4
4
  const fs = require('./fs-native');
5
5
 
6
6
  /**
7
- * Find the BMAD project root directory by looking for package.json
8
- * or specific BMAD markers
7
+ * Find the WIZZ project root directory by looking for package.json
8
+ * or specific WIZZ markers
9
9
  */
10
10
  function findProjectRoot(startPath = __dirname) {
11
11
  let currentPath = path.resolve(startPath);
12
12
 
13
- // Keep going up until we find package.json with bmad-method
13
+ // Keep going up until we find package.json with wizz-method
14
14
  while (currentPath !== path.dirname(currentPath)) {
15
15
  const packagePath = path.join(currentPath, 'package.json');
16
16
 
17
17
  if (fs.existsSync(packagePath)) {
18
18
  try {
19
19
  const pkg = fs.readJsonSync(packagePath);
20
- // Check if this is the BMAD project
21
- if (pkg.name === 'bmad-method' || fs.existsSync(path.join(currentPath, 'src', 'core-skills'))) {
20
+ // Check if this is the WIZZ project
21
+ if (pkg.name === 'wizz-method' || fs.existsSync(path.join(currentPath, 'src', 'core-skills'))) {
22
22
  return currentPath;
23
23
  }
24
24
  } catch {
@@ -77,7 +77,7 @@ function getModulePath(moduleName, ...segments) {
77
77
  * by ExternalModuleManager during install and are not copied into <src>/modules/.
78
78
  */
79
79
  function getExternalModuleCachePath(moduleName, ...segments) {
80
- const base = process.env.BMAD_EXTERNAL_MODULES_CACHE || path.join(os.homedir(), '.bmad', 'cache', 'external-modules');
80
+ const base = process.env.WIZZ_EXTERNAL_MODULES_CACHE || path.join(os.homedir(), '.wizz', 'cache', 'external-modules');
81
81
  return path.join(base, moduleName, ...segments);
82
82
  }
83
83
 
@@ -85,9 +85,9 @@ function getExternalModuleCachePath(moduleName, ...segments) {
85
85
  * Locate an installed module's `module.yaml` by filesystem lookup only.
86
86
  *
87
87
  * Built-in modules (core, bmm) live under <src>. External official modules are
88
- * cloned into ~/.bmad/cache/external-modules/<name>/ with varying internal
88
+ * cloned into ~/.wizz/cache/external-modules/<name>/ with varying internal
89
89
  * layouts (some at src/module.yaml, some at skills/module.yaml, some nested).
90
- * Url-source custom modules are cloned into ~/.bmad/cache/custom-modules/<host>/<owner>/<repo>/
90
+ * Url-source custom modules are cloned into ~/.wizz/cache/custom-modules/<host>/<owner>/<repo>/
91
91
  * and are resolved by walking the cache and matching `code` or `name` from the
92
92
  * discovered module.yaml. Local custom-source modules are not cached; their
93
93
  * path is read from the CustomModuleManager resolution cache set during the
@@ -155,11 +155,11 @@ async function resolveInstalledModuleYaml(moduleName) {
155
155
  if (found) return found;
156
156
  }
157
157
 
158
- // Community modules are cloned to ~/.bmad/cache/community-modules/<name>/
158
+ // Community modules are cloned to ~/.wizz/cache/community-modules/<name>/
159
159
  // (parallel to the external-modules cache used above). Search there too so
160
160
  // collectAgentsFromModuleYaml and writeCentralConfig can locate community
161
161
  // module.yaml files regardless of how nested the layout is.
162
- const communityCacheRoot = path.join(os.homedir(), '.bmad', 'cache', 'community-modules', moduleName);
162
+ const communityCacheRoot = path.join(os.homedir(), '.wizz', 'cache', 'community-modules', moduleName);
163
163
  if (await fs.pathExists(communityCacheRoot)) {
164
164
  const found = await searchRoot(communityCacheRoot);
165
165
  if (found) return found;
@@ -180,15 +180,15 @@ async function resolveInstalledModuleYaml(moduleName) {
180
180
  // Resolution cache unavailable — continue
181
181
  }
182
182
 
183
- // Fallback: url-source custom modules cloned to ~/.bmad/cache/custom-modules/.
183
+ // Fallback: url-source custom modules cloned to ~/.wizz/cache/custom-modules/.
184
184
  // Walk every cached repo, enumerate ALL module.yaml files via searchRootAll
185
185
  // (a single repo can host multiple plugins in discovery mode), and match by
186
186
  // the yaml's `code` or `name` field. This works on re-install runs where
187
187
  // _resolutionCache is empty and covers both discovery-mode (with marketplace.json)
188
- // and direct-mode modules, since we identify repo roots by .bmad-source.json
188
+ // and direct-mode modules, since we identify repo roots by .wizz-source.json
189
189
  // (written by cloneRepo) or .claude-plugin/ rather than by marketplace.json.
190
190
  try {
191
- const customCacheDir = path.join(os.homedir(), '.bmad', 'cache', 'custom-modules');
191
+ const customCacheDir = path.join(os.homedir(), '.wizz', 'cache', 'custom-modules');
192
192
  if (await fs.pathExists(customCacheDir)) {
193
193
  const { CustomModuleManager } = require('./modules/custom-module-manager');
194
194
  const customMgr = new CustomModuleManager();
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @clack/prompts wrapper for BMAD CLI
2
+ * @clack/prompts wrapper for WIZZ CLI
3
3
  *
4
4
  * This module provides a unified interface for CLI prompts using @clack/prompts.
5
5
  * It replaces Inquirer.js to fix Windows arrow key navigation issues (libuv #852).
@@ -230,16 +230,16 @@ async function tomlHasKey(filePath, section, key) {
230
230
  * (not in either file yet), team scope is the safe default.
231
231
  *
232
232
  * @param {Object<string, Object<string, string>>} overrides
233
- * @param {string} bmadDir absolute path to `_wizz/`
233
+ * @param {string} wizzDir absolute path to `_wizz/`
234
234
  * @returns {Promise<Array<{module:string,key:string,scope:'team'|'user',file:string}>>}
235
235
  * a list of applied entries (for caller logging)
236
236
  */
237
- async function applySetOverrides(overrides, bmadDir) {
237
+ async function applySetOverrides(overrides, wizzDir) {
238
238
  const applied = [];
239
239
  if (!overrides || typeof overrides !== 'object') return applied;
240
240
 
241
- const teamPath = path.join(bmadDir, 'config.toml');
242
- const userPath = path.join(bmadDir, 'config.user.toml');
241
+ const teamPath = path.join(wizzDir, 'config.toml');
242
+ const userPath = path.join(wizzDir, 'config.user.toml');
243
243
 
244
244
  for (const moduleCode of Object.keys(overrides)) {
245
245
  // Skip overrides for modules not actually installed. The installer writes
@@ -247,7 +247,7 @@ async function applySetOverrides(overrides, bmadDir) {
247
247
  // so its presence is a reliable "is this module here?" signal that works
248
248
  // for both fresh installs and quick-updates without coupling to caller-
249
249
  // supplied module lists.
250
- const moduleConfigYaml = path.join(bmadDir, moduleCode, 'config.yaml');
250
+ const moduleConfigYaml = path.join(wizzDir, moduleCode, 'config.yaml');
251
251
  if (!(await fs.pathExists(moduleConfigYaml))) {
252
252
  continue;
253
253
  }
@@ -291,7 +291,7 @@ async function applySetOverrides(overrides, bmadDir) {
291
291
  // value lives in the per-module yaml but won't be re-emitted into
292
292
  // config.toml on the next install (the schema-strict partition drops
293
293
  // it); re-pass `--set` if you need it sticky.
294
- const moduleYamlPath = path.join(bmadDir, moduleCode, 'config.yaml');
294
+ const moduleYamlPath = path.join(wizzDir, moduleCode, 'config.yaml');
295
295
  if (await fs.pathExists(moduleYamlPath)) {
296
296
  try {
297
297
  const text = await fs.readFile(moduleYamlPath, 'utf8');
@@ -110,7 +110,7 @@ async function getModuleVersion(moduleCode, { repoUrl = null, registryDefault =
110
110
  * UI utilities for the installer
111
111
  */
112
112
  class UI {
113
- async _retainUnavailableInstalledModules(selectedModules, installedModuleIds, bmadDir, options = {}) {
113
+ async _retainUnavailableInstalledModules(selectedModules, installedModuleIds, wizzDir, options = {}) {
114
114
  const { OfficialModules } = require('./modules/official-modules');
115
115
  const officialCodes = new Set(['core']);
116
116
 
@@ -135,7 +135,7 @@ class UI {
135
135
  if (!selectedSet.has(moduleId) && !options.preserveUnselected) continue;
136
136
  if (officialCodes.has(moduleId)) continue;
137
137
 
138
- const customSource = await customMgr.findModuleSourceByCode(moduleId, { bmadDir });
138
+ const customSource = await customMgr.findModuleSourceByCode(moduleId, { wizzDir });
139
139
  if (!customSource) {
140
140
  preserveModules.push(moduleId);
141
141
  }
@@ -161,7 +161,7 @@ class UI {
161
161
  const messageLoader = new MessageLoader();
162
162
  await messageLoader.displayStartMessage();
163
163
 
164
- // Probe the local Python before any other prompts: several BMAD features
164
+ // Probe the local Python before any other prompts: several WIZZ features
165
165
  // (memlog session memory, TOML config resolution) need Python 3.11+ at
166
166
  // runtime. Warn-don't-block, but require an explicit ack so the warning
167
167
  // can't scroll past unseen. The installer runs in the destination
@@ -213,10 +213,10 @@ class UI {
213
213
 
214
214
  const { Installer } = require('./core/installer');
215
215
  const installer = new Installer();
216
- const { bmadDir } = await installer.findBmadDir(confirmedDirectory);
216
+ const { wizzDir } = await installer.findWizzDir(confirmedDirectory);
217
217
 
218
- // Check if there's an existing BMAD installation
219
- const hasExistingInstall = await fs.pathExists(bmadDir);
218
+ // Check if there's an existing WIZZ installation
219
+ const hasExistingInstall = await fs.pathExists(wizzDir);
220
220
 
221
221
  // Track action type (only set if there's an existing installation)
222
222
  let actionType;
@@ -224,7 +224,7 @@ class UI {
224
224
  // Only show action menu if there's an existing installation
225
225
  if (hasExistingInstall) {
226
226
  // Get version information
227
- const { existingInstall, bmadDir } = await this.getExistingInstallation(confirmedDirectory);
227
+ const { existingInstall, wizzDir } = await this.getExistingInstallation(confirmedDirectory);
228
228
 
229
229
  // Build menu choices dynamically
230
230
  const choices = [];
@@ -321,7 +321,7 @@ class UI {
321
321
  selectedModules.unshift('core');
322
322
  }
323
323
 
324
- const retainedModuleResult = await this._retainUnavailableInstalledModules(selectedModules, installedModuleIds, bmadDir, {
324
+ const retainedModuleResult = await this._retainUnavailableInstalledModules(selectedModules, installedModuleIds, wizzDir, {
325
325
  preserveUnselected: options.yes && !options.modules,
326
326
  });
327
327
  selectedModules = retainedModuleResult.selectedModules;
@@ -339,7 +339,7 @@ class UI {
339
339
  // default Y, major default N). Legacy entries with no channel are
340
340
  // migrated here too. Mutates channelOptions.pins to lock rejections.
341
341
  await this._resolveUpdateChannels({
342
- bmadDir,
342
+ wizzDir,
343
343
  selectedModules,
344
344
  channelOptions,
345
345
  yes: options.yes || false,
@@ -503,8 +503,8 @@ class UI {
503
503
  const { ExistingInstall } = require('./core/existing-install');
504
504
  const { Installer } = require('./core/installer');
505
505
  const installer = new Installer();
506
- const { bmadDir } = await installer.findBmadDir(projectDir || process.cwd());
507
- const existingInstall = await ExistingInstall.detect(bmadDir);
506
+ const { wizzDir } = await installer.findWizzDir(projectDir || process.cwd());
507
+ const existingInstall = await ExistingInstall.detect(wizzDir);
508
508
  const configuredIdes = existingInstall.ides;
509
509
 
510
510
  // Get IDE manager to fetch available IDEs dynamically
@@ -732,17 +732,17 @@ class UI {
732
732
  /**
733
733
  * Get existing installation info and installed modules
734
734
  * @param {string} directory - Installation directory
735
- * @returns {Object} Object with existingInstall, installedModuleIds, installedModuleVersions, and bmadDir
735
+ * @returns {Object} Object with existingInstall, installedModuleIds, installedModuleVersions, and wizzDir
736
736
  */
737
737
  async getExistingInstallation(directory) {
738
738
  const { ExistingInstall } = require('./core/existing-install');
739
739
  const { Installer } = require('./core/installer');
740
740
  const installer = new Installer();
741
- const { bmadDir } = await installer.findBmadDir(directory);
742
- const existingInstall = await ExistingInstall.detect(bmadDir);
741
+ const { wizzDir } = await installer.findWizzDir(directory);
742
+ const existingInstall = await ExistingInstall.detect(wizzDir);
743
743
  const installedModuleIds = new Set(existingInstall.moduleIds);
744
744
  const installedModuleVersions = new Map();
745
- const manifestModules = await manifest.getAllModuleVersions(bmadDir);
745
+ const manifestModules = await manifest.getAllModuleVersions(wizzDir);
746
746
 
747
747
  for (const module of manifestModules) {
748
748
  if (module?.name && module.version) {
@@ -760,7 +760,7 @@ class UI {
760
760
  installedModuleVersions.set('core', existingInstall.version);
761
761
  }
762
762
 
763
- return { existingInstall, installedModuleIds, installedModuleVersions, bmadDir };
763
+ return { existingInstall, installedModuleIds, installedModuleVersions, wizzDir };
764
764
  }
765
765
 
766
766
  /**
@@ -1355,15 +1355,15 @@ class UI {
1355
1355
  if (stats.isDirectory()) {
1356
1356
  const files = await fs.readdir(directory);
1357
1357
  if (files.length > 0) {
1358
- // Check for any bmad installation (any folder with _config/manifest.yaml)
1358
+ // Check for any wizz installation (any folder with _config/manifest.yaml)
1359
1359
  const { Installer } = require('./core/installer');
1360
1360
  const installer = new Installer();
1361
- const bmadResult = await installer.findBmadDir(directory);
1362
- const hasBmadInstall =
1363
- (await fs.pathExists(bmadResult.bmadDir)) && (await fs.pathExists(path.join(bmadResult.bmadDir, '_config', 'manifest.yaml')));
1361
+ const wizzResult = await installer.findWizzDir(directory);
1362
+ const hasWizzInstall =
1363
+ (await fs.pathExists(wizzResult.wizzDir)) && (await fs.pathExists(path.join(wizzResult.wizzDir, '_config', 'manifest.yaml')));
1364
1364
 
1365
- const bmadNote = hasBmadInstall ? ` including existing Wizz installation (${path.basename(bmadResult.bmadDir)})` : '';
1366
- await prompts.log.message(`Directory exists and contains ${files.length} item(s)${bmadNote}`);
1365
+ const wizzNote = hasWizzInstall ? ` including existing Wizz installation (${path.basename(wizzResult.wizzDir)})` : '';
1366
+ await prompts.log.message(`Directory exists and contains ${files.length} item(s)${wizzNote}`);
1367
1367
  } else {
1368
1368
  await prompts.log.message('Directory exists and is empty');
1369
1369
  }
@@ -1601,8 +1601,8 @@ class UI {
1601
1601
  const { ExistingInstall } = require('./core/existing-install');
1602
1602
  const { Installer } = require('./core/installer');
1603
1603
  const installer = new Installer();
1604
- const { bmadDir } = await installer.findBmadDir(directory);
1605
- const existingInstall = await ExistingInstall.detect(bmadDir);
1604
+ const { wizzDir } = await installer.findWizzDir(directory);
1605
+ const existingInstall = await ExistingInstall.detect(wizzDir);
1606
1606
  return existingInstall.ides;
1607
1607
  }
1608
1608
 
@@ -1695,12 +1695,12 @@ class UI {
1695
1695
  * @param {Object} statusData - Status data with modules, installation info, and available updates
1696
1696
  */
1697
1697
  async displayStatus(statusData) {
1698
- const { installation, modules, availableUpdates, bmadDir } = statusData;
1698
+ const { installation, modules, availableUpdates, wizzDir } = statusData;
1699
1699
 
1700
1700
  // Installation info
1701
1701
  const infoLines = [
1702
1702
  `Version: ${installation.version || 'unknown'}`,
1703
- `Location: ${bmadDir}`,
1703
+ `Location: ${wizzDir}`,
1704
1704
  `Installed: ${new Date(installation.installDate).toLocaleDateString()}`,
1705
1705
  `Last Updated: ${installation.lastUpdated ? new Date(installation.lastUpdated).toLocaleDateString() : 'unknown'}`,
1706
1706
  ];
@@ -1855,10 +1855,10 @@ class UI {
1855
1855
  * Decisions that freeze the current version are applied by adding a pin to
1856
1856
  * `channelOptions.pins` so downstream clone logic honors them.
1857
1857
  */
1858
- async _resolveUpdateChannels({ bmadDir, selectedModules, channelOptions, yes }) {
1858
+ async _resolveUpdateChannels({ wizzDir, selectedModules, channelOptions, yes }) {
1859
1859
  const { Manifest } = require('./core/manifest');
1860
1860
  const manifestObj = new Manifest();
1861
- const manifest = await manifestObj.read(bmadDir);
1861
+ const manifest = await manifestObj.read(wizzDir);
1862
1862
  const existingByName = new Map();
1863
1863
  for (const m of manifest?.modulesDetailed || []) {
1864
1864
  if (m?.name) existingByName.set(m.name, m);
@@ -1899,7 +1899,7 @@ class UI {
1899
1899
  if (!info) continue;
1900
1900
  // Bundled modules (core/bmm) ship with the installer binary itself —
1901
1901
  // their version is stapled to the CLI version, not a git tag. Skip
1902
- // tag-API lookups for them; the "upgrade" mechanism is `npx bmad@X install`.
1902
+ // tag-API lookups for them; the "upgrade" mechanism is `npx wizz@X install`.
1903
1903
  if (info.builtIn) continue;
1904
1904
 
1905
1905
  const repoUrl = info.url;
@@ -14,7 +14,7 @@ async function initializeModules() {
14
14
  }
15
15
 
16
16
  /**
17
- * YAML Formatter and Linter for BMad-Method
17
+ * YAML Formatter and Linter for Wizz-Method
18
18
  * Formats and validates YAML files and YAML embedded in Markdown
19
19
  */
20
20
 
@@ -9,15 +9,15 @@ const yaml = require('yaml');
9
9
  const chalk = require('chalk');
10
10
 
11
11
  /**
12
- * Find BMAD directory in project
12
+ * Find WIZZ directory in project
13
13
  */
14
- function findBmadDir(projectDir = process.cwd()) {
14
+ function findWizzDir(projectDir = process.cwd()) {
15
15
  const possibleNames = ['_wizz'];
16
16
 
17
17
  for (const name of possibleNames) {
18
- const bmadDir = path.join(projectDir, name);
19
- if (fs.existsSync(bmadDir)) {
20
- return bmadDir;
18
+ const wizzDir = path.join(projectDir, name);
19
+ if (fs.existsSync(wizzDir)) {
20
+ return wizzDir;
21
21
  }
22
22
  }
23
23
 
@@ -84,18 +84,18 @@ async function updateManifest(manifestPath, projectRoot) {
84
84
  */
85
85
  async function migrate(directory) {
86
86
  const projectRoot = path.resolve(directory || process.cwd());
87
- const bmadDir = findBmadDir(projectRoot);
87
+ const wizzDir = findWizzDir(projectRoot);
88
88
 
89
- if (!bmadDir) {
90
- console.error(chalk.red('✗ No BMAD installation found in directory'));
89
+ if (!wizzDir) {
90
+ console.error(chalk.red('✗ No WIZZ installation found in directory'));
91
91
  process.exit(1);
92
92
  }
93
93
 
94
- console.log(chalk.blue.bold('🔄 BMAD Custom Module Path Migration'));
94
+ console.log(chalk.blue.bold('🔄 WIZZ Custom Module Path Migration'));
95
95
  console.log(chalk.dim(`Project: ${projectRoot}`));
96
- console.log(chalk.dim(`BMAD Directory: ${bmadDir}`));
96
+ console.log(chalk.dim(`WIZZ Directory: ${wizzDir}`));
97
97
 
98
- const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
98
+ const manifestPath = path.join(wizzDir, '_config', 'manifest.yaml');
99
99
 
100
100
  if (!fs.existsSync(manifestPath)) {
101
101
  console.error(chalk.red('✗ No manifest.yaml found'));