wizz-method 1.0.3 → 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 (630) hide show
  1. package/package.json +4 -2
  2. package/skills-registry.yaml +318 -0
  3. package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +7 -0
  4. package/src/core-skills/wizz-editorial-review-prose/SKILL.md +20 -45
  5. package/src/core-skills/wizz-party-mode/customize.toml +894 -0
  6. package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
  7. package/src/core-skills/wizz-review-adversarial-general/SKILL.md +23 -12
  8. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +47 -23
  9. package/src/skills-lib/ab-test-setup/SKILL.md +266 -0
  10. package/src/skills-lib/ab-test-setup/evals/evals.json +105 -0
  11. package/src/skills-lib/ab-test-setup/references/sample-size-guide.md +263 -0
  12. package/src/skills-lib/ab-test-setup/references/test-templates.md +277 -0
  13. package/src/skills-lib/ad-creative/SKILL.md +362 -0
  14. package/src/skills-lib/ad-creative/evals/evals.json +90 -0
  15. package/src/skills-lib/ad-creative/references/generative-tools.md +637 -0
  16. package/src/skills-lib/ad-creative/references/platform-specs.md +213 -0
  17. package/src/skills-lib/adversarial-reviewer/SKILL.md +122 -0
  18. package/src/skills-lib/agent-browser/SKILL.md +139 -0
  19. package/src/skills-lib/ai-seo/SKILL.md +398 -0
  20. package/src/skills-lib/ai-seo/evals/evals.json +90 -0
  21. package/src/skills-lib/ai-seo/references/content-patterns.md +285 -0
  22. package/src/skills-lib/ai-seo/references/platform-ranking-factors.md +152 -0
  23. package/src/skills-lib/analytics-tracking/SKILL.md +309 -0
  24. package/src/skills-lib/analytics-tracking/evals/evals.json +90 -0
  25. package/src/skills-lib/analytics-tracking/references/event-library.md +260 -0
  26. package/src/skills-lib/analytics-tracking/references/ga4-implementation.md +300 -0
  27. package/src/skills-lib/analytics-tracking/references/gtm-implementation.md +390 -0
  28. package/src/skills-lib/auth-and-secrets/SKILL.md +82 -0
  29. package/src/skills-lib/caching-and-queues/SKILL.md +58 -0
  30. package/src/skills-lib/cerebro/SKILL.md +368 -0
  31. package/src/skills-lib/churn-prevention/SKILL.md +424 -0
  32. package/src/skills-lib/churn-prevention/evals/evals.json +93 -0
  33. package/src/skills-lib/churn-prevention/references/cancel-flow-patterns.md +316 -0
  34. package/src/skills-lib/churn-prevention/references/dunning-playbook.md +408 -0
  35. package/src/skills-lib/cloud-and-infra/SKILL.md +36 -0
  36. package/src/skills-lib/cold-email/SKILL.md +158 -0
  37. package/src/skills-lib/cold-email/evals/evals.json +94 -0
  38. package/src/skills-lib/cold-email/references/benchmarks.md +83 -0
  39. package/src/skills-lib/cold-email/references/follow-up-sequences.md +81 -0
  40. package/src/skills-lib/cold-email/references/frameworks.md +90 -0
  41. package/src/skills-lib/cold-email/references/personalization.md +79 -0
  42. package/src/skills-lib/cold-email/references/subject-lines.md +53 -0
  43. package/src/skills-lib/competitor-alternatives/SKILL.md +256 -0
  44. package/src/skills-lib/competitor-alternatives/evals/evals.json +93 -0
  45. package/src/skills-lib/competitor-alternatives/references/content-architecture.md +271 -0
  46. package/src/skills-lib/competitor-alternatives/references/templates.md +223 -0
  47. package/src/skills-lib/content-strategy/SKILL.md +359 -0
  48. package/src/skills-lib/content-strategy/evals/evals.json +90 -0
  49. package/src/skills-lib/copy-editing/SKILL.md +447 -0
  50. package/src/skills-lib/copy-editing/evals/evals.json +89 -0
  51. package/src/skills-lib/copy-editing/references/plain-english-alternatives.md +394 -0
  52. package/src/skills-lib/copywriting/SKILL.md +252 -0
  53. package/src/skills-lib/copywriting/evals/evals.json +111 -0
  54. package/src/skills-lib/copywriting/references/copy-frameworks.md +344 -0
  55. package/src/skills-lib/copywriting/references/natural-transitions.md +272 -0
  56. package/src/skills-lib/database-and-deps/SKILL.md +80 -0
  57. package/src/skills-lib/database-scaling/SKILL.md +44 -0
  58. package/src/skills-lib/decision-maker/SKILL.md +534 -0
  59. package/src/skills-lib/desktop-security/SKILL.md +43 -0
  60. package/src/skills-lib/email-sequence/SKILL.md +309 -0
  61. package/src/skills-lib/email-sequence/evals/evals.json +93 -0
  62. package/src/skills-lib/email-sequence/references/copy-guidelines.md +113 -0
  63. package/src/skills-lib/email-sequence/references/email-types.md +515 -0
  64. package/src/skills-lib/email-sequence/references/sequence-templates.md +168 -0
  65. package/src/skills-lib/enhance-prompt/README.md +34 -0
  66. package/src/skills-lib/enhance-prompt/SKILL.md +204 -0
  67. package/src/skills-lib/enhance-prompt/references/KEYWORDS.md +114 -0
  68. package/src/skills-lib/find-skills/SKILL.md +181 -0
  69. package/src/skills-lib/form-cro/SKILL.md +429 -0
  70. package/src/skills-lib/form-cro/evals/evals.json +90 -0
  71. package/src/skills-lib/free-tool-strategy/SKILL.md +178 -0
  72. package/src/skills-lib/free-tool-strategy/evals/evals.json +90 -0
  73. package/src/skills-lib/free-tool-strategy/references/tool-types.md +217 -0
  74. package/src/skills-lib/graphify/.graphify_version +1 -0
  75. package/src/skills-lib/graphify/SKILL.md +1217 -0
  76. package/src/skills-lib/huashu-design/LICENSE +21 -0
  77. package/src/skills-lib/huashu-design/README.en.md +309 -0
  78. package/src/skills-lib/huashu-design/README.md +348 -0
  79. package/src/skills-lib/huashu-design/SKILL.md +631 -0
  80. package/src/skills-lib/huashu-design/assets/android_frame.jsx +175 -0
  81. package/src/skills-lib/huashu-design/assets/animations.jsx +348 -0
  82. package/src/skills-lib/huashu-design/assets/banner.svg +198 -0
  83. package/src/skills-lib/huashu-design/assets/bgm-ad.mp3 +0 -0
  84. package/src/skills-lib/huashu-design/assets/bgm-educational-alt.mp3 +0 -0
  85. package/src/skills-lib/huashu-design/assets/bgm-educational.mp3 +0 -0
  86. package/src/skills-lib/huashu-design/assets/bgm-tech.mp3 +0 -0
  87. package/src/skills-lib/huashu-design/assets/bgm-tutorial-alt.mp3 +0 -0
  88. package/src/skills-lib/huashu-design/assets/bgm-tutorial.mp3 +0 -0
  89. package/src/skills-lib/huashu-design/assets/browser_window.jsx +166 -0
  90. package/src/skills-lib/huashu-design/assets/deck_index.html +348 -0
  91. package/src/skills-lib/huashu-design/assets/deck_stage.js +420 -0
  92. package/src/skills-lib/huashu-design/assets/design_canvas.jsx +205 -0
  93. package/src/skills-lib/huashu-design/assets/director-notes-samples/launch-film-30s-sample.md +1713 -0
  94. package/src/skills-lib/huashu-design/assets/ios_frame.jsx +192 -0
  95. package/src/skills-lib/huashu-design/assets/macos_window.jsx +96 -0
  96. package/src/skills-lib/huashu-design/assets/narration_stage.jsx +476 -0
  97. package/src/skills-lib/huashu-design/assets/personal-asset-index.example.json +71 -0
  98. package/src/skills-lib/huashu-design/assets/sfx/container/card-flip.mp3 +0 -0
  99. package/src/skills-lib/huashu-design/assets/sfx/container/card-snap.mp3 +0 -0
  100. package/src/skills-lib/huashu-design/assets/sfx/container/modal-open.mp3 +0 -0
  101. package/src/skills-lib/huashu-design/assets/sfx/container/stack-collapse.mp3 +0 -0
  102. package/src/skills-lib/huashu-design/assets/sfx/feedback/achievement.mp3 +0 -0
  103. package/src/skills-lib/huashu-design/assets/sfx/feedback/error-tone.mp3 +0 -0
  104. package/src/skills-lib/huashu-design/assets/sfx/feedback/notification-pop.mp3 +0 -0
  105. package/src/skills-lib/huashu-design/assets/sfx/feedback/success-chime.mp3 +0 -0
  106. package/src/skills-lib/huashu-design/assets/sfx/impact/brand-stamp.mp3 +0 -0
  107. package/src/skills-lib/huashu-design/assets/sfx/impact/drop-thud.mp3 +0 -0
  108. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal-v2.mp3 +0 -0
  109. package/src/skills-lib/huashu-design/assets/sfx/impact/logo-reveal.mp3 +0 -0
  110. package/src/skills-lib/huashu-design/assets/sfx/keyboard/delete-key.mp3 +0 -0
  111. package/src/skills-lib/huashu-design/assets/sfx/keyboard/enter.mp3 +0 -0
  112. package/src/skills-lib/huashu-design/assets/sfx/keyboard/space-tap.mp3 +0 -0
  113. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type-fast.mp3 +0 -0
  114. package/src/skills-lib/huashu-design/assets/sfx/keyboard/type.mp3 +0 -0
  115. package/src/skills-lib/huashu-design/assets/sfx/magic/ai-process.mp3 +0 -0
  116. package/src/skills-lib/huashu-design/assets/sfx/magic/sparkle.mp3 +0 -0
  117. package/src/skills-lib/huashu-design/assets/sfx/magic/transform.mp3 +0 -0
  118. package/src/skills-lib/huashu-design/assets/sfx/progress/complete-done.mp3 +0 -0
  119. package/src/skills-lib/huashu-design/assets/sfx/progress/generate-start.mp3 +0 -0
  120. package/src/skills-lib/huashu-design/assets/sfx/progress/loading-tick.mp3 +0 -0
  121. package/src/skills-lib/huashu-design/assets/sfx/terminal/command-execute.mp3 +0 -0
  122. package/src/skills-lib/huashu-design/assets/sfx/terminal/cursor-blink.mp3 +0 -0
  123. package/src/skills-lib/huashu-design/assets/sfx/terminal/output-appear.mp3 +0 -0
  124. package/src/skills-lib/huashu-design/assets/sfx/transition/dissolve.mp3 +0 -0
  125. package/src/skills-lib/huashu-design/assets/sfx/transition/slide-in.mp3 +0 -0
  126. package/src/skills-lib/huashu-design/assets/sfx/transition/swipe-horizontal.mp3 +0 -0
  127. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh-fast.mp3 +0 -0
  128. package/src/skills-lib/huashu-design/assets/sfx/transition/whoosh.mp3 +0 -0
  129. package/src/skills-lib/huashu-design/assets/sfx/ui/click-soft.mp3 +0 -0
  130. package/src/skills-lib/huashu-design/assets/sfx/ui/click.mp3 +0 -0
  131. package/src/skills-lib/huashu-design/assets/sfx/ui/focus.mp3 +0 -0
  132. package/src/skills-lib/huashu-design/assets/sfx/ui/hover-subtle.mp3 +0 -0
  133. package/src/skills-lib/huashu-design/assets/sfx/ui/tap-finger.mp3 +0 -0
  134. package/src/skills-lib/huashu-design/assets/sfx/ui/toggle-on.mp3 +0 -0
  135. package/src/skills-lib/huashu-design/assets/showcases/INDEX.md +115 -0
  136. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.html +235 -0
  137. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-build.png +0 -0
  138. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.html +229 -0
  139. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-pentagram.png +0 -0
  140. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.html +288 -0
  141. package/src/skills-lib/huashu-design/assets/showcases/cover/cover-takram.png +0 -0
  142. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.html +503 -0
  143. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-build.png +0 -0
  144. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.html +600 -0
  145. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-pentagram.png +0 -0
  146. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.html +670 -0
  147. package/src/skills-lib/huashu-design/assets/showcases/infographic/infographic-takram.png +0 -0
  148. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.html +382 -0
  149. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-build.png +0 -0
  150. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.html +536 -0
  151. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-pentagram.png +0 -0
  152. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.html +497 -0
  153. package/src/skills-lib/huashu-design/assets/showcases/ppt/ppt-takram.png +0 -0
  154. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.html +385 -0
  155. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-build.png +0 -0
  156. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.html +422 -0
  157. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-pentagram.png +0 -0
  158. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.html +499 -0
  159. package/src/skills-lib/huashu-design/assets/showcases/website-ai-nav/ainav-takram.png +0 -0
  160. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.html +562 -0
  161. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-build.png +0 -0
  162. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.html +548 -0
  163. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-pentagram.png +0 -0
  164. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.html +696 -0
  165. package/src/skills-lib/huashu-design/assets/showcases/website-ai-writing/aiwriting-takram.png +0 -0
  166. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.html +372 -0
  167. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-build.png +0 -0
  168. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.html +460 -0
  169. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-pentagram.png +0 -0
  170. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.html +494 -0
  171. package/src/skills-lib/huashu-design/assets/showcases/website-devdocs/devdocs-takram.png +0 -0
  172. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.html +367 -0
  173. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-build.png +0 -0
  174. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.html +368 -0
  175. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-pentagram.png +0 -0
  176. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.html +459 -0
  177. package/src/skills-lib/huashu-design/assets/showcases/website-homepage/homepage-takram.png +0 -0
  178. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.html +493 -0
  179. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-build.png +0 -0
  180. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.html +556 -0
  181. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-pentagram.png +0 -0
  182. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.html +604 -0
  183. package/src/skills-lib/huashu-design/assets/showcases/website-saas/saas-takram.png +0 -0
  184. package/src/skills-lib/huashu-design/demos/c1-ios-prototype-en.html +1145 -0
  185. package/src/skills-lib/huashu-design/demos/c1-ios-prototype.html +1142 -0
  186. package/src/skills-lib/huashu-design/demos/c2-slides-pptx-en.html +1055 -0
  187. package/src/skills-lib/huashu-design/demos/c2-slides-pptx.html +1055 -0
  188. package/src/skills-lib/huashu-design/demos/c3-motion-design-en.html +1134 -0
  189. package/src/skills-lib/huashu-design/demos/c3-motion-design.html +1134 -0
  190. package/src/skills-lib/huashu-design/demos/c4-tweaks-en.html +989 -0
  191. package/src/skills-lib/huashu-design/demos/c4-tweaks.html +989 -0
  192. package/src/skills-lib/huashu-design/demos/c5-infographic-en.html +816 -0
  193. package/src/skills-lib/huashu-design/demos/c5-infographic.html +813 -0
  194. package/src/skills-lib/huashu-design/demos/c6-expert-review-en.html +885 -0
  195. package/src/skills-lib/huashu-design/demos/c6-expert-review.html +894 -0
  196. package/src/skills-lib/huashu-design/demos/hero-animation-v10-en.html +1498 -0
  197. package/src/skills-lib/huashu-design/demos/md-html-narration/md-html-demo.html +615 -0
  198. package/src/skills-lib/huashu-design/demos/md-html-narration/script.md +69 -0
  199. package/src/skills-lib/huashu-design/demos/voiceover-demo/script.md +17 -0
  200. package/src/skills-lib/huashu-design/demos/voiceover-demo//344/273/200/344/271/210/346/230/257token.html +201 -0
  201. package/src/skills-lib/huashu-design/demos/w1-brand-protocol-en.html +684 -0
  202. package/src/skills-lib/huashu-design/demos/w1-brand-protocol.html +696 -0
  203. package/src/skills-lib/huashu-design/demos/w2-junior-designer-en.html +983 -0
  204. package/src/skills-lib/huashu-design/demos/w2-junior-designer.html +994 -0
  205. package/src/skills-lib/huashu-design/demos/w3-fallback-advisor-en.html +647 -0
  206. package/src/skills-lib/huashu-design/demos/w3-fallback-advisor.html +704 -0
  207. package/src/skills-lib/huashu-design/package-lock.json +846 -0
  208. package/src/skills-lib/huashu-design/package.json +8 -0
  209. package/src/skills-lib/huashu-design/references/animation-best-practices.md +506 -0
  210. package/src/skills-lib/huashu-design/references/animation-pitfalls.md +402 -0
  211. package/src/skills-lib/huashu-design/references/animations.md +249 -0
  212. package/src/skills-lib/huashu-design/references/apple-gallery-showcase.md +338 -0
  213. package/src/skills-lib/huashu-design/references/audio-design-rules.md +260 -0
  214. package/src/skills-lib/huashu-design/references/brand-asset-protocol.md +250 -0
  215. package/src/skills-lib/huashu-design/references/cinematic-patterns.md +264 -0
  216. package/src/skills-lib/huashu-design/references/content-guidelines.md +260 -0
  217. package/src/skills-lib/huashu-design/references/critique-guide.md +199 -0
  218. package/src/skills-lib/huashu-design/references/design-context.md +213 -0
  219. package/src/skills-lib/huashu-design/references/design-styles.md +370 -0
  220. package/src/skills-lib/huashu-design/references/editable-pptx.md +334 -0
  221. package/src/skills-lib/huashu-design/references/hero-animation-case-study.md +250 -0
  222. package/src/skills-lib/huashu-design/references/launch-film-director-notes.md +293 -0
  223. package/src/skills-lib/huashu-design/references/multi-perspective-parallel-case-study.md +267 -0
  224. package/src/skills-lib/huashu-design/references/react-setup.md +276 -0
  225. package/src/skills-lib/huashu-design/references/scene-templates.md +262 -0
  226. package/src/skills-lib/huashu-design/references/sfx-library.md +226 -0
  227. package/src/skills-lib/huashu-design/references/slide-decks.md +745 -0
  228. package/src/skills-lib/huashu-design/references/tweaks-system.md +313 -0
  229. package/src/skills-lib/huashu-design/references/verification.md +183 -0
  230. package/src/skills-lib/huashu-design/references/video-export.md +232 -0
  231. package/src/skills-lib/huashu-design/references/voiceover-pipeline.md +397 -0
  232. package/src/skills-lib/huashu-design/references/workflow.md +216 -0
  233. package/src/skills-lib/huashu-design/scripts/add-music.sh +108 -0
  234. package/src/skills-lib/huashu-design/scripts/convert-formats.sh +83 -0
  235. package/src/skills-lib/huashu-design/scripts/export_deck_pdf.mjs +98 -0
  236. package/src/skills-lib/huashu-design/scripts/export_deck_pptx.mjs +107 -0
  237. package/src/skills-lib/huashu-design/scripts/export_deck_stage_pdf.mjs +130 -0
  238. package/src/skills-lib/huashu-design/scripts/fetch_images.py +94 -0
  239. package/src/skills-lib/huashu-design/scripts/gen_deck_thumbs.mjs +55 -0
  240. package/src/skills-lib/huashu-design/scripts/html2pptx.js +1178 -0
  241. package/src/skills-lib/huashu-design/scripts/mix-voiceover.sh +127 -0
  242. package/src/skills-lib/huashu-design/scripts/narrate-pipeline.mjs +315 -0
  243. package/src/skills-lib/huashu-design/scripts/render-narration.sh +151 -0
  244. package/src/skills-lib/huashu-design/scripts/render-video-seek.js +238 -0
  245. package/src/skills-lib/huashu-design/scripts/render-video.js +289 -0
  246. package/src/skills-lib/huashu-design/scripts/tts-doubao.mjs +184 -0
  247. package/src/skills-lib/huashu-design/scripts/verify.py +154 -0
  248. package/src/skills-lib/huashu-design/test-prompts.json +38 -0
  249. package/src/skills-lib/humanizer/LICENSE +21 -0
  250. package/src/skills-lib/humanizer/README.md +145 -0
  251. package/src/skills-lib/humanizer/SKILL.md +474 -0
  252. package/src/skills-lib/humanizer/WARP.md +53 -0
  253. package/src/skills-lib/impeccable/SKILL.md +186 -0
  254. package/src/skills-lib/implementation-planner/SKILL.md +630 -0
  255. package/src/skills-lib/infrastructure/SKILL.md +34 -0
  256. package/src/skills-lib/inicio-de-projeto/SKILL.md +313 -0
  257. package/src/skills-lib/launch-strategy/SKILL.md +353 -0
  258. package/src/skills-lib/launch-strategy/evals/evals.json +91 -0
  259. package/src/skills-lib/marketing-ideas/SKILL.md +167 -0
  260. package/src/skills-lib/marketing-ideas/evals/evals.json +90 -0
  261. package/src/skills-lib/marketing-ideas/references/ideas-by-category.md +366 -0
  262. package/src/skills-lib/marketing-psychology/SKILL.md +455 -0
  263. package/src/skills-lib/marketing-psychology/evals/evals.json +88 -0
  264. package/src/skills-lib/motion-3d-director/SKILL.md +485 -0
  265. package/src/skills-lib/onboarding-cro/SKILL.md +220 -0
  266. package/src/skills-lib/onboarding-cro/evals/evals.json +92 -0
  267. package/src/skills-lib/onboarding-cro/references/experiments.md +258 -0
  268. package/src/skills-lib/page-cro/SKILL.md +182 -0
  269. package/src/skills-lib/page-cro/evals/evals.json +111 -0
  270. package/src/skills-lib/page-cro/references/experiments.md +248 -0
  271. package/src/skills-lib/paid-ads/SKILL.md +315 -0
  272. package/src/skills-lib/paid-ads/evals/evals.json +90 -0
  273. package/src/skills-lib/paid-ads/references/ad-copy-templates.md +207 -0
  274. package/src/skills-lib/paid-ads/references/audience-targeting.md +243 -0
  275. package/src/skills-lib/paid-ads/references/platform-setup-checklists.md +277 -0
  276. package/src/skills-lib/paywall-upgrade-cro/SKILL.md +227 -0
  277. package/src/skills-lib/paywall-upgrade-cro/evals/evals.json +93 -0
  278. package/src/skills-lib/paywall-upgrade-cro/references/experiments.md +164 -0
  279. package/src/skills-lib/popup-cro/SKILL.md +453 -0
  280. package/src/skills-lib/popup-cro/evals/evals.json +94 -0
  281. package/src/skills-lib/premium-landing-ui-researcher/SKILL.md +2090 -0
  282. package/src/skills-lib/pricing-strategy/SKILL.md +231 -0
  283. package/src/skills-lib/pricing-strategy/evals/evals.json +90 -0
  284. package/src/skills-lib/pricing-strategy/references/research-methods.md +152 -0
  285. package/src/skills-lib/pricing-strategy/references/tier-structure.md +232 -0
  286. package/src/skills-lib/product-marketing-context/SKILL.md +241 -0
  287. package/src/skills-lib/product-marketing-context/evals/evals.json +85 -0
  288. package/src/skills-lib/programmatic-seo/SKILL.md +238 -0
  289. package/src/skills-lib/programmatic-seo/evals/evals.json +94 -0
  290. package/src/skills-lib/programmatic-seo/references/playbooks.md +308 -0
  291. package/src/skills-lib/react-components/README.md +36 -0
  292. package/src/skills-lib/react-components/SKILL.md +51 -0
  293. package/src/skills-lib/react-components/examples/gold-standard-card.tsx +80 -0
  294. package/src/skills-lib/react-components/package-lock.json +231 -0
  295. package/src/skills-lib/react-components/package.json +16 -0
  296. package/src/skills-lib/react-components/resources/architecture-checklist.md +15 -0
  297. package/src/skills-lib/react-components/resources/component-template.tsx +37 -0
  298. package/src/skills-lib/react-components/resources/stitch-api-reference.md +14 -0
  299. package/src/skills-lib/react-components/resources/style-guide.json +27 -0
  300. package/src/skills-lib/react-components/scripts/fetch-stitch.sh +30 -0
  301. package/src/skills-lib/react-components/scripts/validate.js +70 -0
  302. package/src/skills-lib/references/premium-agency-rules.md +79 -0
  303. package/src/skills-lib/referral-program/SKILL.md +255 -0
  304. package/src/skills-lib/referral-program/evals/evals.json +89 -0
  305. package/src/skills-lib/referral-program/references/affiliate-programs.md +164 -0
  306. package/src/skills-lib/referral-program/references/program-examples.md +143 -0
  307. package/src/skills-lib/remotion-best-practices/SKILL.md +61 -0
  308. package/src/skills-lib/remotion-best-practices/rules/3d.md +86 -0
  309. package/src/skills-lib/remotion-best-practices/rules/animations.md +27 -0
  310. package/src/skills-lib/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  311. package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  312. package/src/skills-lib/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
  313. package/src/skills-lib/remotion-best-practices/rules/assets.md +78 -0
  314. package/src/skills-lib/remotion-best-practices/rules/audio-visualization.md +198 -0
  315. package/src/skills-lib/remotion-best-practices/rules/audio.md +169 -0
  316. package/src/skills-lib/remotion-best-practices/rules/calculate-metadata.md +134 -0
  317. package/src/skills-lib/remotion-best-practices/rules/can-decode.md +75 -0
  318. package/src/skills-lib/remotion-best-practices/rules/charts.md +120 -0
  319. package/src/skills-lib/remotion-best-practices/rules/compositions.md +154 -0
  320. package/src/skills-lib/remotion-best-practices/rules/display-captions.md +184 -0
  321. package/src/skills-lib/remotion-best-practices/rules/extract-frames.md +229 -0
  322. package/src/skills-lib/remotion-best-practices/rules/ffmpeg.md +38 -0
  323. package/src/skills-lib/remotion-best-practices/rules/fonts.md +152 -0
  324. package/src/skills-lib/remotion-best-practices/rules/get-audio-duration.md +58 -0
  325. package/src/skills-lib/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  326. package/src/skills-lib/remotion-best-practices/rules/get-video-duration.md +60 -0
  327. package/src/skills-lib/remotion-best-practices/rules/gifs.md +141 -0
  328. package/src/skills-lib/remotion-best-practices/rules/images.md +134 -0
  329. package/src/skills-lib/remotion-best-practices/rules/import-srt-captions.md +69 -0
  330. package/src/skills-lib/remotion-best-practices/rules/light-leaks.md +73 -0
  331. package/src/skills-lib/remotion-best-practices/rules/lottie.md +70 -0
  332. package/src/skills-lib/remotion-best-practices/rules/maps.md +412 -0
  333. package/src/skills-lib/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  334. package/src/skills-lib/remotion-best-practices/rules/measuring-text.md +140 -0
  335. package/src/skills-lib/remotion-best-practices/rules/parameters.md +109 -0
  336. package/src/skills-lib/remotion-best-practices/rules/sequencing.md +118 -0
  337. package/src/skills-lib/remotion-best-practices/rules/sfx.md +26 -0
  338. package/src/skills-lib/remotion-best-practices/rules/subtitles.md +36 -0
  339. package/src/skills-lib/remotion-best-practices/rules/tailwind.md +11 -0
  340. package/src/skills-lib/remotion-best-practices/rules/text-animations.md +20 -0
  341. package/src/skills-lib/remotion-best-practices/rules/timing.md +179 -0
  342. package/src/skills-lib/remotion-best-practices/rules/transcribe-captions.md +70 -0
  343. package/src/skills-lib/remotion-best-practices/rules/transitions.md +197 -0
  344. package/src/skills-lib/remotion-best-practices/rules/transparent-videos.md +106 -0
  345. package/src/skills-lib/remotion-best-practices/rules/trimming.md +51 -0
  346. package/src/skills-lib/remotion-best-practices/rules/videos.md +171 -0
  347. package/src/skills-lib/remotion-best-practices/rules/voiceover.md +99 -0
  348. package/src/skills-lib/revops/SKILL.md +343 -0
  349. package/src/skills-lib/revops/evals/evals.json +91 -0
  350. package/src/skills-lib/revops/references/automation-playbooks.md +290 -0
  351. package/src/skills-lib/revops/references/lifecycle-definitions.md +278 -0
  352. package/src/skills-lib/revops/references/routing-rules.md +203 -0
  353. package/src/skills-lib/revops/references/scoring-models.md +247 -0
  354. package/src/skills-lib/sales-enablement/SKILL.md +349 -0
  355. package/src/skills-lib/sales-enablement/evals/evals.json +91 -0
  356. package/src/skills-lib/sales-enablement/references/deck-frameworks.md +263 -0
  357. package/src/skills-lib/sales-enablement/references/demo-scripts.md +355 -0
  358. package/src/skills-lib/sales-enablement/references/objection-library.md +270 -0
  359. package/src/skills-lib/sales-enablement/references/one-pager-templates.md +208 -0
  360. package/src/skills-lib/schema-markup/SKILL.md +179 -0
  361. package/src/skills-lib/schema-markup/evals/evals.json +87 -0
  362. package/src/skills-lib/schema-markup/references/schema-examples.md +398 -0
  363. package/src/skills-lib/seo-audit/SKILL.md +412 -0
  364. package/src/skills-lib/seo-audit/evals/evals.json +136 -0
  365. package/src/skills-lib/seo-audit/references/ai-writing-detection.md +200 -0
  366. package/src/skills-lib/signup-flow-cro/SKILL.md +359 -0
  367. package/src/skills-lib/signup-flow-cro/evals/evals.json +88 -0
  368. package/src/skills-lib/site-architecture/SKILL.md +357 -0
  369. package/src/skills-lib/site-architecture/evals/evals.json +88 -0
  370. package/src/skills-lib/site-architecture/references/mermaid-templates.md +216 -0
  371. package/src/skills-lib/site-architecture/references/navigation-patterns.md +305 -0
  372. package/src/skills-lib/site-architecture/references/site-type-templates.md +293 -0
  373. package/src/skills-lib/social-content/SKILL.md +278 -0
  374. package/src/skills-lib/social-content/evals/evals.json +92 -0
  375. package/src/skills-lib/social-content/references/platforms.md +170 -0
  376. package/src/skills-lib/social-content/references/post-templates.md +177 -0
  377. package/src/skills-lib/social-content/references/reverse-engineering.md +195 -0
  378. package/src/skills-lib/supabase-postgres-best-practices/AGENTS.md +68 -0
  379. package/src/skills-lib/supabase-postgres-best-practices/CLAUDE.md +68 -0
  380. package/src/skills-lib/supabase-postgres-best-practices/README.md +116 -0
  381. package/src/skills-lib/supabase-postgres-best-practices/SKILL.md +64 -0
  382. package/src/skills-lib/supabase-postgres-best-practices/references/_contributing.md +171 -0
  383. package/src/skills-lib/supabase-postgres-best-practices/references/_sections.md +39 -0
  384. package/src/skills-lib/supabase-postgres-best-practices/references/_template.md +34 -0
  385. package/src/skills-lib/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
  386. package/src/skills-lib/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
  387. package/src/skills-lib/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
  388. package/src/skills-lib/supabase-postgres-best-practices/references/conn-limits.md +44 -0
  389. package/src/skills-lib/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
  390. package/src/skills-lib/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
  391. package/src/skills-lib/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
  392. package/src/skills-lib/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
  393. package/src/skills-lib/supabase-postgres-best-practices/references/data-pagination.md +50 -0
  394. package/src/skills-lib/supabase-postgres-best-practices/references/data-upsert.md +50 -0
  395. package/src/skills-lib/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
  396. package/src/skills-lib/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
  397. package/src/skills-lib/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
  398. package/src/skills-lib/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
  399. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
  400. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
  401. package/src/skills-lib/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
  402. package/src/skills-lib/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
  403. package/src/skills-lib/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
  404. package/src/skills-lib/supabase-postgres-best-practices/references/query-index-types.md +48 -0
  405. package/src/skills-lib/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
  406. package/src/skills-lib/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
  407. package/src/skills-lib/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
  408. package/src/skills-lib/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
  409. package/src/skills-lib/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
  410. package/src/skills-lib/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
  411. package/src/skills-lib/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
  412. package/src/skills-lib/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
  413. package/src/skills-lib/supabase-postgres-best-practices/references/security-privileges.md +54 -0
  414. package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
  415. package/src/skills-lib/supabase-postgres-best-practices/references/security-rls-performance.md +57 -0
  416. package/src/skills-lib/taste-redesign/SKILL.md +178 -0
  417. package/src/skills-lib/taste-skill/SKILL.md +1206 -0
  418. package/src/skills-lib/ui-component-curator/SKILL.md +102 -0
  419. package/src/skills-lib/ui-ux-pro-max/SKILL.md +377 -0
  420. package/src/skills-lib/ui-ux-pro-max/data/charts.csv +26 -0
  421. package/src/skills-lib/ui-ux-pro-max/data/colors.csv +97 -0
  422. package/src/skills-lib/ui-ux-pro-max/data/icons.csv +101 -0
  423. package/src/skills-lib/ui-ux-pro-max/data/landing.csv +31 -0
  424. package/src/skills-lib/ui-ux-pro-max/data/products.csv +97 -0
  425. package/src/skills-lib/ui-ux-pro-max/data/react-performance.csv +45 -0
  426. package/src/skills-lib/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  427. package/src/skills-lib/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  428. package/src/skills-lib/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  429. package/src/skills-lib/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  430. package/src/skills-lib/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  431. package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  432. package/src/skills-lib/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  433. package/src/skills-lib/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  434. package/src/skills-lib/ui-ux-pro-max/data/stacks/react.csv +54 -0
  435. package/src/skills-lib/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  436. package/src/skills-lib/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  437. package/src/skills-lib/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  438. package/src/skills-lib/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  439. package/src/skills-lib/ui-ux-pro-max/data/styles.csv +68 -0
  440. package/src/skills-lib/ui-ux-pro-max/data/typography.csv +58 -0
  441. package/src/skills-lib/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  442. package/src/skills-lib/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  443. package/src/skills-lib/ui-ux-pro-max/data/web-interface.csv +31 -0
  444. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  445. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  446. package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
  447. package/src/skills-lib/ui-ux-pro-max/scripts/core.py +253 -0
  448. package/src/skills-lib/ui-ux-pro-max/scripts/design_system.py +1067 -0
  449. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +1 -0
  450. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +1 -0
  451. package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +1 -0
  452. package/src/skills-lib/ui-ux-pro-max/scripts/search.py +114 -0
  453. package/src/skills-lib/web-security/SKILL.md +147 -0
  454. package/src/skills-lib/wizz-router/SKILL.md +257 -0
  455. package/src/squads/README.md +39 -0
  456. package/src/squads/advisory-board/README.md +34 -0
  457. package/src/squads/advisory-board/agents/board-chair.md +161 -0
  458. package/src/squads/advisory-board/agents/brene-brown.md +296 -0
  459. package/src/squads/advisory-board/agents/charlie-munger.md +590 -0
  460. package/src/squads/advisory-board/agents/derek-sivers.md +268 -0
  461. package/src/squads/advisory-board/agents/naval-ravikant.md +251 -0
  462. package/src/squads/advisory-board/agents/patrick-lencioni.md +394 -0
  463. package/src/squads/advisory-board/agents/peter-thiel.md +269 -0
  464. package/src/squads/advisory-board/agents/ray-dalio.md +587 -0
  465. package/src/squads/advisory-board/agents/reid-hoffman.md +278 -0
  466. package/src/squads/advisory-board/agents/simon-sinek.md +291 -0
  467. package/src/squads/advisory-board/agents/yvon-chouinard.md +275 -0
  468. package/src/squads/advisory-board/squad.yaml +50 -0
  469. package/src/squads/brand-squad/README.md +60 -0
  470. package/src/squads/brand-squad/agents/al-ries.md +175 -0
  471. package/src/squads/brand-squad/agents/alina-wheeler.md +184 -0
  472. package/src/squads/brand-squad/agents/archetype-consultant.md +215 -0
  473. package/src/squads/brand-squad/agents/brand-chief.md +158 -0
  474. package/src/squads/brand-squad/agents/byron-sharp.md +169 -0
  475. package/src/squads/brand-squad/agents/david-aaker.md +166 -0
  476. package/src/squads/brand-squad/agents/denise-yohn.md +172 -0
  477. package/src/squads/brand-squad/agents/domain-scout.md +135 -0
  478. package/src/squads/brand-squad/agents/donald-miller.md +179 -0
  479. package/src/squads/brand-squad/agents/emily-heyward.md +147 -0
  480. package/src/squads/brand-squad/agents/jean-noel-kapferer.md +189 -0
  481. package/src/squads/brand-squad/agents/kevin-keller.md +199 -0
  482. package/src/squads/brand-squad/agents/marty-neumeier.md +170 -0
  483. package/src/squads/brand-squad/agents/miller-sticky-brand.md +180 -0
  484. package/src/squads/brand-squad/agents/naming-strategist.md +171 -0
  485. package/src/squads/brand-squad/squad.yaml +117 -0
  486. package/src/squads/c-level-squad/README.md +29 -0
  487. package/src/squads/c-level-squad/agents/caio-architect.md +235 -0
  488. package/src/squads/c-level-squad/agents/cio-engineer.md +209 -0
  489. package/src/squads/c-level-squad/agents/cmo-architect.md +208 -0
  490. package/src/squads/c-level-squad/agents/coo-orchestrator.md +193 -0
  491. package/src/squads/c-level-squad/agents/cto-architect.md +194 -0
  492. package/src/squads/c-level-squad/agents/vision-chief.md +201 -0
  493. package/src/squads/c-level-squad/squad.yaml +45 -0
  494. package/src/squads/claude-code-mastery/README.md +146 -0
  495. package/src/squads/claude-code-mastery/agents/claude-mastery-chief.md +554 -0
  496. package/src/squads/claude-code-mastery/agents/config-engineer.md +865 -0
  497. package/src/squads/claude-code-mastery/agents/hooks-architect.md +1013 -0
  498. package/src/squads/claude-code-mastery/agents/mcp-integrator.md +791 -0
  499. package/src/squads/claude-code-mastery/agents/project-integrator.md +1196 -0
  500. package/src/squads/claude-code-mastery/agents/roadmap-sentinel.md +931 -0
  501. package/src/squads/claude-code-mastery/agents/skill-craftsman.md +1250 -0
  502. package/src/squads/claude-code-mastery/agents/swarm-orchestrator.md +1008 -0
  503. package/src/squads/copy-squad/README.md +65 -0
  504. package/src/squads/copy-squad/agents/andre-chaperon.md +206 -0
  505. package/src/squads/copy-squad/agents/ben-settle.md +194 -0
  506. package/src/squads/copy-squad/agents/claude-hopkins.md +182 -0
  507. package/src/squads/copy-squad/agents/clayton-makepeace.md +225 -0
  508. package/src/squads/copy-squad/agents/copy-chief.md +166 -0
  509. package/src/squads/copy-squad/agents/dan-kennedy.md +202 -0
  510. package/src/squads/copy-squad/agents/dan-koe.md +223 -0
  511. package/src/squads/copy-squad/agents/david-deutsch.md +197 -0
  512. package/src/squads/copy-squad/agents/david-ogilvy.md +198 -0
  513. package/src/squads/copy-squad/agents/eugene-schwartz.md +238 -0
  514. package/src/squads/copy-squad/agents/frank-kern.md +195 -0
  515. package/src/squads/copy-squad/agents/gary-bencivenga.md +197 -0
  516. package/src/squads/copy-squad/agents/gary-halbert.md +219 -0
  517. package/src/squads/copy-squad/agents/jim-rutz.md +193 -0
  518. package/src/squads/copy-squad/agents/joe-sugarman.md +234 -0
  519. package/src/squads/copy-squad/agents/john-carlton.md +203 -0
  520. package/src/squads/copy-squad/agents/jon-benson.md +196 -0
  521. package/src/squads/copy-squad/agents/parris-lampropoulos.md +188 -0
  522. package/src/squads/copy-squad/agents/robert-collier.md +183 -0
  523. package/src/squads/copy-squad/agents/russell-brunson.md +229 -0
  524. package/src/squads/copy-squad/agents/ry-schwartz.md +185 -0
  525. package/src/squads/copy-squad/agents/stefan-georgi.md +188 -0
  526. package/src/squads/copy-squad/agents/todd-brown.md +171 -0
  527. package/src/squads/copy-squad/squad.yaml +87 -0
  528. package/src/squads/cybersecurity/README.md +38 -0
  529. package/src/squads/cybersecurity/agents/busterer.md +108 -0
  530. package/src/squads/cybersecurity/agents/cartographer.md +114 -0
  531. package/src/squads/cybersecurity/agents/chris-sanders.md +205 -0
  532. package/src/squads/cybersecurity/agents/command-generator.md +121 -0
  533. package/src/squads/cybersecurity/agents/cyber-chief.md +120 -0
  534. package/src/squads/cybersecurity/agents/dirber.md +111 -0
  535. package/src/squads/cybersecurity/agents/fuzzer.md +121 -0
  536. package/src/squads/cybersecurity/agents/georgia-weidman.md +178 -0
  537. package/src/squads/cybersecurity/agents/jim-manico.md +182 -0
  538. package/src/squads/cybersecurity/agents/marcus-carey.md +200 -0
  539. package/src/squads/cybersecurity/agents/omar-santos.md +206 -0
  540. package/src/squads/cybersecurity/agents/peter-kim.md +179 -0
  541. package/src/squads/cybersecurity/agents/ripper.md +121 -0
  542. package/src/squads/cybersecurity/agents/rogue.md +116 -0
  543. package/src/squads/cybersecurity/agents/shannon-runner.md +108 -0
  544. package/src/squads/cybersecurity/squad.yaml +56 -0
  545. package/src/squads/data-squad/README.md +30 -0
  546. package/src/squads/data-squad/agents/avinash-kaushik.md +268 -0
  547. package/src/squads/data-squad/agents/data-chief.md +167 -0
  548. package/src/squads/data-squad/agents/david-spinks.md +277 -0
  549. package/src/squads/data-squad/agents/nick-mehta.md +294 -0
  550. package/src/squads/data-squad/agents/peter-fader.md +246 -0
  551. package/src/squads/data-squad/agents/sean-ellis.md +303 -0
  552. package/src/squads/data-squad/agents/wes-kao.md +268 -0
  553. package/src/squads/data-squad/squad.yaml +46 -0
  554. package/src/squads/design-squad/README.md +31 -0
  555. package/src/squads/design-squad/agents/brad-frost.md +185 -0
  556. package/src/squads/design-squad/agents/dan-mall.md +178 -0
  557. package/src/squads/design-squad/agents/dave-malouf.md +198 -0
  558. package/src/squads/design-squad/agents/design-chief.md +109 -0
  559. package/src/squads/design-squad/agents/design-system-architect.md +109 -0
  560. package/src/squads/design-squad/agents/ui-engineer.md +102 -0
  561. package/src/squads/design-squad/agents/ux-designer.md +105 -0
  562. package/src/squads/design-squad/agents/visual-generator.md +108 -0
  563. package/src/squads/design-squad/squad.yaml +48 -0
  564. package/src/squads/hormozi-squad/README.md +39 -0
  565. package/src/squads/hormozi-squad/agents/hormozi-ads.md +159 -0
  566. package/src/squads/hormozi-squad/agents/hormozi-advisor.md +178 -0
  567. package/src/squads/hormozi-squad/agents/hormozi-audit.md +178 -0
  568. package/src/squads/hormozi-squad/agents/hormozi-chief.md +111 -0
  569. package/src/squads/hormozi-squad/agents/hormozi-closer.md +179 -0
  570. package/src/squads/hormozi-squad/agents/hormozi-content.md +166 -0
  571. package/src/squads/hormozi-squad/agents/hormozi-copy.md +152 -0
  572. package/src/squads/hormozi-squad/agents/hormozi-hooks.md +177 -0
  573. package/src/squads/hormozi-squad/agents/hormozi-launch.md +160 -0
  574. package/src/squads/hormozi-squad/agents/hormozi-leads.md +198 -0
  575. package/src/squads/hormozi-squad/agents/hormozi-models.md +191 -0
  576. package/src/squads/hormozi-squad/agents/hormozi-offers.md +197 -0
  577. package/src/squads/hormozi-squad/agents/hormozi-pricing.md +151 -0
  578. package/src/squads/hormozi-squad/agents/hormozi-retention.md +166 -0
  579. package/src/squads/hormozi-squad/agents/hormozi-scale.md +175 -0
  580. package/src/squads/hormozi-squad/agents/hormozi-workshop.md +160 -0
  581. package/src/squads/hormozi-squad/squad.yaml +60 -0
  582. package/src/squads/movement/README.md +29 -0
  583. package/src/squads/movement/agents/analista-de-impacto.md +350 -0
  584. package/src/squads/movement/agents/estrategista-de-ciclo.md +301 -0
  585. package/src/squads/movement/agents/fenomenologo.md +169 -0
  586. package/src/squads/movement/agents/identitario.md +265 -0
  587. package/src/squads/movement/agents/manifestador.md +279 -0
  588. package/src/squads/movement/agents/movement-architect.md +210 -0
  589. package/src/squads/movement/agents/movement-chief.md +135 -0
  590. package/src/squads/movement/squad.yaml +45 -0
  591. package/src/squads/storytelling/README.md +35 -0
  592. package/src/squads/storytelling/agents/blake-snyder.md +225 -0
  593. package/src/squads/storytelling/agents/dan-harmon.md +167 -0
  594. package/src/squads/storytelling/agents/joseph-campbell.md +184 -0
  595. package/src/squads/storytelling/agents/keith-johnstone.md +157 -0
  596. package/src/squads/storytelling/agents/kindra-hall.md +162 -0
  597. package/src/squads/storytelling/agents/marshall-ganz.md +167 -0
  598. package/src/squads/storytelling/agents/matthew-dicks.md +152 -0
  599. package/src/squads/storytelling/agents/nancy-duarte.md +154 -0
  600. package/src/squads/storytelling/agents/oren-klaff.md +166 -0
  601. package/src/squads/storytelling/agents/park-howell.md +152 -0
  602. package/src/squads/storytelling/agents/shawn-coyne.md +208 -0
  603. package/src/squads/storytelling/agents/story-chief.md +155 -0
  604. package/src/squads/storytelling/squad.yaml +52 -0
  605. package/src/squads/traffic-masters/README.md +39 -0
  606. package/src/squads/traffic-masters/agents/ad-midas.md +149 -0
  607. package/src/squads/traffic-masters/agents/ads-analyst.md +135 -0
  608. package/src/squads/traffic-masters/agents/creative-analyst.md +142 -0
  609. package/src/squads/traffic-masters/agents/depesh-mandalia.md +174 -0
  610. package/src/squads/traffic-masters/agents/fiscal.md +144 -0
  611. package/src/squads/traffic-masters/agents/kasim-aslam.md +158 -0
  612. package/src/squads/traffic-masters/agents/media-buyer.md +159 -0
  613. package/src/squads/traffic-masters/agents/molly-pittman.md +185 -0
  614. package/src/squads/traffic-masters/agents/nicholas-kusmich.md +157 -0
  615. package/src/squads/traffic-masters/agents/pedro-sobral.md +158 -0
  616. package/src/squads/traffic-masters/agents/performance-analyst.md +135 -0
  617. package/src/squads/traffic-masters/agents/pixel-specialist.md +144 -0
  618. package/src/squads/traffic-masters/agents/ralph-burns.md +163 -0
  619. package/src/squads/traffic-masters/agents/scale-optimizer.md +144 -0
  620. package/src/squads/traffic-masters/agents/tom-breeze.md +175 -0
  621. package/src/squads/traffic-masters/agents/traffic-chief.md +97 -0
  622. package/src/squads/traffic-masters/squad.yaml +59 -0
  623. package/tools/installer/commands/install.js +12 -0
  624. package/tools/installer/core/config.js +20 -0
  625. package/tools/installer/core/installer.js +100 -0
  626. package/tools/installer/core/manifest-generator.js +14 -3
  627. package/tools/installer/modules/cli-config.js +145 -0
  628. package/tools/installer/modules/mcp-config.js +137 -0
  629. package/tools/installer/modules/skills-lib.js +135 -0
  630. package/tools/installer/ui.js +210 -0
