wizz-method 1.0.2 → 1.1.0

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 (833) 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 +11 -9
  61. package/removals.txt +46 -46
  62. package/skills-registry.yaml +318 -0
  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/SKILL.md +7 -0
  105. package/src/bmm-skills/4-implementation/wizz-quick-dev/customize.toml +1 -1
  106. package/src/bmm-skills/4-implementation/wizz-quick-dev/step-01-clarify-and-route.md +1 -1
  107. package/src/bmm-skills/4-implementation/wizz-retrospective/customize.toml +1 -1
  108. package/src/bmm-skills/4-implementation/wizz-sprint-planning/customize.toml +1 -1
  109. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
  110. package/src/bmm-skills/4-implementation/wizz-sprint-status/customize.toml +1 -1
  111. package/src/bmm-skills/module-help.csv +32 -32
  112. package/src/bmm-skills/module.yaml +1 -1
  113. package/src/core-skills/module-help.csv +3 -3
  114. package/src/core-skills/module.yaml +4 -4
  115. package/src/core-skills/wizz-brainstorming/SKILL.md +1 -1
  116. package/src/core-skills/wizz-brainstorming/analysis/catalog-analysis.md +4 -4
  117. package/src/core-skills/wizz-brainstorming/assets/brain-selector.html +5 -5
  118. package/src/core-skills/wizz-brainstorming/customize.toml +1 -1
  119. package/src/core-skills/wizz-brainstorming/references/finalize.md +1 -1
  120. package/src/core-skills/wizz-brainstorming/scripts/brain.py +5 -5
  121. package/src/core-skills/wizz-brainstorming/scripts/tests/test_brain.py +1 -1
  122. package/src/core-skills/wizz-brainstorming/scripts/tests/test_memlog.py +3 -3
  123. package/src/core-skills/wizz-customize/SKILL.md +6 -6
  124. package/src/core-skills/wizz-customize/scripts/list_customizable_skills.py +3 -3
  125. package/src/core-skills/wizz-customize/scripts/tests/test_list_customizable_skills.py +13 -13
  126. package/src/core-skills/wizz-editorial-review-prose/SKILL.md +20 -45
  127. package/src/core-skills/wizz-editorial-review-structure/SKILL.md +1 -1
  128. package/src/core-skills/wizz-help/SKILL.md +3 -3
  129. package/src/core-skills/wizz-party-mode/SKILL.md +5 -3
  130. package/src/core-skills/wizz-party-mode/customize.toml +896 -2
  131. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  132. package/src/core-skills/wizz-party-mode/scripts/resolve_party.py +2 -2
  133. package/src/core-skills/wizz-party-mode/scripts/tests/test-resolve_party.py +1 -1
  134. package/src/core-skills/wizz-review-adversarial-general/SKILL.md +23 -12
  135. package/src/core-skills/wizz-spec/SKILL.md +3 -3
  136. package/src/core-skills/wizz-spec/customize.toml +2 -2
  137. package/src/modules/wizz/README.md +5 -5
  138. package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
  139. package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
  140. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  141. package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
  142. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +48 -24
  143. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
  144. package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
  145. package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
  146. package/src/modules/wizz/overrides/{bmad-agent-analyst.toml → wizz-agent-analyst.toml} +1 -1
  147. package/src/modules/wizz/overrides/{bmad-agent-architect.toml → wizz-agent-architect.toml} +1 -1
  148. package/src/modules/wizz/overrides/{bmad-agent-dev.toml → wizz-agent-dev.toml} +1 -1
  149. package/src/modules/wizz/overrides/{bmad-agent-pm.toml → wizz-agent-pm.toml} +1 -1
  150. package/src/modules/wizz/overrides/{bmad-agent-tech-writer.toml → wizz-agent-tech-writer.toml} +1 -1
  151. package/src/modules/wizz/overrides/{bmad-agent-ux-designer.toml → wizz-agent-ux-designer.toml} +1 -1
  152. package/src/modules/wizz/scripts/wizz-init.mjs +7 -7
  153. package/src/scripts/resolve_config.py +7 -7
  154. package/src/scripts/resolve_customization.py +2 -2
  155. package/src/scripts/tests/test_memlog.py +1 -1
  156. package/src/skills-lib/ab-test-setup/SKILL.md +266 -0
  157. package/src/skills-lib/ab-test-setup/evals/evals.json +105 -0
  158. package/src/skills-lib/ab-test-setup/references/sample-size-guide.md +263 -0
  159. package/src/skills-lib/ab-test-setup/references/test-templates.md +277 -0
  160. package/src/skills-lib/ad-creative/SKILL.md +362 -0
  161. package/src/skills-lib/ad-creative/evals/evals.json +90 -0
  162. package/src/skills-lib/ad-creative/references/generative-tools.md +637 -0
  163. package/src/skills-lib/ad-creative/references/platform-specs.md +213 -0
  164. package/src/skills-lib/adversarial-reviewer/SKILL.md +122 -0
  165. package/src/skills-lib/agent-browser/SKILL.md +139 -0
  166. package/src/skills-lib/ai-seo/SKILL.md +398 -0
  167. package/src/skills-lib/ai-seo/evals/evals.json +90 -0
  168. package/src/skills-lib/ai-seo/references/content-patterns.md +285 -0
  169. package/src/skills-lib/ai-seo/references/platform-ranking-factors.md +152 -0
  170. package/src/skills-lib/analytics-tracking/SKILL.md +309 -0
  171. package/src/skills-lib/analytics-tracking/evals/evals.json +90 -0
  172. package/src/skills-lib/analytics-tracking/references/event-library.md +260 -0
  173. package/src/skills-lib/analytics-tracking/references/ga4-implementation.md +300 -0
  174. package/src/skills-lib/analytics-tracking/references/gtm-implementation.md +390 -0
  175. package/src/skills-lib/auth-and-secrets/SKILL.md +82 -0
  176. package/src/skills-lib/caching-and-queues/SKILL.md +58 -0
  177. package/src/skills-lib/cerebro/SKILL.md +368 -0
  178. package/src/skills-lib/churn-prevention/SKILL.md +424 -0
  179. package/src/skills-lib/churn-prevention/evals/evals.json +93 -0
  180. package/src/skills-lib/churn-prevention/references/cancel-flow-patterns.md +316 -0
  181. package/src/skills-lib/churn-prevention/references/dunning-playbook.md +408 -0
  182. package/src/skills-lib/cloud-and-infra/SKILL.md +36 -0
  183. package/src/skills-lib/cold-email/SKILL.md +158 -0
  184. package/src/skills-lib/cold-email/evals/evals.json +94 -0
  185. package/src/skills-lib/cold-email/references/benchmarks.md +83 -0
  186. package/src/skills-lib/cold-email/references/follow-up-sequences.md +81 -0
  187. package/src/skills-lib/cold-email/references/frameworks.md +90 -0
  188. package/src/skills-lib/cold-email/references/personalization.md +79 -0
  189. package/src/skills-lib/cold-email/references/subject-lines.md +53 -0
  190. package/src/skills-lib/competitor-alternatives/SKILL.md +256 -0
  191. package/src/skills-lib/competitor-alternatives/evals/evals.json +93 -0
  192. package/src/skills-lib/competitor-alternatives/references/content-architecture.md +271 -0
  193. package/src/skills-lib/competitor-alternatives/references/templates.md +223 -0
  194. package/src/skills-lib/content-strategy/SKILL.md +359 -0
  195. package/src/skills-lib/content-strategy/evals/evals.json +90 -0
  196. package/src/skills-lib/copy-editing/SKILL.md +447 -0
  197. package/src/skills-lib/copy-editing/evals/evals.json +89 -0
  198. package/src/skills-lib/copy-editing/references/plain-english-alternatives.md +394 -0
  199. package/src/skills-lib/copywriting/SKILL.md +252 -0
  200. package/src/skills-lib/copywriting/evals/evals.json +111 -0
  201. package/src/skills-lib/copywriting/references/copy-frameworks.md +344 -0
  202. package/src/skills-lib/copywriting/references/natural-transitions.md +272 -0
  203. package/src/skills-lib/database-and-deps/SKILL.md +80 -0
  204. package/src/skills-lib/database-scaling/SKILL.md +44 -0
  205. package/src/skills-lib/decision-maker/SKILL.md +534 -0
  206. package/src/skills-lib/desktop-security/SKILL.md +43 -0
  207. package/src/skills-lib/email-sequence/SKILL.md +309 -0
  208. package/src/skills-lib/email-sequence/evals/evals.json +93 -0
  209. package/src/skills-lib/email-sequence/references/copy-guidelines.md +113 -0
  210. package/src/skills-lib/email-sequence/references/email-types.md +515 -0
  211. package/src/skills-lib/email-sequence/references/sequence-templates.md +168 -0
  212. package/src/skills-lib/enhance-prompt/README.md +34 -0
  213. package/src/skills-lib/enhance-prompt/SKILL.md +204 -0
  214. package/src/skills-lib/enhance-prompt/references/KEYWORDS.md +114 -0
  215. package/src/skills-lib/find-skills/SKILL.md +181 -0
  216. package/src/skills-lib/form-cro/SKILL.md +429 -0
  217. package/src/skills-lib/form-cro/evals/evals.json +90 -0
  218. package/src/skills-lib/free-tool-strategy/SKILL.md +178 -0
  219. package/src/skills-lib/free-tool-strategy/evals/evals.json +90 -0
  220. package/src/skills-lib/free-tool-strategy/references/tool-types.md +217 -0
  221. package/src/skills-lib/graphify/.graphify_version +1 -0
  222. package/src/skills-lib/graphify/SKILL.md +1217 -0
  223. package/src/skills-lib/huashu-design/LICENSE +21 -0
  224. package/src/skills-lib/huashu-design/README.en.md +309 -0
  225. package/src/skills-lib/huashu-design/README.md +348 -0
  226. package/src/skills-lib/huashu-design/SKILL.md +631 -0
  227. package/src/skills-lib/huashu-design/assets/android_frame.jsx +175 -0
  228. package/src/skills-lib/huashu-design/assets/animations.jsx +348 -0
  229. package/src/skills-lib/huashu-design/assets/banner.svg +198 -0
  230. package/src/skills-lib/huashu-design/assets/bgm-ad.mp3 +0 -0
  231. package/src/skills-lib/huashu-design/assets/bgm-educational-alt.mp3 +0 -0
  232. package/src/skills-lib/huashu-design/assets/bgm-educational.mp3 +0 -0
  233. package/src/skills-lib/huashu-design/assets/bgm-tech.mp3 +0 -0
  234. package/src/skills-lib/huashu-design/assets/bgm-tutorial-alt.mp3 +0 -0
  235. package/src/skills-lib/huashu-design/assets/bgm-tutorial.mp3 +0 -0
  236. package/src/skills-lib/huashu-design/assets/browser_window.jsx +166 -0
  237. package/src/skills-lib/huashu-design/assets/deck_index.html +348 -0
  238. package/src/skills-lib/huashu-design/assets/deck_stage.js +420 -0
  239. package/src/skills-lib/huashu-design/assets/design_canvas.jsx +205 -0
  240. package/src/skills-lib/huashu-design/assets/director-notes-samples/launch-film-30s-sample.md +1713 -0
  241. package/src/skills-lib/huashu-design/assets/ios_frame.jsx +192 -0
  242. package/src/skills-lib/huashu-design/assets/macos_window.jsx +96 -0
  243. package/src/skills-lib/huashu-design/assets/narration_stage.jsx +476 -0
  244. package/src/skills-lib/huashu-design/assets/personal-asset-index.example.json +71 -0
  245. package/src/skills-lib/huashu-design/assets/sfx/container/card-flip.mp3 +0 -0
  246. package/src/skills-lib/huashu-design/assets/sfx/container/card-snap.mp3 +0 -0
  247. package/src/skills-lib/huashu-design/assets/sfx/container/modal-open.mp3 +0 -0
  248. package/src/skills-lib/huashu-design/assets/sfx/container/stack-collapse.mp3 +0 -0
  249. package/src/skills-lib/huashu-design/assets/sfx/feedback/achievement.mp3 +0 -0
  250. package/src/skills-lib/huashu-design/assets/sfx/feedback/error-tone.mp3 +0 -0
  251. package/src/skills-lib/huashu-design/assets/sfx/feedback/notification-pop.mp3 +0 -0
  252. package/src/skills-lib/huashu-design/assets/sfx/feedback/success-chime.mp3 +0 -0
  253. package/src/skills-lib/huashu-design/assets/sfx/impact/brand-stamp.mp3 +0 -0
  254. package/src/skills-lib/huashu-design/assets/sfx/impact/drop-thud.mp3 +0 -0
  255. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal-v2.mp3 +0 -0
  256. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal.mp3 +0 -0
  257. package/src/skills-lib/huashu-design/assets/sfx/keyboard/delete-key.mp3 +0 -0
  258. package/src/skills-lib/huashu-design/assets/sfx/keyboard/enter.mp3 +0 -0
  259. package/src/skills-lib/huashu-design/assets/sfx/keyboard/space-tap.mp3 +0 -0
  260. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type-fast.mp3 +0 -0
  261. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type.mp3 +0 -0
  262. package/src/skills-lib/huashu-design/assets/sfx/magic/ai-process.mp3 +0 -0
  263. package/src/skills-lib/huashu-design/assets/sfx/magic/sparkle.mp3 +0 -0
  264. package/src/skills-lib/huashu-design/assets/sfx/magic/transform.mp3 +0 -0
  265. package/src/skills-lib/huashu-design/assets/sfx/progress/complete-done.mp3 +0 -0
  266. package/src/skills-lib/huashu-design/assets/sfx/progress/generate-start.mp3 +0 -0
  267. package/src/skills-lib/huashu-design/assets/sfx/progress/loading-tick.mp3 +0 -0
  268. package/src/skills-lib/huashu-design/assets/sfx/terminal/command-execute.mp3 +0 -0
  269. package/src/skills-lib/huashu-design/assets/sfx/terminal/cursor-blink.mp3 +0 -0
  270. package/src/skills-lib/huashu-design/assets/sfx/terminal/output-appear.mp3 +0 -0
  271. package/src/skills-lib/huashu-design/assets/sfx/transition/dissolve.mp3 +0 -0
  272. package/src/skills-lib/huashu-design/assets/sfx/transition/slide-in.mp3 +0 -0
  273. package/src/skills-lib/huashu-design/assets/sfx/transition/swipe-horizontal.mp3 +0 -0
  274. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh-fast.mp3 +0 -0
  275. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh.mp3 +0 -0
  276. package/src/skills-lib/huashu-design/assets/sfx/ui/click-soft.mp3 +0 -0
  277. package/src/skills-lib/huashu-design/assets/sfx/ui/click.mp3 +0 -0
  278. package/src/skills-lib/huashu-design/assets/sfx/ui/focus.mp3 +0 -0
  279. package/src/skills-lib/huashu-design/assets/sfx/ui/hover-subtle.mp3 +0 -0
  280. package/src/skills-lib/huashu-design/assets/sfx/ui/tap-finger.mp3 +0 -0
  281. package/src/skills-lib/huashu-design/assets/sfx/ui/toggle-on.mp3 +0 -0
  282. package/src/skills-lib/huashu-design/assets/showcases/INDEX.md +115 -0
  283. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.html +235 -0
  284. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.png +0 -0
  285. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.html +229 -0
  286. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.png +0 -0
  287. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.html +288 -0
  288. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.png +0 -0
  289. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.html +503 -0
  290. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.png +0 -0
  291. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.html +600 -0
  292. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.png +0 -0
  293. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.html +670 -0
  294. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.png +0 -0
  295. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.html +382 -0
  296. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.png +0 -0
  297. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.html +536 -0
  298. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.png +0 -0
  299. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.html +497 -0
  300. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.png +0 -0
  301. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.html +385 -0
  302. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.png +0 -0
  303. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.html +422 -0
  304. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.png +0 -0
  305. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.html +499 -0
  306. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.png +0 -0
  307. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.html +562 -0
  308. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.png +0 -0
  309. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.html +548 -0
  310. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.png +0 -0
  311. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.html +696 -0
  312. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.png +0 -0
  313. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.html +372 -0
  314. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.png +0 -0
  315. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.html +460 -0
  316. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.png +0 -0
  317. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.html +494 -0
  318. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.png +0 -0
  319. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.html +367 -0
  320. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.png +0 -0
  321. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.html +368 -0
  322. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.png +0 -0
  323. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.html +459 -0
  324. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.png +0 -0
  325. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.html +493 -0
  326. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.png +0 -0
  327. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.html +556 -0
  328. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.png +0 -0
  329. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.html +604 -0
  330. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.png +0 -0
  331. package/src/skills-lib/huashu-design/demos/c1-ios-prototype-en.html +1145 -0
  332. package/src/skills-lib/huashu-design/demos/c1-ios-prototype.html +1142 -0
  333. package/src/skills-lib/huashu-design/demos/c2-slides-pptx-en.html +1055 -0
  334. package/src/skills-lib/huashu-design/demos/c2-slides-pptx.html +1055 -0
  335. package/src/skills-lib/huashu-design/demos/c3-motion-design-en.html +1134 -0
  336. package/src/skills-lib/huashu-design/demos/c3-motion-design.html +1134 -0
  337. package/src/skills-lib/huashu-design/demos/c4-tweaks-en.html +989 -0
  338. package/src/skills-lib/huashu-design/demos/c4-tweaks.html +989 -0
  339. package/src/skills-lib/huashu-design/demos/c5-infographic-en.html +816 -0
  340. package/src/skills-lib/huashu-design/demos/c5-infographic.html +813 -0
  341. package/src/skills-lib/huashu-design/demos/c6-expert-review-en.html +885 -0
  342. package/src/skills-lib/huashu-design/demos/c6-expert-review.html +894 -0
  343. package/src/skills-lib/huashu-design/demos/hero-animation-v10-en.html +1498 -0
  344. package/src/skills-lib/huashu-design/demos/md-html-narration/md-html-demo.html +615 -0
  345. package/src/skills-lib/huashu-design/demos/md-html-narration/script.md +69 -0
  346. package/src/skills-lib/huashu-design/demos/voiceover-demo/script.md +17 -0
  347. package/src/skills-lib/huashu-design/demos/voiceover-demo//344/273/200/344/271/210/346/230/257token.html +201 -0
  348. package/src/skills-lib/huashu-design/demos/w1-brand-protocol-en.html +684 -0
  349. package/src/skills-lib/huashu-design/demos/w1-brand-protocol.html +696 -0
  350. package/src/skills-lib/huashu-design/demos/w2-junior-designer-en.html +983 -0
  351. package/src/skills-lib/huashu-design/demos/w2-junior-designer.html +994 -0
  352. package/src/skills-lib/huashu-design/demos/w3-fallback-advisor-en.html +647 -0
  353. package/src/skills-lib/huashu-design/demos/w3-fallback-advisor.html +704 -0
  354. package/src/skills-lib/huashu-design/package-lock.json +846 -0
  355. package/src/skills-lib/huashu-design/package.json +8 -0
  356. package/src/skills-lib/huashu-design/references/animation-best-practices.md +506 -0
  357. package/src/skills-lib/huashu-design/references/animation-pitfalls.md +402 -0
  358. package/src/skills-lib/huashu-design/references/animations.md +249 -0
  359. package/src/skills-lib/huashu-design/references/apple-gallery-showcase.md +338 -0
  360. package/src/skills-lib/huashu-design/references/audio-design-rules.md +260 -0
  361. package/src/skills-lib/huashu-design/references/brand-asset-protocol.md +250 -0
  362. package/src/skills-lib/huashu-design/references/cinematic-patterns.md +264 -0
  363. package/src/skills-lib/huashu-design/references/content-guidelines.md +260 -0
  364. package/src/skills-lib/huashu-design/references/critique-guide.md +199 -0
  365. package/src/skills-lib/huashu-design/references/design-context.md +213 -0
  366. package/src/skills-lib/huashu-design/references/design-styles.md +370 -0
  367. package/src/skills-lib/huashu-design/references/editable-pptx.md +334 -0
  368. package/src/skills-lib/huashu-design/references/hero-animation-case-study.md +250 -0
  369. package/src/skills-lib/huashu-design/references/launch-film-director-notes.md +293 -0
  370. package/src/skills-lib/huashu-design/references/multi-perspective-parallel-case-study.md +267 -0
  371. package/src/skills-lib/huashu-design/references/react-setup.md +276 -0
  372. package/src/skills-lib/huashu-design/references/scene-templates.md +262 -0
  373. package/src/skills-lib/huashu-design/references/sfx-library.md +226 -0
  374. package/src/skills-lib/huashu-design/references/slide-decks.md +745 -0
  375. package/src/skills-lib/huashu-design/references/tweaks-system.md +313 -0
  376. package/src/skills-lib/huashu-design/references/verification.md +183 -0
  377. package/src/skills-lib/huashu-design/references/video-export.md +232 -0
  378. package/src/skills-lib/huashu-design/references/voiceover-pipeline.md +397 -0
  379. package/src/skills-lib/huashu-design/references/workflow.md +216 -0
  380. package/src/skills-lib/huashu-design/scripts/add-music.sh +108 -0
  381. package/src/skills-lib/huashu-design/scripts/convert-formats.sh +83 -0
  382. package/src/skills-lib/huashu-design/scripts/export_deck_pdf.mjs +98 -0
  383. package/src/skills-lib/huashu-design/scripts/export_deck_pptx.mjs +107 -0
  384. package/src/skills-lib/huashu-design/scripts/export_deck_stage_pdf.mjs +130 -0
  385. package/src/skills-lib/huashu-design/scripts/fetch_images.py +94 -0
  386. package/src/skills-lib/huashu-design/scripts/gen_deck_thumbs.mjs +55 -0
  387. package/src/skills-lib/huashu-design/scripts/html2pptx.js +1178 -0
  388. package/src/skills-lib/huashu-design/scripts/mix-voiceover.sh +127 -0
  389. package/src/skills-lib/huashu-design/scripts/narrate-pipeline.mjs +315 -0
  390. package/src/skills-lib/huashu-design/scripts/render-narration.sh +151 -0
  391. package/src/skills-lib/huashu-design/scripts/render-video-seek.js +238 -0
  392. package/src/skills-lib/huashu-design/scripts/render-video.js +289 -0
  393. package/src/skills-lib/huashu-design/scripts/tts-doubao.mjs +184 -0
  394. package/src/skills-lib/huashu-design/scripts/verify.py +154 -0
  395. package/src/skills-lib/huashu-design/test-prompts.json +38 -0
  396. package/src/skills-lib/humanizer/LICENSE +21 -0
  397. package/src/skills-lib/humanizer/README.md +145 -0
  398. package/src/skills-lib/humanizer/SKILL.md +474 -0
  399. package/src/skills-lib/humanizer/WARP.md +53 -0
  400. package/src/skills-lib/impeccable/SKILL.md +186 -0
  401. package/src/skills-lib/implementation-planner/SKILL.md +630 -0
  402. package/src/skills-lib/infrastructure/SKILL.md +34 -0
  403. package/src/skills-lib/inicio-de-projeto/SKILL.md +313 -0
  404. package/src/skills-lib/launch-strategy/SKILL.md +353 -0
  405. package/src/skills-lib/launch-strategy/evals/evals.json +91 -0
  406. package/src/skills-lib/marketing-ideas/SKILL.md +167 -0
  407. package/src/skills-lib/marketing-ideas/evals/evals.json +90 -0
  408. package/src/skills-lib/marketing-ideas/references/ideas-by-category.md +366 -0
  409. package/src/skills-lib/marketing-psychology/SKILL.md +455 -0
  410. package/src/skills-lib/marketing-psychology/evals/evals.json +88 -0
  411. package/src/skills-lib/motion-3d-director/SKILL.md +485 -0
  412. package/src/skills-lib/onboarding-cro/SKILL.md +220 -0
  413. package/src/skills-lib/onboarding-cro/evals/evals.json +92 -0
  414. package/src/skills-lib/onboarding-cro/references/experiments.md +258 -0
  415. package/src/skills-lib/page-cro/SKILL.md +182 -0
  416. package/src/skills-lib/page-cro/evals/evals.json +111 -0
  417. package/src/skills-lib/page-cro/references/experiments.md +248 -0
  418. package/src/skills-lib/paid-ads/SKILL.md +315 -0
  419. package/src/skills-lib/paid-ads/evals/evals.json +90 -0
  420. package/src/skills-lib/paid-ads/references/ad-copy-templates.md +207 -0
  421. package/src/skills-lib/paid-ads/references/audience-targeting.md +243 -0
  422. package/src/skills-lib/paid-ads/references/platform-setup-checklists.md +277 -0
  423. package/src/skills-lib/paywall-upgrade-cro/SKILL.md +227 -0
  424. package/src/skills-lib/paywall-upgrade-cro/evals/evals.json +93 -0
  425. package/src/skills-lib/paywall-upgrade-cro/references/experiments.md +164 -0
  426. package/src/skills-lib/popup-cro/SKILL.md +453 -0
  427. package/src/skills-lib/popup-cro/evals/evals.json +94 -0
  428. package/src/skills-lib/premium-landing-ui-researcher/SKILL.md +2090 -0
  429. package/src/skills-lib/pricing-strategy/SKILL.md +231 -0
  430. package/src/skills-lib/pricing-strategy/evals/evals.json +90 -0
  431. package/src/skills-lib/pricing-strategy/references/research-methods.md +152 -0
  432. package/src/skills-lib/pricing-strategy/references/tier-structure.md +232 -0
  433. package/src/skills-lib/product-marketing-context/SKILL.md +241 -0
  434. package/src/skills-lib/product-marketing-context/evals/evals.json +85 -0
  435. package/src/skills-lib/programmatic-seo/SKILL.md +238 -0
  436. package/src/skills-lib/programmatic-seo/evals/evals.json +94 -0
  437. package/src/skills-lib/programmatic-seo/references/playbooks.md +308 -0
  438. package/src/skills-lib/react-components/README.md +36 -0
  439. package/src/skills-lib/react-components/SKILL.md +51 -0
  440. package/src/skills-lib/react-components/examples/gold-standard-card.tsx +80 -0
  441. package/src/skills-lib/react-components/package-lock.json +231 -0
  442. package/src/skills-lib/react-components/package.json +16 -0
  443. package/src/skills-lib/react-components/resources/architecture-checklist.md +15 -0
  444. package/src/skills-lib/react-components/resources/component-template.tsx +37 -0
  445. package/src/skills-lib/react-components/resources/stitch-api-reference.md +14 -0
  446. package/src/skills-lib/react-components/resources/style-guide.json +27 -0
  447. package/src/skills-lib/react-components/scripts/fetch-stitch.sh +30 -0
  448. package/src/skills-lib/react-components/scripts/validate.js +70 -0
  449. package/src/skills-lib/references/premium-agency-rules.md +79 -0
  450. package/src/skills-lib/referral-program/SKILL.md +255 -0
  451. package/src/skills-lib/referral-program/evals/evals.json +89 -0
  452. package/src/skills-lib/referral-program/references/affiliate-programs.md +164 -0
  453. package/src/skills-lib/referral-program/references/program-examples.md +143 -0
  454. package/src/skills-lib/remotion-best-practices/SKILL.md +61 -0
  455. package/src/skills-lib/remotion-best-practices/rules/3d.md +86 -0
  456. package/src/skills-lib/remotion-best-practices/rules/animations.md +27 -0
  457. package/src/skills-lib/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  458. package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  459. package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  460. package/src/skills-lib/remotion-best-practices/rules/assets.md +78 -0
  461. package/src/skills-lib/remotion-best-practices/rules/audio-visualization.md +198 -0
  462. package/src/skills-lib/remotion-best-practices/rules/audio.md +169 -0
  463. package/src/skills-lib/remotion-best-practices/rules/calculate-metadata.md +134 -0
  464. package/src/skills-lib/remotion-best-practices/rules/can-decode.md +75 -0
  465. package/src/skills-lib/remotion-best-practices/rules/charts.md +120 -0
  466. package/src/skills-lib/remotion-best-practices/rules/compositions.md +154 -0
  467. package/src/skills-lib/remotion-best-practices/rules/display-captions.md +184 -0
  468. package/src/skills-lib/remotion-best-practices/rules/extract-frames.md +229 -0
  469. package/src/skills-lib/remotion-best-practices/rules/ffmpeg.md +38 -0
  470. package/src/skills-lib/remotion-best-practices/rules/fonts.md +152 -0
  471. package/src/skills-lib/remotion-best-practices/rules/get-audio-duration.md +58 -0
  472. package/src/skills-lib/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  473. package/src/skills-lib/remotion-best-practices/rules/get-video-duration.md +60 -0
  474. package/src/skills-lib/remotion-best-practices/rules/gifs.md +141 -0
  475. package/src/skills-lib/remotion-best-practices/rules/images.md +134 -0
  476. package/src/skills-lib/remotion-best-practices/rules/import-srt-captions.md +69 -0
  477. package/src/skills-lib/remotion-best-practices/rules/light-leaks.md +73 -0
  478. package/src/skills-lib/remotion-best-practices/rules/lottie.md +70 -0
  479. package/src/skills-lib/remotion-best-practices/rules/maps.md +412 -0
  480. package/src/skills-lib/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  481. package/src/skills-lib/remotion-best-practices/rules/measuring-text.md +140 -0
  482. package/src/skills-lib/remotion-best-practices/rules/parameters.md +109 -0
  483. package/src/skills-lib/remotion-best-practices/rules/sequencing.md +118 -0
  484. package/src/skills-lib/remotion-best-practices/rules/sfx.md +26 -0
  485. package/src/skills-lib/remotion-best-practices/rules/subtitles.md +36 -0
  486. package/src/skills-lib/remotion-best-practices/rules/tailwind.md +11 -0
  487. package/src/skills-lib/remotion-best-practices/rules/text-animations.md +20 -0
  488. package/src/skills-lib/remotion-best-practices/rules/timing.md +179 -0
  489. package/src/skills-lib/remotion-best-practices/rules/transcribe-captions.md +70 -0
  490. package/src/skills-lib/remotion-best-practices/rules/transitions.md +197 -0
  491. package/src/skills-lib/remotion-best-practices/rules/transparent-videos.md +106 -0
  492. package/src/skills-lib/remotion-best-practices/rules/trimming.md +51 -0
  493. package/src/skills-lib/remotion-best-practices/rules/videos.md +171 -0
  494. package/src/skills-lib/remotion-best-practices/rules/voiceover.md +99 -0
  495. package/src/skills-lib/revops/SKILL.md +343 -0
  496. package/src/skills-lib/revops/evals/evals.json +91 -0
  497. package/src/skills-lib/revops/references/automation-playbooks.md +290 -0
  498. package/src/skills-lib/revops/references/lifecycle-definitions.md +278 -0
  499. package/src/skills-lib/revops/references/routing-rules.md +203 -0
  500. package/src/skills-lib/revops/references/scoring-models.md +247 -0
  501. package/src/skills-lib/sales-enablement/SKILL.md +349 -0
  502. package/src/skills-lib/sales-enablement/evals/evals.json +91 -0
  503. package/src/skills-lib/sales-enablement/references/deck-frameworks.md +263 -0
  504. package/src/skills-lib/sales-enablement/references/demo-scripts.md +355 -0
  505. package/src/skills-lib/sales-enablement/references/objection-library.md +270 -0
  506. package/src/skills-lib/sales-enablement/references/one-pager-templates.md +208 -0
  507. package/src/skills-lib/schema-markup/SKILL.md +179 -0
  508. package/src/skills-lib/schema-markup/evals/evals.json +87 -0
  509. package/src/skills-lib/schema-markup/references/schema-examples.md +398 -0
  510. package/src/skills-lib/seo-audit/SKILL.md +412 -0
  511. package/src/skills-lib/seo-audit/evals/evals.json +136 -0
  512. package/src/skills-lib/seo-audit/references/ai-writing-detection.md +200 -0
  513. package/src/skills-lib/signup-flow-cro/SKILL.md +359 -0
  514. package/src/skills-lib/signup-flow-cro/evals/evals.json +88 -0
  515. package/src/skills-lib/site-architecture/SKILL.md +357 -0
  516. package/src/skills-lib/site-architecture/evals/evals.json +88 -0
  517. package/src/skills-lib/site-architecture/references/mermaid-templates.md +216 -0
  518. package/src/skills-lib/site-architecture/references/navigation-patterns.md +305 -0
  519. package/src/skills-lib/site-architecture/references/site-type-templates.md +293 -0
  520. package/src/skills-lib/social-content/SKILL.md +278 -0
  521. package/src/skills-lib/social-content/evals/evals.json +92 -0
  522. package/src/skills-lib/social-content/references/platforms.md +170 -0
  523. package/src/skills-lib/social-content/references/post-templates.md +177 -0
  524. package/src/skills-lib/social-content/references/reverse-engineering.md +195 -0
  525. package/src/skills-lib/supabase-postgres-best-practices/AGENTS.md +68 -0
  526. package/src/skills-lib/supabase-postgres-best-practices/CLAUDE.md +68 -0
  527. package/src/skills-lib/supabase-postgres-best-practices/README.md +116 -0
  528. package/src/skills-lib/supabase-postgres-best-practices/SKILL.md +64 -0
  529. package/src/skills-lib/supabase-postgres-best-practices/references/_contributing.md +171 -0
  530. package/src/skills-lib/supabase-postgres-best-practices/references/_sections.md +39 -0
  531. package/src/skills-lib/supabase-postgres-best-practices/references/_template.md +34 -0
  532. package/src/skills-lib/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  533. package/src/skills-lib/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  534. package/src/skills-lib/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  535. package/src/skills-lib/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  536. package/src/skills-lib/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  537. package/src/skills-lib/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  538. package/src/skills-lib/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  539. package/src/skills-lib/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  540. package/src/skills-lib/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  541. package/src/skills-lib/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  542. package/src/skills-lib/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  543. package/src/skills-lib/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  544. package/src/skills-lib/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  545. package/src/skills-lib/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  546. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  547. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  548. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  549. package/src/skills-lib/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  550. package/src/skills-lib/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  551. package/src/skills-lib/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  552. package/src/skills-lib/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  553. package/src/skills-lib/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  554. package/src/skills-lib/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  555. package/src/skills-lib/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  556. package/src/skills-lib/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  557. package/src/skills-lib/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  558. package/src/skills-lib/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  559. package/src/skills-lib/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  560. package/src/skills-lib/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  561. package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  562. package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  563. package/src/skills-lib/taste-redesign/SKILL.md +178 -0
  564. package/src/skills-lib/taste-skill/SKILL.md +1206 -0
  565. package/src/skills-lib/ui-component-curator/SKILL.md +102 -0
  566. package/src/skills-lib/ui-ux-pro-max/SKILL.md +377 -0
  567. package/src/skills-lib/ui-ux-pro-max/data/charts.csv +26 -0
  568. package/src/skills-lib/ui-ux-pro-max/data/colors.csv +97 -0
  569. package/src/skills-lib/ui-ux-pro-max/data/icons.csv +101 -0
  570. package/src/skills-lib/ui-ux-pro-max/data/landing.csv +31 -0
  571. package/src/skills-lib/ui-ux-pro-max/data/products.csv +97 -0
  572. package/src/skills-lib/ui-ux-pro-max/data/react-performance.csv +45 -0
  573. package/src/skills-lib/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  574. package/src/skills-lib/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  575. package/src/skills-lib/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  576. package/src/skills-lib/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  577. package/src/skills-lib/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  578. package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  579. package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  580. package/src/skills-lib/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  581. package/src/skills-lib/ui-ux-pro-max/data/stacks/react.csv +54 -0
  582. package/src/skills-lib/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  583. package/src/skills-lib/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  584. package/src/skills-lib/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  585. package/src/skills-lib/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  586. package/src/skills-lib/ui-ux-pro-max/data/styles.csv +68 -0
  587. package/src/skills-lib/ui-ux-pro-max/data/typography.csv +58 -0
  588. package/src/skills-lib/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  589. package/src/skills-lib/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  590. package/src/skills-lib/ui-ux-pro-max/data/web-interface.csv +31 -0
  591. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  592. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  593. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  594. package/src/skills-lib/ui-ux-pro-max/scripts/core.py +253 -0
  595. package/src/skills-lib/ui-ux-pro-max/scripts/design_system.py +1067 -0
  596. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +1 -0
  597. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +1 -0
  598. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +1 -0
  599. package/src/skills-lib/ui-ux-pro-max/scripts/search.py +114 -0
  600. package/src/skills-lib/web-security/SKILL.md +147 -0
  601. package/src/skills-lib/wizz-router/SKILL.md +257 -0
  602. package/src/squads/README.md +39 -0
  603. package/src/squads/advisory-board/README.md +34 -0
  604. package/src/squads/advisory-board/agents/board-chair.md +161 -0
  605. package/src/squads/advisory-board/agents/brene-brown.md +296 -0
  606. package/src/squads/advisory-board/agents/charlie-munger.md +590 -0
  607. package/src/squads/advisory-board/agents/derek-sivers.md +268 -0
  608. package/src/squads/advisory-board/agents/naval-ravikant.md +251 -0
  609. package/src/squads/advisory-board/agents/patrick-lencioni.md +394 -0
  610. package/src/squads/advisory-board/agents/peter-thiel.md +269 -0
  611. package/src/squads/advisory-board/agents/ray-dalio.md +587 -0
  612. package/src/squads/advisory-board/agents/reid-hoffman.md +278 -0
  613. package/src/squads/advisory-board/agents/simon-sinek.md +291 -0
  614. package/src/squads/advisory-board/agents/yvon-chouinard.md +275 -0
  615. package/src/squads/advisory-board/squad.yaml +50 -0
  616. package/src/squads/brand-squad/README.md +60 -0
  617. package/src/squads/brand-squad/agents/al-ries.md +175 -0
  618. package/src/squads/brand-squad/agents/alina-wheeler.md +184 -0
  619. package/src/squads/brand-squad/agents/archetype-consultant.md +215 -0
  620. package/src/squads/brand-squad/agents/brand-chief.md +158 -0
  621. package/src/squads/brand-squad/agents/byron-sharp.md +169 -0
  622. package/src/squads/brand-squad/agents/david-aaker.md +166 -0
  623. package/src/squads/brand-squad/agents/denise-yohn.md +172 -0
  624. package/src/squads/brand-squad/agents/domain-scout.md +135 -0
  625. package/src/squads/brand-squad/agents/donald-miller.md +179 -0
  626. package/src/squads/brand-squad/agents/emily-heyward.md +147 -0
  627. package/src/squads/brand-squad/agents/jean-noel-kapferer.md +189 -0
  628. package/src/squads/brand-squad/agents/kevin-keller.md +199 -0
  629. package/src/squads/brand-squad/agents/marty-neumeier.md +170 -0
  630. package/src/squads/brand-squad/agents/miller-sticky-brand.md +180 -0
  631. package/src/squads/brand-squad/agents/naming-strategist.md +171 -0
  632. package/src/squads/brand-squad/squad.yaml +117 -0
  633. package/src/squads/c-level-squad/README.md +29 -0
  634. package/src/squads/c-level-squad/agents/caio-architect.md +235 -0
  635. package/src/squads/c-level-squad/agents/cio-engineer.md +209 -0
  636. package/src/squads/c-level-squad/agents/cmo-architect.md +208 -0
  637. package/src/squads/c-level-squad/agents/coo-orchestrator.md +193 -0
  638. package/src/squads/c-level-squad/agents/cto-architect.md +194 -0
  639. package/src/squads/c-level-squad/agents/vision-chief.md +201 -0
  640. package/src/squads/c-level-squad/squad.yaml +45 -0
  641. package/src/squads/claude-code-mastery/README.md +146 -0
  642. package/src/squads/claude-code-mastery/agents/claude-mastery-chief.md +554 -0
  643. package/src/squads/claude-code-mastery/agents/config-engineer.md +865 -0
  644. package/src/squads/claude-code-mastery/agents/hooks-architect.md +1013 -0
  645. package/src/squads/claude-code-mastery/agents/mcp-integrator.md +791 -0
  646. package/src/squads/claude-code-mastery/agents/project-integrator.md +1196 -0
  647. package/src/squads/claude-code-mastery/agents/roadmap-sentinel.md +931 -0
  648. package/src/squads/claude-code-mastery/agents/skill-craftsman.md +1250 -0
  649. package/src/squads/claude-code-mastery/agents/swarm-orchestrator.md +1008 -0
  650. package/src/squads/copy-squad/README.md +65 -0
  651. package/src/squads/copy-squad/agents/andre-chaperon.md +206 -0
  652. package/src/squads/copy-squad/agents/ben-settle.md +194 -0
  653. package/src/squads/copy-squad/agents/claude-hopkins.md +182 -0
  654. package/src/squads/copy-squad/agents/clayton-makepeace.md +225 -0
  655. package/src/squads/copy-squad/agents/copy-chief.md +166 -0
  656. package/src/squads/copy-squad/agents/dan-kennedy.md +202 -0
  657. package/src/squads/copy-squad/agents/dan-koe.md +223 -0
  658. package/src/squads/copy-squad/agents/david-deutsch.md +197 -0
  659. package/src/squads/copy-squad/agents/david-ogilvy.md +198 -0
  660. package/src/squads/copy-squad/agents/eugene-schwartz.md +238 -0
  661. package/src/squads/copy-squad/agents/frank-kern.md +195 -0
  662. package/src/squads/copy-squad/agents/gary-bencivenga.md +197 -0
  663. package/src/squads/copy-squad/agents/gary-halbert.md +219 -0
  664. package/src/squads/copy-squad/agents/jim-rutz.md +193 -0
  665. package/src/squads/copy-squad/agents/joe-sugarman.md +234 -0
  666. package/src/squads/copy-squad/agents/john-carlton.md +203 -0
  667. package/src/squads/copy-squad/agents/jon-benson.md +196 -0
  668. package/src/squads/copy-squad/agents/parris-lampropoulos.md +188 -0
  669. package/src/squads/copy-squad/agents/robert-collier.md +183 -0
  670. package/src/squads/copy-squad/agents/russell-brunson.md +229 -0
  671. package/src/squads/copy-squad/agents/ry-schwartz.md +185 -0
  672. package/src/squads/copy-squad/agents/stefan-georgi.md +188 -0
  673. package/src/squads/copy-squad/agents/todd-brown.md +171 -0
  674. package/src/squads/copy-squad/squad.yaml +87 -0
  675. package/src/squads/cybersecurity/README.md +38 -0
  676. package/src/squads/cybersecurity/agents/busterer.md +108 -0
  677. package/src/squads/cybersecurity/agents/cartographer.md +114 -0
  678. package/src/squads/cybersecurity/agents/chris-sanders.md +205 -0
  679. package/src/squads/cybersecurity/agents/command-generator.md +121 -0
  680. package/src/squads/cybersecurity/agents/cyber-chief.md +120 -0
  681. package/src/squads/cybersecurity/agents/dirber.md +111 -0
  682. package/src/squads/cybersecurity/agents/fuzzer.md +121 -0
  683. package/src/squads/cybersecurity/agents/georgia-weidman.md +178 -0
  684. package/src/squads/cybersecurity/agents/jim-manico.md +182 -0
  685. package/src/squads/cybersecurity/agents/marcus-carey.md +200 -0
  686. package/src/squads/cybersecurity/agents/omar-santos.md +206 -0
  687. package/src/squads/cybersecurity/agents/peter-kim.md +179 -0
  688. package/src/squads/cybersecurity/agents/ripper.md +121 -0
  689. package/src/squads/cybersecurity/agents/rogue.md +116 -0
  690. package/src/squads/cybersecurity/agents/shannon-runner.md +108 -0
  691. package/src/squads/cybersecurity/squad.yaml +56 -0
  692. package/src/squads/data-squad/README.md +30 -0
  693. package/src/squads/data-squad/agents/avinash-kaushik.md +268 -0
  694. package/src/squads/data-squad/agents/data-chief.md +167 -0
  695. package/src/squads/data-squad/agents/david-spinks.md +277 -0
  696. package/src/squads/data-squad/agents/nick-mehta.md +294 -0
  697. package/src/squads/data-squad/agents/peter-fader.md +246 -0
  698. package/src/squads/data-squad/agents/sean-ellis.md +303 -0
  699. package/src/squads/data-squad/agents/wes-kao.md +268 -0
  700. package/src/squads/data-squad/squad.yaml +46 -0
  701. package/src/squads/design-squad/README.md +31 -0
  702. package/src/squads/design-squad/agents/brad-frost.md +185 -0
  703. package/src/squads/design-squad/agents/dan-mall.md +178 -0
  704. package/src/squads/design-squad/agents/dave-malouf.md +198 -0
  705. package/src/squads/design-squad/agents/design-chief.md +109 -0
  706. package/src/squads/design-squad/agents/design-system-architect.md +109 -0
  707. package/src/squads/design-squad/agents/ui-engineer.md +102 -0
  708. package/src/squads/design-squad/agents/ux-designer.md +105 -0
  709. package/src/squads/design-squad/agents/visual-generator.md +108 -0
  710. package/src/squads/design-squad/squad.yaml +48 -0
  711. package/src/squads/hormozi-squad/README.md +39 -0
  712. package/src/squads/hormozi-squad/agents/hormozi-ads.md +159 -0
  713. package/src/squads/hormozi-squad/agents/hormozi-advisor.md +178 -0
  714. package/src/squads/hormozi-squad/agents/hormozi-audit.md +178 -0
  715. package/src/squads/hormozi-squad/agents/hormozi-chief.md +111 -0
  716. package/src/squads/hormozi-squad/agents/hormozi-closer.md +179 -0
  717. package/src/squads/hormozi-squad/agents/hormozi-content.md +166 -0
  718. package/src/squads/hormozi-squad/agents/hormozi-copy.md +152 -0
  719. package/src/squads/hormozi-squad/agents/hormozi-hooks.md +177 -0
  720. package/src/squads/hormozi-squad/agents/hormozi-launch.md +160 -0
  721. package/src/squads/hormozi-squad/agents/hormozi-leads.md +198 -0
  722. package/src/squads/hormozi-squad/agents/hormozi-models.md +191 -0
  723. package/src/squads/hormozi-squad/agents/hormozi-offers.md +197 -0
  724. package/src/squads/hormozi-squad/agents/hormozi-pricing.md +151 -0
  725. package/src/squads/hormozi-squad/agents/hormozi-retention.md +166 -0
  726. package/src/squads/hormozi-squad/agents/hormozi-scale.md +175 -0
  727. package/src/squads/hormozi-squad/agents/hormozi-workshop.md +160 -0
  728. package/src/squads/hormozi-squad/squad.yaml +60 -0
  729. package/src/squads/movement/README.md +29 -0
  730. package/src/squads/movement/agents/analista-de-impacto.md +350 -0
  731. package/src/squads/movement/agents/estrategista-de-ciclo.md +301 -0
  732. package/src/squads/movement/agents/fenomenologo.md +169 -0
  733. package/src/squads/movement/agents/identitario.md +265 -0
  734. package/src/squads/movement/agents/manifestador.md +279 -0
  735. package/src/squads/movement/agents/movement-architect.md +210 -0
  736. package/src/squads/movement/agents/movement-chief.md +135 -0
  737. package/src/squads/movement/squad.yaml +45 -0
  738. package/src/squads/storytelling/README.md +35 -0
  739. package/src/squads/storytelling/agents/blake-snyder.md +225 -0
  740. package/src/squads/storytelling/agents/dan-harmon.md +167 -0
  741. package/src/squads/storytelling/agents/joseph-campbell.md +184 -0
  742. package/src/squads/storytelling/agents/keith-johnstone.md +157 -0
  743. package/src/squads/storytelling/agents/kindra-hall.md +162 -0
  744. package/src/squads/storytelling/agents/marshall-ganz.md +167 -0
  745. package/src/squads/storytelling/agents/matthew-dicks.md +152 -0
  746. package/src/squads/storytelling/agents/nancy-duarte.md +154 -0
  747. package/src/squads/storytelling/agents/oren-klaff.md +166 -0
  748. package/src/squads/storytelling/agents/park-howell.md +152 -0
  749. package/src/squads/storytelling/agents/shawn-coyne.md +208 -0
  750. package/src/squads/storytelling/agents/story-chief.md +155 -0
  751. package/src/squads/storytelling/squad.yaml +52 -0
  752. package/src/squads/traffic-masters/README.md +39 -0
  753. package/src/squads/traffic-masters/agents/ad-midas.md +149 -0
  754. package/src/squads/traffic-masters/agents/ads-analyst.md +135 -0
  755. package/src/squads/traffic-masters/agents/creative-analyst.md +142 -0
  756. package/src/squads/traffic-masters/agents/depesh-mandalia.md +174 -0
  757. package/src/squads/traffic-masters/agents/fiscal.md +144 -0
  758. package/src/squads/traffic-masters/agents/kasim-aslam.md +158 -0
  759. package/src/squads/traffic-masters/agents/media-buyer.md +159 -0
  760. package/src/squads/traffic-masters/agents/molly-pittman.md +185 -0
  761. package/src/squads/traffic-masters/agents/nicholas-kusmich.md +157 -0
  762. package/src/squads/traffic-masters/agents/pedro-sobral.md +158 -0
  763. package/src/squads/traffic-masters/agents/performance-analyst.md +135 -0
  764. package/src/squads/traffic-masters/agents/pixel-specialist.md +144 -0
  765. package/src/squads/traffic-masters/agents/ralph-burns.md +163 -0
  766. package/src/squads/traffic-masters/agents/scale-optimizer.md +144 -0
  767. package/src/squads/traffic-masters/agents/tom-breeze.md +175 -0
  768. package/src/squads/traffic-masters/agents/traffic-chief.md +97 -0
  769. package/src/squads/traffic-masters/squad.yaml +59 -0
  770. package/tools/bundle-web-bundles.js +1 -1
  771. package/tools/format-workflow-md.js +2 -2
  772. package/tools/installer/commands/install.js +13 -1
  773. package/tools/installer/commands/status.js +9 -9
  774. package/tools/installer/commands/uninstall.js +5 -5
  775. package/tools/installer/core/config.js +20 -0
  776. package/tools/installer/core/existing-install.js +8 -8
  777. package/tools/installer/core/install-paths.js +13 -13
  778. package/tools/installer/core/installer.js +202 -102
  779. package/tools/installer/core/legacy-warnings.js +16 -16
  780. package/tools/installer/core/manifest-generator.js +44 -33
  781. package/tools/installer/core/manifest.js +30 -30
  782. package/tools/installer/core/python-check.js +7 -7
  783. package/tools/installer/ide/_config-driven.js +97 -97
  784. package/tools/installer/ide/manager.js +17 -17
  785. package/tools/installer/ide/platform-codes.yaml +5 -5
  786. package/tools/installer/ide/shared/installed-skills.js +13 -13
  787. package/tools/installer/ide/shared/path-utils.js +46 -46
  788. package/tools/installer/ide/shared/skill-manifest.js +4 -4
  789. package/tools/installer/install-messages.yaml +1 -1
  790. package/tools/installer/list-options.js +3 -3
  791. package/tools/installer/modules/channel-plan.js +1 -1
  792. package/tools/installer/modules/channel-resolver.js +1 -1
  793. package/tools/installer/modules/cli-config.js +145 -0
  794. package/tools/installer/modules/custom-module-manager.js +16 -16
  795. package/tools/installer/modules/external-manager.js +6 -6
  796. package/tools/installer/modules/mcp-config.js +137 -0
  797. package/tools/installer/modules/official-modules.js +42 -42
  798. package/tools/installer/modules/plugin-resolver.js +3 -3
  799. package/tools/installer/modules/skills-lib.js +135 -0
  800. package/tools/installer/project-root.js +13 -13
  801. package/tools/installer/prompts.js +1 -1
  802. package/tools/installer/set-overrides.js +6 -6
  803. package/tools/installer/ui.js +239 -29
  804. package/tools/installer/yaml-format.js +1 -1
  805. package/tools/migrate-custom-module-paths.js +11 -11
  806. package/tools/skill-validator.md +6 -6
  807. package/tools/validate-skills.js +10 -5
  808. package/web-bundles/README.md +4 -4
  809. package/web-bundles/brainstorming-coach/INSTRUCTIONS.md +1 -1
  810. package/web-bundles/bundles.json +6 -6
  811. package/web-bundles/market-and-industry-research/INSTRUCTIONS.md +1 -1
  812. package/web-bundles/prd-coach/INSTRUCTIONS.md +3 -3
  813. package/web-bundles/prfaq-coach/INSTRUCTIONS.md +3 -3
  814. package/web-bundles/product-brief-coach/INSTRUCTIONS.md +3 -3
  815. package/web-bundles/ux-coach/INSTRUCTIONS.md +1 -1
  816. package/{bmad-modules.yaml → wizz-modules.yaml} +15 -15
  817. package/build/site/pagefind/fragment/en_5ad92a9.pf_fragment +0 -0
  818. package/build/site/pagefind/fragment/en_7aea5bc.pf_fragment +0 -0
  819. package/build/site/pagefind/fragment/en_81bcd7f.pf_fragment +0 -0
  820. package/build/site/pagefind/fragment/en_938e9c4.pf_fragment +0 -0
  821. package/build/site/pagefind/fragment/en_b51d75b.pf_fragment +0 -0
  822. package/build/site/pagefind/fragment/en_c9fea21.pf_fragment +0 -0
  823. package/build/site/pagefind/fragment/en_e07e982.pf_fragment +0 -0
  824. package/build/site/pagefind/fragment/en_f4389af.pf_fragment +0 -0
  825. package/build/site/pagefind/fragment/en_f52c9f9.pf_fragment +0 -0
  826. package/build/site/pagefind/index/en_82c64dc.pf_index +0 -0
  827. package/build/site/pagefind/index/en_d0dd3c7.pf_index +0 -0
  828. package/build/site/pagefind/index/en_e890f88.pf_index +0 -0
  829. package/build/site/pagefind/pagefind.en_ee1b8a17c8.pf_meta +0 -0
  830. /package/build/site/img/{bmad-dark.png → wizz-dark.png} +0 -0
  831. /package/build/site/img/{bmad-light.png → wizz-light.png} +0 -0
  832. /package/src/bmm-skills/1-analysis/wizz-prfaq/{bmad-manifest.json → wizz-manifest.json} +0 -0
  833. /package/tools/installer/{bmad-cli.js → wizz-cli.js} +0 -0
