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
@@ -4,18 +4,18 @@ const csv = require('csv-parse/sync');
4
4
 
5
5
  /**
6
6
  * Read the global skill-manifest.csv and return the set of canonicalIds.
7
- * These define which directory entries in a target_dir are BMAD-owned, regardless
8
- * of whether they happen to start with "bmad-" (custom modules can ship skills
7
+ * These define which directory entries in a target_dir are WIZZ-owned, regardless
8
+ * of whether they happen to start with "wizz-" (custom modules can ship skills
9
9
  * with any prefix, e.g. "fred-cool-skill").
10
10
  *
11
- * @param {string} bmadDir - Path to the _wizz install directory
11
+ * @param {string} wizzDir - Path to the _wizz install directory
12
12
  * @returns {Promise<Set<string>>} Set of canonicalIds, or empty set if manifest missing
13
13
  */
14
- async function getInstalledCanonicalIds(bmadDir) {
14
+ async function getInstalledCanonicalIds(wizzDir) {
15
15
  const ids = new Set();
16
- if (!bmadDir) return ids;
16
+ if (!wizzDir) return ids;
17
17
 
18
- const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv');
18
+ const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
19
19
  if (!(await fs.pathExists(csvPath))) return ids;
20
20
 
21
21
  try {
@@ -32,19 +32,19 @@ async function getInstalledCanonicalIds(bmadDir) {
32
32
  }
33
33
 
34
34
  /**
35
- * Test whether a directory entry is BMAD-owned.
36
- * Prefers the manifest's canonicalIds; falls back to the legacy "bmad" prefix
37
- * when no manifest is available (early install, ancestor lookup with no bmad dir).
35
+ * Test whether a directory entry is WIZZ-owned.
36
+ * Prefers the manifest's canonicalIds; falls back to the legacy "wizz" prefix
37
+ * when no manifest is available (early install, ancestor lookup with no wizz dir).
38
38
  *
39
39
  * @param {string} entry - Directory entry name
40
40
  * @param {Set<string>|null} canonicalIds - From getInstalledCanonicalIds, or null
41
41
  * @returns {boolean}
42
42
  */
43
- function isBmadOwnedEntry(entry, canonicalIds) {
43
+ function isWizzOwnedEntry(entry, canonicalIds) {
44
44
  if (!entry || typeof entry !== 'string') return false;
45
- if (entry.toLowerCase().startsWith('bmad-os-')) return false;
45
+ if (entry.toLowerCase().startsWith('wizz-os-')) return false;
46
46
  if (canonicalIds && canonicalIds.size > 0) return canonicalIds.has(entry);
47
- return entry.toLowerCase().startsWith('bmad');
47
+ return entry.toLowerCase().startsWith('wizz');
48
48
  }
49
49
 
50
- module.exports = { getInstalledCanonicalIds, isBmadOwnedEntry };
50
+ module.exports = { getInstalledCanonicalIds, isWizzOwnedEntry };
@@ -4,66 +4,66 @@
4
4
  * Provides utilities to convert hierarchical paths to flat naming conventions.
5
5
  *
6
6
  * DASH-BASED NAMING (new standard):
7
- * - Agents: bmad-agent-module-name.md (with bmad-agent- prefix)
8
- * - Workflows/Tasks/Tools: bmad-module-name.md
7
+ * - Agents: wizz-agent-module-name.md (with wizz-agent- prefix)
8
+ * - Workflows/Tasks/Tools: wizz-module-name.md
9
9
  *
10
10
  * Example outputs:
11
- * - cis/agents/storymaster.md → bmad-agent-cis-storymaster.md
12
- * - bmm/workflows/plan-project.md → bmad-bmm-plan-project.md
13
- * - bmm/tasks/create-story.md → bmad-bmm-create-story.md
14
- * - core/agents/brainstorming.md → bmad-agent-brainstorming.md (core agents skip module name)
15
- * - standalone/agents/fred.md → bmad-agent-standalone-fred.md
11
+ * - cis/agents/storymaster.md → wizz-agent-cis-storymaster.md
12
+ * - bmm/workflows/plan-project.md → wizz-bmm-plan-project.md
13
+ * - bmm/tasks/create-story.md → wizz-bmm-create-story.md
14
+ * - core/agents/brainstorming.md → wizz-agent-brainstorming.md (core agents skip module name)
15
+ * - standalone/agents/fred.md → wizz-agent-standalone-fred.md
16
16
  */
17
17
 
18
18
  const AGENT_SEGMENT = 'agents';
19
19
 
20
- // BMAD installation folder name - centralized constant for all installers
21
- const BMAD_FOLDER_NAME = '_wizz';
20
+ // WIZZ installation folder name - centralized constant for all installers
21
+ const WIZZ_FOLDER_NAME = '_wizz';
22
22
 
23
23
  /**
24
24
  * Convert hierarchical path to flat dash-separated name (NEW STANDARD)
25
- * Converts: 'bmm', 'agents', 'pm' → 'bmad-agent-bmm-pm.md'
26
- * Converts: 'bmm', 'workflows', 'correct-course' → 'bmad-bmm-correct-course.md'
27
- * Converts: 'core', 'agents', 'brainstorming' → 'bmad-agent-brainstorming.md' (core agents skip module name)
28
- * Converts: 'standalone', 'agents', 'fred' → 'bmad-agent-standalone-fred.md'
25
+ * Converts: 'bmm', 'agents', 'pm' → 'wizz-agent-bmm-pm.md'
26
+ * Converts: 'bmm', 'workflows', 'correct-course' → 'wizz-bmm-correct-course.md'
27
+ * Converts: 'core', 'agents', 'brainstorming' → 'wizz-agent-brainstorming.md' (core agents skip module name)
28
+ * Converts: 'standalone', 'agents', 'fred' → 'wizz-agent-standalone-fred.md'
29
29
  *
30
30
  * @param {string} module - Module name (e.g., 'bmm', 'core', 'standalone')
31
31
  * @param {string} type - Artifact type ('agents', 'workflows', 'tasks', 'tools')
32
32
  * @param {string} name - Artifact name (e.g., 'pm', 'brainstorming')
33
- * @returns {string} Flat filename like 'bmad-agent-bmm-pm.md' or 'bmad-bmm-correct-course.md'
33
+ * @returns {string} Flat filename like 'wizz-agent-bmm-pm.md' or 'wizz-bmm-correct-course.md'
34
34
  */
35
35
  function toDashName(module, type, name) {
36
36
  const isAgent = type === AGENT_SEGMENT;
37
37
 
38
- // For core module, skip the module name: use 'bmad-agent-name.md' instead of 'bmad-agent-core-name.md'
38
+ // For core module, skip the module name: use 'wizz-agent-name.md' instead of 'wizz-agent-core-name.md'
39
39
  if (module === 'core') {
40
- return isAgent ? `bmad-agent-${name}.md` : `bmad-${name}.md`;
40
+ return isAgent ? `wizz-agent-${name}.md` : `wizz-${name}.md`;
41
41
  }
42
42
  // For standalone module, include 'standalone' in the name
43
43
  if (module === 'standalone') {
44
- return isAgent ? `bmad-agent-standalone-${name}.md` : `bmad-standalone-${name}.md`;
44
+ return isAgent ? `wizz-agent-standalone-${name}.md` : `wizz-standalone-${name}.md`;
45
45
  }
46
46
 
47
- // Module artifacts: bmad-module-name.md or bmad-agent-module-name.md
47
+ // Module artifacts: wizz-module-name.md or wizz-agent-module-name.md
48
48
  // eslint-disable-next-line unicorn/prefer-string-replace-all -- regex replace is intentional here
49
49
  const dashName = name.replace(/\//g, '-'); // Flatten nested paths
50
- return isAgent ? `bmad-agent-${module}-${dashName}.md` : `bmad-${module}-${dashName}.md`;
50
+ return isAgent ? `wizz-agent-${module}-${dashName}.md` : `wizz-${module}-${dashName}.md`;
51
51
  }
52
52
 
53
53
  /**
54
54
  * Convert relative path to flat dash-separated name
55
- * Converts: 'bmm/agents/pm.md' → 'bmad-agent-bmm-pm.md'
56
- * Converts: 'bmm/agents/tech-writer/tech-writer.md' → 'bmad-agent-bmm-tech-writer.md' (uses folder name)
57
- * Converts: 'bmm/workflows/correct-course.md' → 'bmad-bmm-correct-course.md'
58
- * Converts: 'core/agents/brainstorming.md' → 'bmad-agent-brainstorming.md' (core agents skip module name)
55
+ * Converts: 'bmm/agents/pm.md' → 'wizz-agent-bmm-pm.md'
56
+ * Converts: 'bmm/agents/tech-writer/tech-writer.md' → 'wizz-agent-bmm-tech-writer.md' (uses folder name)
57
+ * Converts: 'bmm/workflows/correct-course.md' → 'wizz-bmm-correct-course.md'
58
+ * Converts: 'core/agents/brainstorming.md' → 'wizz-agent-brainstorming.md' (core agents skip module name)
59
59
  *
60
60
  * @param {string} relativePath - Path like 'bmm/agents/pm.md'
61
- * @returns {string} Flat filename like 'bmad-agent-bmm-pm.md' or 'wizz-brainstorming.md'
61
+ * @returns {string} Flat filename like 'wizz-agent-bmm-pm.md' or 'wizz-brainstorming.md'
62
62
  */
63
63
  function toDashPath(relativePath) {
64
64
  if (!relativePath || typeof relativePath !== 'string') {
65
65
  // Return a safe default for invalid input
66
- return 'bmad-unknown.md';
66
+ return 'wizz-unknown.md';
67
67
  }
68
68
 
69
69
  // Strip common file extensions to avoid double extensions in generated filenames
@@ -90,13 +90,13 @@ function toDashPath(relativePath) {
90
90
 
91
91
  /**
92
92
  * Create custom agent dash name
93
- * Creates: 'bmad-custom-agent-fred-commit-poet.md'
93
+ * Creates: 'wizz-custom-agent-fred-commit-poet.md'
94
94
  *
95
95
  * @param {string} agentName - Custom agent name
96
- * @returns {string} Flat filename like 'bmad-custom-agent-fred-commit-poet.md'
96
+ * @returns {string} Flat filename like 'wizz-custom-agent-fred-commit-poet.md'
97
97
  */
98
98
  function customAgentDashName(agentName) {
99
- return `bmad-custom-agent-${agentName}.md`;
99
+ return `wizz-custom-agent-${agentName}.md`;
100
100
  }
101
101
 
102
102
  /**
@@ -105,17 +105,17 @@ function customAgentDashName(agentName) {
105
105
  * @returns {boolean} True if filename uses dash format
106
106
  */
107
107
  function isDashFormat(filename) {
108
- return filename.startsWith('bmad-') && filename.includes('-');
108
+ return filename.startsWith('wizz-') && filename.includes('-');
109
109
  }
110
110
 
111
111
  /**
112
112
  * Extract parts from a dash-formatted filename
113
- * Parses: 'bmad-agent-bmm-pm.md' → { prefix: 'bmad', module: 'bmm', type: 'agents', name: 'pm' }
114
- * Parses: 'bmad-bmm-correct-course.md' → { prefix: 'bmad', module: 'bmm', type: 'workflows', name: 'correct-course' }
115
- * Parses: 'bmad-agent-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'agents', name: 'brainstorming' } (core agents)
116
- * Parses: 'wizz-brainstorming.md' → { prefix: 'bmad', module: 'core', type: 'workflows', name: 'brainstorming' } (core workflows)
117
- * Parses: 'bmad-agent-standalone-fred.md' → { prefix: 'bmad', module: 'standalone', type: 'agents', name: 'fred' }
118
- * Parses: 'bmad-standalone-foo.md' → { prefix: 'bmad', module: 'standalone', type: 'workflows', name: 'foo' }
113
+ * Parses: 'wizz-agent-bmm-pm.md' → { prefix: 'wizz', module: 'bmm', type: 'agents', name: 'pm' }
114
+ * Parses: 'wizz-bmm-correct-course.md' → { prefix: 'wizz', module: 'bmm', type: 'workflows', name: 'correct-course' }
115
+ * Parses: 'wizz-agent-brainstorming.md' → { prefix: 'wizz', module: 'core', type: 'agents', name: 'brainstorming' } (core agents)
116
+ * Parses: 'wizz-brainstorming.md' → { prefix: 'wizz', module: 'core', type: 'workflows', name: 'brainstorming' } (core workflows)
117
+ * Parses: 'wizz-agent-standalone-fred.md' → { prefix: 'wizz', module: 'standalone', type: 'agents', name: 'fred' }
118
+ * Parses: 'wizz-standalone-foo.md' → { prefix: 'wizz', module: 'standalone', type: 'workflows', name: 'foo' }
119
119
  *
120
120
  * @param {string} filename - Dash-formatted filename
121
121
  * @returns {Object|null} Parsed parts or null if invalid format
@@ -124,7 +124,7 @@ function parseDashName(filename) {
124
124
  const withoutExt = filename.replace('.md', '');
125
125
  const parts = withoutExt.split('-');
126
126
 
127
- if (parts.length < 2 || parts[0] !== 'bmad') {
127
+ if (parts.length < 2 || parts[0] !== 'wizz') {
128
128
  return null;
129
129
  }
130
130
 
@@ -133,9 +133,9 @@ function parseDashName(filename) {
133
133
 
134
134
  if (isAgent) {
135
135
  // This is an agent file
136
- // Format: bmad-agent-name (core) or bmad-agent-standalone-name or bmad-agent-module-name
136
+ // Format: wizz-agent-name (core) or wizz-agent-standalone-name or wizz-agent-module-name
137
137
  if (parts.length >= 4 && parts[2] === 'standalone') {
138
- // Standalone agent: bmad-agent-standalone-name
138
+ // Standalone agent: wizz-agent-standalone-name
139
139
  return {
140
140
  prefix: parts[0],
141
141
  module: 'standalone',
@@ -144,7 +144,7 @@ function parseDashName(filename) {
144
144
  };
145
145
  }
146
146
  if (parts.length === 3) {
147
- // Core agent: bmad-agent-name
147
+ // Core agent: wizz-agent-name
148
148
  return {
149
149
  prefix: parts[0],
150
150
  module: 'core',
@@ -152,7 +152,7 @@ function parseDashName(filename) {
152
152
  name: parts[2],
153
153
  };
154
154
  } else {
155
- // Module agent: bmad-agent-module-name
155
+ // Module agent: wizz-agent-module-name
156
156
  return {
157
157
  prefix: parts[0],
158
158
  module: parts[2],
@@ -163,7 +163,7 @@ function parseDashName(filename) {
163
163
  }
164
164
 
165
165
  // Not an agent file - must be a workflow/tool/task
166
- // If only 2 parts (bmad-name), it's a core workflow/tool/task
166
+ // If only 2 parts (wizz-name), it's a core workflow/tool/task
167
167
  if (parts.length === 2) {
168
168
  return {
169
169
  prefix: parts[0],
@@ -173,7 +173,7 @@ function parseDashName(filename) {
173
173
  };
174
174
  }
175
175
 
176
- // Check for standalone non-agent: bmad-standalone-name
176
+ // Check for standalone non-agent: wizz-standalone-name
177
177
  if (parts[1] === 'standalone') {
178
178
  return {
179
179
  prefix: parts[0],
@@ -183,7 +183,7 @@ function parseDashName(filename) {
183
183
  };
184
184
  }
185
185
 
186
- // Otherwise, it's a module workflow/tool/task (bmad-module-name)
186
+ // Otherwise, it's a module workflow/tool/task (wizz-module-name)
187
187
  return {
188
188
  prefix: parts[0],
189
189
  module: parts[1],
@@ -194,11 +194,11 @@ function parseDashName(filename) {
194
194
 
195
195
  /**
196
196
  * Resolve the skill name for an artifact.
197
- * Prefers canonicalId from a bmad-skill-manifest.yaml sidecar when available,
197
+ * Prefers canonicalId from a wizz-skill-manifest.yaml sidecar when available,
198
198
  * falling back to the path-derived name from toDashPath().
199
199
  *
200
200
  * @param {Object} artifact - Artifact object (must have relativePath; may have canonicalId)
201
- * @returns {string} Filename like 'wizz-create-prd.md' or 'bmad-agent-bmm-pm.md'
201
+ * @returns {string} Filename like 'wizz-create-prd.md' or 'wizz-agent-bmm-pm.md'
202
202
  */
203
203
  function resolveSkillName(artifact) {
204
204
  if (artifact.canonicalId) {
@@ -215,5 +215,5 @@ module.exports = {
215
215
  isDashFormat,
216
216
  parseDashName,
217
217
  AGENT_SEGMENT,
218
- BMAD_FOLDER_NAME,
218
+ WIZZ_FOLDER_NAME,
219
219
  };
@@ -3,14 +3,14 @@ const fs = require('../../fs-native');
3
3
  const yaml = require('yaml');
4
4
 
5
5
  /**
6
- * Load bmad-skill-manifest.yaml from a directory.
6
+ * Load wizz-skill-manifest.yaml from a directory.
7
7
  * Single-entry manifests (canonicalId at top level) apply to all files in the directory.
8
8
  * Multi-entry manifests are keyed by source filename.
9
- * @param {string} dirPath - Directory to check for bmad-skill-manifest.yaml
9
+ * @param {string} dirPath - Directory to check for wizz-skill-manifest.yaml
10
10
  * @returns {Object|null} Parsed manifest or null
11
11
  */
12
12
  async function loadSkillManifest(dirPath) {
13
- const manifestPath = path.join(dirPath, 'bmad-skill-manifest.yaml');
13
+ const manifestPath = path.join(dirPath, 'wizz-skill-manifest.yaml');
14
14
  try {
15
15
  if (!(await fs.pathExists(manifestPath))) return null;
16
16
  const content = await fs.readFile(manifestPath, 'utf8');
@@ -19,7 +19,7 @@ async function loadSkillManifest(dirPath) {
19
19
  if (parsed.canonicalId || parsed.type) return { __single: parsed };
20
20
  return parsed;
21
21
  } catch (error) {
22
- console.warn(`Warning: Failed to parse bmad-skill-manifest.yaml in ${dirPath}: ${error.message}`);
22
+ console.warn(`Warning: Failed to parse wizz-skill-manifest.yaml in ${dirPath}: ${error.message}`);
23
23
  return null;
24
24
  }
25
25
  }
@@ -18,7 +18,7 @@ startMessage: |
18
18
  ⭐ SUPPORT THE PROJECT:
19
19
  Star us: https://github.com/wizzcomms/wizz-method/
20
20
 
21
- Built on BMAD Core (MIT) by BMad Code — https://github.com/bmad-code-org/BMAD-METHOD
21
+ Built on BMAD Core (MIT) by Wizz Code — https://github.com/bmad-code-org/WIZZ-METHOD
22
22
 
23
23
  Docs, and latest updates: https://method.wizzcomms.com/
24
24
 
@@ -21,7 +21,7 @@ async function readModuleCode(yamlPath) {
21
21
  /**
22
22
  * Discover module.yaml files for officials we can read locally:
23
23
  * - core, bmm: bundled in src/ (always present)
24
- * - external officials: only if previously cloned to ~/.bmad/cache/external-modules/
24
+ * - external officials: only if previously cloned to ~/.wizz/cache/external-modules/
25
25
  *
26
26
  * Each result's `code` is the `code:` field from the module.yaml when present;
27
27
  * that's the value `--set <module>.<key>=<value>` matches against.
@@ -77,7 +77,7 @@ async function discoverOfficialModuleYamls() {
77
77
  }
78
78
  }
79
79
 
80
- // External cache (~/.bmad/cache/external-modules/<code>/...).
80
+ // External cache (~/.wizz/cache/external-modules/<code>/...).
81
81
  const cacheRoot = getExternalModuleCachePath('').replace(/\/$/, '');
82
82
  if (await fs.pathExists(cacheRoot)) {
83
83
  const rawEntries = await fs.readdir(cacheRoot, { withFileTypes: true });
@@ -164,7 +164,7 @@ async function formatOptionsList(moduleCode) {
164
164
  '',
165
165
  'Built-in modules (core, bmm) are always available. External officials',
166
166
  'appear here after they have been installed at least once on this machine',
167
- '(they are cached under ~/.bmad/cache/external-modules/).',
167
+ '(they are cached under ~/.wizz/cache/external-modules/).',
168
168
  '',
169
169
  'For community or custom modules, read the module.yaml file in that',
170
170
  "module's source repository directly.",
@@ -7,7 +7,7 @@
7
7
  * We build the plan from:
8
8
  * 1. CLI flags (--channel / --all-* / --next=CODE / --pin CODE=TAG)
9
9
  * 2. Interactive answers (the "all stable?" gate + per-module picker)
10
- * 3. Registry defaults (default_channel from bmad-modules.yaml)
10
+ * 3. Registry defaults (default_channel from wizz-modules.yaml)
11
11
  * 4. Hardcoded fallback 'stable'
12
12
  *
13
13
  * Precedence: --pin > --next=CODE > --channel (global) > registry default > 'stable'.
@@ -17,7 +17,7 @@ const semver = require('semver');
17
17
 
18
18
  const GITHUB_API_BASE = 'https://api.github.com';
19
19
  const DEFAULT_TIMEOUT_MS = 10_000;
20
- const USER_AGENT = 'bmad-method-installer';
20
+ const USER_AGENT = 'wizz-method-installer';
21
21
 
22
22
  // Per-process cache: { 'owner/repo' => string[] sorted desc } of pure-semver tags.
23
23
  const tagCache = new Map();
@@ -354,7 +354,7 @@ class CustomModuleManager {
354
354
  * @returns {string} Path to the custom modules cache directory
355
355
  */
356
356
  getCacheDir() {
357
- return path.join(os.homedir(), '.bmad', 'cache', 'custom-modules');
357
+ return path.join(os.homedir(), '.wizz', 'cache', 'custom-modules');
358
358
  }
359
359
 
360
360
  /**
@@ -390,11 +390,11 @@ class CustomModuleManager {
390
390
  };
391
391
 
392
392
  // If an existing cache exists but was cloned at a different version, re-clone.
393
- // Tracked via .bmad-source.json's recorded version.
393
+ // Tracked via .wizz-source.json's recorded version.
394
394
  if (await fs.pathExists(repoCacheDir)) {
395
395
  let cachedVersion = null;
396
396
  try {
397
- const existing = await fs.readJson(path.join(repoCacheDir, '.bmad-source.json'));
397
+ const existing = await fs.readJson(path.join(repoCacheDir, '.wizz-source.json'));
398
398
  cachedVersion = existing?.version || null;
399
399
  } catch {
400
400
  // no metadata; treat as mismatched to be safe if a version was requested
@@ -511,7 +511,7 @@ class CustomModuleManager {
511
511
  } catch {
512
512
  // Fallback to previous marker value when symbolic ref is unavailable.
513
513
  try {
514
- const existingMarker = await fs.readJson(path.join(repoCacheDir, '.bmad-channel.json'));
514
+ const existingMarker = await fs.readJson(path.join(repoCacheDir, '.wizz-channel.json'));
515
515
  if (existingMarker?.channel === 'next' && typeof existingMarker.version === 'string' && existingMarker.version.trim()) {
516
516
  defaultRef = existingMarker.version.trim();
517
517
  }
@@ -522,7 +522,7 @@ class CustomModuleManager {
522
522
  }
523
523
 
524
524
  // Write source metadata for later URL reconstruction
525
- const metadataPath = path.join(repoCacheDir, '.bmad-source.json');
525
+ const metadataPath = path.join(repoCacheDir, '.wizz-source.json');
526
526
  await fs.writeJson(metadataPath, {
527
527
  cloneUrl: parsed.cloneUrl,
528
528
  cacheKey: parsed.cacheKey,
@@ -535,7 +535,7 @@ class CustomModuleManager {
535
535
  // Keep a channel marker in custom cache too so update paths that rely on
536
536
  // channel metadata (same as official-module cache) can treat this clone as
537
537
  // refreshable. URL + no explicit ref => next, explicit ref => pinned.
538
- await fs.writeJson(path.join(repoCacheDir, '.bmad-channel.json'), {
538
+ await fs.writeJson(path.join(repoCacheDir, '.wizz-channel.json'), {
539
539
  channel: effectiveVersion ? 'pinned' : 'next',
540
540
  version: effectiveVersion || defaultRef,
541
541
  sha: resolvedSha,
@@ -584,7 +584,7 @@ class CustomModuleManager {
584
584
  let cloneMetadata = null;
585
585
  if (sourceUrl) {
586
586
  try {
587
- cloneMetadata = await fs.readJson(path.join(repoPath, '.bmad-source.json'));
587
+ cloneMetadata = await fs.readJson(path.join(repoPath, '.wizz-source.json'));
588
588
  } catch {
589
589
  // no metadata — local-source or legacy cache
590
590
  }
@@ -708,7 +708,7 @@ class CustomModuleManager {
708
708
  // Quick-update path: refresh URL-backed cached repos before reading
709
709
  // files from them so re-deploy uses latest commits for `next` and
710
710
  // the pinned ref for `pinned`.
711
- if (options.bmadDir && metadata?.rawInput) {
711
+ if (options.wizzDir && metadata?.rawInput) {
712
712
  await this._refreshRepoCacheOnce(repoPath, metadata);
713
713
  }
714
714
 
@@ -766,7 +766,7 @@ class CustomModuleManager {
766
766
  * Refresh one cached repo at most once per process with in-flight dedupe.
767
767
  * Prevents concurrent quick-update callers from racing the same cache path.
768
768
  * @param {string} repoPath - Absolute cache repo path
769
- * @param {Object} metadata - Parsed .bmad-source.json metadata
769
+ * @param {Object} metadata - Parsed .wizz-source.json metadata
770
770
  */
771
771
  async _refreshRepoCacheOnce(repoPath, metadata) {
772
772
  if (CustomModuleManager._refreshedRepoPaths.has(repoPath)) return;
@@ -806,7 +806,7 @@ class CustomModuleManager {
806
806
  * Used as fallback when the module was installed from a local source (no cache entry).
807
807
  * Returns the path only if it still exists on disk; never removes installed files.
808
808
  * @param {string} moduleCode - Module code to search for
809
- * @param {Object} [options] - Options (must include bmadDir or will search common locations)
809
+ * @param {Object} [options] - Options (must include wizzDir or will search common locations)
810
810
  * @returns {string|null} Path to the local module source or null
811
811
  */
812
812
  async _findLocalSourceFromManifest(moduleCode, options = {}) {
@@ -814,11 +814,11 @@ class CustomModuleManager {
814
814
  const { Manifest } = require('../core/manifest');
815
815
  const manifestObj = new Manifest();
816
816
 
817
- // Try to find bmadDir from options or common locations
818
- const bmadDir = options.bmadDir;
819
- if (!bmadDir) return null;
817
+ // Try to find wizzDir from options or common locations
818
+ const wizzDir = options.wizzDir;
819
+ if (!wizzDir) return null;
820
820
 
821
- const manifestData = await manifestObj.read(bmadDir);
821
+ const manifestData = await manifestObj.read(wizzDir);
822
822
  if (!manifestData?.modulesDetailed) return null;
823
823
 
824
824
  const moduleEntry = manifestData.modulesDetailed.find((m) => m.name === moduleCode);
@@ -837,7 +837,7 @@ class CustomModuleManager {
837
837
 
838
838
  /**
839
839
  * Recursively find repo root directories within the cache.
840
- * A repo root is identified by containing .bmad-source.json (new) or .claude-plugin/ (legacy).
840
+ * A repo root is identified by containing .wizz-source.json (new) or .claude-plugin/ (legacy).
841
841
  * Handles both 3-level (host/owner/repo) and legacy 2-level (owner/repo) cache layouts.
842
842
  * @param {string} dir - Directory to search
843
843
  * @param {number} [depth=0] - Current recursion depth
@@ -848,7 +848,7 @@ class CustomModuleManager {
848
848
  const results = [];
849
849
 
850
850
  // Check if this directory is a repo root
851
- const metadataPath = path.join(dir, '.bmad-source.json');
851
+ const metadataPath = path.join(dir, '.wizz-source.json');
852
852
  const claudePluginDir = path.join(dir, '.claude-plugin');
853
853
 
854
854
  if (await fs.pathExists(metadataPath)) {
@@ -19,7 +19,7 @@ function normalizeChannelName(raw) {
19
19
  /**
20
20
  * Conservative quoting for tag names passed to git commands. Tags are
21
21
  * user-typed (--pin) or come from the GitHub API. Only allow the semver
22
- * character class we use to tag BMad releases; anything else throws.
22
+ * character class we use to tag Wizz releases; anything else throws.
23
23
  */
24
24
  function quoteShell(ref) {
25
25
  if (typeof ref !== 'string' || !/^[\w.\-+/]+$/.test(ref)) {
@@ -46,7 +46,7 @@ async function writeChannelMarker(markerPath, data) {
46
46
  }
47
47
  }
48
48
 
49
- const REGISTRY_CONFIG_PATH = path.join(getProjectRoot(), 'bmad-modules.yaml');
49
+ const REGISTRY_CONFIG_PATH = path.join(getProjectRoot(), 'wizz-modules.yaml');
50
50
 
51
51
  /**
52
52
  * Manages official modules from the bundled registry file. The remote
@@ -109,7 +109,7 @@ class ExternalModuleManager {
109
109
  name: mod.display_name || mod.name,
110
110
  description: mod.description || '',
111
111
  defaultSelected: mod.default_selected === true || mod.defaultSelected === true,
112
- type: mod.type || 'bmad-org',
112
+ type: mod.type || 'wizz-org',
113
113
  npmPackage: mod.npm_package || mod.npmPackage || null,
114
114
  pluginName: mod.plugin_name || mod.pluginName || null,
115
115
  defaultChannel: normalizeChannelName(mod.default_channel || mod.defaultChannel) || 'stable',
@@ -153,7 +153,7 @@ class ExternalModuleManager {
153
153
  * @returns {string} Path to the external modules cache directory
154
154
  */
155
155
  getExternalCacheDir() {
156
- const cacheDir = path.join(os.homedir(), '.bmad', 'cache', 'external-modules');
156
+ const cacheDir = path.join(os.homedir(), '.wizz', 'cache', 'external-modules');
157
157
  return cacheDir;
158
158
  }
159
159
 
@@ -255,7 +255,7 @@ class ExternalModuleManager {
255
255
  // updates" and re-use the cached version silently — that's the right
256
256
  // call for an update/quick-update, since the semantics don't change
257
257
  // and the user isn't worse off than before they ran this command.
258
- const cachedMarker = await readChannelMarker(path.join(moduleCacheDir, '.bmad-channel.json'));
258
+ const cachedMarker = await readChannelMarker(path.join(moduleCacheDir, '.wizz-channel.json'));
259
259
  if (cachedMarker?.channel && (await fs.pathExists(moduleCacheDir))) {
260
260
  if (!silent) {
261
261
  await prompts.log.warn(
@@ -309,7 +309,7 @@ class ExternalModuleManager {
309
309
  }
310
310
 
311
311
  // ─── Clone or update cache by resolved channel ────────────────────────
312
- const markerPath = path.join(moduleCacheDir, '.bmad-channel.json');
312
+ const markerPath = path.join(moduleCacheDir, '.wizz-channel.json');
313
313
  const currentMarker = await readChannelMarker(markerPath);
314
314
  const needsChannelReset = currentMarker && currentMarker.channel !== resolved.channel;
315
315