@@ -0,0 +1,97 @@
1
+ # Traffic Chief
2
+
3
+ > ACTIVATION-NOTICE: You are the Traffic Chief — orchestrator of the Traffic Masters Squad. You do NOT buy media or write ads. You DIAGNOSE traffic problems, ROUTE them to the correct specialist, and REVIEW their output. You think in platforms, funnels, metrics, and creative. Every traffic problem maps to a platform expert or functional specialist.
4
+
5
+ ## COMPLETE AGENT DEFINITION
6
+
7
+ ```yaml
8
+ agent:
9
+ name: "Traffic Chief"
10
+ id: traffic-chief
11
+ title: "Traffic Masters Orchestrator"
12
+ icon: "🎯"
13
+ tier: 0
14
+ squad: traffic-masters
15
+ role: orchestrator
16
+
17
+ persona:
18
+ role: "Traffic Problem Diagnostician & Squad Router"
19
+ identity: "The central nervous system of the Traffic Masters Squad. Fluent in all major ad platforms and traffic strategies. Diagnoses whether a traffic problem is platform-specific, creative-related, targeting-based, budget-driven, or funnel-connected. Routes to the right expert or specialist."
20
+ style: "Analytical, metric-driven, diagnostic. Gets to the root cause fast. Speaks in ROAS, CPA, CTR, and funnel stages."
21
+
22
+ core_diagnostic:
23
+ step_1: "What's the ACTUAL problem? (Not enough traffic? Wrong traffic? Traffic that doesn't convert?)"
24
+ step_2: "Which platform(s)? (Facebook, Google, YouTube, TikTok, LinkedIn, multi-platform)"
25
+ step_3: "Where in the funnel? (Top = awareness/reach, Middle = consideration/clicks, Bottom = conversion)"
26
+ step_4: "What's the budget level? (<$1K/mo, $1K-$10K, $10K-$100K, $100K+)"
27
+ step_5: "Route to the right specialist."
28
+
29
+ routing_logic:
30
+ platform_specific:
31
+ facebook_meta:
32
+ signals: ["Facebook ads", "Meta ads", "Instagram ads", "Reels ads"]
33
+ route_to: [molly-pittman, depesh-mandalia, ralph-burns]
34
+ youtube:
35
+ signals: ["YouTube ads", "pre-roll", "TrueView", "video ads on YouTube"]
36
+ route_to: tom-breeze
37
+ google:
38
+ signals: ["Google Ads", "Search ads", "Performance Max", "Shopping ads"]
39
+ route_to: kasim-aslam
40
+ brazil_latam:
41
+ signals: ["Brazilian market", "LATAM", "Portuguese-speaking", "gestor de trafego"]
42
+ route_to: pedro-sobral
43
+
44
+ function_specific:
45
+ creative_problem:
46
+ signals: ["ads not getting clicks", "creative fatigue", "need better ad creative", "low CTR"]
47
+ route_to: [ad-midas, creative-analyst]
48
+ scaling_problem:
49
+ signals: ["can't scale spend", "CPA increases with budget", "diminishing returns"]
50
+ route_to: [scale-optimizer, depesh-mandalia]
51
+ tracking_problem:
52
+ signals: ["attribution issues", "pixel not firing", "iOS tracking", "conversion tracking broken"]
53
+ route_to: pixel-specialist
54
+ analysis_problem:
55
+ signals: ["don't know what's working", "need audit", "can't read the data"]
56
+ route_to: [performance-analyst, ads-analyst]
57
+ budget_problem:
58
+ signals: ["budget allocation", "cashflow for ads", "ROAS targets", "profitability"]
59
+ route_to: fiscal
60
+ execution_problem:
61
+ signals: ["need someone to set up campaigns", "campaign structure", "media buying"]
62
+ route_to: media-buyer
63
+
64
+ quality_review:
65
+ checks:
66
+ - "Is the offer validated before spending on ads?"
67
+ - "Is tracking properly set up?"
68
+ - "Are we testing creatives systematically?"
69
+ - "Is the CPA sustainable relative to LTV?"
70
+ - "Are we scaling profitably, not just spending more?"
71
+ - "Is there a clear funnel from click to conversion?"
72
+
73
+ commands:
74
+ - name: diagnose
75
+ description: "Diagnose the traffic problem and recommend the right specialist"
76
+ - name: route
77
+ description: "Route a specific request to the correct traffic agent"
78
+ - name: review
79
+ description: "Review any traffic strategy for completeness"
80
+ - name: roster
81
+ description: "Show all 16 Traffic Masters agents and their specialties"
82
+ - name: metrics
83
+ description: "Quick metrics health check on any campaign"
84
+ ```
85
+
86
+ ---
87
+
88
+ ## How the Traffic Chief Routes
89
+
90
+ 1. **Listen to the problem.** What's actually happening with their traffic/ads?
91
+ 2. **Identify the platform.** Facebook? Google? YouTube? Multi-platform?
92
+ 3. **Identify the function.** Creative? Targeting? Scaling? Tracking? Budget?
93
+ 4. **Check the budget level.** Strategy differs at $1K/mo vs. $100K/mo.
94
+ 5. **Route to specialist.** Platform expert for strategy, functional agent for execution.
95
+ 6. **Review output.** Does it meet ROAS targets? Is it scalable?
96
+
97
+ The Chief NEVER writes ads, buys media, or sets up campaigns. The Chief DIAGNOSES and ROUTES.
@@ -0,0 +1,59 @@
1
+ name: traffic-masters
2
+ version: "1.0.0"
3
+ short-title: "Traffic Masters"
4
+ description: "Squad de 16 agentes especialistas em trafego pago. Facebook, YouTube, Google Ads, media buying, creative analysis, scaling, tracking."
5
+ author: "Synkra AIOS"
6
+ license: MIT
7
+ slashPrefix: "traffic-masters"
8
+
9
+ aios:
10
+ minVersion: "4.0.0"
11
+ type: squad
12
+
13
+ tags:
14
+ - traffic
15
+ - ads
16
+ - facebook
17
+ - google
18
+ - youtube
19
+ - media-buying
20
+ - creative
21
+ - scaling
22
+ - tracking
23
+
24
+ components:
25
+ agents:
26
+ - traffic-chief.md
27
+ - molly-pittman.md
28
+ - ralph-burns.md
29
+ - depesh-mandalia.md
30
+ - nicholas-kusmich.md
31
+ - tom-breeze.md
32
+ - kasim-aslam.md
33
+ - pedro-sobral.md
34
+ - ad-midas.md
35
+ - media-buyer.md
36
+ - performance-analyst.md
37
+ - creative-analyst.md
38
+ - scale-optimizer.md
39
+ - pixel-specialist.md
40
+ - ads-analyst.md
41
+ - fiscal.md
42
+ tasks:
43
+ - analyze-performance.md
44
+ - audit-ad-account.md
45
+ - create-ad-creative.md
46
+ - create-ad-strategy.md
47
+ - diagnose.md
48
+ - manage-budget.md
49
+ - review.md
50
+ - scale-campaign.md
51
+ - setup-tracking.md
52
+ workflows:
53
+ - wf-account-audit.yaml
54
+ - wf-campaign-launch.yaml
55
+ checklists:
56
+ - output-quality.md
57
+
58
+ config:
59
+ extends: extend
@@ -18,6 +18,18 @@ module.exports = {
18
18
  'Comma-separated list of tool/IDE IDs to configure (e.g., "claude-code,cursor"). Required for fresh non-interactive (--yes) installs. Run with --list-tools to see all valid IDs.',
19
19
  ],
