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
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: wizz-party-mode
3
- description: 'Orchestrates lively group discussions between installed BMAD agents or custom personas, and helps author custom parties. Use when the user requests party mode, a roundtable, or multiple agent perspectives — or wants to create/configure a party, define personas, or build an AI focus-group panel.'
3
+ description: 'Orchestrates lively group discussions between installed WIZZ agents or custom personas, and helps author custom parties. Use when the user requests party mode, a roundtable, or multiple agent perspectives — or wants to create/configure a party, define personas, or build an AI focus-group panel.'
4
4
  ---
5
5
 
6
6
  # Party Mode
7
7
 
8
- Run a round-table where BMAD agents talk to each other, and to the user, like a real group of distinct people in conversation. Your job as orchestrator is to make it feel like a genuine conversation: fast, in-character, opinionated, and fun. Everything below is an objective, not a script. Use whatever mechanism your model and harness make available to hit it.
8
+ Run a round-table where WIZZ agents talk to each other, and to the user, like a real group of distinct people in conversation. Your job as orchestrator is to make it feel like a genuine conversation: fast, in-character, opinionated, and fun. Everything below is an objective, not a script. Use whatever mechanism your model and harness make available to hit it.
9
9
 
10
10
  **Two intents.** Usually the user wants to *run* a party — that's everything below. If instead they want to *create or configure* one — invent a cast, add a persona, distill customer data into a focus-group panel, set a default, or **edit an existing custom party** (retune a member, add someone to a group) — load `references/create-party.md` and follow it. Detect which from how they invoke the skill; when it's unclear, ask. Neither intent has a headless contract: running a party is the live conversation itself, and the authoring path's only write goes through `wizz-customize`, which gates it.
11
11
 
