wizz-method 1.4.1 → 1.5.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 (574) hide show
  1. package/README.md +6 -4
  2. package/package.json +39 -3
  3. package/skills-registry.yaml +102 -7
  4. package/src/bmm-skills/4-implementation/wizz-code-review/SKILL.md +2 -0
  5. package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +5 -2
  6. package/src/core-skills/_shared/handoff-protocol.md +61 -0
  7. package/src/core-skills/wizz-customize/SKILL.md +2 -2
  8. package/src/core-skills/wizz-party-mode/references/mode-agent-team.md +1 -1
  9. package/src/core-skills/wizz-party-mode/references/mode-subagent.md +1 -1
  10. package/src/core-skills/wizz-review-adversarial-general/SKILL.md +2 -0
  11. package/src/modules/wizz/README.md +3 -3
  12. package/src/modules/wizz/_shared/communication-rules.md +13 -0
  13. package/src/modules/wizz/_shared/encerramento.md +2 -2
  14. package/src/modules/wizz/agents/wizz-ads/customize.toml +5 -3
  15. package/src/modules/wizz/agents/wizz-copy/customize.toml +5 -3
  16. package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
  17. package/src/modules/wizz/agents/wizz-designer/customize.toml +6 -4
  18. package/src/modules/wizz/agents/wizz-growth/customize.toml +11 -3
  19. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +9 -5
  20. package/src/modules/wizz/agents/wizz-maestro/customize.toml +5 -7
  21. package/src/modules/wizz/agents/wizz-memoria/customize.toml +2 -4
  22. package/src/modules/wizz/agents/wizz-qa/SKILL.md +5 -5
  23. package/src/modules/wizz/agents/wizz-qa/customize.toml +9 -7
  24. package/src/modules/wizz/agents/wizz-seo/customize.toml +5 -3
  25. package/src/modules/wizz/agents/wizz-social/customize.toml +9 -8
  26. package/src/modules/wizz/module.yaml +1 -1
  27. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +4 -5
  28. package/src/modules/wizz/overrides/wizz-agent-architect.toml +11 -3
  29. package/src/modules/wizz/overrides/wizz-agent-dev.toml +6 -4
  30. package/src/modules/wizz/overrides/wizz-agent-pm.toml +4 -2
  31. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +3 -5
  32. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +4 -2
  33. package/src/modules/wizz/scripts/wizz-init.mjs +3 -1
  34. package/src/scripts/__pycache__/resolve_customization.cpython-314.pyc +0 -0
  35. package/src/scripts/memlog.py +9 -0
  36. package/src/scripts/resolve_customization.py +93 -3
  37. package/src/skills-lib/adversarial-reviewer/SKILL.md +2 -0
  38. package/src/skills-lib/algorithmic-art/SKILL.md +29 -369
  39. package/src/skills-lib/algorithmic-art/references/interactive-artifact.md +139 -0
  40. package/src/skills-lib/algorithmic-art/references/p5js-implementation.md +121 -0
  41. package/src/skills-lib/algorithmic-art/references/philosophy-creation.md +88 -0
  42. package/src/skills-lib/canvas-design/SKILL.md +9 -38
  43. package/src/skills-lib/canvas-design/references/canvas-execution.md +21 -0
  44. package/src/skills-lib/canvas-design/references/philosophy-examples.md +25 -0
  45. package/src/skills-lib/cerebro/SKILL.md +8 -273
  46. package/src/skills-lib/cerebro/references/comandos-pesquisa-e-sync.md +44 -0
  47. package/src/skills-lib/cerebro/references/comandos-rotina-e-captura.md +94 -0
  48. package/src/skills-lib/cerebro/references/comandos-sessao.md +122 -0
  49. package/src/skills-lib/content-strategy/SKILL.md +12 -316
  50. package/src/skills-lib/content-strategy/references/content-types.md +52 -0
  51. package/src/skills-lib/content-strategy/references/ideation-sources.md +78 -0
  52. package/src/skills-lib/content-strategy/references/pillars-and-keywords.md +78 -0
  53. package/src/skills-lib/content-strategy/references/prioritization-and-output.md +57 -0
  54. package/src/skills-lib/decision-maker/SKILL.md +13 -466
  55. package/src/skills-lib/decision-maker/references/commands-and-edge-cases.md +40 -0
  56. package/src/skills-lib/decision-maker/references/output-format.md +161 -0
  57. package/src/skills-lib/decision-maker/references/references-and-extraction.md +129 -0
  58. package/src/skills-lib/decision-maker/references/six-decisions.md +122 -0
  59. package/src/skills-lib/decision-maker/references/wizz-method-handoff.md +22 -0
  60. package/src/skills-lib/find-skills/SKILL.md +9 -6
  61. package/src/skills-lib/form-cro/SKILL.md +12 -390
  62. package/src/skills-lib/form-cro/references/experiments.md +73 -0
  63. package/src/skills-lib/form-cro/references/field-optimization.md +92 -0
  64. package/src/skills-lib/form-cro/references/flow-and-errors.md +71 -0
  65. package/src/skills-lib/form-cro/references/measurement-output.md +41 -0
  66. package/src/skills-lib/form-cro/references/trust-and-form-types.md +54 -0
  67. package/src/skills-lib/graphify/SKILL.md +2 -20
  68. package/src/skills-lib/huashu-design/SKILL.md +42 -596
  69. package/src/skills-lib/huashu-design/references/anti-slop-principles.md +62 -0
  70. package/src/skills-lib/huashu-design/references/audio-design-rules.md +1 -1
  71. package/src/skills-lib/huashu-design/references/cross-agent-adaptation.md +14 -0
  72. package/src/skills-lib/huashu-design/references/design-direction-fallback.md +113 -0
  73. package/src/skills-lib/huashu-design/references/exception-handling.md +18 -0
  74. package/src/skills-lib/huashu-design/references/fact-verification.md +36 -0
  75. package/src/skills-lib/huashu-design/references/ios-prototype.md +146 -0
  76. package/src/skills-lib/huashu-design/references/sfx-library.md +7 -0
  77. package/src/skills-lib/huashu-design/references/starter-components.md +24 -0
  78. package/src/skills-lib/huashu-design/references/video-export.md +1 -1
  79. package/src/skills-lib/huashu-design/references/watermark-policy.md +23 -0
  80. package/src/skills-lib/huashu-design/scripts/add-music.sh +12 -1
  81. package/src/skills-lib/huashu-design/scripts/mix-voiceover.sh +11 -0
  82. package/src/skills-lib/humanizer/SKILL.md +23 -431
  83. package/src/skills-lib/humanizer/references/ai-writing-patterns.md +314 -0
  84. package/src/skills-lib/humanizer/references/full-example.md +72 -0
  85. package/src/skills-lib/humanizer/references/personality-and-soul.md +36 -0
  86. package/src/skills-lib/impeccable/SKILL.md +37 -153
  87. package/src/skills-lib/impeccable/references/design-rules.md +95 -0
  88. package/src/skills-lib/impeccable/references/pin-unpin-and-hooks.md +17 -0
  89. package/src/skills-lib/impeccable/references/routing-rules.md +28 -0
  90. package/src/skills-lib/implementation-planner/SKILL.md +22 -529
  91. package/src/skills-lib/implementation-planner/references/folder-structure-and-dependencies.md +132 -0
  92. package/src/skills-lib/implementation-planner/references/handoff-template.md +34 -0
  93. package/src/skills-lib/implementation-planner/references/implementation-phases.md +54 -0
  94. package/src/skills-lib/implementation-planner/references/implementation-types.md +28 -0
  95. package/src/skills-lib/implementation-planner/references/motion-path-implementation.md +57 -0
  96. package/src/skills-lib/implementation-planner/references/output-templates.md +92 -0
  97. package/src/skills-lib/implementation-planner/references/performance-plan.md +52 -0
  98. package/src/skills-lib/inicio-de-projeto/SKILL.md +4 -224
  99. package/src/skills-lib/inicio-de-projeto/references/implementacao-api-forms.md +112 -0
  100. package/src/skills-lib/inicio-de-projeto/references/padroes-arquiteturais-e-pastas.md +71 -0
  101. package/src/skills-lib/inicio-de-projeto/references/seguranca-e-regras-codigo.md +26 -0
  102. package/src/skills-lib/launch-strategy/SKILL.md +9 -311
  103. package/src/skills-lib/launch-strategy/references/five-phase-approach.md +76 -0
  104. package/src/skills-lib/launch-strategy/references/launch-checklist.md +34 -0
  105. package/src/skills-lib/launch-strategy/references/orb-framework.md +76 -0
  106. package/src/skills-lib/launch-strategy/references/post-launch-and-ongoing.md +64 -0
  107. package/src/skills-lib/launch-strategy/references/product-hunt-strategy.md +52 -0
  108. package/src/skills-lib/marketing-psychology/SKILL.md +18 -401
  109. package/src/skills-lib/marketing-psychology/references/design-and-delivery-models.md +56 -0
  110. package/src/skills-lib/marketing-psychology/references/foundational-thinking-models.md +76 -0
  111. package/src/skills-lib/marketing-psychology/references/growth-and-scaling-models.md +46 -0
  112. package/src/skills-lib/marketing-psychology/references/influencing-behavior.md +71 -0
  113. package/src/skills-lib/marketing-psychology/references/pricing-psychology.md +31 -0
  114. package/src/skills-lib/marketing-psychology/references/understanding-buyers.md +116 -0
  115. package/src/skills-lib/motion-3d-director/SKILL.md +23 -370
  116. package/src/skills-lib/motion-3d-director/references/image-to-video-workflow.md +166 -0
  117. package/src/skills-lib/motion-3d-director/references/motion-paths.md +119 -0
  118. package/src/skills-lib/motion-3d-director/references/performance-and-handoff.md +51 -0
  119. package/src/skills-lib/popup-cro/SKILL.md +11 -414
  120. package/src/skills-lib/popup-cro/references/design-copy-compliance.md +81 -0
  121. package/src/skills-lib/popup-cro/references/experiments.md +82 -0
  122. package/src/skills-lib/popup-cro/references/rules-measurement-output.md +87 -0
  123. package/src/skills-lib/popup-cro/references/triggers-and-popup-types.md +108 -0
  124. package/src/skills-lib/signup-flow-cro/SKILL.md +13 -321
  125. package/src/skills-lib/signup-flow-cro/references/experiments.md +72 -0
  126. package/src/skills-lib/signup-flow-cro/references/field-optimization.md +49 -0
  127. package/src/skills-lib/signup-flow-cro/references/flow-structure.md +38 -0
  128. package/src/skills-lib/signup-flow-cro/references/measurement-output-patterns.md +62 -0
  129. package/src/skills-lib/signup-flow-cro/references/trust-and-post-submit.md +40 -0
  130. package/src/skills-lib/taste-redesign/SKILL.md +10 -146
  131. package/src/skills-lib/taste-redesign/references/design-audit.md +120 -0
  132. package/src/skills-lib/taste-redesign/references/upgrade-techniques.md +31 -0
  133. package/src/skills-lib/ui-ux-pro-max/SKILL.md +9 -353
  134. package/src/skills-lib/ui-ux-pro-max/references/common-rules-checklist.md +76 -0
  135. package/src/skills-lib/ui-ux-pro-max/references/rules-quick-reference.md +70 -0
  136. package/src/skills-lib/ui-ux-pro-max/references/search-reference.md +45 -0
  137. package/src/skills-lib/ui-ux-pro-max/references/workflow-guide.md +157 -0
  138. package/src/skills-lib/web-security/SKILL.md +13 -187
  139. package/src/skills-lib/web-security/references/checklist-deploy.md +52 -0
  140. package/src/skills-lib/web-security/references/headers-rate-limit-cors.md +78 -0
  141. package/src/skills-lib/web-security/references/owasp-top5-detalhado.md +51 -0
  142. package/src/skills-lib/wizz-router/SKILL.md +20 -9
  143. package/src/skills-lib/wizz-router/references/auditoria-360.md +4 -4
  144. package/src/skills-lib/wizz-router/references/routing-table-flat.md +15 -15
  145. package/tools/fetch-assets.mjs +277 -0
  146. package/tools/installer/commands/fetch-assets.js +71 -0
  147. package/tools/installer/commands/install.js +35 -3
  148. package/tools/installer/commands/trace-report.js +131 -0
  149. package/tools/installer/core/config.js +9 -0
  150. package/tools/installer/core/help-catalog.js +181 -0
  151. package/tools/installer/core/install-paths.js +48 -3
  152. package/tools/installer/core/installer.js +253 -618
  153. package/tools/installer/core/manifest-generator.js +8 -1
  154. package/tools/installer/core/manifest.js +67 -22
  155. package/tools/installer/core/module-config-writer.js +110 -0
  156. package/tools/installer/core/preflight-tools-check.js +82 -0
  157. package/tools/installer/core/quick-update.js +209 -0
  158. package/tools/installer/core/user-file-preservation.js +250 -0
  159. package/tools/installer/modules/channel-resolver.js +34 -2
  160. package/tools/installer/modules/cli-config.js +127 -34
  161. package/tools/installer/modules/deps-cache.js +28 -1
  162. package/tools/installer/modules/env-vars.js +446 -0
  163. package/tools/installer/modules/external-manager.js +40 -6
  164. package/tools/installer/modules/mcp-config.js +180 -37
  165. package/tools/installer/modules/module-help-schema.js +2 -1
  166. package/tools/installer/modules/official-modules.js +1 -1
  167. package/tools/installer/modules/registry-resolve.js +74 -0
  168. package/tools/installer/modules/skills-lib.js +11 -15
  169. package/tools/installer/ui.js +71 -5
  170. package/wizz-modules.yaml +15 -5
  171. package/.claude-plugin/marketplace.json +0 -80
  172. package/AGENTS.md +0 -12
  173. package/build/artifacts/llms-full.txt +0 -4049
  174. package/build/artifacts/llms.txt +0 -28
  175. package/build/site/404.html +0 -55
  176. package/build/site/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.hwBsy0Mo.js +0 -1
  177. package/build/site/_astro/Search.astro_astro_type_script_index_0_lang.cjYDvRdi.js +0 -1
  178. package/build/site/_astro/TableOfContents.astro_astro_type_script_index_0_lang.FuRcXuRY.js +0 -1
  179. package/build/site/_astro/ec.0vx5m.js +0 -3
  180. package/build/site/_astro/ec.v4551.css +0 -1
  181. package/build/site/_astro/index.DdjI3lF_.css +0 -1
  182. package/build/site/_astro/page.B1D-nYk3.js +0 -1
  183. package/build/site/_astro/print.DNXP8c50.css +0 -1
  184. package/build/site/_astro/ui-core.D_Lfcn_I.js +0 -2
  185. package/build/site/diagrams/checkpoint-preview-diagram-fr.webp +0 -0
  186. package/build/site/diagrams/checkpoint-preview-diagram.png +0 -0
  187. package/build/site/diagrams/quick-dev-diagram-fr.webp +0 -0
  188. package/build/site/diagrams/quick-dev-diagram.png +0 -0
  189. package/build/site/explanation/advanced-elicitation/index.html +0 -105
  190. package/build/site/explanation/adversarial-review/index.html +0 -109
  191. package/build/site/explanation/analysis-phase/index.html +0 -129
  192. package/build/site/explanation/brainstorming/index.html +0 -92
  193. package/build/site/explanation/checkpoint-preview/index.html +0 -121
  194. package/build/site/explanation/established-projects-faq/index.html +0 -107
  195. package/build/site/explanation/forensic-investigation/index.html +0 -167
  196. package/build/site/explanation/named-agents/index.html +0 -187
  197. package/build/site/explanation/party-mode/index.html +0 -256
  198. package/build/site/explanation/preventing-agent-conflicts/index.html +0 -185
  199. package/build/site/explanation/project-context/index.html +0 -198
  200. package/build/site/explanation/quick-dev/index.html +0 -113
  201. package/build/site/explanation/web-bundles/index.html +0 -178
  202. package/build/site/explanation/why-solutioning-matters/index.html +0 -168
  203. package/build/site/how-to/customize-wizz/index.html +0 -277
  204. package/build/site/how-to/established-projects/index.html +0 -165
  205. package/build/site/how-to/expand-wizz-for-your-org/index.html +0 -245
  206. package/build/site/how-to/get-answers-about-wizz/index.html +0 -129
  207. package/build/site/how-to/install-custom-modules/index.html +0 -197
  208. package/build/site/how-to/install-wizz/index.html +0 -330
  209. package/build/site/how-to/non-interactive-installation/index.html +0 -73
  210. package/build/site/how-to/project-context/index.html +0 -141
  211. package/build/site/how-to/quick-fixes/index.html +0 -122
  212. package/build/site/how-to/shard-large-documents/index.html +0 -103
  213. package/build/site/how-to/upgrade-to-v6/index.html +0 -185
  214. package/build/site/how-to/use-web-bundles/index.html +0 -99
  215. package/build/site/img/wizz-dark.png +0 -0
  216. package/build/site/img/wizz-light.png +0 -0
  217. package/build/site/index.html +0 -128
  218. package/build/site/llms-full.txt +0 -4049
  219. package/build/site/llms.txt +0 -28
  220. package/build/site/pagefind/fragment/en_175de32.pf_fragment +0 -0
  221. package/build/site/pagefind/fragment/en_24258fb.pf_fragment +0 -0
  222. package/build/site/pagefind/fragment/en_24f53a6.pf_fragment +0 -0
  223. package/build/site/pagefind/fragment/en_27ba8f9.pf_fragment +0 -0
  224. package/build/site/pagefind/fragment/en_296ddb9.pf_fragment +0 -0
  225. package/build/site/pagefind/fragment/en_2b5aa5c.pf_fragment +0 -0
  226. package/build/site/pagefind/fragment/en_49047e0.pf_fragment +0 -0
  227. package/build/site/pagefind/fragment/en_4a187d2.pf_fragment +0 -0
  228. package/build/site/pagefind/fragment/en_514725b.pf_fragment +0 -0
  229. package/build/site/pagefind/fragment/en_583316f.pf_fragment +0 -0
  230. package/build/site/pagefind/fragment/en_6465dfb.pf_fragment +0 -0
  231. package/build/site/pagefind/fragment/en_67825a4.pf_fragment +0 -0
  232. package/build/site/pagefind/fragment/en_82aec61.pf_fragment +0 -0
  233. package/build/site/pagefind/fragment/en_85dcebf.pf_fragment +0 -0
  234. package/build/site/pagefind/fragment/en_887ce56.pf_fragment +0 -0
  235. package/build/site/pagefind/fragment/en_89a1a7a.pf_fragment +0 -0
  236. package/build/site/pagefind/fragment/en_8ade291.pf_fragment +0 -0
  237. package/build/site/pagefind/fragment/en_8c11f8a.pf_fragment +0 -0
  238. package/build/site/pagefind/fragment/en_8c1bde3.pf_fragment +0 -0
  239. package/build/site/pagefind/fragment/en_92d7cc7.pf_fragment +0 -0
  240. package/build/site/pagefind/fragment/en_94bfc21.pf_fragment +0 -0
  241. package/build/site/pagefind/fragment/en_9b57d7d.pf_fragment +0 -0
  242. package/build/site/pagefind/fragment/en_ab62b53.pf_fragment +0 -0
  243. package/build/site/pagefind/fragment/en_b0d23ee.pf_fragment +0 -0
  244. package/build/site/pagefind/fragment/en_ba9fb37.pf_fragment +0 -0
  245. package/build/site/pagefind/fragment/en_bb113eb.pf_fragment +0 -0
  246. package/build/site/pagefind/fragment/en_bfc56b6.pf_fragment +0 -0
  247. package/build/site/pagefind/fragment/en_c6d9e48.pf_fragment +0 -0
  248. package/build/site/pagefind/fragment/en_cdd772f.pf_fragment +0 -0
  249. package/build/site/pagefind/fragment/en_cdd885c.pf_fragment +0 -0
  250. package/build/site/pagefind/fragment/en_cefed6a.pf_fragment +0 -0
  251. package/build/site/pagefind/fragment/en_d890205.pf_fragment +0 -0
  252. package/build/site/pagefind/fragment/en_da351b7.pf_fragment +0 -0
  253. package/build/site/pagefind/fragment/en_ea289f9.pf_fragment +0 -0
  254. package/build/site/pagefind/fragment/en_f1c3711.pf_fragment +0 -0
  255. package/build/site/pagefind/index/en_5b9d8c6.pf_index +0 -0
  256. package/build/site/pagefind/index/en_868614c.pf_index +0 -0
  257. package/build/site/pagefind/index/en_e4f9bff.pf_index +0 -0
  258. package/build/site/pagefind/pagefind-entry.json +0 -1
  259. package/build/site/pagefind/pagefind-highlight.js +0 -1064
  260. package/build/site/pagefind/pagefind-modular-ui.css +0 -214
  261. package/build/site/pagefind/pagefind-modular-ui.js +0 -8
  262. package/build/site/pagefind/pagefind-ui.css +0 -1
  263. package/build/site/pagefind/pagefind-ui.js +0 -2
  264. package/build/site/pagefind/pagefind.en_4e69d7f053.pf_meta +0 -0
  265. package/build/site/pagefind/pagefind.js +0 -6
  266. package/build/site/pagefind/wasm.en.pagefind +0 -0
  267. package/build/site/pagefind/wasm.unknown.pagefind +0 -0
  268. package/build/site/reference/agents/index.html +0 -168
  269. package/build/site/reference/commands/index.html +0 -254
  270. package/build/site/reference/core-tools/index.html +0 -384
  271. package/build/site/reference/modules/index.html +0 -132
  272. package/build/site/reference/testing/index.html +0 -218
  273. package/build/site/reference/workflow-map/index.html +0 -266
  274. package/build/site/roadmap/index.html +0 -77
  275. package/build/site/robots.txt +0 -37
  276. package/build/site/sitemap-0.xml +0 -1
  277. package/build/site/sitemap-index.xml +0 -1
  278. package/build/site/tutorials/getting-started/index.html +0 -386
  279. package/build/site/wizz-icon-orange.svg +0 -7
  280. package/build/site/workflow-map-diagram-fr.html +0 -375
  281. package/build/site/workflow-map-diagram.html +0 -375
  282. package/evals/bmm-skills/wizz-product-brief/evals.json +0 -237
  283. package/evals/bmm-skills/wizz-product-brief/files/branfield-memo.md +0 -46
  284. package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/addendum.md +0 -40
  285. package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/brief.md +0 -56
  286. package/evals/bmm-skills/wizz-product-brief/files/forkbird-brief/decision-log.md +0 -27
  287. package/evals/bmm-skills/wizz-product-brief/files/meridian-mobility-report.md +0 -116
  288. package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/addendum.md +0 -41
  289. package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/brief.md +0 -57
  290. package/evals/bmm-skills/wizz-product-brief/files/mossridge-brief/decision-log.md +0 -29
  291. package/evals/bmm-skills/wizz-product-brief/files/pantry-bridge-interviews.md +0 -90
  292. package/evals/bmm-skills/wizz-product-brief/files/q2-brainstorm.md +0 -101
  293. package/evals/bmm-skills/wizz-product-brief/triggers.json +0 -18
  294. package/evals/routing/dataset.json +0 -290
  295. package/evals/routing/run-routing-eval.mjs +0 -89
  296. package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  297. package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  298. package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  299. package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  300. package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  301. package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  302. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  303. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  304. package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  305. package/src/skills-lib/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  306. package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  307. package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  308. package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  309. package/src/skills-lib/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  310. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  311. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  312. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  313. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  314. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  315. package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  316. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  317. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  318. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  319. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  320. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  321. package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  322. package/src/skills-lib/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  323. package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  324. package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  325. package/src/skills-lib/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  326. package/src/skills-lib/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  327. package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  328. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  329. package/src/skills-lib/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  330. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  331. package/src/skills-lib/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  332. package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  333. package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  334. package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  335. package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  336. package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  337. package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  338. package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  339. package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  340. package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  341. package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  342. package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  343. package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  344. package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  345. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  346. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  347. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  348. package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  349. package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  350. package/src/skills-lib/huashu-design/assets/bgm-ad.mp3 +0 -0
  351. package/src/skills-lib/huashu-design/assets/bgm-educational-alt.mp3 +0 -0
  352. package/src/skills-lib/huashu-design/assets/bgm-educational.mp3 +0 -0
  353. package/src/skills-lib/huashu-design/assets/bgm-tech.mp3 +0 -0
  354. package/src/skills-lib/huashu-design/assets/bgm-tutorial-alt.mp3 +0 -0
  355. package/src/skills-lib/huashu-design/assets/bgm-tutorial.mp3 +0 -0
  356. package/src/skills-lib/huashu-design/assets/sfx/container/card-flip.mp3 +0 -0
  357. package/src/skills-lib/huashu-design/assets/sfx/container/card-snap.mp3 +0 -0
  358. package/src/skills-lib/huashu-design/assets/sfx/container/modal-open.mp3 +0 -0
  359. package/src/skills-lib/huashu-design/assets/sfx/container/stack-collapse.mp3 +0 -0
  360. package/src/skills-lib/huashu-design/assets/sfx/feedback/achievement.mp3 +0 -0
  361. package/src/skills-lib/huashu-design/assets/sfx/feedback/error-tone.mp3 +0 -0
  362. package/src/skills-lib/huashu-design/assets/sfx/feedback/notification-pop.mp3 +0 -0
  363. package/src/skills-lib/huashu-design/assets/sfx/feedback/success-chime.mp3 +0 -0
  364. package/src/skills-lib/huashu-design/assets/sfx/impact/brand-stamp.mp3 +0 -0
  365. package/src/skills-lib/huashu-design/assets/sfx/impact/drop-thud.mp3 +0 -0
  366. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal-v2.mp3 +0 -0
  367. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal.mp3 +0 -0
  368. package/src/skills-lib/huashu-design/assets/sfx/keyboard/delete-key.mp3 +0 -0
  369. package/src/skills-lib/huashu-design/assets/sfx/keyboard/enter.mp3 +0 -0
  370. package/src/skills-lib/huashu-design/assets/sfx/keyboard/space-tap.mp3 +0 -0
  371. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type-fast.mp3 +0 -0
  372. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type.mp3 +0 -0
  373. package/src/skills-lib/huashu-design/assets/sfx/magic/ai-process.mp3 +0 -0
  374. package/src/skills-lib/huashu-design/assets/sfx/magic/sparkle.mp3 +0 -0
  375. package/src/skills-lib/huashu-design/assets/sfx/magic/transform.mp3 +0 -0
  376. package/src/skills-lib/huashu-design/assets/sfx/progress/complete-done.mp3 +0 -0
  377. package/src/skills-lib/huashu-design/assets/sfx/progress/generate-start.mp3 +0 -0
  378. package/src/skills-lib/huashu-design/assets/sfx/progress/loading-tick.mp3 +0 -0
  379. package/src/skills-lib/huashu-design/assets/sfx/terminal/command-execute.mp3 +0 -0
  380. package/src/skills-lib/huashu-design/assets/sfx/terminal/cursor-blink.mp3 +0 -0
  381. package/src/skills-lib/huashu-design/assets/sfx/terminal/output-appear.mp3 +0 -0
  382. package/src/skills-lib/huashu-design/assets/sfx/transition/dissolve.mp3 +0 -0
  383. package/src/skills-lib/huashu-design/assets/sfx/transition/slide-in.mp3 +0 -0
  384. package/src/skills-lib/huashu-design/assets/sfx/transition/swipe-horizontal.mp3 +0 -0
  385. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh-fast.mp3 +0 -0
  386. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh.mp3 +0 -0
  387. package/src/skills-lib/huashu-design/assets/sfx/ui/click-soft.mp3 +0 -0
  388. package/src/skills-lib/huashu-design/assets/sfx/ui/click.mp3 +0 -0
  389. package/src/skills-lib/huashu-design/assets/sfx/ui/focus.mp3 +0 -0
  390. package/src/skills-lib/huashu-design/assets/sfx/ui/hover-subtle.mp3 +0 -0
  391. package/src/skills-lib/huashu-design/assets/sfx/ui/tap-finger.mp3 +0 -0
  392. package/src/skills-lib/huashu-design/assets/sfx/ui/toggle-on.mp3 +0 -0
  393. package/src/squads/README.md +0 -39
  394. package/src/squads/advisory-board/README.md +0 -34
  395. package/src/squads/advisory-board/agents/board-chair.md +0 -161
  396. package/src/squads/advisory-board/agents/brene-brown.md +0 -296
  397. package/src/squads/advisory-board/agents/charlie-munger.md +0 -590
  398. package/src/squads/advisory-board/agents/derek-sivers.md +0 -268
  399. package/src/squads/advisory-board/agents/naval-ravikant.md +0 -251
  400. package/src/squads/advisory-board/agents/patrick-lencioni.md +0 -394
  401. package/src/squads/advisory-board/agents/peter-thiel.md +0 -269
  402. package/src/squads/advisory-board/agents/ray-dalio.md +0 -567
  403. package/src/squads/advisory-board/agents/reid-hoffman.md +0 -278
  404. package/src/squads/advisory-board/agents/simon-sinek.md +0 -291
  405. package/src/squads/advisory-board/agents/yvon-chouinard.md +0 -275
  406. package/src/squads/advisory-board/squad.yaml +0 -50
  407. package/src/squads/brand-squad/README.md +0 -60
  408. package/src/squads/brand-squad/agents/al-ries.md +0 -175
  409. package/src/squads/brand-squad/agents/alina-wheeler.md +0 -184
  410. package/src/squads/brand-squad/agents/archetype-consultant.md +0 -215
  411. package/src/squads/brand-squad/agents/brand-chief.md +0 -158
  412. package/src/squads/brand-squad/agents/byron-sharp.md +0 -169
  413. package/src/squads/brand-squad/agents/david-aaker.md +0 -166
  414. package/src/squads/brand-squad/agents/denise-yohn.md +0 -172
  415. package/src/squads/brand-squad/agents/domain-scout.md +0 -135
  416. package/src/squads/brand-squad/agents/donald-miller.md +0 -179
  417. package/src/squads/brand-squad/agents/emily-heyward.md +0 -147
  418. package/src/squads/brand-squad/agents/jean-noel-kapferer.md +0 -189
  419. package/src/squads/brand-squad/agents/kevin-keller.md +0 -199
  420. package/src/squads/brand-squad/agents/marty-neumeier.md +0 -170
  421. package/src/squads/brand-squad/agents/miller-sticky-brand.md +0 -180
  422. package/src/squads/brand-squad/agents/naming-strategist.md +0 -171
  423. package/src/squads/brand-squad/squad.yaml +0 -117
  424. package/src/squads/c-level-squad/README.md +0 -29
  425. package/src/squads/c-level-squad/agents/caio-architect.md +0 -235
  426. package/src/squads/c-level-squad/agents/cio-engineer.md +0 -209
  427. package/src/squads/c-level-squad/agents/cmo-architect.md +0 -208
  428. package/src/squads/c-level-squad/agents/coo-orchestrator.md +0 -193
  429. package/src/squads/c-level-squad/agents/cto-architect.md +0 -194
  430. package/src/squads/c-level-squad/agents/vision-chief.md +0 -201
  431. package/src/squads/c-level-squad/squad.yaml +0 -45
  432. package/src/squads/claude-code-mastery/README.md +0 -146
  433. package/src/squads/claude-code-mastery/agents/claude-mastery-chief.md +0 -554
  434. package/src/squads/claude-code-mastery/agents/config-engineer.md +0 -865
  435. package/src/squads/claude-code-mastery/agents/hooks-architect.md +0 -1013
  436. package/src/squads/claude-code-mastery/agents/mcp-integrator.md +0 -791
  437. package/src/squads/claude-code-mastery/agents/project-integrator.md +0 -1196
  438. package/src/squads/claude-code-mastery/agents/roadmap-sentinel.md +0 -931
  439. package/src/squads/claude-code-mastery/agents/skill-craftsman.md +0 -1250
  440. package/src/squads/claude-code-mastery/agents/swarm-orchestrator.md +0 -1008
  441. package/src/squads/copy-squad/README.md +0 -65
  442. package/src/squads/copy-squad/agents/andre-chaperon.md +0 -206
  443. package/src/squads/copy-squad/agents/ben-settle.md +0 -194
  444. package/src/squads/copy-squad/agents/claude-hopkins.md +0 -182
  445. package/src/squads/copy-squad/agents/clayton-makepeace.md +0 -225
  446. package/src/squads/copy-squad/agents/copy-chief.md +0 -166
  447. package/src/squads/copy-squad/agents/dan-kennedy.md +0 -202
  448. package/src/squads/copy-squad/agents/dan-koe.md +0 -223
  449. package/src/squads/copy-squad/agents/david-deutsch.md +0 -197
  450. package/src/squads/copy-squad/agents/david-ogilvy.md +0 -198
  451. package/src/squads/copy-squad/agents/eugene-schwartz.md +0 -238
  452. package/src/squads/copy-squad/agents/frank-kern.md +0 -195
  453. package/src/squads/copy-squad/agents/gary-bencivenga.md +0 -197
  454. package/src/squads/copy-squad/agents/gary-halbert.md +0 -219
  455. package/src/squads/copy-squad/agents/jim-rutz.md +0 -193
  456. package/src/squads/copy-squad/agents/joe-sugarman.md +0 -234
  457. package/src/squads/copy-squad/agents/john-carlton.md +0 -203
  458. package/src/squads/copy-squad/agents/jon-benson.md +0 -196
  459. package/src/squads/copy-squad/agents/parris-lampropoulos.md +0 -188
  460. package/src/squads/copy-squad/agents/robert-collier.md +0 -183
  461. package/src/squads/copy-squad/agents/russell-brunson.md +0 -229
  462. package/src/squads/copy-squad/agents/ry-schwartz.md +0 -185
  463. package/src/squads/copy-squad/agents/stefan-georgi.md +0 -188
  464. package/src/squads/copy-squad/agents/todd-brown.md +0 -171
  465. package/src/squads/copy-squad/squad.yaml +0 -87
  466. package/src/squads/cybersecurity/README.md +0 -38
  467. package/src/squads/cybersecurity/agents/busterer.md +0 -108
  468. package/src/squads/cybersecurity/agents/cartographer.md +0 -114
  469. package/src/squads/cybersecurity/agents/chris-sanders.md +0 -205
  470. package/src/squads/cybersecurity/agents/command-generator.md +0 -121
  471. package/src/squads/cybersecurity/agents/cyber-chief.md +0 -120
  472. package/src/squads/cybersecurity/agents/dirber.md +0 -111
  473. package/src/squads/cybersecurity/agents/fuzzer.md +0 -121
  474. package/src/squads/cybersecurity/agents/georgia-weidman.md +0 -178
  475. package/src/squads/cybersecurity/agents/jim-manico.md +0 -182
  476. package/src/squads/cybersecurity/agents/marcus-carey.md +0 -200
  477. package/src/squads/cybersecurity/agents/omar-santos.md +0 -206
  478. package/src/squads/cybersecurity/agents/peter-kim.md +0 -179
  479. package/src/squads/cybersecurity/agents/ripper.md +0 -121
  480. package/src/squads/cybersecurity/agents/rogue.md +0 -116
  481. package/src/squads/cybersecurity/agents/shannon-runner.md +0 -108
  482. package/src/squads/cybersecurity/squad.yaml +0 -56
  483. package/src/squads/data-squad/README.md +0 -30
  484. package/src/squads/data-squad/agents/avinash-kaushik.md +0 -268
  485. package/src/squads/data-squad/agents/data-chief.md +0 -167
  486. package/src/squads/data-squad/agents/david-spinks.md +0 -277
  487. package/src/squads/data-squad/agents/nick-mehta.md +0 -294
  488. package/src/squads/data-squad/agents/peter-fader.md +0 -246
  489. package/src/squads/data-squad/agents/sean-ellis.md +0 -303
  490. package/src/squads/data-squad/agents/wes-kao.md +0 -268
  491. package/src/squads/data-squad/squad.yaml +0 -46
  492. package/src/squads/design-squad/README.md +0 -31
  493. package/src/squads/design-squad/agents/brad-frost.md +0 -185
  494. package/src/squads/design-squad/agents/dan-mall.md +0 -178
  495. package/src/squads/design-squad/agents/dave-malouf.md +0 -198
  496. package/src/squads/design-squad/agents/design-chief.md +0 -109
  497. package/src/squads/design-squad/agents/design-system-architect.md +0 -109
  498. package/src/squads/design-squad/agents/ui-engineer.md +0 -102
  499. package/src/squads/design-squad/agents/ux-designer.md +0 -105
  500. package/src/squads/design-squad/agents/visual-generator.md +0 -108
  501. package/src/squads/design-squad/squad.yaml +0 -48
  502. package/src/squads/hormozi-squad/README.md +0 -39
  503. package/src/squads/hormozi-squad/agents/hormozi-ads.md +0 -159
  504. package/src/squads/hormozi-squad/agents/hormozi-advisor.md +0 -178
  505. package/src/squads/hormozi-squad/agents/hormozi-audit.md +0 -178
  506. package/src/squads/hormozi-squad/agents/hormozi-chief.md +0 -111
  507. package/src/squads/hormozi-squad/agents/hormozi-closer.md +0 -179
  508. package/src/squads/hormozi-squad/agents/hormozi-content.md +0 -166
  509. package/src/squads/hormozi-squad/agents/hormozi-copy.md +0 -152
  510. package/src/squads/hormozi-squad/agents/hormozi-hooks.md +0 -177
  511. package/src/squads/hormozi-squad/agents/hormozi-launch.md +0 -160
  512. package/src/squads/hormozi-squad/agents/hormozi-leads.md +0 -198
  513. package/src/squads/hormozi-squad/agents/hormozi-models.md +0 -191
  514. package/src/squads/hormozi-squad/agents/hormozi-offers.md +0 -197
  515. package/src/squads/hormozi-squad/agents/hormozi-pricing.md +0 -151
  516. package/src/squads/hormozi-squad/agents/hormozi-retention.md +0 -166
  517. package/src/squads/hormozi-squad/agents/hormozi-scale.md +0 -175
  518. package/src/squads/hormozi-squad/agents/hormozi-workshop.md +0 -160
  519. package/src/squads/hormozi-squad/squad.yaml +0 -60
  520. package/src/squads/movement/README.md +0 -29
  521. package/src/squads/movement/agents/analista-de-impacto.md +0 -350
  522. package/src/squads/movement/agents/estrategista-de-ciclo.md +0 -301
  523. package/src/squads/movement/agents/fenomenologo.md +0 -169
  524. package/src/squads/movement/agents/identitario.md +0 -265
  525. package/src/squads/movement/agents/manifestador.md +0 -279
  526. package/src/squads/movement/agents/movement-architect.md +0 -210
  527. package/src/squads/movement/agents/movement-chief.md +0 -135
  528. package/src/squads/movement/squad.yaml +0 -45
  529. package/src/squads/storytelling/README.md +0 -35
  530. package/src/squads/storytelling/agents/blake-snyder.md +0 -225
  531. package/src/squads/storytelling/agents/dan-harmon.md +0 -167
  532. package/src/squads/storytelling/agents/joseph-campbell.md +0 -184
  533. package/src/squads/storytelling/agents/keith-johnstone.md +0 -157
  534. package/src/squads/storytelling/agents/kindra-hall.md +0 -162
  535. package/src/squads/storytelling/agents/marshall-ganz.md +0 -167
  536. package/src/squads/storytelling/agents/matthew-dicks.md +0 -152
  537. package/src/squads/storytelling/agents/nancy-duarte.md +0 -154
  538. package/src/squads/storytelling/agents/oren-klaff.md +0 -166
  539. package/src/squads/storytelling/agents/park-howell.md +0 -152
  540. package/src/squads/storytelling/agents/shawn-coyne.md +0 -208
  541. package/src/squads/storytelling/agents/story-chief.md +0 -155
  542. package/src/squads/storytelling/squad.yaml +0 -52
  543. package/src/squads/traffic-masters/README.md +0 -39
  544. package/src/squads/traffic-masters/agents/ad-midas.md +0 -149
  545. package/src/squads/traffic-masters/agents/ads-analyst.md +0 -135
  546. package/src/squads/traffic-masters/agents/creative-analyst.md +0 -142
  547. package/src/squads/traffic-masters/agents/depesh-mandalia.md +0 -174
  548. package/src/squads/traffic-masters/agents/fiscal.md +0 -144
  549. package/src/squads/traffic-masters/agents/kasim-aslam.md +0 -158
  550. package/src/squads/traffic-masters/agents/media-buyer.md +0 -159
  551. package/src/squads/traffic-masters/agents/molly-pittman.md +0 -185
  552. package/src/squads/traffic-masters/agents/nicholas-kusmich.md +0 -157
  553. package/src/squads/traffic-masters/agents/pedro-sobral.md +0 -158
  554. package/src/squads/traffic-masters/agents/performance-analyst.md +0 -135
  555. package/src/squads/traffic-masters/agents/pixel-specialist.md +0 -144
  556. package/src/squads/traffic-masters/agents/ralph-burns.md +0 -163
  557. package/src/squads/traffic-masters/agents/scale-optimizer.md +0 -144
  558. package/src/squads/traffic-masters/agents/tom-breeze.md +0 -175
  559. package/src/squads/traffic-masters/agents/traffic-chief.md +0 -97
  560. package/src/squads/traffic-masters/squad.yaml +0 -59
  561. package/tools/bundle-web-bundles.js +0 -117
  562. package/tools/format-workflow-md.js +0 -263
  563. package/tools/hooks/README.md +0 -17
  564. package/tools/hooks/security-defensive-context.js +0 -70
  565. package/tools/hooks/session-rules.js +0 -38
  566. package/tools/hooks/wizz-router-enforce.js +0 -188
  567. package/tools/javascript-conventions.md +0 -5
  568. package/tools/migrate-custom-module-paths.js +0 -124
  569. package/tools/skill-validator.md +0 -368
  570. package/tools/sync-global.mjs +0 -84
  571. package/tools/validate-sidebar-order.js +0 -388
  572. package/tools/validate-skills.js +0 -708
  573. package/tools/validate-svg-changes.sh +0 -356
  574. /package/tools/installer/{cli-utils.js → banner.js} +0 -0