20
20
  ['--list-tools', 'Print all supported tool/IDE IDs (with target directories) and exit.'],
21
+ [
22
+ '--areas <areas>',
23
+ 'Comma-separated global-skill areas to install (e.g. "designer,copy,ads"), or "all". Only applies when the wizz module is selected. Default interactive prompt.',
24
+ ],
25
+ [
26
+ '--mcps <mcps>',
27
+ 'Comma-separated MCP ids to write to .mcp.json for the chosen areas, "all", or "none". Unlisted ones are recommended as `claude mcp add` commands. Only with the wizz module.',
28
+ ],
29
+ [
30
+ '--clis <clis>',
31
+ 'Comma-separated CLI ids to install for the chosen areas (e.g. "agent-browser,rtk"), "all", or "none". Already-installed ones are skipped; unlisted ones are recommended. Only with the wizz module.',
32
+ ],
21
33
  [
22
34
  '--set <spec>',
23
35
  'Set a module config option non-interactively. Spec format: <module>.<key>=<value> (e.g. bmm.project_knowledge=research). Repeatable. Run --list-options to see available keys.',
@@ -7,6 +7,9 @@ class Config {
7
7
  directory,
8
8
  modules,
9
9
  ides,
10
+ selectedAreas,
11
+ mcpPlan,
12
+ cliPlan,
10
13
  skipPrompts,
11
14
  verbose,
12
15
  actionType,
@@ -19,6 +22,20 @@ class Config {
19
22
  this.directory = directory;
20
23
  this.modules = Object.freeze([...modules]);
21
24
  this.ides = Object.freeze([...ides]);
25
+ // Global-skills areas the user chose to install (from skills-registry.yaml).
26
+ // Empty means "all areas" when skills-lib is installed; see installSkillsLib.
27
+ this.selectedAreas = Object.freeze([...(selectedAreas || [])]);
28
+ // MCP plan resolved from the registry for the chosen areas:
29
+ // toWrite — merged into the project .mcp.json (placeholder secrets)
30
+ // toRecommend — printed as `claude mcp add ...` for the user to run later
31
+ // Empty/absent on quick-update or non-wizz installs. See modules/mcp-config.js.
32
+ this.mcpPlan = mcpPlan || { toWrite: [], toRecommend: [] };
33
+ // CLI plan resolved from the registry for the chosen areas:
34
+ // toInstall — `install` command run during the install (opt-in)
35
+ // toRecommend — printed for the user to run later
36
+ // alreadyInstalled — detected on PATH, reported and skipped
37
+ // Empty/absent on quick-update or non-wizz installs. See modules/cli-config.js.
38
+ this.cliPlan = cliPlan || { toInstall: [], toRecommend: [], alreadyInstalled: [] };
22
39
  this.skipPrompts = skipPrompts;
23
40
  this.verbose = verbose;
24
41
  this.actionType = actionType;
@@ -50,6 +67,9 @@ class Config {
50
67
  directory: userInput.directory,
51
68
  modules,
52
69
  ides: userInput.skipIde ? [] : [...(userInput.ides || [])],
70
+ selectedAreas: userInput.selectedAreas || [],
71
+ mcpPlan: userInput.mcpPlan || { toWrite: [], toRecommend: [] },
72
+ cliPlan: userInput.cliPlan || { toInstall: [], toRecommend: [], alreadyInstalled: [] },
53
73
  skipPrompts: userInput.skipPrompts || false,
54
74
  verbose: userInput.verbose || false,
55
75
  actionType: userInput.actionType,
@@ -2,6 +2,9 @@ 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');
@@ -297,6 +300,103 @@ class Installer {
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 || [];
@@ -112,7 +112,15 @@ class ManifestGenerator {
112
112
  this.skillClaimedDirs = new Set();
113
113
  const debug = process.env.WIZZ_DEBUG_MANIFEST === 'true';
114
114
 
115
- for (const moduleName of this.updatedModules) {
115
+ // Walk every module, plus the global skills pool (`skills-lib`) when present.
116
+ // skills-lib is intentionally excluded from this.modules (no versioning), so
117
+ // we append it here as a scan target only.
118
+ const scanTargets = [...this.updatedModules];
119
+ if (await fs.pathExists(path.join(this.wizzDir, 'skills-lib'))) {
120
+ scanTargets.push('skills-lib');
121
+ }
122
+
123
+ for (const moduleName of scanTargets) {
116
124
  const modulePath = path.join(this.wizzDir, moduleName);
117
125
  if (!(await fs.pathExists(modulePath))) continue;
118
126
 
@@ -752,8 +760,11 @@ class ManifestGenerator {
752
760
  const entries = await fs.readdir(wizzDir, { withFileTypes: true });
753
761
 
754
762
  for (const entry of entries) {
755
- // Skip if not a directory or is a special directory
756
- if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config') {
763
+ // Skip if not a directory or is a special directory.
764
+ // `skills-lib` is the global skills pool (no module.yaml, not versioned);
765
+ // it is walked explicitly by collectSkills, but must NOT be treated as a
766
+ // module here or writeMainManifest/writeCentralConfig would try to version it.
767
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config' || entry.name === 'skills-lib') {
757
768
  continue;
758
769
  }
759
770
 
@@ -0,0 +1,145 @@
1
+ // Resolves + installs the command-line tools the agents shell out to.
2
+ //
3
+ // Sibling of modules/mcp-config.js. Where MCPs are *servers* merged into the
4
+ // project's .mcp.json, CLIs are *binaries* the agents call directly (e.g.
5
+ // `agent-browser` for browser verification, `rtk` for token economy). The
6
+ // skills-registry.yaml is the single source of truth for both: each AREA may
7
+ // declare a `clis:` list, plus a top-level `cli_utility:` for cross-cutting
8
+ // tools. Each entry has:
9
+ // id — the command name (used to detect + label)
10
+ // when — when this CLI helps (same disambiguation role as skills' `when`)
11
+ // check — command run to detect if it is ALREADY installed (e.g. `x --version`)
12
+ // install — command run to install it (e.g. `npm install -g x`, `curl … | sh`)
13
+ //
14
+ // Design rules (deliberately conservative, mirroring mcp-config):
15
+ // - DETECT FIRST: never reinstall something already on PATH. `check` decides.
16
+ // - INSTALL IS OPT-IN: the caller (the interactive multiselect / --clis flag)
17
+ // decides what to actually install; everything else is merely recommended
18
+ // by printing its `install` command. Nothing runs without an explicit choice.
19
+ // - NO-OP WHEN ABSENT: missing registry / no CLIs => empty, runs nothing.
20
+ // - FAILURE NEVER THROWS UPSTREAM: installClis collects failures and returns
21
+ // them so a bad network / EACCES never aborts the whole install.
22
+ //
23
+ // The install/check commands come from our own registry (not user input), and
24
+ // running them (npm install -g, curl | sh) is inherently a trust-the-source
25
+ // operation — hence install is opt-in and recommend-only by default.
26
+
27
+ const { exec } = require('node:child_process');
28
+ const { promisify } = require('node:util');
29
+
30
+ const execAsync = promisify(exec);
31
+
32
+ /**
33
+ * Default command runner: runs a shell command, never throws. A non-zero exit
34
+ * resolves to `{ ok: false, ... }` so callers branch on `ok`, not exceptions.
35
+ * Uses a shell so registry commands with pipes (`curl … | sh`) work as written.
36
+ * @param {string} command - Full shell command to run
37
+ * @param {{timeoutMs?: number}} [opts]
38
+ * @returns {Promise<{ok: boolean, stdout: string, stderr: string}>}
39
+ */
40
+ async function defaultExec(command, { timeoutMs = 300_000 } = {}) {
41
+ try {
42
+ const { stdout, stderr } = await execAsync(command, { timeout: timeoutMs });
43
+ return { ok: true, stdout: stdout || '', stderr: stderr || '' };
44
+ } catch (error) {
45
+ return { ok: false, stdout: error.stdout || '', stderr: error.stderr || error.message || '' };
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Resolve the recommended CLI entries for the chosen areas, deduped by id.
51
+ * Empty / undefined / containing 'all' means every area. The cross-cutting
52
+ * `cli_utility:` tools are always included. Entries missing `id` or `install`
53
+ * are dropped — a CLI we cannot install is not actionable.
54
+ *
55
+ * @param {Object} registry - Parsed skills-registry.yaml
56
+ * @param {string[]} [selectedAreas] - Area keys to resolve
57
+ * @returns {Array<{id: string, when: string, check: string, install: string, areas: string[]}>}
58
+ */
59
+ function resolveClis(registry, selectedAreas) {
60
+ const byId = new Map();
61
+ const areas = (registry && registry.areas) || {};
62
+ const wantAll = !selectedAreas || selectedAreas.length === 0 || selectedAreas.includes('all');
63
+ const chosen = wantAll ? Object.keys(areas) : selectedAreas;
64
+
65
+ const add = (cli, areaKey) => {
66
+ if (!cli || !cli.id || !cli.install) return; // not actionable without an install command
67
+ const existing = byId.get(cli.id);
68
+ if (existing) {
69
+ if (areaKey && !existing.areas.includes(areaKey)) existing.areas.push(areaKey);
70
+ return;
71
+ }
72
+ byId.set(cli.id, {
73
+ id: cli.id,
74
+ when: cli.when || '',
75
+ check: cli.check || '',
76
+ install: cli.install,
77
+ areas: areaKey ? [areaKey] : [],
78
+ });
79
+ };
80
+
81
+ for (const area of chosen) {
82
+ for (const cli of (areas[area] && areas[area].clis) || []) add(cli, area);
83
+ }
84
+ // Cross-cutting tools are offered regardless of area selection.
85
+ for (const cli of (registry && registry.cli_utility) || []) add(cli, null);
86
+
87
+ return [...byId.values()];
88
+ }
89
+
90
+ /**
91
+ * The copy-pasteable install command for a CLI entry — used to recommend the
92
+ * tools the user chose NOT to install (nothing is lost; they run it later).
93
+ * @param {{install?: string}} cli - Resolved CLI entry
94
+ * @returns {string} The install command, or '' if none.
95
+ */
96
+ function renderInstallCommand(cli) {
97
+ return (cli && cli.install) || '';
98
+ }
99
+
100
+ /**
101
+ * Annotate each CLI with `installed: boolean` by running its `check` command.
102
+ * Immutable: returns new objects, never mutates the input. An entry without a
103
+ * `check` cannot be verified, so it is reported as not installed (we offer it
104
+ * rather than silently assume it is present).
105
+ *
106
+ * @param {Array<Object>} clis - Resolved CLI entries
107
+ * @param {Function} [exec] - Injected runner (command, opts) => {ok,...}
108
+ * @returns {Promise<Array<Object>>} Copies with an added `installed` flag.
109
+ */
110
+ async function detectClis(clis, exec = defaultExec) {
111
+ return Promise.all(
112
+ (clis || []).map(async (cli) => {
113
+ if (!cli.check) return { ...cli, installed: false };
114
+ const res = await exec(cli.check, { timeoutMs: 5000 });
115
+ return { ...cli, installed: !!res.ok };
116
+ }),
117
+ );
118
+ }
119
+
120
+ /**
121
+ * Run the install command for each CLI, collecting outcomes. Never throws:
122
+ * a failed install (network, EACCES, missing command) lands in `failed` with
123
+ * its error so the caller can warn and continue the broader install.
124
+ *
125
+ * @param {Object} args
126
+ * @param {Array<{id: string, install?: string}>} args.clis - Entries to install
127
+ * @param {Function} [args.exec] - Injected runner (command, opts) => {ok,...}
128
+ * @returns {Promise<{installed: string[], failed: Array<{id: string, error: string}>}>}
129
+ */
130
+ async function installClis({ clis, exec = defaultExec }) {
131
+ const installed = [];
132
+ const failed = [];
133
+ for (const cli of clis || []) {
134
+ if (!cli.install) {
135
+ failed.push({ id: cli.id, error: 'sem comando de instalação no registry' });
136
+ continue;
137
+ }
138
+ const res = await exec(cli.install, { timeoutMs: 300_000 });
139
+ if (res.ok) installed.push(cli.id);
140
+ else failed.push({ id: cli.id, error: (res.stderr || 'falha desconhecida').trim() });
141
+ }
142
+ return { installed, failed };
143
+ }
144
+
145
+ module.exports = { resolveClis, renderInstallCommand, detectClis, installClis, defaultExec };
@@ -0,0 +1,137 @@
1
+ // Configures the recommended MCP servers for the chosen skill areas.
2
+ //
3
+ // The skills-registry.yaml is the single source of truth: besides mapping each
4
+ // AREA to its skills, it declares an `mcps:` list per area (plus a top-level
5
+ // `mcp_utility:` for cross-cutting servers like context7). This module reads
6
+ // that registry, resolves the user's chosen areas to a deduped set of MCP
7
+ // entries, and MERGES the selected ones into the project's `.mcp.json`.
8
+ //
9
+ // Design rules (kept deliberately conservative):
10
+ // - ADDITIVE: an existing server with the same id is never overwritten. The
11
+ // user's hand-tuned config always wins; we only ADD what is missing.
12
+ // - SECRETS STAY PLACEHOLDERS: `env` values come straight from the registry
13
+ // as `${VAR}` placeholders. We never read, infer, or write a real token.
14
+ // - NO-OP WHEN ABSENT: missing registry / no MCPs => returns empty, writes
15
+ // nothing. Always safe to call.
16
+ //
17
+ // The caller decides WHICH ids to write (the interactive multiselect) and which
18
+ // to merely recommend; this module exposes the resolution + merge primitives and
19
+ // a `claude mcp add` command renderer for the recommend path.
20
+
21
+ const path = require('node:path');
22
+ const fs = require('../fs-native');
23
+
24
+ /**
25
+ * Resolve the recommended MCP entries for the chosen areas, deduped by id.
26
+ * Empty / undefined / containing 'all' means every area. The cross-cutting
27
+ * `mcp_utility:` servers are always included.
28
+ *
29
+ * @param {Object} registry - Parsed skills-registry.yaml
30
+ * @param {string[]} [selectedAreas] - Area keys to resolve
31
+ * @returns {Array<{id: string, when: string, server: Object, areas: string[]}>}
32
+ * One entry per unique MCP id, carrying which area(s) recommended it.
33
+ */
34
+ function resolveMcps(registry, selectedAreas) {
35
+ const byId = new Map();
36
+ const areas = (registry && registry.areas) || {};
37
+ const wantAll = !selectedAreas || selectedAreas.length === 0 || selectedAreas.includes('all');
38
+ const chosen = wantAll ? Object.keys(areas) : selectedAreas;
39
+
40
+ const add = (mcp, areaKey) => {
41
+ if (!mcp || !mcp.id || !mcp.server) return;
42
+ const existing = byId.get(mcp.id);
43
+ if (existing) {
44
+ if (areaKey && !existing.areas.includes(areaKey)) existing.areas.push(areaKey);
45
+ return;
46
+ }
47
+ byId.set(mcp.id, {
48
+ id: mcp.id,
49
+ when: mcp.when || '',
50
+ server: mcp.server,
51
+ areas: areaKey ? [areaKey] : [],
52
+ });
53
+ };
54
+
55
+ for (const area of chosen) {
56
+ for (const mcp of (areas[area] && areas[area].mcps) || []) add(mcp, area);
57
+ }
58
+ // Cross-cutting servers are offered regardless of area selection.
59
+ for (const mcp of (registry && registry.mcp_utility) || []) add(mcp, null);
60
+
61
+ return [...byId.values()];
62
+ }
63
+
64
+ /**
65
+ * Normalize a registry `server` block into the shape written to `.mcp.json`.
66
+ * Drops empty `args`/`env` so the output stays minimal and diff-friendly.
67
+ * @param {Object} server - { command, args?, env? } from the registry
68
+ * @returns {Object} Sanitized server config
69
+ */
70
+ function toServerConfig(server) {
71
+ const out = { command: server.command };
72
+ if (Array.isArray(server.args) && server.args.length > 0) out.args = [...server.args];
73
+ if (server.env && Object.keys(server.env).length > 0) out.env = { ...server.env };
74
+ return out;
75
+ }
76
+
77
+ /**
78
+ * Render the `claude mcp add` command for an MCP entry — used to recommend
79
+ * servers the user chose NOT to write (nothing is lost; they can add later).
80
+ * @param {{id: string, server: Object}} mcp - Resolved MCP entry
81
+ * @returns {string} A copy-pasteable shell command
82
+ */
83
+ function renderAddCommand({ id, server }) {
84
+ const envFlags = Object.entries(server.env || {})
85
+ .map(([k, v]) => `-e ${k}=${v}`)
86
+ .join(' ');
87
+ const args = (server.args || []).join(' ');
88
+ const cmd = `${server.command}${args ? ` ${args}` : ''}`;
89
+ return `claude mcp add ${id}${envFlags ? ` ${envFlags}` : ''} -- ${cmd}`.replaceAll(/\s+/g, ' ').trim();
90
+ }
91
+
92
+ /**
93
+ * Merge the chosen MCP entries into `<projectDir>/.mcp.json`, additively.
94
+ * Reads any existing file (preserving unknown keys and existing servers),
95
+ * adds only ids not already present, and writes back pretty-printed JSON.
96
+ *
97
+ * @param {Object} args
98
+ * @param {string} args.projectDir - Project root where `.mcp.json` lives
99
+ * @param {Array<{id: string, server: Object}>} args.mcps - Entries to write
100
+ * @param {(absPath: string) => void} [args.trackFile] - Record the written file
101
+ * @returns {Promise<{added: string[], skipped: string[], file: string|null}>}
102
+ * `added` = ids newly written, `skipped` = ids already present (left intact).
103
+ */
104
+ async function writeMcpConfig({ projectDir, mcps, trackFile = () => {} }) {
105
+ if (!mcps || mcps.length === 0) return { added: [], skipped: [], file: null };
106
+
107
+ const file = path.join(projectDir, '.mcp.json');
108
+ let config = {};
109
+ if (await fs.pathExists(file)) {
110
+ try {
111
+ config = JSON.parse(await fs.readFile(file, 'utf8'));
112
+ } catch (error) {
113
+ throw new Error(`.mcp.json existe mas não é JSON válido: ${error.message}`);
114
+ }
115
+ }
116
+ if (!config || typeof config !== 'object') config = {};
117
+ if (!config.mcpServers || typeof config.mcpServers !== 'object') config.mcpServers = {};
118
+
119
+ const added = [];
120
+ const skipped = [];
121
+ for (const mcp of mcps) {
122
+ if (Object.prototype.hasOwnProperty.call(config.mcpServers, mcp.id)) {
123
+ skipped.push(mcp.id); // never clobber the user's existing server
124
+ continue;
125
+ }
126
+ config.mcpServers[mcp.id] = toServerConfig(mcp.server);
127
+ added.push(mcp.id);
128
+ }
129
+
130
+ if (added.length === 0) return { added, skipped, file };
131
+
132
+ await fs.writeJson(file, config, { spaces: 2 });
133
+ trackFile(file);
134
+ return { added, skipped, file };
135
+ }
136
+
137
+ module.exports = { resolveMcps, toServerConfig, renderAddCommand, writeMcpConfig };