@@ -49,6 +49,8 @@ Use `{workflow.party_mode}` for the session unless the user passed `--mode <sess
49
49
 
50
50
  **Voicing the room** (every mode presents this way). Pick 2–3 personas whose perspective fits the moment and let them talk directly, in character; vary who shows up round to round so it isn't the same voices every time. Each turn opens with `{icon} **{name}:**`, and turns run back to back so it reads as one exchange. Don't summarize, blend, or narrate what a persona "would" say — let them say it.
51
51
 
52
+ **Concise output (this user's default).** The analysis behind the scenes stays as deep as ever — agents think, clash, and reason in full internally. But what you *surface* to the user is tight: short turns, no walls of text, no replaying the whole internal debate. Show the conclusions and the points of disagreement in a compact form (bullets or a quick comparison when there's a trade-off), not every back-and-forth that produced them. If a round generated a long internal exchange, surface a brief read — who landed where, where they clashed — and offer "want the full back-and-forth?" rather than dumping it. When the conversation reaches a point that needs the user's decision or action, present it as a compact, comparative, bulleted block (the options, the trade-off, the recommendation) — never bury the ask inside prose.
53
+
52
54
  ## Make It Feel Like One Conversation
53
55
 
54
56
  Present one exchange, not a row of answers aimed at the user. The hard rule: never change what an agent argued — add staging and connective tissue, but don't invent positions, soften a stance, or put words in a persona's mouth. Weave delivery, preserve substance; it still reads like that specific character, quirks and speech patterns and all.
@@ -74,4 +76,4 @@ It is your goal to keep party mode feeling like a party, a good party. fun, enga
74
76
 
75
77
  ## Wrapping Up
76
78
 
77
- When the user signals they're done, give a quick read-back of the best takeaways and offer them a keepsake: a single self-contained HTML document of the session to keep. If they want it, make it genuinely nice rather than a transcript dump — lay the conversation out by persona (their icons, names, voice), and reach for inline SVG and light animation where it lifts the piece. Write it as a standalone `.html` into `{workflow.output_dir}/` (a `{date}`-stamped, topic-named file), or wherever they ask. Then run `{workflow.on_complete}` if non-empty (a string scalar is one instruction, an array is a sequence run in order) and drop back to normal mode. Read the room; don't wait for a magic word.
79
+ When the user signals they're done, give a quick read-back of the best takeaways — compact and in bullets, comparative where it helps, easy to skim — and offer them a keepsake: a single self-contained HTML document of the session to keep. If they want it, make it genuinely nice rather than a transcript dump — lay the conversation out by persona (their icons, names, voice), and reach for inline SVG and light animation where it lifts the piece. Write it as a standalone `.html` into `{workflow.output_dir}/` (a `{date}`-stamped, topic-named file), or wherever they ask. Then run `{workflow.on_complete}` if non-empty (a string scalar is one instruction, an array is a sequence run in order) and drop back to normal mode. Read the room; don't wait for a magic word.
@@ -8,7 +8,7 @@
8
8
 
9
9
  [workflow]
10
10
 
11
- # --- Configurable below. Overrides merge per BMad structural rules: ---
11
+ # --- Configurable below. Overrides merge per Wizz structural rules: ---
12
12
  # scalars: override wins • plain arrays: append
13
13
  # arrays of tables keyed by `code`/`id`: matching key replaces, new keys append
14
14
 
@@ -28,7 +28,7 @@ persistent_facts = [
28
28
  ]
29
29
 
30
30
  # Which party loads when the user just says "party mode" with no override.
31
- # Empty = the installed BMAD agents — exactly the default behavior of a plain
31
+ # Empty = the installed WIZZ agents — exactly the default behavior of a plain
32
32
  # install. Custom members defined below join the POOL (usable in groups, and
33
33
  # summonable by name) but do NOT crowd this default room. Set this to a
34
34
  # `party_groups` id to pin a curated room as the default instead. A runtime
@@ -4,7 +4,7 @@
4
4
  # ///
5
5
  """Resolve the party-mode roster, lazily.
6
6
 
7
- Merges the installed BMAD agents with the user's custom `party_members`
7
+ Merges the installed WIZZ agents with the user's custom `party_members`
8
8
  into one collective, then projects only what the moment needs:
9
9
 
10
10
  * default (no flag) — the active roster to load on entry: the
@@ -85,7 +85,7 @@ def load_workflow(project_root: Path, skill_root: Path):
85
85
 
86
86
  def _alias(code: str) -> str:
87
87
  """Short alias for an installed agent code: wizz-agent-analyst -> analyst."""
88
- for prefix in ("bmad-agent-", "bmad-"):
88
+ for prefix in ("wizz-agent-", "wizz-"):
89
89
  if code.startswith(prefix):
90
90
  return code[len(prefix):]
91
91
  return code
@@ -20,7 +20,7 @@ AGENTS = {
20
20
  class TestAlias(unittest.TestCase):
21
21
  def test_strips_known_prefixes(self):
22
22
  self.assertEqual(rp._alias("wizz-agent-analyst"), "analyst")
23
- self.assertEqual(rp._alias("bmad-foo"), "foo")
23
+ self.assertEqual(rp._alias("wizz-foo"), "foo")
24
24
 
25
25
  def test_passes_through_unprefixed(self):
26
26
  self.assertEqual(rp._alias("morpheus"), "morpheus")
@@ -3,10 +3,10 @@ name: wizz-spec
3
3
  description: Distill any intent input into the SPEC kernel + companions — the canonical, preservation-validated machine contract for downstream work. Use when the user says "create a spec", "distill this into a spec", "validate this spec", or "update the spec".
4
4
  ---
5
5
 
6
- # BMad Spec
6
+ # Wizz Spec
7
7
  ## Overview
8
8
 
9
- Canonical transformer for the BMad spec-kernel ecosystem. Takes any intent input — vague idea, brain dump, PRD, GDD, RFC, brief, Slack thread, customer email, meeting transcript, mockups, mixed multi-source — and produces **SPEC.md** carrying the five-field kernel (Why, Capabilities, Constraints, Non-goals, Success signal) plus companion files for load-bearing content that does not fit or would bloat the kernel with expansive line-item detail. Together they are the machine contract every downstream BMad skill consumes.
9
+ Canonical transformer for the Wizz spec-kernel ecosystem. Takes any intent input — vague idea, brain dump, PRD, GDD, RFC, brief, Slack thread, customer email, meeting transcript, mockups, mixed multi-source — and produces **SPEC.md** carrying the five-field kernel (Why, Capabilities, Constraints, Non-goals, Success signal) plus companion files for load-bearing content that does not fit or would bloat the kernel with expansive line-item detail. Together they are the machine contract every downstream Wizz skill consumes.
10
10
 
11
11
  Multiple skills may call to update the same spec over time.
12
12
 
@@ -65,7 +65,7 @@ Writes go through the shared script — `{project-root}/_wizz/scripts/memlog.py`
65
65
 
66
66
  Read the input and its ancillary linked materials. If there is no input, follow the no-input branch in **Workspace** (ask or block). If a prior `.memlog.md` exists at the target folder, read it — the operation becomes an update, and the memlog (not the rendered `SPEC.md`) is the authority on what was decided and on capability IDs. Preserve those IDs; new capabilities get the next unused `CAP-N`; never reuse retired IDs. Otherwise this is a create, and the first move is `memlog.py init`.
67
67
 
68
- When the input is structured and pre-sorted (a PRD with an addendum, a GDD, a brief produced by an upstream BMad skill), trust the authored separation: lift kernel-fitting content into SPEC.md, lift overflow into appropriately-named companions. When the input is mixed (a brain dump, a transcript, an RFC, a customer email), do the sorting yourself: walk each claim, apply the three-lens load-bearing test (Spec Law rule 7), and route to the kernel field or a companion.
68
+ When the input is structured and pre-sorted (a PRD with an addendum, a GDD, a brief produced by an upstream Wizz skill), trust the authored separation: lift kernel-fitting content into SPEC.md, lift overflow into appropriately-named companions. When the input is mixed (a brain dump, a transcript, an RFC, a customer email), do the sorting yourself: walk each claim, apply the three-lens load-bearing test (Spec Law rule 7), and route to the kernel field or a companion.
69
69
 
70
70
  Distill the input into the five-field kernel using `{workflow.spec_template}` as the skeleton. When input is rich, extract directly — no elicitation. When input is sparse, choose: **express** (best-effort distill, every gap becomes an `open_questions[]` entry) or **guided** (walk the five fields with the user one at a time). Headless defaults to express and logs the choice. Interactive asks.
71
71
 
@@ -8,7 +8,7 @@
8
8
 
9
9
  [workflow]
10
10
 
11
- # --- Configurable below. Overrides merge per BMad structural rules: ---
11
+ # --- Configurable below. Overrides merge per Wizz structural rules: ---
12
12
  # scalars: override wins • arrays: append
13
13
 
14
14
  # Steps to run before the standard activation (config load, greet).
@@ -40,7 +40,7 @@ spec_filename = "SPEC.md"
40
40
 
41
41
  # Output path for spec folders. Lands directly under {output_folder}
42
42
  # so wizz-spec works in core-only installs and matches the
43
- # long-term BMad direction of grouping artifacts as siblings under
43
+ # long-term Wizz direction of grouping artifacts as siblings under
44
44
  # {output_folder}/<type>/ rather than nested inside planning vs
45
45
  # implementation folders.
46
46
  spec_output_path = "{output_folder}/specs"
@@ -1,12 +1,12 @@
1
1
  # Módulo Wizz — método de agência em PT-BR
2
2
 
3
- Personalização do BMAD para a Wizz: linguagem fácil e resumida, cada agente termina com **✅ o que fiz / ➡️ próximo passo / 🎯 comando**, e o roteamento (`/wizz-router`) está dissolvido nos menus dos agentes, ligando-os às ~80 skills globais.
3
+ Personalização do WIZZ para a Wizz: linguagem fácil e resumida, cada agente termina com **✅ o que fiz / ➡️ próximo passo / 🎯 comando**, e o roteamento (`/wizz-router`) está dissolvido nos menus dos agentes, ligando-os às ~80 skills globais.
4
4
 
5
5
  ## Agentes
6
6
 
7
7
  | Agente | Ícone | Faz | Rota para (skills globais) |
8
8
  |---|---|---|---|
9
- | `wizz-maestro` | 🧭 | Lê o pedido e despacha o agente certo (router dissolvido) | todos os agentes wizz/bmad |
9
+ | `wizz-maestro` | 🧭 | Lê o pedido e despacha o agente certo (router dissolvido) | todos os agentes wizz/wizz |
10
10
  | `wizz-designer` | 🎨 | Design visual, landing, motion, 3D | premium-landing-ui-researcher, ui-ux-pro-max, motion-3d-director, taste-skill, ui-component-curator |
11
11
  | `wizz-copy` | ✍️ | Copy, e-mail, headlines | copywriting, email-sequence, humanizer, copy-editing |
12
12
  | `wizz-seo` | 🔍 | SEO tradicional e de IA | seo-audit, ai-seo, schema-markup, programmatic-seo, site-architecture |
@@ -14,7 +14,7 @@ Personalização do BMAD para a Wizz: linguagem fácil e resumida, cada agente t
14
14
  | `wizz-ads` | 📢 | Mídia paga | paid-ads, ad-creative, analytics-tracking, MCP meta-ads |
15
15
  | `wizz-memoria` | 🧠 | Memória do projeto | cerebro |
16
16
 
17
- Os papéis de dev/produto reusam os agentes BMAD (Mary, John, Winston, Amelia, Sally, Paige), personalizados em PT-BR pelos overrides em `overrides/`.
17
+ Os papéis de dev/produto reusam os agentes WIZZ (Mary, John, Winston, Amelia, Sally, Paige), personalizados em PT-BR pelos overrides em `overrides/`.
18
18
 
19
19
  ## Camada Wizz (em todos os agentes)
20
20
 
@@ -26,8 +26,8 @@ Os papéis de dev/produto reusam os agentes BMAD (Mary, John, Winston, Amelia, S
26
26
 
27
27
  ## Instalação
28
28
 
29
- 1. Instale o BMAD no projeto (o módulo `wizz` aparece como bundled em `src/modules/wizz`).
30
- 2. Rode a personalização Wizz (escolha do idioma + overrides dos agentes BMAD):
29
+ 1. Instale o WIZZ no projeto (o módulo `wizz` aparece como bundled em `src/modules/wizz`).
30
+ 2. Rode a personalização Wizz (escolha do idioma + overrides dos agentes WIZZ):
31
31
  ```bash