@@ -56,7 +56,14 @@ class ManifestGenerator {
56
56
  this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
57
57
 
58
58
  this.wizzDir = wizzDir;
59
- this.wizzFolderName = path.basename(wizzDir); // Get the actual folder name (e.g., '_wizz' or 'wizz')
59
+ // The folder name embedded into skill-manifest.csv's `path` column must be
60
+ // the FINAL name, not necessarily wizzDir's current basename: a fresh
61
+ // install (A14, atomic install) calls generateManifests while wizzDir is
62
+ // still the `_wizz.tmp-<pid>/` scaffold, ahead of the tmp→real rename.
63
+ // The installer passes `options.wizzFolderName` (the real, post-swap
64
+ // name) in that case; everything else (updates, direct callers that
65
+ // don't pass the option) keeps deriving it from the directory itself.
66
+ this.wizzFolderName = options.wizzFolderName || path.basename(wizzDir);
60
67
  this.allInstalledFiles = installedFiles;
61
68
 
62
69
  if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
@@ -11,6 +11,65 @@ const execFileAsync = promisify(execFile);
11
11
  const NPM_LOOKUP_TIMEOUT_MS = 10_000;
12
12
  const NPM_PACKAGE_NAME_PATTERN = /^(?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*$/;
13
13
 
14
+ // Retry pontual (1 re-tentativa, backoff curto) para o lookup no registry npm.
15
+ // Só re-tenta em erro de rede transitório (timeout, ECONNRESET, ENOTFOUND,
16
+ // EAI_AGAIN, 5xx). Erros lógicos (4xx, JSON inválido) não são re-tentados.
17
+ const NPM_LOOKUP_RETRY_DELAY_MS = 300;
18
+ const TRANSIENT_ERROR_CODES = new Set(['ECONNRESET', 'ENOTFOUND', 'EAI_AGAIN', 'ETIMEDOUT']);
19
+
20
+ function isTransientNetworkError(error) {
21
+ if (!error) return false;
22
+ if (typeof error.statusCode === 'number') return error.statusCode >= 500;
23
+ if (error.code && TRANSIENT_ERROR_CODES.has(error.code)) return true;
24
+ return /timed out/i.test(error.message || '');
25
+ }
26
+
27
+ function delay(ms) {
28
+ return new Promise((resolve) => setTimeout(resolve, ms));
29
+ }
30
+
31
+ // Uma única tentativa de GET no registry npm; rejeita em erro de rede,
32
+ // timeout ou status 5xx (para o wrapper com retry decidir).
33
+ function fetchNpmRegistryOnce(packageName, timeoutMs) {
34
+ return new Promise((resolve, reject) => {
35
+ const url = `https://registry.npmjs.org/${encodeURIComponent(packageName)}`;
36
+ const request = https.get(url, (res) => {
37
+ let data = '';
38
+ res.on('data', (chunk) => (data += chunk));
39
+ res.on('end', () => {
40
+ if (res.statusCode >= 500) {
41
+ const err = new Error(`npm registry returned ${res.statusCode} for ${packageName}`);
42
+ err.statusCode = res.statusCode;
43
+ reject(err);
44
+ return;
45
+ }
46
+ resolve(data);
47
+ });
48
+ });
49
+
50
+ request.setTimeout(timeoutMs, () => {
51
+ request.destroy();
52
+ const err = new Error(`npm registry request timed out for ${packageName}`);
53
+ err.code = 'ETIMEDOUT';
54
+ reject(err);
55
+ });
56
+
57
+ request.on('error', reject);
58
+ });
59
+ }
60
+
61
+ // Wrapper com 1 re-tentativa em erro transitório. Erro não-transitório
62
+ // (ex.: 4xx, resposta malformada) propaga direto, sem retry.
63
+ async function fetchNpmRegistryWithRetry(packageName, timeoutMs) {
64
+ try {
65
+ return await fetchNpmRegistryOnce(packageName, timeoutMs);
66
+ } catch (error) {
67
+ if (!isTransientNetworkError(error)) throw error;
68
+ await delay(NPM_LOOKUP_RETRY_DELAY_MS);
69
+ return fetchNpmRegistryOnce(packageName, timeoutMs);
70
+ }
71
+ }
72
+
14
73
  function isValidNpmPackageName(packageName) {
15
74
  return typeof packageName === 'string' && NPM_PACKAGE_NAME_PATTERN.test(packageName);
16
75
  }
@@ -364,28 +423,14 @@ class Manifest {
364
423
  });
365
424
  return stdout.trim();
366
425
  } catch {
367
- // Fallback to npm registry API
368
- return new Promise((resolve) => {
369
- const request = https.get(`https://registry.npmjs.org/${encodeURIComponent(packageName)}`, (res) => {
370
- let data = '';
371
- res.on('data', (chunk) => (data += chunk));
372
- res.on('end', () => {
373
- try {
374
- const pkg = JSON.parse(data);
375
- resolve(pkg['dist-tags']?.latest || pkg.version || null);
376
- } catch {
377
- resolve(null);
378
- }
379
- });
380
- });
381
-
382
- request.setTimeout(NPM_LOOKUP_TIMEOUT_MS, () => {
383
- request.destroy();
384
- resolve(null);
385
- });
386
-
387
- request.on('error', () => resolve(null));
388
- });
426
+ // Fallback to npm registry API (com 1 retry pontual em falha transitória)
427
+ try {
428
+ const data = await fetchNpmRegistryWithRetry(packageName, NPM_LOOKUP_TIMEOUT_MS);
429
+ const pkg = JSON.parse(data);
430
+ return pkg['dist-tags']?.latest || pkg.version || null;
431
+ } catch {
432
+ return null;
433
+ }
389
434
  }