@@ -2,13 +2,16 @@ const path = require('node:path');
2
2
  const fs = require('../fs-native');
3
3
  const { Manifest } = require('./manifest');
4
4
  const { OfficialModules } = require('../modules/official-modules');
5
+ const { installSkillsLib } = require('../modules/skills-lib');
6
+ const { writeMcpConfig, renderAddCommand } = require('../modules/mcp-config');
7
+ const { installClis, renderInstallCommand } = require('../modules/cli-config');
5
8
  const { IdeManager } = require('../ide/manager');
6
9
  const { FileOps } = require('../file-ops');
7
10
  const { Config } = require('./config');
8
11
  const { getProjectRoot, getSourcePath } = require('../project-root');
9
12
  const { ManifestGenerator } = require('./manifest-generator');
10
13
  const prompts = require('../prompts');
11
- const { BMAD_FOLDER_NAME } = require('../ide/shared/path-utils');
14
+ const { WIZZ_FOLDER_NAME } = require('../ide/shared/path-utils');
12
15
  const { InstallPaths } = require('./install-paths');
13
16
  const { ExternalModuleManager } = require('../modules/external-manager');
14
17
  const { resolveModuleVersion } = require('../modules/version-resolver');
@@ -24,7 +27,7 @@ class Installer {
24
27
  this.ideManager = new IdeManager();
25
28
  this.fileOps = new FileOps();
26
29
  this.installedFiles = new Set(); // Track all installed files
27
- this.bmadFolderName = BMAD_FOLDER_NAME;
30
+ this.wizzFolderName = WIZZ_FOLDER_NAME;
28
31
  }