32
32
  node <caminho-do-wizz-method>/src/modules/wizz/scripts/wizz-init.mjs .
33
33
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-ads
3
- description: Agente de Mídia Paga do Wizz Method. Use para campanhas de anúncios (Google, Meta, TikTok, LinkedIn), criativos de anúncio e tracking. Roteia para paid-ads, ad-creative e analytics-tracking, e usa o MCP meta-ads para gestão real no Meta.
3
+ description: Wizz Method Paid Media Agent. Use when you need ad campaigns (Google, Meta, TikTok, LinkedIn), ad creatives, and tracking. Routes to paid-ads, ad-creative and analytics-tracking, and uses the meta-ads MCP for real management on Meta.
4
4
  ---
5
5
 
6
6
  # Ads — Mídia Paga
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-copy
3
- description: Copywriter do Wizz Method. Use para copy de venda, headlines, textos de página, e-mails e sequências. Roteia para as skills globais copywriting, email-sequence, humanizer e copy-editing.
3
+ description: Wizz Method Copywriter. Use when you need sales copy, headlines, page copy, emails, and sequences. Routes to global skills copywriting, email-sequence, humanizer, and copy-editing.
4
4
  ---
5
5
 
6
6
  # Copy — Copywriter
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-designer
3
- description: Designer de produto e UI do Wizz Method. Use para criar interfaces, landing pages, design system, motion e 3D. Roteia para as skills globais de design (premium-landing-ui-researcher, ui-ux-pro-max, motion-3d-director, taste-skill).
3
+ description: Wizz Method Product and UI Designer. Use when you need to create interfaces, landing pages, design systems, motion, and 3D. Routes to global design skills (premium-landing-ui-researcher, ui-ux-pro-max, motion-3d-director, taste-skill).
4
4
  ---