390
435
  } catch {
391
436
  return null;
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Per-module `config.yaml` generation.
3
+ *
4
+ * Extracted from `Installer.generateModuleConfigs` (installer god-object
5
+ * breakup, A15/A17, auditoria 2026-07-07, item 3.1). Pure-ish function: the
6
+ * only state it needs from the caller is a `trackFile` callback (in place of
7
+ * the original `this.installedFiles.add`).
8
+ */
9
+ const path = require('node:path');
10
+ const fs = require('../fs-native');
11
+ const { getProjectRoot } = require('../project-root');
12
+
13
+ /**
14
+ * Generate clean config.yaml files for each installed module.
15
+ * @param {string} wizzDir - WIZZ installation directory
16
+ * @param {Object} moduleConfigs - Collected configuration values
17
+ * @param {Object} deps - Injected dependencies
18
+ * @param {(filePath: string) => void} deps.trackFile - Records a written file as installed
19
+ */
20
+ async function generateModuleConfigs(wizzDir, moduleConfigs, { trackFile }) {
21
+ const yaml = require('yaml');
22
+
23
+ // Extract core config values to share with other modules
24
+ const coreConfig = moduleConfigs.core || {};
25
+
26
+ // Get all installed module directories
27
+ const entries = await fs.readdir(wizzDir, { withFileTypes: true });
28
+ const nonModuleDirs = new Set(['_config', '_memory', 'memory', 'docs', 'scripts', 'custom']);
29
+ const installedModules = entries.filter((entry) => entry.isDirectory() && !nonModuleDirs.has(entry.name)).map((entry) => entry.name);
30
+
31
+ // Generate config.yaml for each installed module
32
+ for (const moduleName of installedModules) {
33
+ const modulePath = path.join(wizzDir, moduleName);
34
+
35
+ // Get module-specific config or use empty object if none
36
+ const config = moduleConfigs[moduleName] || {};
37
+
38
+ if (await fs.pathExists(modulePath)) {
39
+ const configPath = path.join(modulePath, 'config.yaml');
40
+
41
+ // Create header
42
+ const packageJson = require(path.join(getProjectRoot(), 'package.json'));
43
+ const header = `# ${moduleName.toUpperCase()} Module Configuration
44
+ # Generated by Wizz Method installer
45
+ # Version: ${packageJson.version}
46
+ # Date: ${new Date().toISOString()}
47
+
48
+ `;
49
+
50
+ // For non-core modules, add core config values directly
51
+ let finalConfig = { ...config };
52
+ let coreSection = '';
53
+
54
+ if (moduleName !== 'core' && coreConfig && Object.keys(coreConfig).length > 0) {
55
+ // Add core values directly to the module config
56
+ // These will be available for reference in the module
57
+ finalConfig = {
58
+ ...config,
59
+ ...coreConfig, // Spread core config values directly into the module config
60
+ };
61
+
62
+ // Create a comment section to identify core values
63
+ coreSection = '\n# Core Configuration Values\n';
64
+ }
65
+
66
+ // Clean the config to remove any non-serializable values (like functions)
67
+ const cleanConfig = structuredClone(finalConfig);
68
+
69
+ // Convert config to YAML
70
+ let yamlContent = yaml.stringify(cleanConfig, {
71
+ indent: 2,
72
+ lineWidth: 0,
73
+ minContentWidth: 0,
74
+ });
75
+
76
+ // If we have core values, reorganize the YAML to group them with their comment
77
+ if (coreSection && moduleName !== 'core') {
78
+ // Split the YAML into lines
79
+ const lines = yamlContent.split('\n');
80
+ const moduleConfigLines = [];
81
+ const coreConfigLines = [];
82
+
83
+ // Separate module-specific and core config lines
84
+ for (const line of lines) {
85
+ const key = line.split(':')[0].trim();
86
+ if (Object.prototype.hasOwnProperty.call(coreConfig, key)) {
87
+ coreConfigLines.push(line);
88
+ } else {
89
+ moduleConfigLines.push(line);
90
+ }
91
+ }
92
+
93
+ // Rebuild YAML with module config first, then core config with comment
94
+ yamlContent = moduleConfigLines.join('\n');
95
+ if (coreConfigLines.length > 0) {
96
+ yamlContent += coreSection + coreConfigLines.join('\n');
97
+ }
98
+ }
99
+
100
+ // Write the clean config file with POSIX-compliant final newline
101
+ const content = header + yamlContent;
102
+ await fs.writeFile(configPath, content.endsWith('\n') ? content : content + '\n', 'utf8');
103
+
104
+ // Track the config file in installedFiles
105
+ trackFile(configPath);
106
+ }
107
+ }
108
+ }
109
+
110
+ module.exports = { generateModuleConfigs };
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Preflight check for `git`/`curl` in PATH (Tarefa 3.5c da auditoria,
3
+ * parte 2 item D6: "dependência de git/curl no PATH não checada antes dos
4
+ * installs → mensagem amigável em vez de stderr cru").
5
+ *
6
+ * `git` is a hard dependency of the install flow: official/custom module
7
+ * fetch and the changelog/version resolution all shell out to `git clone`/
8
+ * `git fetch`/`git rev-parse` deep inside custom-module-manager.js and
9
+ * external-manager.js. Without this check, a missing `git` surfaces as a
10
+ * raw `Command failed: git clone ...` / `ENOENT` stack trace from wherever
11
+ * the first git call happens to live — this check fails fast, once, with a
12
+ * plain-language message instead.
13
+ *
14
+ * `curl` is only used by specific optional CLI `install:` commands in
15
+ * skills-registry.yaml (e.g. `curl ... | sh`), which are opt-in and
16
+ * user-triggered, never run automatically during a plain install. Missing
17
+ * `curl` is therefore a warning, not a blocking error.
18
+ *
19
+ * Deliberately NOT wired into tools/installer/core/installer.js (that file
20
+ * is in scope for a separate god-object extraction pass) — this is called
21
+ * directly from the CLI entry point (commands/install.js), same pattern as
22
+ * ../core/wsl-node-check.js.
23
+ */
24
+ const { execFileSync } = require('node:child_process');
25
+ const prompts = require('../prompts');
26
+
27
+ /**
28
+ * @param {string} bin
29
+ * @param {(bin: string, args: string[]) => Buffer} runner injectable for tests
30
+ * @returns {boolean}
31
+ */
32
+ function isOnPath(bin, runner = defaultRunner) {
33
+ try {
34
+ runner(bin, ['--version']);
35
+ return true;
36
+ } catch {
37
+ return false;
38
+ }
39
+ }
40
+
41
+ function defaultRunner(bin, args) {
42
+ return execFileSync(bin, args, { stdio: 'pipe' });
43
+ }
44
+
45
+ /**
46
+ * @param {{ runner?: Function }} [deps] injectable for tests
47
+ * @returns {{ git: boolean, curl: boolean }}
48
+ */
49
+ function detectRequiredTools(deps = {}) {
50
+ const runner = deps.runner || defaultRunner;
51
+ return {
52
+ git: isOnPath('git', runner),
53
+ curl: isOnPath('curl', runner),
54
+ };
55
+ }
56
+
57
+ async function checkRequiredTools(deps = {}) {
58
+ const detection = detectRequiredTools(deps);
59
+
60
+ if (!detection.git) {
61
+ await prompts.log.error(
62
+ [
63
+ '`git` was not found on your PATH.',
64
+ '',
65
+ 'The Wizz Method installer needs git to fetch official and custom modules.',
66
+ 'Install git (https://git-scm.com/downloads) and rerun this command.',
67
+ ].join('\n'),
68
+ );
69
+ process.exit(1);
70
+ }
71
+
72
+ if (!detection.curl) {
73
+ await prompts.log.warn(
74
+ '`curl` was not found on your PATH. Most of the installer works fine without it, ' +
75
+ 'but some optional CLI installs from the registry (skills-registry.yaml `install:` commands) shell out to curl and will fail until it is installed.',
76
+ );
77
+ }
78
+
79
+ return detection;
80
+ }
81
+
82
+ module.exports = { checkRequiredTools, detectRequiredTools, isOnPath };
@@ -0,0 +1,209 @@
1
+ /**
2
+ * Quick Update orchestration.
3
+ *
4
+ * Extracted from `Installer.quickUpdate` (installer god-object breakup,
5
+ * A15/A17, auditoria 2026-07-07, item 3.1). Kept as composition rather than
6
+ * a method on `Installer`: this function takes the `Installer` instance as
7
+ * an explicit parameter and calls its public surface (`findWizzDir`,
8
+ * `externalModuleManager`, `manifest`, `install`) instead of inheriting from
9
+ * it, so it can be tested/reasoned about independently.
10
+ */
11
+ const path = require('node:path');
12
+ const fs = require('../fs-native');
13
+ const { OfficialModules } = require('../modules/official-modules');
14
+ const { ExistingInstall } = require('./existing-install');
15
+ const { getProjectRoot } = require('../project-root');
16
+ const prompts = require('../prompts');
17
+
18
+ /**
19
+ * Quick update: preserves all settings and only prompts for new config fields.
20
+ * @param {import('./installer').Installer} installer - Installer instance (composition, not inheritance)
21
+ * @param {Object} config - Configuration with directory
22
+ * @returns {Object} Update result
23
+ */
24
+ async function quickUpdate(installer, config) {
25
+ const projectDir = path.resolve(config.directory);
26
+ const { wizzDir } = await installer.findWizzDir(projectDir);
27
+
28
+ // Check if wizz directory exists
29
+ if (!(await fs.pathExists(wizzDir))) {
30
+ throw new Error(`Wizz not installed at ${wizzDir}. Use regular install for first-time setup.`);
31
+ }
32
+
33
+ // Announce the scope up front: Quick Update only refreshes already
34
+ // installed modules with preserved settings. It never provisions global
35
+ // skills, MCP servers, or CLIs (see the isQuickUpdate() gate below, in
36
+ // _installAndConfigure); that only happens on a fresh install or
37
+ // Modify. Surfacing this before any work starts avoids the confusion of
38
+ // "I updated and skills didn't come" (see project memory).
39
+ await prompts.log.info(
40
+ 'Quick Update: atualiza os módulos já instalados com as configurações preservadas. Skills globais, MCPs e CLIs novos não são provisionados neste modo; rode install e escolha "Modify Wizz Installation" para isso.',
41
+ );
42
+
43
+ // Detect existing installation
44
+ const existingInstall = await ExistingInstall.detect(wizzDir);
45
+ const installedModules = existingInstall.moduleIds;
46
+ const configuredIdes = existingInstall.ides;
47
+ const projectRoot = path.dirname(wizzDir);
48
+
49
+ // Get available modules (what we have source for)
50
+ const availableModulesData = await new OfficialModules().listAvailable();
51
+ const availableModules = [...availableModulesData.modules];
52
+
53
+ // Add external official modules to available modules
54
+ const externalModules = await installer.externalModuleManager.listAvailable();
55
+ for (const externalModule of externalModules) {
56
+ if (installedModules.includes(externalModule.code) && !availableModules.some((m) => m.id === externalModule.code)) {
57
+ availableModules.push({
58
+ id: externalModule.code,
59
+ name: externalModule.name,
60
+ isExternal: true,
61
+ fromExternal: true,
62
+ });
63
+ }
64
+ }
65
+
66
+ // Add installed custom modules to available modules
67
+ const { CustomModuleManager } = require('../modules/custom-module-manager');
68
+ const customMgr = new CustomModuleManager();
69
+ for (const moduleId of installedModules) {
70
+ if (!availableModules.some((m) => m.id === moduleId)) {
71
+ const customSource = await customMgr.findModuleSourceByCode(moduleId, { wizzDir });
72
+ if (customSource) {
73
+ availableModules.push({
74
+ id: moduleId,
75
+ name: moduleId,
76
+ isExternal: true,
77
+ fromCustom: true,
78
+ });
79
+ }
80
+ }
81
+ }
82
+
83
+ const availableModuleIds = new Set(availableModules.map((m) => m.id));
84
+
85
+ // Only update modules that are BOTH installed AND available (we have source for)
86
+ const modulesToUpdate = installedModules.filter((id) => availableModuleIds.has(id));
87
+ const skippedModules = installedModules.filter((id) => !availableModuleIds.has(id));
88
+
89
+ if (skippedModules.length > 0) {
90
+ await prompts.log.warn(`Skipping ${skippedModules.length} module(s) - no source available: ${skippedModules.join(', ')}`);
91
+ }
92
+
93
+ // Build channel options from the existing manifest FIRST so the config
94
+ // collector below (which triggers external-module clones via
95
+ // findModuleSource) knows each module's recorded channel and doesn't
96
+ // silently redecide it. Without this, modules previously on 'next' or
97
+ // 'pinned' would trigger a stable-channel tag lookup at config-collection
98
+ // time, burning GitHub API quota and potentially failing.
99
+ const manifestData = await installer.manifest.read(wizzDir);
100
+ const channelOptions = { global: null, nextSet: new Set(), pins: new Map(), warnings: [] };
101
+ if (manifestData?.modulesDetailed) {
102
+ const { fetchStableTags, classifyUpgrade, parseGitHubRepo } = require('../modules/channel-resolver');
103
+ for (const entry of manifestData.modulesDetailed) {
104
+ if (!entry?.name || !entry?.channel) continue;
105
+ if (entry.channel === 'pinned' && entry.version) {
106
+ channelOptions.pins.set(entry.name, entry.version);
107
+ continue;
108
+ }
109
+ if (entry.channel === 'next') {
110
+ channelOptions.nextSet.add(entry.name);
111
+ continue;
112
+ }
113
+ // Stable: classify the available upgrade. Patches and minors fall
114
+ // through (stable default picks up the top tag). A major upgrade
115
+ // requires opt-in, so under quick-update's non-interactive semantics
116
+ // we pin to the current version to prevent a silent breaking jump.
117
+ if (entry.channel === 'stable' && entry.version && entry.repoUrl) {
118
+ const parsed = parseGitHubRepo(entry.repoUrl);
119
+ if (!parsed) continue;
120
+ try {
121
+ const tags = await fetchStableTags(parsed.owner, parsed.repo);
122
+ if (tags.length === 0) continue;
123
+ const topTag = tags[0].tag;
124
+ const cls = classifyUpgrade(entry.version, topTag);
125
+ if (cls === 'major') {
126
+ channelOptions.pins.set(entry.name, entry.version);
127
+ await prompts.log.warn(
128
+ `${entry.name} ${entry.version} → ${topTag} is a new major release; staying on ${entry.version}. ` +
129
+ `Run \`wizz install\` (Modify) with \`--pin ${entry.name}=${topTag}\` to accept.`,
130
+ );
131
+ }
132
+ } catch (error) {
133
+ // Tag lookup failed (offline, rate-limited). Stay on the current
134
+ // version rather than guessing — the existing cache is already
135
+ // at that ref, so re-using it keeps the install stable.
136
+ channelOptions.pins.set(entry.name, entry.version);
137
+ await prompts.log.warn(`Could not check ${entry.name} for updates (${error.message}); staying on ${entry.version}.`);
138
+ }
139
+ }
140
+ }
141
+ }
142
+
143
+ // Load existing configs and collect new fields (if any)
144
+ await prompts.log.info('Checking for new configuration options...');
145
+ const quickModules = new OfficialModules({ channelOptions });
146
+ await quickModules.loadExistingConfig(projectDir);
147
+
148
+ let promptedForNewFields = false;
149
+
150
+ const corePrompted = await quickModules.collectModuleConfigQuick('core', projectDir, true);
151
+ if (corePrompted) {
152
+ promptedForNewFields = true;
153
+ }
154
+
155
+ for (const moduleName of modulesToUpdate) {
156
+ if (moduleName === 'core') continue; // Already collected above
157
+ const modulePrompted = await quickModules.collectModuleConfigQuick(moduleName, projectDir, true);
158
+ if (modulePrompted) {
159
+ promptedForNewFields = true;
160
+ }
161
+ }
162
+
163
+ if (!promptedForNewFields) {
164
+ await prompts.log.success('All configuration is up to date, no new options to configure');
165
+ }
166
+
167
+ quickModules.collectedConfig._meta = {
168
+ version: require(path.join(getProjectRoot(), 'package.json')).version,
169
+ installDate: new Date().toISOString(),
170
+ lastModified: new Date().toISOString(),
171
+ };
172
+
173
+ // Build config and delegate to install()
174
+ const installConfig = {
175
+ directory: projectDir,
176
+ modules: modulesToUpdate,
177
+ ides: configuredIdes,
178
+ coreConfig: quickModules.collectedConfig.core,
179
+ moduleConfigs: quickModules.collectedConfig,
180
+ // Forward `--set` overrides so the post-install patch step
181
+ // (`applySetOverrides`) runs at the end of quick-update too. The
182
+ // installer.install path applies them after writeCentralConfig.
183
+ setOverrides: config.setOverrides || {},
184
+ actionType: 'install',
185
+ _quickUpdate: true,
186
+ _preserveModules: skippedModules,
187
+ _existingModules: installedModules,
188
+ channelOptions,
189
+ };
190
+
191
+ const installResult = await installer.install(installConfig);
192
+
193
+ return {
194
+ // Quick Update delegates to install() under the hood; propagate its
195
+ // real success/errors/warnings instead of always reporting success so
196
+ // a partial failure (e.g. an IDE setup step) isn't hidden behind a
197
+ // green "Quick update complete!" (see M24 in the installer audit).
198
+ success: installResult.success,
199
+ moduleCount: modulesToUpdate.length,
200
+ hadNewFields: promptedForNewFields,
201
+ modules: modulesToUpdate,
202
+ skippedModules: skippedModules,
203
+ ides: configuredIdes,
204
+ errors: installResult.errors || 0,
205
+ warnings: installResult.warnings || 0,
206
+ };
207
+ }
208
+
209
+ module.exports = { quickUpdate };