wizz-method 1.0.1 → 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 (211) hide show
  1. package/.claude/settings.local.json +2 -1
  2. package/.claude-plugin/marketplace.json +9 -9
  3. package/README.md +4 -4
  4. package/build/artifacts/llms-full.txt +218 -218
  5. package/build/artifacts/llms.txt +4 -4
  6. package/build/site/explanation/advanced-elicitation/index.html +2 -2
  7. package/build/site/explanation/adversarial-review/index.html +2 -2
  8. package/build/site/explanation/analysis-phase/index.html +2 -2
  9. package/build/site/explanation/brainstorming/index.html +2 -2
  10. package/build/site/explanation/checkpoint-preview/index.html +2 -2
  11. package/build/site/explanation/established-projects-faq/index.html +2 -2
  12. package/build/site/explanation/forensic-investigation/index.html +2 -2
  13. package/build/site/explanation/named-agents/index.html +6 -6
  14. package/build/site/explanation/party-mode/index.html +3 -3
  15. package/build/site/explanation/preventing-agent-conflicts/index.html +2 -2
  16. package/build/site/explanation/project-context/index.html +2 -2
  17. package/build/site/explanation/quick-dev/index.html +2 -2
  18. package/build/site/explanation/web-bundles/index.html +2 -2
  19. package/build/site/explanation/why-solutioning-matters/index.html +2 -2
  20. package/build/site/how-to/{customize-bmad → customize-wizz}/index.html +6 -6
  21. package/build/site/how-to/established-projects/index.html +2 -2
  22. package/build/site/how-to/{expand-bmad-for-your-org → expand-wizz-for-your-org}/index.html +7 -7
  23. package/build/site/how-to/{get-answers-about-bmad → get-answers-about-wizz}/index.html +3 -3
  24. package/build/site/how-to/install-custom-modules/index.html +3 -3
  25. package/build/site/how-to/{install-bmad → install-wizz}/index.html +6 -6
  26. package/build/site/how-to/non-interactive-installation/index.html +3 -3
  27. package/build/site/how-to/project-context/index.html +2 -2
  28. package/build/site/how-to/quick-fixes/index.html +2 -2
  29. package/build/site/how-to/shard-large-documents/index.html +2 -2
  30. package/build/site/how-to/upgrade-to-v6/index.html +8 -8
  31. package/build/site/how-to/use-web-bundles/index.html +2 -2
  32. package/build/site/index.html +3 -3
  33. package/build/site/llms-full.txt +218 -218
  34. package/build/site/llms.txt +4 -4
  35. package/build/site/pagefind/fragment/en_296ddb9.pf_fragment +0 -0
  36. package/build/site/pagefind/fragment/en_583316f.pf_fragment +0 -0
  37. package/build/site/pagefind/fragment/en_67825a4.pf_fragment +0 -0
  38. package/build/site/pagefind/fragment/{en_41cab15.pf_fragment → en_887ce56.pf_fragment} +0 -0
  39. package/build/site/pagefind/fragment/en_92d7cc7.pf_fragment +0 -0
  40. package/build/site/pagefind/fragment/{en_56b1635.pf_fragment → en_9b57d7d.pf_fragment} +0 -0
  41. package/build/site/pagefind/fragment/en_ba9fb37.pf_fragment +0 -0
  42. package/build/site/pagefind/fragment/en_bfc56b6.pf_fragment +0 -0
  43. package/build/site/pagefind/fragment/en_c6d9e48.pf_fragment +0 -0
  44. package/build/site/pagefind/fragment/en_cdd885c.pf_fragment +0 -0
  45. package/build/site/pagefind/fragment/en_d890205.pf_fragment +0 -0
  46. package/build/site/pagefind/index/en_5b9d8c6.pf_index +0 -0
  47. package/build/site/pagefind/index/en_868614c.pf_index +0 -0
  48. package/build/site/pagefind/index/en_e4f9bff.pf_index +0 -0
  49. package/build/site/pagefind/pagefind-entry.json +1 -1
  50. package/build/site/pagefind/pagefind.en_4e69d7f053.pf_meta +0 -0
  51. package/build/site/reference/agents/index.html +2 -2
  52. package/build/site/reference/commands/index.html +3 -3
  53. package/build/site/reference/core-tools/index.html +3 -3
  54. package/build/site/reference/modules/index.html +4 -4
  55. package/build/site/reference/testing/index.html +2 -2
  56. package/build/site/reference/workflow-map/index.html +2 -2
  57. package/build/site/roadmap/index.html +2 -2
  58. package/build/site/sitemap-0.xml +1 -1
  59. package/build/site/tutorials/getting-started/index.html +4 -4
  60. package/build/site/workflow-map-diagram-fr.html +2 -2
  61. package/package.json +8 -8
  62. package/removals.txt +46 -46
  63. package/src/bmm-skills/1-analysis/research/wizz-domain-research/customize.toml +1 -1
  64. package/src/bmm-skills/1-analysis/research/wizz-market-research/customize.toml +1 -1
  65. package/src/bmm-skills/1-analysis/research/wizz-technical-research/customize.toml +2 -1
  66. package/src/bmm-skills/1-analysis/wizz-agent-analyst/customize.toml +2 -2
  67. package/src/bmm-skills/1-analysis/wizz-agent-tech-writer/customize.toml +2 -2
  68. package/src/bmm-skills/1-analysis/wizz-document-project/customize.toml +1 -1
  69. package/src/bmm-skills/1-analysis/wizz-document-project/templates/index-template.md +1 -1
  70. package/src/bmm-skills/1-analysis/wizz-document-project/templates/project-overview-template.md +1 -1
  71. package/src/bmm-skills/1-analysis/wizz-document-project/templates/source-tree-template.md +1 -1
  72. package/src/bmm-skills/1-analysis/wizz-prfaq/customize.toml +1 -1
  73. package/src/bmm-skills/1-analysis/wizz-product-brief/SKILL.md +1 -1
  74. package/src/bmm-skills/1-analysis/wizz-product-brief/customize.toml +1 -1
  75. package/src/bmm-skills/2-plan-workflows/wizz-agent-pm/customize.toml +2 -2
  76. package/src/bmm-skills/2-plan-workflows/wizz-agent-ux-designer/customize.toml +2 -2
  77. package/src/bmm-skills/2-plan-workflows/wizz-create-prd/SKILL.md +1 -1
  78. package/src/bmm-skills/2-plan-workflows/wizz-create-prd/customize.toml +1 -1
  79. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/SKILL.md +1 -1
  80. package/src/bmm-skills/2-plan-workflows/wizz-edit-prd/customize.toml +1 -1
  81. package/src/bmm-skills/2-plan-workflows/wizz-prd/SKILL.md +3 -3
  82. package/src/bmm-skills/2-plan-workflows/wizz-prd/customize.toml +2 -2
  83. package/src/bmm-skills/2-plan-workflows/wizz-ux/SKILL.md +2 -2
  84. package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/SKILL.md +1 -1
  85. package/src/bmm-skills/2-plan-workflows/wizz-validate-prd/customize.toml +1 -1
  86. package/src/bmm-skills/3-solutioning/wizz-agent-architect/customize.toml +2 -2
  87. package/src/bmm-skills/3-solutioning/wizz-architecture/SKILL.md +2 -2
  88. package/src/bmm-skills/3-solutioning/wizz-architecture/customize.toml +4 -2
  89. package/src/bmm-skills/3-solutioning/wizz-check-implementation-readiness/customize.toml +1 -1
  90. package/src/bmm-skills/3-solutioning/wizz-create-architecture/SKILL.md +1 -1
  91. package/src/bmm-skills/3-solutioning/wizz-create-architecture/customize.toml +1 -1
  92. package/src/bmm-skills/3-solutioning/wizz-create-epics-and-stories/customize.toml +1 -1
  93. package/src/bmm-skills/3-solutioning/wizz-generate-project-context/customize.toml +1 -1
  94. package/src/bmm-skills/4-implementation/wizz-agent-dev/customize.toml +3 -2
  95. package/src/bmm-skills/4-implementation/wizz-checkpoint-preview/customize.toml +1 -1
  96. package/src/bmm-skills/4-implementation/wizz-code-review/customize.toml +1 -1
  97. package/src/bmm-skills/4-implementation/wizz-correct-course/customize.toml +1 -1
  98. package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +2 -2
  99. package/src/bmm-skills/4-implementation/wizz-create-story/customize.toml +1 -1
  100. package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
  101. package/src/bmm-skills/4-implementation/wizz-dev-story/customize.toml +1 -1
  102. package/src/bmm-skills/4-implementation/wizz-investigate/customize.toml +1 -1
  103. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/customize.toml +1 -1
  104. package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +1 -1
  105. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-01-clarify-and-route.md +1 -1
  106. package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +1 -1
  107. package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -1
  108. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
  109. package/src/bmm-skills/4-implementation/wizz-sprint-status/customize.toml +1 -1
  110. package/src/bmm-skills/module-help.csv +32 -32
  111. package/src/bmm-skills/module.yaml +1 -1
  112. package/src/core-skills/module-help.csv +3 -3
  113. package/src/core-skills/module.yaml +4 -4
  114. package/src/core-skills/wizz-brainstorming/SKILL.md +1 -1
  115. package/src/core-skills/wizz-brainstorming/analysis/catalog-analysis.md +4 -4
  116. package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +5 -5
  117. package/src/core-skills/wizz-brainstorming/customize.toml +1 -1
  118. package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
  119. package/src/core-skills/wizz-brainstorming/scripts/brain.py +5 -5
  120. package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +1 -1
  121. package/src/core-skills/wizz-brainstorming/scripts/tests/test_memlog.py +3 -3
  122. package/src/core-skills/wizz-customize/SKILL.md +6 -6
  123. package/src/core-skills/wizz-customize/scripts/list_customizable_skills.py +3 -3
  124. package/src/core-skills/wizz-customize/scripts/tests/test_list_customizable_skills.py +13 -13
  125. package/src/core-skills/wizz-editorial-review-structure/SKILL.md +1 -1
  126. package/src/core-skills/wizz-help/SKILL.md +3 -3
  127. package/src/core-skills/wizz-party-mode/SKILL.md +5 -3
  128. package/src/core-skills/wizz-party-mode/customize.toml +2 -2
  129. package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +2 -2
  130. package/src/core-skills/wizz-party-mode/scripts/tests/test-resolve_party.py +1 -1
  131. package/src/core-skills/wizz-spec/SKILL.md +3 -3
  132. package/src/core-skills/wizz-spec/customize.toml +2 -2
  133. package/src/modules/wizz/README.md +5 -5
  134. package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
  135. package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
  136. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  137. package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
  138. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +2 -2
  139. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  140. package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
  141. package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
  142. package/src/modules/wizz/overrides/{bmad-agent-analyst.toml → wizz-agent-analyst.toml} +1 -1
  143. package/src/modules/wizz/overrides/{bmad-agent-architect.toml → wizz-agent-architect.toml} +1 -1
  144. package/src/modules/wizz/overrides/{bmad-agent-dev.toml → wizz-agent-dev.toml} +1 -1
  145. package/src/modules/wizz/overrides/{bmad-agent-pm.toml → wizz-agent-pm.toml} +1 -1
  146. package/src/modules/wizz/overrides/{bmad-agent-tech-writer.toml → wizz-agent-tech-writer.toml} +1 -1
  147. package/src/modules/wizz/overrides/{bmad-agent-ux-designer.toml → wizz-agent-ux-designer.toml} +1 -1
  148. package/src/modules/wizz/scripts/wizz-init.mjs +7 -7
  149. package/src/scripts/resolve_config.py +7 -7
  150. package/src/scripts/resolve_customization.py +2 -2
  151. package/src/scripts/tests/test_memlog.py +1 -1
  152. package/tools/bundle-web-bundles.js +1 -1
  153. package/tools/format-workflow-md.js +2 -2
  154. package/tools/installer/commands/install.js +1 -1
  155. package/tools/installer/commands/status.js +9 -9
  156. package/tools/installer/commands/uninstall.js +5 -5
  157. package/tools/installer/core/existing-install.js +8 -8
  158. package/tools/installer/core/install-paths.js +13 -13
  159. package/tools/installer/core/installer.js +102 -102
  160. package/tools/installer/core/legacy-warnings.js +16 -16
  161. package/tools/installer/core/manifest-generator.js +30 -30
  162. package/tools/installer/core/manifest.js +30 -30
  163. package/tools/installer/core/python-check.js +7 -7
  164. package/tools/installer/ide/_config-driven.js +97 -97
  165. package/tools/installer/ide/manager.js +17 -17
  166. package/tools/installer/ide/platform-codes.yaml +5 -5
  167. package/tools/installer/ide/shared/installed-skills.js +13 -13
  168. package/tools/installer/ide/shared/path-utils.js +46 -46
  169. package/tools/installer/ide/shared/skill-manifest.js +4 -4
  170. package/tools/installer/install-messages.yaml +1 -1
  171. package/tools/installer/list-options.js +3 -3
  172. package/tools/installer/modules/channel-plan.js +1 -1
  173. package/tools/installer/modules/channel-resolver.js +1 -1
  174. package/tools/installer/modules/custom-module-manager.js +16 -16
  175. package/tools/installer/modules/external-manager.js +6 -6
  176. package/tools/installer/modules/official-modules.js +58 -46
  177. package/tools/installer/modules/plugin-resolver.js +3 -3
  178. package/tools/installer/project-root.js +13 -13
  179. package/tools/installer/prompts.js +1 -1
  180. package/tools/installer/set-overrides.js +6 -6
  181. package/tools/installer/ui.js +29 -29
  182. package/tools/installer/yaml-format.js +1 -1
  183. package/tools/migrate-custom-module-paths.js +11 -11
  184. package/tools/skill-validator.md +6 -6
  185. package/tools/validate-skills.js +10 -5
  186. package/web-bundles/README.md +4 -4
  187. package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +1 -1
  188. package/web-bundles/bundles.json +6 -6
  189. package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +1 -1
  190. package/web-bundles/prd-coach/INSTRUCTIONS.md +3 -3
  191. package/web-bundles/prfaq-coach/INSTRUCTIONS.md +3 -3
  192. package/web-bundles/product-brief-coach/INSTRUCTIONS.md +3 -3
  193. package/web-bundles/ux-coach/INSTRUCTIONS.md +1 -1
  194. package/{bmad-modules.yaml → wizz-modules.yaml} +15 -15
  195. package/build/site/pagefind/fragment/en_5ad92a9.pf_fragment +0 -0
  196. package/build/site/pagefind/fragment/en_7aea5bc.pf_fragment +0 -0
  197. package/build/site/pagefind/fragment/en_81bcd7f.pf_fragment +0 -0
  198. package/build/site/pagefind/fragment/en_938e9c4.pf_fragment +0 -0
  199. package/build/site/pagefind/fragment/en_b51d75b.pf_fragment +0 -0
  200. package/build/site/pagefind/fragment/en_c9fea21.pf_fragment +0 -0
  201. package/build/site/pagefind/fragment/en_e07e982.pf_fragment +0 -0
  202. package/build/site/pagefind/fragment/en_f4389af.pf_fragment +0 -0
  203. package/build/site/pagefind/fragment/en_f52c9f9.pf_fragment +0 -0
  204. package/build/site/pagefind/index/en_82c64dc.pf_index +0 -0
  205. package/build/site/pagefind/index/en_d0dd3c7.pf_index +0 -0
  206. package/build/site/pagefind/index/en_e890f88.pf_index +0 -0
  207. package/build/site/pagefind/pagefind.en_ee1b8a17c8.pf_meta +0 -0
  208. /package/build/site/img/{bmad-dark.png → wizz-dark.png} +0 -0
  209. /package/build/site/img/{bmad-light.png → wizz-light.png} +0 -0
  210. /package/src/bmm-skills/1-analysis/wizz-prfaq/{bmad-manifest.json → wizz-manifest.json} +0 -0
  211. /package/tools/installer/{bmad-cli.js → wizz-cli.js} +0 -0