5
5
 
6
6
  # Designer — Design de Produto e UI
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-growth
3
- description: Agente de Growth e Conversão do Wizz Method. Use para ideias de marketing, CRO, otimização de página, lançamento de produto, preço e retenção/churn. Roteia para marketing-ideas, page-cro, launch-strategy, pricing-strategy e churn-prevention.
3
+ description: Wizz Method Growth and Conversion Agent. Use when you need marketing ideas, CRO, page optimization, product launching, pricing, and retention/churn prevention. Routes to marketing-ideas, page-cro, launch-strategy, pricing-strategy, and churn-prevention.
4
4
  ---
5
5
 
6
6
  # Growth — Growth e Conversão
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-maestro
3
- description: Orquestrador do Wizz Method. Use quando o pedido não é trivial e você não sabe qual agente chamar. o pedido, descobre a área e despacha o agente certo. É o router dissolvido substitui o /wizz-router dentro do método.
3
+ description: Wizz Method Orchestrator. Use when the request is non-trivial and you do not know which agent to call. It reads the request, discovers the area, and dispatches the right agent. It is the dissolved router — replacing /wizz-router inside the method.
4
4
  ---
5
5
 
6
6
  # Maestro — Orquestrador do Wizz Method
@@ -51,7 +51,7 @@ Se o usuário já disse a intenção, **classifique e despache direto** o agente
51
51
 