29
32
 
30
33
  /**
@@ -41,7 +44,7 @@ class Installer {
41
44
  const config = Config.build(originalConfig);
42
45
  const paths = await InstallPaths.create(config);
43
46
  const officialModules = await OfficialModules.build(config, paths);
44
- const existingInstall = await ExistingInstall.detect(paths.bmadDir);
47
+ const existingInstall = await ExistingInstall.detect(paths.wizzDir);
45
48
 
46
49
  try {
47
50
  await warnPreNativeSkillsLegacy({
@@ -50,7 +53,7 @@ class Installer {
50
53
  });
51
54
  } catch (error) {
52
55
  // Legacy-dir scan is informational; never let it abort install.
53
- await prompts.log.warn(`Warning: Could not check for legacy BMAD entries: ${error.message}`);
56
+ await prompts.log.warn(`Warning: Could not check for legacy WIZZ entries: ${error.message}`);
54
57
  }
55
58
 
56
59
  if (existingInstall.installed) {
@@ -64,7 +67,7 @@ class Installer {
64
67
  // Capture pre-install module versions for from→to display
65
68
  const preInstallVersions = new Map();
66
69
  if (existingInstall.installed) {
67
- const existingModules = await this.manifest.getAllModuleVersions(paths.bmadDir);
70
+ const existingModules = await this.manifest.getAllModuleVersions(paths.wizzDir);
68
71
  for (const mod of existingModules) {
69
72
  if (mod.name && mod.version) {
70
73
  preInstallVersions.set(mod.name, mod.version);
@@ -78,7 +81,7 @@ class Installer {
78
81
 
79
82
  // Capture previously installed skill rows before they get overwritten
80
83
  const preservedModules = originalConfig._preserveModules || [];
81
- const previousSkillManifestRows = await this._readSkillManifestRows(paths.bmadDir);
84
+ const previousSkillManifestRows = await this._readSkillManifestRows(paths.wizzDir);
82
85
  const previousSkillIds = this._getPreviousSkillIdsForCleanup(previousSkillManifestRows, preservedModules);
83
86
 
84
87
  const allModules = config.modules || [];
@@ -98,13 +101,13 @@ class Installer {
98
101
 
99
102
  // Skills are now in IDE directories — remove redundant copies from _wizz/.
100
103
  // Also cleans up skill dirs left by older installer versions.
101
- await this._cleanupSkillDirs(paths.bmadDir);
104
+ await this._cleanupSkillDirs(paths.wizzDir);
102
105
 
103
106
  const restoreResult = await this._restoreUserFiles(paths, updateState);
104
107
 
105
108
  // Render consolidated summary
106
109
  await this.renderInstallSummary(results, {
107
- bmadDir: paths.bmadDir,
110
+ wizzDir: paths.wizzDir,
108
111
  modules: config.modules,
109
112
  ides: config.ides,
110
113
  customFiles: restoreResult.customFiles.length > 0 ? restoreResult.customFiles : undefined,
@@ -114,7 +117,7 @@ class Installer {
114
117
 
115
118
  return {
116
119
  success: true,
117
- path: paths.bmadDir,
120
+ path: paths.wizzDir,
118
121
  modules: config.modules,
119
122
  ides: config.ides,
120
123
  projectDir: paths.projectRoot,
@@ -256,7 +259,7 @@ class Installer {
256
259
  installTasks.push({
257
260
  title: 'Creating module directories',
258
261
  task: async (message) => {
259
- const verboseMode = process.env.BMAD_VERBOSE_INSTALL === 'true' || config.verbose;
262
+ const verboseMode = process.env.WIZZ_VERBOSE_INSTALL === 'true' || config.verbose;
260
263
  const moduleLogger = {
261
264
  log: async (msg) => (verboseMode ? await prompts.log.message(msg) : undefined),
262
265
  error: async (msg) => await prompts.log.error(msg),
@@ -266,7 +269,7 @@ class Installer {
266
269
  if (config.modules && config.modules.length > 0) {
267
270
  for (const moduleName of config.modules) {
268
271
  message(`Setting up ${moduleName}...`);
269
- const result = await officialModules.createModuleDirectories(moduleName, paths.bmadDir, {
272
+ const result = await officialModules.createModuleDirectories(moduleName, paths.wizzDir, {
270
273
  installedIDEs: config.ides || [],
271
274
  moduleConfig: moduleConfigs[moduleName] || {},
272
275
  existingModuleConfig: officialModules.existingConfig?.[moduleName] || {},
@@ -290,13 +293,110 @@ class Installer {
290
293
  const configTask = {
291
294
  title: 'Generating configurations',
292
295
  task: async (message) => {
293
- await this.generateModuleConfigs(paths.bmadDir, moduleConfigs);
296
+ await this.generateModuleConfigs(paths.wizzDir, moduleConfigs);
294
297
  addResult('Configurations', 'ok', 'generated');
295
298
 
296
299
  this.installedFiles.add(paths.manifestFile());
297
300
  this.installedFiles.add(paths.centralConfig());
298
301
  this.installedFiles.add(paths.centralUserConfig());
299
302
 
303
+ // Install the global skills library (area-filtered) BEFORE manifests, so
304
+ // collectSkills discovers `_wizz/skills-lib/<id>` and the verbatim pipeline
305
+ // carries them into each IDE. Gated on the `wizz` module; additive, so a
306
+ // failure here warns and never aborts the install.
307
+ if (!config.isQuickUpdate() && (config.modules || []).includes('wizz')) {
308
+ message('Installing global skills...');
309
+ try {
310
+ const result = await installSkillsLib({
311
+ wizzDir: paths.wizzDir,
312
+ selectedAreas: config.selectedAreas || [],
313
+ trackFile: (p) => this.installedFiles.add(p),
314
+ });
315
+ if (result.registry) {
316
+ addResult('Global skills', 'ok', `${result.copied} installed`);
317
+ }
318
+ if (result.skipped.length > 0) {
319
+ await prompts.log.warn(`Skills no registry sem pasta em skills-lib (ignoradas): ${result.skipped.join(', ')}`);
320
+ }
321
+ } catch (error) {
322
+ await prompts.log.warn(`Falha ao instalar skills globais: ${error.message}`);
323
+ }
324
+
325
+ // Configure recommended MCP servers for the chosen areas. The user's
326
+ // multiselect already split them into write vs recommend; we merge the
327
+ // chosen ones into .mcp.json (additive) and print `claude mcp add` for
328
+ // the rest. Additive + placeholder-secret, so it never clobbers config
329
+ // or leaks tokens; a failure warns and never aborts the install.
330
+ const mcpPlan = config.mcpPlan || { toWrite: [], toRecommend: [] };
331
+ try {
332
+ const toWrite = mcpPlan.toWrite || [];
333
+ if (toWrite.length > 0) {
334
+ message('Configuring MCP servers...');
335
+ // Intentionally NOT tracked in installedFiles: .mcp.json is a
336
+ // shared, user-owned config we merge into (it may hold the user's
337
+ // own servers). Tracking it would expose it to uninstall removal
338
+ // and manifest hash-management, which must never touch it.
339
+ const mcpResult = await writeMcpConfig({
340
+ projectDir: paths.projectRoot,
341
+ mcps: toWrite,
342
+ });
343
+ if (mcpResult.added.length > 0) {
344
+ addResult('MCP servers', 'ok', `${mcpResult.added.join(', ')} → .mcp.json`);
345
+ }
346
+ if (mcpResult.skipped.length > 0) {
347
+ await prompts.log.info(`MCPs já presentes no .mcp.json (mantidos): ${mcpResult.skipped.join(', ')}`);
348
+ }
349
+ }
350
+ const toRecommend = mcpPlan.toRecommend || [];
351
+ if (toRecommend.length > 0) {
352
+ const lines = toRecommend.map((m) => ` ${renderAddCommand(m)}`).join('\n');
353
+ await prompts.log.info(`MCPs recomendados (rode quando quiser):\n${lines}`);
354
+ }
355
+ // Remind only when a written server expects secrets the user must fill.
356
+ const needsSecrets = toWrite.filter((m) => m.server && m.server.env && Object.keys(m.server.env).length > 0);
357
+ if (needsSecrets.length > 0) {
358
+ const vars = [...new Set(needsSecrets.flatMap((m) => Object.values(m.server.env)))];
359
+ await prompts.log.warn(`Defina as variáveis de ambiente dos MCPs antes de usar: ${vars.join(', ')}`);
360
+ }
361
+ } catch (error) {
362
+ await prompts.log.warn(`Falha ao configurar MCPs: ${error.message}`);
363
+ }
364
+
365
+ // Install/recommend the CLIs the agents shell out to (agent-browser,
366
+ // rtk). The ui already detected what's present and split the rest into
367
+ // install-now vs recommend; here we run the chosen install commands and
368
+ // print the rest. Install runs system commands (npm install -g, curl |
369
+ // sh) — a failure warns and never aborts the install. CLIs are not
370
+ // tracked in installedFiles (they live outside the project tree).
371
+ const cliPlan = config.cliPlan || { toInstall: [], toRecommend: [], alreadyInstalled: [] };
372
+ try {
373
+ const alreadyInstalled = cliPlan.alreadyInstalled || [];
374
+ if (alreadyInstalled.length > 0) {
375
+ await prompts.log.info(`CLIs já instalados (mantidos): ${alreadyInstalled.map((c) => c.id).join(', ')}`);
376
+ }
377
+ const toInstall = cliPlan.toInstall || [];
378
+ if (toInstall.length > 0) {
379
+ message('Installing CLIs...');
380
+ const cliResult = await installClis({ clis: toInstall });
381
+ if (cliResult.installed.length > 0) {
382
+ addResult('CLIs', 'ok', `instalados: ${cliResult.installed.join(', ')}`);
383
+ }
384
+ for (const f of cliResult.failed) {
385
+ await prompts.log.warn(
386
+ `Falha ao instalar CLI ${f.id}: ${f.error}. Rode manualmente: ${renderInstallCommand(toInstall.find((c) => c.id === f.id) || {})}`,
387
+ );
388
+ }
389
+ }
390
+ const toRecommend = cliPlan.toRecommend || [];
391
+ if (toRecommend.length > 0) {
392
+ const lines = toRecommend.map((c) => ` ${renderInstallCommand(c)}`).join('\n');
393
+ await prompts.log.info(`CLIs recomendados (rode quando quiser):\n${lines}`);
394
+ }
395
+ } catch (error) {
396
+ await prompts.log.warn(`Falha ao configurar CLIs: ${error.message}`);
397
+ }
398
+ }
399
+
300
400
  message('Generating manifests...');
301
401
  const manifestGen = new ManifestGenerator();
302
402
  const preservedModules = originalConfig._preserveModules || [];
@@ -314,14 +414,14 @@ class Installer {
314
414
  modulesForCsvPreserve = preservedModules.length > 0 ? [...allModules, ...preservedModules] : allModules;
315
415
  }
316
416
 
317
- await this._trackPreservedModuleFiles(paths.bmadDir, preservedModules);
417
+ await this._trackPreservedModuleFiles(paths.wizzDir, preservedModules);
318
418
 
319
- await manifestGen.generateManifests(paths.bmadDir, allModulesForManifest, [...this.installedFiles], {
419
+ await manifestGen.generateManifests(paths.wizzDir, allModulesForManifest, [...this.installedFiles], {
320
420
  ides: config.ides || [],
321
421
  preservedModules: modulesForCsvPreserve,
322
422
  moduleConfigs,
323
423
  });
324
- await this._appendPreservedSkillManifestRows(paths.bmadDir, previousSkillManifestRows, preservedModules);
424
+ await this._appendPreservedSkillManifestRows(paths.wizzDir, previousSkillManifestRows, preservedModules);
325
425
 
326
426
  // Apply post-install --set TOML patches. Runs after writeCentralConfig
327
427
  // (inside generateManifests above) so the patch operates on the
@@ -329,7 +429,7 @@ class Installer {
329
429
  // See `tools/installer/set-overrides.js` for routing rules.
330
430
  if (config.setOverrides && Object.keys(config.setOverrides).length > 0) {
331
431
  const { applySetOverrides } = require('../set-overrides');
332
- const applied = await applySetOverrides(config.setOverrides, paths.bmadDir);
432
+ const applied = await applySetOverrides(config.setOverrides, paths.wizzDir);
333
433
  if (applied.length > 0) {
334
434
  const summary = applied.map((a) => `${a.module}.${a.key} → ${a.file}`).join(', ');
335
435
  await prompts.log.info(`Applied --set overrides: ${summary}`);
@@ -337,7 +437,7 @@ class Installer {
337
437
  }
338
438
 
339
439
  message('Generating help catalog...');
340
- await this.mergeModuleHelpCatalogs(paths.bmadDir, manifestGen.agents);
440
+ await this.mergeModuleHelpCatalogs(paths.wizzDir, manifestGen.agents);
341
441
  addResult('Help catalog', 'ok');
342
442
 
343
443
  return 'Configurations generated';
@@ -380,7 +480,7 @@ class Installer {
380
480
  return;
381
481
  }
382
482
 
383
- const setupResults = await this.ideManager.setupBatch(validIdes, paths.projectRoot, paths.bmadDir, {
483
+ const setupResults = await this.ideManager.setupBatch(validIdes, paths.projectRoot, paths.wizzDir, {
384
484
  selectedModules: allModules || [],
385
485
  verbose: config.verbose,
386
486
  previousSkillIds,
@@ -401,41 +501,41 @@ class Installer {
401
501
  * Skills are self-contained in IDE directories, so _wizz/ only needs
402
502
  * module-level files (config.yaml, _config/, etc.).
403
503
  * Also cleans up skill dirs left by older installer versions.
404
- * @param {string} bmadDir - BMAD installation directory
504
+ * @param {string} wizzDir - WIZZ installation directory
405
505
  */