@@ -3,13 +3,13 @@ const path = require('node:path');
3
3
  const semver = require('semver');
4
4
  const fs = require('../fs-native');
5
5
  const prompts = require('../prompts');
6
- const { BMAD_FOLDER_NAME } = require('../ide/shared/path-utils');
7
- const { getInstalledCanonicalIds, isBmadOwnedEntry } = require('../ide/shared/installed-skills');
6
+ const { WIZZ_FOLDER_NAME } = require('../ide/shared/path-utils');
7
+ const { getInstalledCanonicalIds, isWizzOwnedEntry } = require('../ide/shared/installed-skills');
8
8
 
9
9
  const MIN_NATIVE_SKILLS_VERSION = '6.1.0';
10
10
 
11
- // Pre-v6.1.0 paths: BMAD used to install commands/workflows/etc in tool-specific dirs.
12
- // In v6.1.0 BMAD switched to native SKILL.md format.
11
+ // Pre-v6.1.0 paths: WIZZ used to install commands/workflows/etc in tool-specific dirs.
12
+ // In v6.1.0 WIZZ switched to native SKILL.md format.
13
13
  const LEGACY_COMMAND_PATHS = [
14
14
  '.agent/workflows',
15
15
  '.augment/commands',
@@ -38,7 +38,7 @@ const LEGACY_COMMAND_PATHS = [
38
38
  ];
39
39
 
40
40
  // Skill paths that moved to the cross-tool .agents/skills/ standard.
41
- // Users upgrading from a prior install may have stale BMAD skills here that
41
+ // Users upgrading from a prior install may have stale WIZZ skills here that
42
42
  // the AI tool will load alongside the new ones, causing duplicates.
43
43
  const LEGACY_SKILL_PATHS = [
44
44
  '.augment/skills',
@@ -81,8 +81,8 @@ function resolveLegacyPath(projectRoot, p) {
81
81
  }
82
82
 
83
83
  async function findStaleLegacyDirs(projectRoot) {
84
- const bmadDir = path.join(projectRoot, BMAD_FOLDER_NAME);
85
- const canonicalIds = await getInstalledCanonicalIds(bmadDir);
84
+ const wizzDir = path.join(projectRoot, WIZZ_FOLDER_NAME);
85
+ const canonicalIds = await getInstalledCanonicalIds(wizzDir);
86
86
 
87
87
  const findings = [];
88
88
  for (const legacyPath of LEGACY_PATHS) {
@@ -90,9 +90,9 @@ async function findStaleLegacyDirs(projectRoot) {
90
90
  if (!(await fs.pathExists(resolved))) continue;
91
91
  try {
92
92
  const entries = await fs.readdir(resolved);
93
- const bmadEntries = entries.filter((e) => isBmadOwnedEntry(e, canonicalIds));
94
- if (bmadEntries.length > 0) {
95
- findings.push({ path: resolved, displayPath: legacyPath, count: bmadEntries.length, entries: bmadEntries });
93
+ const wizzEntries = entries.filter((e) => isWizzOwnedEntry(e, canonicalIds));
94
+ if (wizzEntries.length > 0) {
95
+ findings.push({ path: resolved, displayPath: legacyPath, count: wizzEntries.length, entries: wizzEntries });
96
96
  }
97
97
  } catch {
98
98
  // Unreadable dir — skip
@@ -116,20 +116,20 @@ async function warnPreNativeSkillsLegacy({ projectRoot, existingVersion } = {})
116
116
 
117
117
  if (versionTriggered) {
118
118
  await prompts.log.warn(
119
- `Detected previous BMAD install v${existingVersion} (pre-${MIN_NATIVE_SKILLS_VERSION}). ` +
120
- `BMAD switched to native skills format in v${MIN_NATIVE_SKILLS_VERSION}; old command/workflow directories from your prior install may still be present.`,
119
+ `Detected previous WIZZ install v${existingVersion} (pre-${MIN_NATIVE_SKILLS_VERSION}). ` +
120
+ `WIZZ switched to native skills format in v${MIN_NATIVE_SKILLS_VERSION}; old command/workflow directories from your prior install may still be present.`,
121
121
  );
122
122
  }
123
123
 
124
124
  if (staleDirs.length > 0) {
125
125
  await prompts.log.warn(
126
- `Found stale BMAD entries in ${staleDirs.length} legacy location(s) that the new installer no longer manages. ` +
126
+ `Found stale WIZZ entries in ${staleDirs.length} legacy location(s) that the new installer no longer manages. ` +
127
127
  `Your AI tool may load these alongside the new skills, causing duplicates. Remove them manually:`,
128
128
  );
129
129
  for (const finding of staleDirs) {
130
- // Print each entry by exact name. A `bmad*` glob would (a) miss
130
+ // Print each entry by exact name. A `wizz*` glob would (a) miss
131
131
  // custom-module skills the canonicalId scan now picks up, and
132
- // (b) match bmad-os-* utility skills the user should keep.
132
+ // (b) match wizz-os-* utility skills the user should keep.
133
133
  const entries = finding.entries || [];
134
134
  for (const entry of entries) {
135
135
  await prompts.log.message(` rm -rf "${path.join(finding.path, entry)}"`);
@@ -137,7 +137,7 @@ async function warnPreNativeSkillsLegacy({ projectRoot, existingVersion } = {})
137
137
  }
138
138
  } else if (versionTriggered) {
139
139
  await prompts.log.message(
140
- ' No stale legacy directories detected, but if your AI tool shows duplicate BMAD commands after install, check for old `bmad-*` entries in tool-specific dirs (e.g. .claude/commands, .cursor/commands).',
140
+ ' No stale legacy directories detected, but if your AI tool shows duplicate WIZZ commands after install, check for old `wizz-*` entries in tool-specific dirs (e.g. .claude/commands, .cursor/commands).',
141
141
  );
142
142
  }
143
143
  }
@@ -33,20 +33,20 @@ class ManifestGenerator {
33
33
 
34
34
  /**
35
35
  * Generate all manifests for the installation
36
- * @param {string} bmadDir - _wizz
36
+ * @param {string} wizzDir - _wizz
37
37
  * @param {Array} selectedModules - Selected modules for installation
38
38
  * @param {Array} installedFiles - All installed files (optional, for hash tracking)
39
39
  */
40
- async generateManifests(bmadDir, selectedModules, installedFiles = [], options = {}) {
40
+ async generateManifests(wizzDir, selectedModules, installedFiles = [], options = {}) {
41
41
  // Create _config directory if it doesn't exist
42
- const cfgDir = path.join(bmadDir, '_config');
42
+ const cfgDir = path.join(wizzDir, '_config');
43
43
  await fs.ensureDir(cfgDir);
44
44
 
45
45
  // Store modules list (all modules including preserved ones)
46
46
  const preservedModules = options.preservedModules || [];
47
47
 
48
- // Scan the bmad directory to find all actually installed modules
49
- const installedModules = await this.scanInstalledModules(bmadDir);
48
+ // Scan the wizz directory to find all actually installed modules
49
+ const installedModules = await this.scanInstalledModules(wizzDir);
50
50
 
51
51
  // Since custom modules are now installed the same way as regular modules,
52
52
  // we don't need to exclude them from manifest generation
@@ -55,8 +55,8 @@ class ManifestGenerator {
55
55
  this.modules = allModules;
56
56
  this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
57
57
 
58
- this.bmadDir = bmadDir;
59
- this.bmadFolderName = path.basename(bmadDir); // Get the actual folder name (e.g., '_wizz' or 'bmad')
58
+ this.wizzDir = wizzDir;
59
+ this.wizzFolderName = path.basename(wizzDir); // Get the actual folder name (e.g., '_wizz' or 'wizz')
60
60
  this.allInstalledFiles = installedFiles;
61
61
 
62
62
  if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
@@ -81,7 +81,7 @@ class ManifestGenerator {
81
81
  await this.collectAgentsFromModuleYaml();
82
82
 
83
83
  // Write manifest files and collect their paths
84
- const [teamConfigPath, userConfigPath] = await this.writeCentralConfig(bmadDir, options.moduleConfigs || {});
84
+ const [teamConfigPath, userConfigPath] = await this.writeCentralConfig(wizzDir, options.moduleConfigs || {});
85
85
  const manifestFiles = [
86
86
  await this.writeMainManifest(cfgDir),
87
87
  await this.writeSkillManifest(cfgDir),
@@ -90,7 +90,7 @@ class ManifestGenerator {
90
90
  await this.writeFilesManifest(cfgDir),
91
91
  ];
92
92
 
93
- await this.ensureCustomConfigStubs(bmadDir);
93
+ await this.ensureCustomConfigStubs(wizzDir);
94
94
 
95
95
  return {
96
96
  skills: this.skills.length,
@@ -110,10 +110,10 @@ class ManifestGenerator {
110
110
  async collectSkills() {
111
111
  this.skills = [];
112
112
  this.skillClaimedDirs = new Set();
113
- const debug = process.env.BMAD_DEBUG_MANIFEST === 'true';
113
+ const debug = process.env.WIZZ_DEBUG_MANIFEST === 'true';
114
114
 
115
115
  for (const moduleName of this.updatedModules) {
116
- const modulePath = path.join(this.bmadDir, moduleName);
116
+ const modulePath = path.join(this.wizzDir, moduleName);
117
117
  if (!(await fs.pathExists(modulePath))) continue;
118
118
 
119
119
  // Recursive walk skipping . and _ prefixed dirs
@@ -136,8 +136,8 @@ class ManifestGenerator {
136
136
  // Build path relative from module root (points to SKILL.md — the permanent entrypoint)
137
137
  const relativePath = path.relative(modulePath, dir).split(path.sep).join('/');
138
138
  const installPath = relativePath
139
- ? `${this.bmadFolderName}/${moduleName}/${relativePath}/${skillFile}`
140
- : `${this.bmadFolderName}/${moduleName}/${skillFile}`;
139
+ ? `${this.wizzFolderName}/${moduleName}/${relativePath}/${skillFile}`
140
+ : `${this.wizzFolderName}/${moduleName}/${skillFile}`;
141
141
 
142
142
  // Native SKILL.md entrypoints always derive canonicalId from directory name.
143
143
  const canonicalId = dirName;
@@ -241,12 +241,12 @@ class ManifestGenerator {
241
241
  */
242
242
  async collectAgentsFromModuleYaml() {
243
243
  this.agents = [];
244
- const debug = process.env.BMAD_DEBUG_MANIFEST === 'true';
244
+ const debug = process.env.WIZZ_DEBUG_MANIFEST === 'true';
245
245
 
246
246
  for (const moduleName of this.updatedModules) {
247
247
  const moduleYamlPath = await resolveInstalledModuleYaml(moduleName);
248
248
  if (!moduleYamlPath) {
249
- // External modules live in ~/.bmad/cache/external-modules, not src/modules.
249
+ // External modules live in ~/.wizz/cache/external-modules, not src/modules.
250
250
  // Warn rather than silently skip so missing agent rosters don't vanish
251
251
  // from config.toml without notice.
252
252
  console.warn(
@@ -335,7 +335,7 @@ class ManifestGenerator {
335
335
 
336
336
  for (const moduleName of this.modules) {
337
337
  // Get fresh version info from source
338
- const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, this.bmadDir);
338
+ const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, this.wizzDir);
339
339
 
340
340
  // Get existing install date if available
341
341
  const existing = existingModulesMap.get(moduleName);
@@ -425,9 +425,9 @@ class ManifestGenerator {
425
425
  * _wizz/custom/config.toml and _wizz/custom/config.user.toml (never touched by installer).
426
426
  * @returns {string[]} Paths to the written config files
427
427
  */
428
- async writeCentralConfig(bmadDir, moduleConfigs) {
429
- const teamPath = path.join(bmadDir, 'config.toml');
430
- const userPath = path.join(bmadDir, 'config.user.toml');
428
+ async writeCentralConfig(wizzDir, moduleConfigs) {
429
+ const teamPath = path.join(wizzDir, 'config.toml');
430
+ const userPath = path.join(wizzDir, 'config.user.toml');
431
431
 
432
432
  // Load each module's source module.yaml to determine scope per prompt key.
433
433
  // Default scope is 'team' when the prompt doesn't declare one.
@@ -623,8 +623,8 @@ class ManifestGenerator {
623
623
  * Create empty _wizz/custom/config.toml and _wizz/custom/config.user.toml stubs
624
624
  * on first install only. Installer never touches these files again after creation.
625
625
  */
626
- async ensureCustomConfigStubs(bmadDir) {
627
- const customDir = path.join(bmadDir, 'custom');
626
+ async ensureCustomConfigStubs(wizzDir) {
627
+ const customDir = path.join(wizzDir, 'custom');
628
628
  await fs.ensureDir(customDir);
629
629
 
630
630
  const stubs = [
@@ -689,8 +689,8 @@ class ManifestGenerator {
689
689
  if (this.allInstalledFiles && this.allInstalledFiles.length > 0) {
690
690
  // Process all installed files
691
691
  for (const filePath of this.allInstalledFiles) {
692
- // Store paths relative to bmadDir (no folder prefix)
693
- const relativePath = filePath.replace(this.bmadDir, '').replaceAll('\\', '/').replace(/^\//, '');
692
+ // Store paths relative to wizzDir (no folder prefix)
693
+ const relativePath = filePath.replace(this.wizzDir, '').replaceAll('\\', '/').replace(/^\//, '');
694
694
  const ext = path.extname(filePath).toLowerCase();
695
695
  const fileName = path.basename(filePath, ext);
696
696
 
@@ -713,8 +713,8 @@ class ManifestGenerator {
713
713
  // Fallback: use the collected workflows/agents/tasks
714
714
  for (const file of this.files) {
715
715
  // Strip the folder prefix if present (for consistency)
716
- const relPath = file.path.replace(this.bmadFolderName + '/', '');
717
- const filePath = path.join(this.bmadDir, relPath);
716
+ const relPath = file.path.replace(this.wizzFolderName + '/', '');
717
+ const filePath = path.join(this.wizzDir, relPath);
718
718
  const hash = await this.calculateFileHash(filePath);
719
719
  allFiles.push({
720
720
  ...file,
@@ -741,15 +741,15 @@ class ManifestGenerator {
741
741
  }
742
742
 
743
743
  /**
744
- * Scan the bmad directory to find all installed modules
745
- * @param {string} bmadDir - Path to bmad directory
744
+ * Scan the wizz directory to find all installed modules
745
+ * @param {string} wizzDir - Path to wizz directory
746
746
  * @returns {Array} List of module names
747
747
  */
748
- async scanInstalledModules(bmadDir) {
748
+ async scanInstalledModules(wizzDir) {
749
749
  const modules = [];
750
750
 
751
751
  try {
752
- const entries = await fs.readdir(bmadDir, { withFileTypes: true });
752
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
753
753
 
754
754
  for (const entry of entries) {
755
755
  // Skip if not a directory or is a special directory
@@ -758,7 +758,7 @@ class ManifestGenerator {
758
758
  }
759
759
 
760
760
  // Check if this looks like a module (has agents directory or skill manifests)
761
- const modulePath = path.join(bmadDir, entry.name);
761
+ const modulePath = path.join(wizzDir, entry.name);
762
762
  const hasAgents = await fs.pathExists(path.join(modulePath, 'agents'));
763
763
  const hasSkills = await this._hasSkillMdRecursive(modulePath);
764
764
 
@@ -18,26 +18,26 @@ function isValidNpmPackageName(packageName) {
18
18
  class Manifest {
19
19
  /**
20
20
  * Create a new manifest
21
- * @param {string} bmadDir - Path to bmad directory
21
+ * @param {string} wizzDir - Path to wizz directory
22
22
  * @param {Object} data - Manifest data
23
23
  * @param {Array} installedFiles - List of installed files (no longer used, files tracked in files-manifest.csv)
24
24
  */
25
- async create(bmadDir, data, installedFiles = []) {
26
- const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
25
+ async create(wizzDir, data, installedFiles = []) {
26
+ const manifestPath = path.join(wizzDir, '_config', 'manifest.yaml');
27
27
  const yaml = require('yaml');
28
28
 
29
29
  // Ensure _config directory exists
30
30
  await fs.ensureDir(path.dirname(manifestPath));
31
31
 
32
- // Get the BMad version from package.json
33
- const bmadVersion = data.version || require(path.join(process.cwd(), 'package.json')).version;
32
+ // Get the Wizz version from package.json
33
+ const wizzVersion = data.version || require(path.join(process.cwd(), 'package.json')).version;
34
34
 
35
35
  // Convert module list to new detailed format
36
36
  const moduleDetails = [];
37
37
  if (data.modules && Array.isArray(data.modules)) {
38
38
  for (const moduleName of data.modules) {
39
- // Core and BMM modules use the BMad version
40
- const moduleVersion = moduleName === 'core' || moduleName === 'bmm' ? bmadVersion : null;
39
+ // Core and BMM modules use the Wizz version
40
+ const moduleVersion = moduleName === 'core' || moduleName === 'bmm' ? wizzVersion : null;
41
41
  const now = data.installDate || new Date().toISOString();
42
42
 
43
43
  moduleDetails.push({
@@ -53,7 +53,7 @@ class Manifest {
53
53
  // Structure the manifest data
54
54
  const manifestData = {
55
55
  installation: {
56
- version: bmadVersion,
56
+ version: wizzVersion,
57
57
  installDate: data.installDate || new Date().toISOString(),
58
58
  lastUpdated: data.lastUpdated || new Date().toISOString(),
59
59
  },
@@ -79,11 +79,11 @@ class Manifest {
79
79
 
80
80
  /**
81
81
  * Read existing manifest
82
- * @param {string} bmadDir - Path to bmad directory
82
+ * @param {string} wizzDir - Path to wizz directory
83
83
  * @returns {Object|null} Manifest data or null if not found
84
84
  */
85
- async read(bmadDir) {
86
- const yamlPath = path.join(bmadDir, '_config', 'manifest.yaml');
85
+ async read(wizzDir) {
86
+ const yamlPath = path.join(wizzDir, '_config', 'manifest.yaml');
87
87
  const yaml = require('yaml');
88
88
 
89
89
  if (await fs.pathExists(yamlPath)) {
@@ -120,11 +120,11 @@ class Manifest {
120
120
 
121
121
  /**
122
122
  * Read raw manifest data without flattening
123
- * @param {string} bmadDir - Path to bmad directory
123
+ * @param {string} wizzDir - Path to wizz directory
124
124
  * @returns {Object|null} Raw manifest data or null if not found
125
125
  */
126
- async _readRaw(bmadDir) {
127
- const yamlPath = path.join(bmadDir, '_config', 'manifest.yaml');
126
+ async _readRaw(wizzDir) {
127
+ const yamlPath = path.join(wizzDir, '_config', 'manifest.yaml');
128
128
  const yaml = require('yaml');
129
129
 
130
130
  if (await fs.pathExists(yamlPath)) {
@@ -162,12 +162,12 @@ class Manifest {
162
162
  /**
163
163
  * Add a module to the manifest with optional version info
164
164
  * If module already exists, update its version info
165
- * @param {string} bmadDir - Path to bmad directory
165
+ * @param {string} wizzDir - Path to wizz directory
166
166
  * @param {string} moduleName - Module name to add
167
167
  * @param {Object} options - Optional version info
168
168
  */
169
- async addModule(bmadDir, moduleName, options = {}) {
170
- let manifest = await this._readRaw(bmadDir);
169
+ async addModule(wizzDir, moduleName, options = {}) {
170
+ let manifest = await this._readRaw(wizzDir);
171
171
  if (!manifest) {
172
172
  // Bootstrap a minimal manifest if it doesn't exist yet
173
173
  // (e.g., skill-only modules with no agents to compile)
@@ -217,16 +217,16 @@ class Manifest {
217
217
  };
218
218
  }
219
219
 
220
- await this._writeRaw(bmadDir, manifest);
220
+ await this._writeRaw(wizzDir, manifest);
221
221
  }
222
222
 
223
223
  /**
224
224
  * Get all modules with their version info
225
- * @param {string} bmadDir - Path to bmad directory
225
+ * @param {string} wizzDir - Path to wizz directory
226
226
  * @returns {Array} Array of module info objects
227
227
  */
228
- async getAllModuleVersions(bmadDir) {
229
- const manifest = await this._readRaw(bmadDir);
228
+ async getAllModuleVersions(wizzDir) {
229
+ const manifest = await this._readRaw(wizzDir);
230
230
  if (!manifest || !manifest.modules) {
231
231
  return [];
232
232
  }
@@ -236,12 +236,12 @@ class Manifest {
236
236
 
237
237
  /**
238
238
  * Write raw manifest data to file
239
- * @param {string} bmadDir - Path to bmad directory
239
+ * @param {string} wizzDir - Path to wizz directory
240
240
  * @param {Object} manifestData - Raw manifest data to write
241
241
  */
242
- async _writeRaw(bmadDir, manifestData) {
242
+ async _writeRaw(wizzDir, manifestData) {
243
243
  const yaml = require('yaml');
244
- const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
244
+ const manifestPath = path.join(wizzDir, '_config', 'manifest.yaml');
245
245
 
246
246
  await fs.ensureDir(path.dirname(manifestPath));
247
247
 
@@ -274,11 +274,11 @@ class Manifest {
274
274
  /**
275
275
  * Get module version info from source
276
276
  * @param {string} moduleName - Module name/code
277
- * @param {string} bmadDir - Path to bmad directory
277
+ * @param {string} wizzDir - Path to wizz directory
278
278
  * @param {string} moduleSourcePath - Optional source path for custom modules
279
279
  * @returns {Object} Version info object with version, source, npmPackage, repoUrl
280
280
  */
281
- async getModuleVersionInfo(moduleName, bmadDir, moduleSourcePath = null) {
281
+ async getModuleVersionInfo(moduleName, wizzDir, moduleSourcePath = null) {
282
282
  // Resolve source type first, then read version with the correct path context
283
283
  if (['core', 'bmm'].includes(moduleName)) {
284
284
  const versionInfo = await resolveModuleVersion(moduleName, { moduleSourcePath });
@@ -314,7 +314,7 @@ class Manifest {
314
314
  const { CustomModuleManager } = require('../modules/custom-module-manager');
315
315
  const customMgr = new CustomModuleManager();
316
316
  const resolved = customMgr.getResolution(moduleName);
317
- const customSource = await customMgr.findModuleSourceByCode(moduleName, { bmadDir });
317
+ const customSource = await customMgr.findModuleSourceByCode(moduleName, { wizzDir });
318
318
  if (customSource || resolved) {
319
319
  const versionInfo = await resolveModuleVersion(moduleName, {
320
320
  moduleSourcePath: moduleSourcePath || customSource,
@@ -394,12 +394,12 @@ class Manifest {
394
394
 
395
395
  /**
396
396
  * Check for available updates for installed modules
397
- * @param {string} bmadDir - Path to bmad directory
397
+ * @param {string} wizzDir - Path to wizz directory
398
398
  * @returns {Array} Array of update info objects
399
399
  */
400
- async checkForUpdates(bmadDir) {
400
+ async checkForUpdates(wizzDir) {
401
401
  const semver = require('semver');
402
- const modules = await this.getAllModuleVersions(bmadDir);
402
+ const modules = await this.getAllModuleVersions(wizzDir);
403
403
  const updates = [];
404
404
 
405
405
  for (const module of modules) {
@@ -3,14 +3,14 @@ const prompts = require('../prompts');
3
3
 
4
4
  // Python 3.11 added stdlib `tomllib` (PEP 680), which the shared scripts in
5
5
  // src/scripts/ (resolve_config.py, resolve_customization.py) require to read
6
- // BMAD's TOML config files. memlog.py is more lenient and runs on 3.8+.
6
+ // WIZZ's TOML config files. memlog.py is more lenient and runs on 3.8+.
7
7
  const PYTHON_FULL_SUPPORT = { major: 3, minor: 11 };
8
8
  const PYTHON_PARTIAL_SUPPORT = { major: 3, minor: 8 };
9
9
 
10
10
  // Every runtime call site (skill steps, on_complete hooks) invokes a literal
11
- // `python3`, so only that command's version vouches for BMAD features. The
11
+ // `python3`, so only that command's version vouches for WIZZ features. The
12
12
  // fallback probes exist to tell the user "Python is installed, but not under
13
- // the name BMAD uses" instead of a misleading "No Python found".
13
+ // the name WIZZ uses" instead of a misleading "No Python found".
14
14
  const RUNTIME_COMMAND = 'python3';
15
15
  const PROBE_CANDIDATES =
16
16
  process.platform === 'win32'
@@ -43,7 +43,7 @@ function parsePythonVersion(output) {
43
43
  }
44
44
 
45
45
  /**
46
- * Classify a detected Python version against BMAD's feature requirements.
46
+ * Classify a detected Python version against WIZZ's feature requirements.
47
47
  * @param {{major: number, minor: number}|null} version
48
48
  * @returns {'full'|'partial'|'unsupported'|'none'}
49
49
  */
@@ -88,7 +88,7 @@ function probeVersion(candidate) {
88
88
  * Probe the local environment for a Python interpreter.
89
89
  * Tries each candidate command and returns the first that reports a version.
90
90
  * `isRuntimeCommand` is true only when the match is `python3` — the command
91
- * BMAD scripts actually invoke.
91
+ * WIZZ scripts actually invoke.
92
92
  * @returns {{command: string, version: {major: number, minor: number, patch: number, raw: string}, isRuntimeCommand: boolean}|null}
93
93
  */
94
94
  function detectPython() {
@@ -117,9 +117,9 @@ function upgradeHints() {
117
117
  }
118
118
 
119
119
  /**
120
- * Check the local Python environment and warn about degraded BMAD features.
120
+ * Check the local Python environment and warn about degraded WIZZ features.
121
121
  *
122
- * Warn-don't-block: most of BMAD works without Python, so the install always
122
+ * Warn-don't-block: most of WIZZ works without Python, so the install always
123
123
  * may proceed — but the user must explicitly acknowledge the warning so it
124
124
  * can't scroll past unseen. In non-interactive runs (--yes, or stdin is not
125
125
  * a TTY) the warning is logged and the install continues without a prompt.