52
52
  Classifique o pedido e chame o agente correspondente. Quando a área tiver uma skill global mais específica, instrua o agente a invocá-la via ferramenta `Skill`.
53
53
 
54
- A coluna "Skill do agente" é o nome real a invocar via a ferramenta `Skill`. Os papéis de dev/produto reusam os agentes BMAD (personalizados pelos overrides Wizz); os de agência são os novos `wizz-*`.
54
+ A coluna "Skill do agente" é o nome real a invocar via a ferramenta `Skill`. Os papéis de dev/produto reusam os agentes WIZZ (personalizados pelos overrides Wizz); os de agência são os novos `wizz-*`.
55
55
 
56
56
  | Pedido fala sobre… | Apelido | Skill do agente | Skills globais que ele usa |
57
57
  |---|---|---|---|
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-memoria
3
- description: Cérebro do projeto no Wizz Method. Use para recuperar o que foi decidido, salvar decisões/aprendizados e ver o estado do projeto. Roteia para a skill global cerebro (/ver, /salvar, /decisao, /dump).
3
+ description: Wizz Method Project Brain. Use when you need to retrieve what has already been decided, save decisions/learnings, and view the project state. Routes to the global skill cerebro (/view, /save, /decision, /dump).
4
4
  ---
5
5
 
6
6
  # Memória — Cérebro do Projeto
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-qa
3
- description: QA do Wizz Method. Use depois que o código está pronto, para verificar de fora: rodar testes, gerar testes E2E, revisão adversarial caçando bugs e conferir se atende o que foi pedido. Roteia para e2e-runner, adversarial-reviewer, wizz-qa-generate-e2e-tests e code-reviewer.
3
+ description: Wizz Method QA. Use when the code is ready, to verify it from the outside (run tests, generate E2E tests, adversarial review hunting bugs, and check if it meets what was requested). Routes to e2e-runner, adversarial-reviewer, wizz-qa-generate-e2e-tests, and code-reviewer.
4
4
  ---
5
5
 
6
6
  # QA — Garantia de Qualidade
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-seo
3
- description: Especialista de SEO do Wizz Method. Use para auditoria de SEO, otimização para busca e para IA (AI search), schema markup e SEO programático. Roteia para seo-audit, ai-seo, schema-markup, programmatic-seo e site-architecture.
3
+ description: Wizz Method SEO Specialist. Use when you need SEO auditing, search optimization, AI search optimization, schema markup, and programmatic SEO. Routes to seo-audit, ai-seo, schema-markup, programmatic-seo, and site-architecture.
4
4
  ---
5
5
 
6
6
  # SEO — Especialista de SEO
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD Mary (Business Analyst).
1
+ # Override Wizz (escopo time) para o agente WIZZ Mary (Business Analyst).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-analyst.toml
4
4
  # Seu .user.toml pessoal ainda vence por cima deste.
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD Winston (System Architect).
1
+ # Override Wizz (escopo time) para o agente WIZZ Winston (System Architect).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-architect.toml
4
4
 
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD Amelia (Senior Software Engineer).
1
+ # Override Wizz (escopo time) para o agente WIZZ Amelia (Senior Software Engineer).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-dev.toml
4
4
 
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD John (Product Manager).
1
+ # Override Wizz (escopo time) para o agente WIZZ John (Product Manager).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-pm.toml
4
4
 
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD Paige (Technical Writer).
1
+ # Override Wizz (escopo time) para o agente WIZZ Paige (Technical Writer).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-tech-writer.toml
4
4
 
@@ -1,4 +1,4 @@
1
- # Override Wizz (escopo time) para o agente BMAD Sally (UX Designer).
1
+ # Override Wizz (escopo time) para o agente WIZZ Sally (UX Designer).
2
2
  # Mescla por cima da base: principles e activation_steps fazem APPEND.
3
3
  # Instalado em {project-root}/_wizz/custom/wizz-agent-ux-designer.toml
4
4
  # Obs: Sally cuida do UX dentro do fluxo de PRD (wireframe, fluxo). Para
@@ -1,10 +1,10 @@
1
- // wizz-init — aplica a personalização Wizz num projeto que já tem o BMAD instalado.
1
+ // wizz-init — aplica a personalização Wizz num projeto que já tem o WIZZ instalado.
2
2
  //
3
3
  // O que faz (idempotente, seguro de rodar de novo):
4
4
  // 1. Pergunta o idioma e o seta em _wizz/bmm/config.yaml (communication_language
5
5
  // e document_output_language).