406
- async _cleanupSkillDirs(bmadDir) {
506
+ async _cleanupSkillDirs(wizzDir) {
407
507
  const csv = require('csv-parse/sync');
408
- const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv');
508
+ const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
409
509
  if (!(await fs.pathExists(csvPath))) return;
410
510
 
411
511
  const csvContent = await fs.readFile(csvPath, 'utf8');
412
512
  const records = csv.parse(csvContent, { columns: true, skip_empty_lines: true });
413
- const bmadFolderName = path.basename(bmadDir);
414
- const bmadPrefix = bmadFolderName + '/';
513
+ const wizzFolderName = path.basename(wizzDir);
514
+ const wizzPrefix = wizzFolderName + '/';
415
515
 
416
516
  for (const record of records) {
417
517
  if (!record.path) continue;
418
- const relativePath = record.path.startsWith(bmadPrefix) ? record.path.slice(bmadPrefix.length) : record.path;
419
- const sourceDir = path.dirname(path.join(bmadDir, relativePath));
518
+ const relativePath = record.path.startsWith(wizzPrefix) ? record.path.slice(wizzPrefix.length) : record.path;
519
+ const sourceDir = path.dirname(path.join(wizzDir, relativePath));
420
520
  if (await fs.pathExists(sourceDir)) {
421
521
  await fs.remove(sourceDir);
422
- await this._removeEmptyParents(path.dirname(sourceDir), bmadDir);
522
+ await this._removeEmptyParents(path.dirname(sourceDir), wizzDir);
423
523
  }
424
524
  }
425
525
  }
426
526
 
427
527
  /**
428
528
  * Remove now-empty parent directories left behind after skill dir cleanup.
429
- * Walks up from dir, stopping at (and never removing) bmadDir. Best-effort:
529
+ * Walks up from dir, stopping at (and never removing) wizzDir. Best-effort:
430
530
  * a directory that vanishes or fills in mid-walk just ends the walk.
431
531
  * @param {string} dir - Directory to start walking up from
432
- * @param {string} bmadDir - BMAD installation directory (boundary)
532
+ * @param {string} wizzDir - WIZZ installation directory (boundary)
433
533
  */
434
- async _removeEmptyParents(dir, bmadDir) {
534
+ async _removeEmptyParents(dir, wizzDir) {
435
535
  let current = dir;
436
536
  while (true) {
437
537
  // Path-boundary check (not a string prefix, so siblings like _wizz2 don't match).
438
- const rel = path.relative(bmadDir, current);
538
+ const rel = path.relative(wizzDir, current);
439
539
  if (rel === '' || rel.startsWith('..') || path.isAbsolute(rel)) break;
440
540
  try {
441
541
  const entries = await fs.readdir(current);
@@ -448,8 +548,8 @@ class Installer {
448
548
  }
449
549
  }
450
550
 
451
- async _readSkillManifestRows(bmadDir) {
452
- const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv');
551
+ async _readSkillManifestRows(wizzDir) {
552
+ const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
453
553
  if (!(await fs.pathExists(csvPath))) return [];
454
554
 
455
555
  try {
@@ -473,17 +573,17 @@ class Installer {
473
573
  return ids;
474
574
  }
475
575
 
476
- async _appendPreservedSkillManifestRows(bmadDir, previousRows, preservedModules = []) {
576
+ async _appendPreservedSkillManifestRows(wizzDir, previousRows, preservedModules = []) {
477
577
  if (!previousRows || previousRows.length === 0 || preservedModules.length === 0) return;
478
578
 
479
579
  const preservedModuleSet = new Set(preservedModules);
480
580
  const rowsToPreserve = previousRows.filter((row) => row.canonicalId && row.module && preservedModuleSet.has(row.module));
481
581
  if (rowsToPreserve.length === 0) return;
482
582
 
483
- const csvPath = path.join(bmadDir, '_config', 'skill-manifest.csv');
583
+ const csvPath = path.join(wizzDir, '_config', 'skill-manifest.csv');
484
584
  if (!(await fs.pathExists(csvPath))) return;
485
585
 
486
- const currentRows = await this._readSkillManifestRows(bmadDir);
586
+ const currentRows = await this._readSkillManifestRows(wizzDir);
487
587
  const activeIds = new Set(currentRows.map((row) => row.canonicalId).filter(Boolean));
488
588
  const appendedRows = [];
489
589
 
@@ -529,7 +629,7 @@ class Installer {
529
629
  message(`Restoring ${updateState.customFiles.length} custom files...`);
530
630
 
531
631
  for (const originalPath of updateState.customFiles) {
532
- const relativePath = path.relative(paths.bmadDir, originalPath);
632
+ const relativePath = path.relative(paths.wizzDir, originalPath);
533
633
  const backupPath = path.join(updateState.tempBackupDir, relativePath);
534
634
 
535
635
  if (await fs.pathExists(backupPath)) {
@@ -552,7 +652,7 @@ class Installer {
552
652
  message(`Restoring ${restoredModifiedFiles.length} modified files as .bak...`);
553
653
 
554
654
  for (const modifiedFile of restoredModifiedFiles) {
555
- const relativePath = path.relative(paths.bmadDir, modifiedFile.path);
655
+ const relativePath = path.relative(paths.wizzDir, modifiedFile.path);
556
656
  const tempBackupPath = path.join(updateState.tempModifiedBackupDir, relativePath);
557
657
  const bakPath = modifiedFile.path + '.bak';
558
658
 
@@ -584,8 +684,8 @@ class Installer {
584
684
  */
585
685
  async _prepareUpdateState(paths, config, existingInstall, officialModules) {
586
686
  // Detect custom and modified files BEFORE updating (compare current files vs files-manifest.csv)
587
- const existingFilesManifest = await this.readFilesManifest(paths.bmadDir);
588
- const { customFiles, modifiedFiles } = await this.detectCustomFiles(paths.bmadDir, existingFilesManifest);
687
+ const existingFilesManifest = await this.readFilesManifest(paths.wizzDir);
688
+ const { customFiles, modifiedFiles } = await this.detectCustomFiles(paths.wizzDir, existingFilesManifest);
589
689
 
590
690
  // Preserve existing core configuration during updates
591
691
  // (no-op for quick-update which already has core config from collectModuleConfigQuick)
@@ -630,7 +730,7 @@ class Installer {
630
730
  await fs.ensureDir(tempBackupDir);
631
731
 
632
732
  for (const customFile of customFiles) {
633
- const relativePath = path.relative(paths.bmadDir, customFile);
733
+ const relativePath = path.relative(paths.wizzDir, customFile);
634
734
  const backupPath = path.join(tempBackupDir, relativePath);
635
735
  await fs.ensureDir(path.dirname(backupPath));
636
736
  await fs.copy(customFile, backupPath);
@@ -642,7 +742,7 @@ class Installer {
642
742
  await fs.ensureDir(tempModifiedBackupDir);
643
743
 
644
744
  for (const modifiedFile of modifiedFiles) {
645
- const relativePath = path.relative(paths.bmadDir, modifiedFile.path);
745
+ const relativePath = path.relative(paths.wizzDir, modifiedFile.path);
646
746
  const tempBackupPath = path.join(tempModifiedBackupDir, relativePath);
647
747
  await fs.ensureDir(path.dirname(tempBackupPath));
648
748
  await fs.copy(modifiedFile.path, tempBackupPath, { overwrite: true });
@@ -696,9 +796,9 @@ class Installer {
696
796
  }
697
797
  }
698
798
 
699
- async _trackPreservedModuleFiles(bmadDir, preservedModules = []) {
799
+ async _trackPreservedModuleFiles(wizzDir, preservedModules = []) {
700
800
  for (const moduleName of preservedModules) {
701
- const modulePath = path.join(bmadDir, moduleName);
801
+ const modulePath = path.join(wizzDir, moduleName);
702
802
  if (await fs.pathExists(modulePath)) {
703
803
  await this._trackFilesRecursive(modulePath);
704
804
  }
@@ -727,7 +827,7 @@ class Installer {
727
827
  const moduleConfig = officialModules.moduleConfigs[moduleName] || {};
728
828
  const installResult = await officialModules.install(
729
829
  moduleName,
730
- paths.bmadDir,
830
+ paths.wizzDir,
731
831
  (filePath) => {
732
832
  this.installedFiles.add(filePath);
733
833
  },
@@ -769,11 +869,11 @@ class Installer {
769
869
 
770
870
  /**
771
871
  * Read files-manifest.csv
772
- * @param {string} bmadDir - BMAD installation directory
872
+ * @param {string} wizzDir - WIZZ installation directory
773
873
  * @returns {Array} Array of file entries from files-manifest.csv
774
874
  */
775
- async readFilesManifest(bmadDir) {
776
- const filesManifestPath = path.join(bmadDir, '_config', 'files-manifest.csv');
875
+ async readFilesManifest(wizzDir) {
876
+ const filesManifestPath = path.join(wizzDir, '_config', 'files-manifest.csv');
777
877
  if (!(await fs.pathExists(filesManifestPath))) {
778
878
  return [];
779
879
  }
@@ -825,11 +925,11 @@ class Installer {
825
925
 
826
926
  /**
827
927
  * Detect custom and modified files
828
- * @param {string} bmadDir - BMAD installation directory
928
+ * @param {string} wizzDir - WIZZ installation directory
829
929
  * @param {Array} existingFilesManifest - Previous files from files-manifest.csv
830
930
  * @returns {Object} Object with customFiles and modifiedFiles arrays
831
931
  */
832
- async detectCustomFiles(bmadDir, existingFilesManifest) {
932
+ async detectCustomFiles(wizzDir, existingFilesManifest) {
833
933
  const customFiles = [];
834
934
  const modifiedFiles = [];
835
935
 
@@ -837,7 +937,7 @@ class Installer {
837
937
  // per-user runtime data generated by agents with sidecars. These files
838
938
  // aren't installer-managed and must never be reported as "custom" or
839
939
  // "modified" — they're user state, not user overrides.
840
- const bmadMemoryPaths = ['_memory', 'memory'];
940
+ const wizzMemoryPaths = ['_memory', 'memory'];
841
941
 
842
942
  // Check if the manifest has hashes - if not, we can't detect modifications
843
943
  let manifestHasHashes = false;
@@ -849,7 +949,7 @@ class Installer {
849
949
  const installedFilesMap = new Map();
850
950
  for (const fileEntry of existingFilesManifest) {
851
951
  if (fileEntry.path) {
852
- const absolutePath = path.join(bmadDir, fileEntry.path);
952
+ const absolutePath = path.join(wizzDir, fileEntry.path);
853
953
  installedFilesMap.set(path.normalize(absolutePath), {
854
954
  hash: fileEntry.hash,
855
955
  relativePath: fileEntry.path,
@@ -857,7 +957,7 @@ class Installer {
857
957
  }
858
958
  }
859
959
 
860
- // Recursively scan bmadDir for all files
960
+ // Recursively scan wizzDir for all files
861
961
  const scanDirectory = async (dir) => {
862
962
  try {
863
963
  const entries = await fs.readdir(dir, { withFileTypes: true });
@@ -875,7 +975,7 @@ class Installer {
875
975
  const fileInfo = installedFilesMap.get(normalizedPath);
876
976
 
877
977
  // Skip certain system files that are auto-generated
878
- const relativePath = path.relative(bmadDir, fullPath);
978
+ const relativePath = path.relative(wizzDir, fullPath);
879
979
  const fileName = path.basename(fullPath);
880
980
 
881
981
  // Skip _config directory EXCEPT for modified agent customizations
@@ -883,7 +983,7 @@ class Installer {
883
983
  // Special handling for .customize.yaml files - only preserve if modified
884
984
  if (relativePath.includes('/agents/') && fileName.endsWith('.customize.yaml')) {
885
985
  // Check if the customization file has been modified from manifest
886
- const manifestPath = path.join(bmadDir, '_config', 'manifest.yaml');
986
+ const manifestPath = path.join(wizzDir, '_config', 'manifest.yaml');
887
987
  if (await fs.pathExists(manifestPath)) {
888
988
  const crypto = require('node:crypto');
889
989
  const currentContent = await fs.readFile(fullPath, 'utf8');
@@ -903,7 +1003,7 @@ class Installer {
903
1003
  continue;
904
1004
  }
905
1005
 
906
- if (bmadMemoryPaths.some((mp) => relativePath === mp || relativePath.startsWith(mp + '/'))) {
1006
+ if (wizzMemoryPaths.some((mp) => relativePath === mp || relativePath.startsWith(mp + '/'))) {
907
1007
  continue;
908
1008
  }
909
1009
 
@@ -937,29 +1037,29 @@ class Installer {
937
1037
  }
938
1038
  };
939
1039
 
940
- await scanDirectory(bmadDir);
1040
+ await scanDirectory(wizzDir);
941
1041
  return { customFiles, modifiedFiles };
942
1042
  }
943
1043
 
944
1044
  /**
945
1045
  * Generate clean config.yaml files for each installed module
946
- * @param {string} bmadDir - BMAD installation directory
1046
+ * @param {string} wizzDir - WIZZ installation directory
947
1047
  * @param {Object} moduleConfigs - Collected configuration values
948
1048
  */
949
- async generateModuleConfigs(bmadDir, moduleConfigs) {
1049
+ async generateModuleConfigs(wizzDir, moduleConfigs) {
950
1050
  const yaml = require('yaml');
951
1051
 
952
1052
  // Extract core config values to share with other modules
953
1053
  const coreConfig = moduleConfigs.core || {};
954
1054
 
955
1055
  // Get all installed module directories
956
- const entries = await fs.readdir(bmadDir, { withFileTypes: true });
1056
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
957
1057
  const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']);
958
1058
  const installedModules = entries.filter((entry) => entry.isDirectory() && !nonModuleDirs.has(entry.name)).map((entry) => entry.name);
959
1059
 
960
1060
  // Generate config.yaml for each installed module
961
1061
  for (const moduleName of installedModules) {
962
- const modulePath = path.join(bmadDir, moduleName);
1062
+ const modulePath = path.join(wizzDir, moduleName);
963
1063
 
964
1064
  // Get module-specific config or use empty object if none
965
1065
  const config = moduleConfigs[moduleName] || {};
@@ -1040,17 +1140,17 @@ class Installer {
1040
1140
  * Merge all module-help.csv files into a single wizz-help.csv.
1041
1141
  * Scans all installed modules for module-help.csv and merges them.
1042
1142
  * Output preserves the source schema verbatim — see schema below.
1043
- * @param {string} bmadDir - BMAD installation directory
1143
+ * @param {string} wizzDir - WIZZ installation directory
1044
1144
  * @param {Array<Object>} _agentEntries - Unused; retained for call-site compatibility
1045
1145
  */
1046
- async mergeModuleHelpCatalogs(bmadDir, _agentEntries = []) {
1146
+ async mergeModuleHelpCatalogs(wizzDir, _agentEntries = []) {
1047
1147
  const allRows = [];
1048
1148
  const headerRow = MODULE_HELP_CSV_HEADER;
1049
1149
  const COLUMN_COUNT = 13;
1050
1150
  const PHASE_INDEX = 7;
1051
1151
 
1052
1152
  // Get all installed module directories
1053
- const entries = await fs.readdir(bmadDir, { withFileTypes: true });
1153
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
1054
1154
  const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']);
1055
1155
  const installedModules = entries.filter((entry) => entry.isDirectory() && !nonModuleDirs.has(entry.name)).map((entry) => entry.name);
1056
1156
 
@@ -1065,7 +1165,7 @@ class Installer {
1065
1165
 
1066
1166
  // Map installed module paths
1067
1167
  for (const moduleName of installedModules) {
1068
- const modulePath = path.join(bmadDir, moduleName);
1168
+ const modulePath = path.join(wizzDir, moduleName);
1069
1169
  modulePaths.set(moduleName, modulePath);
1070
1170
  }
1071
1171
 
@@ -1111,7 +1211,7 @@ class Installer {
1111
1211
  allRows.push(padded.map((c) => this.escapeCSVField(c)).join(','));
1112
1212
  }
1113
1213
 
1114
- if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
1214
+ if (process.env.WIZZ_VERBOSE_INSTALL === 'true') {
1115
1215
  await prompts.log.message(` Merged module-help from: ${moduleName}`);
1116
1216
  }
1117
1217
  } catch (error) {
@@ -1136,7 +1236,7 @@ class Installer {
1136
1236
  const sortedRows = decorated.map((d) => d.row);
1137
1237
 
1138
1238
  // Write merged catalog
1139
- const outputDir = path.join(bmadDir, '_config');
1239
+ const outputDir = path.join(wizzDir, '_config');
1140
1240
  await fs.ensureDir(outputDir);
1141
1241
  const outputPath = path.join(outputDir, 'wizz-help.csv');
1142
1242
 
@@ -1146,7 +1246,7 @@ class Installer {
1146
1246
  // Track the installed file
1147
1247
  this.installedFiles.add(outputPath);
1148
1248
 
1149
- if (process.env.BMAD_VERBOSE_INSTALL === 'true') {
1249
+ if (process.env.WIZZ_VERBOSE_INSTALL === 'true') {
1150
1250
  await prompts.log.message(` Generated wizz-help.csv: ${sortedRows.length} workflows`);
1151
1251
  }
1152
1252
  }
@@ -1154,7 +1254,7 @@ class Installer {
1154
1254
  /**
1155
1255
  * Render a consolidated install summary using prompts.note()
1156
1256
  * @param {Array} results - Array of {step, status: 'ok'|'error'|'warn', detail}
1157
- * @param {Object} context - {bmadDir, modules, ides, customFiles, modifiedFiles}
1257
+ * @param {Object} context - {wizzDir, modules, ides, customFiles, modifiedFiles}
1158
1258
  */
1159
1259
  async renderInstallSummary(results, context = {}) {
1160
1260
  const color = await prompts.getColor();
@@ -1216,8 +1316,8 @@ class Installer {
1216
1316
 
1217
1317
  // Context and warnings
1218
1318
  lines.push('');
1219
- if (context.bmadDir) {
1220
- lines.push(` Installed to: ${context.bmadDir}`);
1319
+ if (context.wizzDir) {
1320
+ lines.push(` Installed to: ${context.wizzDir}`);
1221
1321
  }
1222
1322
  if (context.customFiles && context.customFiles.length > 0) {
1223
1323
  lines.push(` ${color.cyan(`Custom files preserved: ${context.customFiles.length}`)}`);
@@ -1250,18 +1350,18 @@ class Installer {
1250
1350
  */
1251
1351
  async quickUpdate(config) {
1252
1352
  const projectDir = path.resolve(config.directory);
1253
- const { bmadDir } = await this.findBmadDir(projectDir);
1353
+ const { wizzDir } = await this.findWizzDir(projectDir);
1254
1354
 
1255
- // Check if bmad directory exists
1256
- if (!(await fs.pathExists(bmadDir))) {
1257
- throw new Error(`Wizz not installed at ${bmadDir}. Use regular install for first-time setup.`);
1355
+ // Check if wizz directory exists
1356
+ if (!(await fs.pathExists(wizzDir))) {
1357
+ throw new Error(`Wizz not installed at ${wizzDir}. Use regular install for first-time setup.`);
1258
1358
  }
1259
1359
 
1260
1360
  // Detect existing installation
1261
- const existingInstall = await ExistingInstall.detect(bmadDir);
1361
+ const existingInstall = await ExistingInstall.detect(wizzDir);
1262
1362
  const installedModules = existingInstall.moduleIds;
1263
1363
  const configuredIdes = existingInstall.ides;
1264
- const projectRoot = path.dirname(bmadDir);
1364
+ const projectRoot = path.dirname(wizzDir);
1265
1365
 
1266
1366
  // Get available modules (what we have source for)
1267
1367
  const availableModulesData = await new OfficialModules().listAvailable();
@@ -1285,7 +1385,7 @@ class Installer {
1285
1385
  const customMgr = new CustomModuleManager();
1286
1386
  for (const moduleId of installedModules) {
1287
1387
  if (!availableModules.some((m) => m.id === moduleId)) {
1288
- const customSource = await customMgr.findModuleSourceByCode(moduleId, { bmadDir });
1388
+ const customSource = await customMgr.findModuleSourceByCode(moduleId, { wizzDir });
1289
1389
  if (customSource) {
1290
1390
  availableModules.push({
1291
1391
  id: moduleId,
@@ -1313,7 +1413,7 @@ class Installer {
1313
1413
  // silently redecide it. Without this, modules previously on 'next' or
1314
1414
  // 'pinned' would trigger a stable-channel tag lookup at config-collection
1315
1415
  // time, burning GitHub API quota and potentially failing.
1316
- const manifestData = await this.manifest.read(bmadDir);
1416
+ const manifestData = await this.manifest.read(wizzDir);
1317
1417
  const channelOptions = { global: null, nextSet: new Set(), pins: new Map(), warnings: [] };
1318
1418
  if (manifestData?.modulesDetailed) {
1319
1419
  const { fetchStableTags, classifyUpgrade, parseGitHubRepo } = require('../modules/channel-resolver');
@@ -1418,7 +1518,7 @@ class Installer {
1418
1518
  }
1419
1519
 
1420
1520
  /**
1421
- * Uninstall BMAD with selective removal options
1521
+ * Uninstall WIZZ with selective removal options
1422
1522
  * @param {string} directory - Project directory
1423
1523
  * @param {Object} options - Uninstall options
1424
1524
  * @param {boolean} [options.removeModules=true] - Remove _wizz/ directory
@@ -1428,15 +1528,15 @@ class Installer {
1428
1528
  */
1429
1529
  async uninstall(directory, options = {}) {
1430
1530
  const projectDir = path.resolve(directory);
1431
- const { bmadDir } = await this.findBmadDir(projectDir);
1531
+ const { wizzDir } = await this.findWizzDir(projectDir);
1432
1532
 
1433
- if (!(await fs.pathExists(bmadDir))) {
1533
+ if (!(await fs.pathExists(wizzDir))) {
1434
1534
  return { success: false, reason: 'not-installed' };
1435
1535
  }
1436
1536
 
1437
1537
  // 1. DETECT: Read state BEFORE deleting anything
1438
- const existingInstall = await ExistingInstall.detect(bmadDir);
1439
- const outputFolder = await this._readOutputFolder(bmadDir);
1538
+ const existingInstall = await ExistingInstall.detect(wizzDir);
1539
+ const outputFolder = await this._readOutputFolder(wizzDir);
1440
1540
 
1441
1541
  const removed = { modules: false, ideConfigs: false, outputFolder: false };
1442
1542
 
@@ -1451,7 +1551,7 @@ class Installer {
1451
1551
  removed.outputFolder = await this.uninstallOutputFolder(projectDir, outputFolder);
1452
1552
  }
1453
1553
 
1454
- // 4. BMAD DIRECTORY (last, after everything that needs it)
1554
+ // 4. WIZZ DIRECTORY (last, after everything that needs it)
1455
1555
  if (options.removeModules !== false) {
1456
1556
  removed.modules = await this.uninstallModules(projectDir);
1457
1557
  }
@@ -1502,9 +1602,9 @@ class Installer {
1502
1602
  * @returns {Promise<boolean>} Whether the directory was removed
1503
1603
  */
1504
1604
  async uninstallModules(projectDir) {
1505
- const { bmadDir } = await this.findBmadDir(projectDir);
1506
- if (await fs.pathExists(bmadDir)) {
1507
- await fs.remove(bmadDir);
1605
+ const { wizzDir } = await this.findWizzDir(projectDir);
1606
+ if (await fs.pathExists(wizzDir)) {
1607
+ await fs.remove(wizzDir);
1508
1608
  return true;
1509
1609
  }
1510
1610
  return false;
@@ -1515,8 +1615,8 @@ class Installer {
1515
1615
  */
1516
1616
  async getStatus(directory) {
1517
1617
  const projectDir = path.resolve(directory);
1518
- const { bmadDir } = await this.findBmadDir(projectDir);
1519
- return await ExistingInstall.detect(bmadDir);
1618
+ const { wizzDir } = await this.findWizzDir(projectDir);
1619
+ return await ExistingInstall.detect(wizzDir);
1520
1620
  }
1521
1621
 
1522
1622
  /**
@@ -1528,37 +1628,37 @@ class Installer {
1528
1628
 
1529
1629
  /**
1530
1630
  * Get the configured output folder name for a project
1531
- * Resolves bmadDir internally from projectDir
1631
+ * Resolves wizzDir internally from projectDir
1532
1632
  * @param {string} projectDir - Project directory
1533
1633
  * @returns {string} Output folder name (relative, default: '_wizz-output')
1534
1634
  */
1535
1635
  async getOutputFolder(projectDir) {
1536
- const { bmadDir } = await this.findBmadDir(projectDir);
1537
- return this._readOutputFolder(bmadDir);
1636
+ const { wizzDir } = await this.findWizzDir(projectDir);
1637
+ return this._readOutputFolder(wizzDir);
1538
1638
  }
1539
1639
 
1540
1640
  /**
1541
- * Find the bmad installation directory in a project
1641
+ * Find the wizz installation directory in a project
1542
1642
  * Always uses the standard _wizz folder name
1543
1643
  * @param {string} projectDir - Project directory
1544
- * @returns {Promise<Object>} { bmadDir: string }
1644
+ * @returns {Promise<Object>} { wizzDir: string }
1545
1645
  */
1546
- async findBmadDir(projectDir) {
1547
- const bmadDir = path.join(projectDir, BMAD_FOLDER_NAME);
1548
- return { bmadDir };
1646
+ async findWizzDir(projectDir) {
1647
+ const wizzDir = path.join(projectDir, WIZZ_FOLDER_NAME);
1648
+ return { wizzDir };
1549
1649
  }
1550
1650
 
1551
1651
  /**
1552
1652
  * Read the output_folder setting from module config files
1553
1653
  * Checks bmm/config.yaml first, then other module configs
1554
- * @param {string} bmadDir - BMAD installation directory
1654
+ * @param {string} wizzDir - WIZZ installation directory
1555
1655
  * @returns {string} Output folder path or default
1556
1656
  */
1557
- async _readOutputFolder(bmadDir) {
1657
+ async _readOutputFolder(wizzDir) {
1558
1658
  const yaml = require('yaml');
1559
1659
 
1560
1660
  // Check bmm/config.yaml first (most common)
1561
- const bmmConfigPath = path.join(bmadDir, 'bmm', 'config.yaml');
1661
+ const bmmConfigPath = path.join(wizzDir, 'bmm', 'config.yaml');
1562
1662
  if (await fs.pathExists(bmmConfigPath)) {
1563
1663
  try {
1564
1664
  const content = await fs.readFile(bmmConfigPath, 'utf8');
@@ -1574,10 +1674,10 @@ class Installer {
1574
1674
 
1575
1675
  // Scan other module config.yaml files
1576
1676
  try {
1577
- const entries = await fs.readdir(bmadDir, { withFileTypes: true });
1677
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
1578
1678
  for (const entry of entries) {
1579
1679
  if (!entry.isDirectory() || entry.name === 'bmm' || entry.name.startsWith('_')) continue;
1580
- const configPath = path.join(bmadDir, entry.name, 'config.yaml');
1680
+ const configPath = path.join(wizzDir, entry.name, 'config.yaml');
1581
1681
  if (await fs.pathExists(configPath)) {
1582
1682
  try {
1583
1683
  const content = await fs.readFile(configPath, 'utf8');