6
6
  // 2. Copia os overrides Wizz (overrides/*.toml) para _wizz/custom/, dando aos
7
- // agentes BMAD o tom fácil + protocolo de encerramento.
7
+ // agentes WIZZ o tom fácil + protocolo de encerramento.
8
8
  //
9
9
  // Uso:
10
10
  // node src/modules/wizz/scripts/wizz-init.mjs [caminho-do-projeto] [--lang "<idioma>"]
@@ -116,17 +116,17 @@ function projectArg(argv) {
116
116
 
117
117
  async function main() {
118
118
  const projectRoot = path.resolve(projectArg(process.argv.slice(2)) || process.cwd());
119
- const bmadDir = path.join(projectRoot, '_wizz');
119
+ const wizzDir = path.join(projectRoot, '_wizz');
120
120
 
121
- if (!(await exists(bmadDir))) {
122
- throw new Error(`Não achei _wizz/ em ${projectRoot}. Rode o instalador do BMAD primeiro.`);
121
+ if (!(await exists(wizzDir))) {
122
+ throw new Error(`Não achei _wizz/ em ${projectRoot}. Rode o instalador do WIZZ primeiro.`);
123
123
  }
124
124
 
125
125
  const done = [];
126
126
 
127
127
  // 1) Idioma escolhido no config do bmm.
128
128
  const { lang, source } = await pickLanguage(process.argv.slice(2));
129
- const bmmConfig = path.join(bmadDir, 'bmm', 'config.yaml');
129
+ const bmmConfig = path.join(wizzDir, 'bmm', 'config.yaml');
130
130
  if (await exists(bmmConfig)) {
131
131
  let content = await readFile(bmmConfig, 'utf8');
132
132
  content = upsertYamlKey(content, 'communication_language', lang);
@@ -138,7 +138,7 @@ async function main() {
138
138
  }
139
139
 
140
140
  // 2) Copia overrides Wizz para _wizz/custom/.
141
- const customDir = path.join(bmadDir, 'custom');
141
+ const customDir = path.join(wizzDir, 'custom');
142
142
  await mkdir(customDir, { recursive: true });
143
143
  if (await exists(overridesDir)) {
144
144
  const entries = await readdir(overridesDir);
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Resolve BMad's central config using four-layer TOML merge.
3
+ Resolve Wizz's central config using four-layer TOML merge.
4
4
 
5
5
  Reads from four layers (highest priority last):
6
6
  1. {project-root}/_wizz/config.toml (installer-owned team)
@@ -136,7 +136,7 @@ def extract_key(data, dotted_key: str):
136
136
 
137
137
  def main():
138
138
  parser = argparse.ArgumentParser(
139
- description="Resolve BMad central config using four-layer TOML merge.",
139
+ description="Resolve Wizz central config using four-layer TOML merge.",
140
140
  )
141
141
  parser.add_argument(
142
142
  "--project-root", "-p", required=True,
@@ -149,12 +149,12 @@ def main():
149
149
  args = parser.parse_args()
150
150
 
151
151
  project_root = Path(args.project_root).resolve()
152
- bmad_dir = project_root / "_wizz"
152
+ wizz_dir = project_root / "_wizz"
153
153
 
154
- base_team = load_toml(bmad_dir / "config.toml", required=True)
155
- base_user = load_toml(bmad_dir / "config.user.toml")
156
- custom_team = load_toml(bmad_dir / "custom" / "config.toml")
157
- custom_user = load_toml(bmad_dir / "custom" / "config.user.toml")
154
+ base_team = load_toml(wizz_dir / "config.toml", required=True)
155
+ base_user = load_toml(wizz_dir / "config.user.toml")
156
+ custom_team = load_toml(wizz_dir / "custom" / "config.toml")
157
+ custom_user = load_toml(wizz_dir / "custom" / "config.user.toml")
158
158
 
159
159
  merged = deep_merge(base_team, base_user)
160
160
  merged = deep_merge(merged, custom_team)
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Resolve customization for a BMad skill using three-layer TOML merge.
3
+ Resolve customization for a Wizz skill using three-layer TOML merge.
4
4
 
5
5
  Reads customization from three layers (highest priority first):
6
6
  1. {project-root}/_wizz/custom/{name}.user.toml (personal, gitignored)
@@ -187,7 +187,7 @@ def write_json_stdout(output):
187
187
 
188
188
  def main():
189
189
  parser = argparse.ArgumentParser(
190
- description="Resolve customization for a BMad skill using three-layer TOML merge.",
190
+ description="Resolve customization for a Wizz skill using three-layer TOML merge.",
191
191
  add_help=True,
192
192
  )
193
193
  parser.add_argument(
@@ -246,7 +246,7 @@ def test_set_preserves_body(ws):
246
246
 
247
247
  def test_updated_stays_last(ws):
248
248
  init(ws)
249
- memlog.main(["set", "--workspace", ws, "--key", "owner", "--value", "BMad"])
249
+ memlog.main(["set", "--workspace", ws, "--key", "owner", "--value", "Wizz"])
250
250
  meta = memlog.split(read(ws))[0]
251
251
  assert list(meta)[-1] == "updated"
252
252
 
@@ -109,7 +109,7 @@ function main() {
109
109
  console.log('\nNext step — create or update the GitHub Release:\n');
110
110
  console.log(` gh release create ${releaseTag} dist/web-bundles/*.zip \\`);
111
111
  console.log(` --title "${releaseTag}" \\`);
112
- console.log(` --notes "BMad web bundles for Gemini Gems and ChatGPT Custom GPTs. See https://bmadcode.com/web-bundles/"\n`);
112
+ console.log(` --notes "Wizz web bundles for Gemini Gems and ChatGPT Custom GPTs. See https://bmadcode.com/web-bundles/"\n`);
113
113
  console.log('Or, to refresh an existing release:\n');
114
114
  console.log(` gh release upload ${releaseTag} dist/web-bundles/*.zip --clobber\n`);
115
115
  }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * BMAD Workflow Markdown Formatter
2
+ * WIZZ Workflow Markdown Formatter
3
3
  *
4
4
  * Formats mixed markdown + XML workflow instruction files with:
5
5
  * - 2-space XML indentation
@@ -195,7 +195,7 @@ function main() {
195
195
 
196
196
  if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
197
197
  console.log(`
198
- BMAD Workflow Markdown Formatter
198
+ WIZZ Workflow Markdown Formatter
199
199
 
200
200
  Usage:
201
201
  node format-workflow-md.js <file-pattern> [options]
@@ -80,7 +80,7 @@ module.exports = {
80
80
 
81
81
  // Set debug flag as environment variable for all components
82
82
  if (options.debug) {
83
- process.env.BMAD_DEBUG_MANIFEST = 'true';
83
+ process.env.WIZZ_DEBUG_MANIFEST = 'true';
84
84
  await prompts.log.info('Debug mode enabled');
85
85
  }
86
86
 
@@ -14,22 +14,22 @@ module.exports = {
14
14
  options: [],
15
15
  action: async (options) => {
16
16
  try {
17
- // Find the bmad directory
17
+ // Find the wizz directory
18
18
  const projectDir = process.cwd();
19
- const { bmadDir } = await installer.findBmadDir(projectDir);
19
+ const { wizzDir } = await installer.findWizzDir(projectDir);
20
20
 
21
- // Check if bmad directory exists
21
+ // Check if wizz directory exists
22
22
  const fs = require('../fs-native');
23
- if (!(await fs.pathExists(bmadDir))) {
23
+ if (!(await fs.pathExists(wizzDir))) {
24
24
  await prompts.log.warn('No Wizz installation found in the current directory.');
25
- await prompts.log.message(`Expected location: ${bmadDir}`);
25
+ await prompts.log.message(`Expected location: ${wizzDir}`);
26
26
  await prompts.log.message('Run "wizz install" to set up a new installation.');
27
27
  process.exit(0);
28
28
  return;
29
29
  }
30
30
 
31
31
  // Read manifest
32
- const manifestData = await manifest._readRaw(bmadDir);
32
+ const manifestData = await manifest._readRaw(wizzDir);
33
33
 
34
34
  if (!manifestData) {
35
35
  await prompts.log.warn('No Wizz installation manifest found.');
@@ -43,20 +43,20 @@ module.exports = {
43
43
  const modules = manifestData.modules || [];
44
44
 
45
45
  // Check for available updates (only for external modules)
46
- const availableUpdates = await manifest.checkForUpdates(bmadDir);
46
+ const availableUpdates = await manifest.checkForUpdates(wizzDir);
47
47
 
48
48
  // Display status
49
49
  await ui.displayStatus({
50
50
  installation,
51
51
  modules,
52
52
  availableUpdates,
53
- bmadDir,
53
+ wizzDir,
54
54
  });
55
55
 
56
56
  process.exit(0);
57
57
  } catch (error) {
58
58
  await prompts.log.error(`Status check failed: ${error.message}`);
59
- if (process.env.BMAD_DEBUG) {
59
+ if (process.env.WIZZ_DEBUG) {
60
60
  await prompts.log.message(error.stack);
61
61
  }
62
62
  process.exit(1);
@@ -54,9 +54,9 @@ module.exports = {
54
54
  process.exit(1);
55
55
  }
56
56
 
57
- const { bmadDir } = await installer.findBmadDir(projectDir);
57
+ const { wizzDir } = await installer.findWizzDir(projectDir);
58
58
 
59
- if (!(await fs.pathExists(bmadDir))) {
59
+ if (!(await fs.pathExists(wizzDir))) {
60
60
  await prompts.log.warn('No Wizz installation found.');
61
61
  process.exit(0);
62
62
  }
@@ -82,7 +82,7 @@ module.exports = {
82
82
  options: [
83
83
  {
84
84
  value: 'modules',
85
- label: `Wizz Modules & data (${installer.bmadFolderName}/)`,
85
+ label: `Wizz Modules & data (${installer.wizzFolderName}/)`,
86
86
  hint: 'Core installation, agents, workflows, config',
87
87
  },
88
88
  { value: 'ide', label: 'IDE integrations', hint: ides || 'No IDEs configured' },
@@ -133,10 +133,10 @@ module.exports = {
133
133
  s.stop('User artifacts removed');
134
134
  }
135
135
 
136
- // Phase 3: BMAD modules & data (last — other phases may need _wizz/)
136
+ // Phase 3: WIZZ modules & data (last — other phases may need _wizz/)
137
137
  if (removeModules) {
138
138
  const s = await prompts.spinner();
139
- s.start(`Removing Wizz modules & data (${installer.bmadFolderName}/)...`);
139
+ s.start(`Removing Wizz modules & data (${installer.wizzFolderName}/)...`);
140
140
  await installer.uninstallModules(projectDir);
141
141
  s.stop('Modules & data removed');
142
142
  }
@@ -4,7 +4,7 @@ const yaml = require('yaml');
4
4
  const { Manifest } = require('./manifest');
5
5
 
6
6
  /**
7
- * Immutable snapshot of an existing BMAD installation.
7
+ * Immutable snapshot of an existing WIZZ installation.
8
8
  * Pure query object — no filesystem operations after construction.
9
9
  */
10
10
  class ExistingInstall {
@@ -38,12 +38,12 @@ class ExistingInstall {
38
38
  }
39
39
 
40
40
  /**
41
- * Scan a bmad directory and return an immutable snapshot of what's installed.
42
- * @param {string} bmadDir - Path to bmad directory
41
+ * Scan a wizz directory and return an immutable snapshot of what's installed.
42
+ * @param {string} wizzDir - Path to wizz directory
43
43
  * @returns {Promise<ExistingInstall>}
44
44
  */
45
- static async detect(bmadDir) {
46
- if (!(await fs.pathExists(bmadDir))) {
45
+ static async detect(wizzDir) {
46
+ if (!(await fs.pathExists(wizzDir))) {
47
47
  return ExistingInstall.empty();
48
48
  }
49
49
 
@@ -53,7 +53,7 @@ class ExistingInstall {
53
53
  let ides = [];
54
54
 
55
55
  const manifest = new Manifest();
56
- const manifestData = await manifest.read(bmadDir);
56
+ const manifestData = await manifest.read(wizzDir);
57
57
  if (manifestData) {
58
58
  version = manifestData.version;
59
59
  if (manifestData.ides) {
@@ -61,7 +61,7 @@ class ExistingInstall {
61
61
  }
62
62
  }
63
63
 
64
- const corePath = path.join(bmadDir, 'core');
64
+ const corePath = path.join(wizzDir, 'core');
65
65
  if (await fs.pathExists(corePath)) {
66
66
  hasCore = true;
67
67
 
@@ -83,7 +83,7 @@ class ExistingInstall {
83
83
 
84
84
  if (manifestData && manifestData.modules && manifestData.modules.length > 0) {
85
85
  for (const moduleId of manifestData.modules) {
86
- const modulePath = path.join(bmadDir, moduleId);
86
+ const modulePath = path.join(wizzDir, moduleId);
87
87
  const moduleConfigPath = path.join(modulePath, 'config.yaml');
88
88
 
89
89
  const moduleInfo = {