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,983 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>w2 · Rough draft now beats perfect draft later</title>
6
+ <link rel="preconnect" href="https://fonts.googleapis.com">
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
+ <link href="https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300..700;1,8..60,300..700&family=Noto+Serif+SC:wght@200;300;400;500;600&family=Inter:wght@100;200;300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
9
+ <style>
10
+ :root {
11
+ --bg: #000000;
12
+ --ink: #FFFFFF;
13
+ --ink-80: rgba(255,255,255,0.82);
14
+ --ink-60: rgba(255,255,255,0.58);
15
+ --muted: rgba(255,255,255,0.40);
16
+ --dim: rgba(255,255,255,0.18);
17
+ --hairline: rgba(255,255,255,0.12);
18
+ --accent: #D97757;
19
+ --accent-deep: #B85D3D;
20
+ --bad: #6E3A2E; /* 失败暗红调,不刺眼 */
21
+ --bad-strong: #C85A42; /* 失败叉号强调,对比度提升 */
22
+ --cool: rgba(255,255,255,0.42); /* 冷色参考线(左路径) */
23
+ --cd-bg: #F5F4F0;
24
+ --cd-panel: #FFFFFF;
25
+ --cd-ink: #1A1918;
26
+
27
+ --serif-zh: "Noto Serif SC", "Songti SC", serif;
28
+ --serif-en: "Source Serif 4", "Tiempos Headline", Georgia, serif;
29
+ --sans: "Inter", -apple-system, "PingFang SC", "HarmonyOS Sans SC", system-ui, sans-serif;
30
+ --mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace;
31
+ }
32
+ html, body {
33
+ margin: 0; padding: 0;
34
+ background: #000;
35
+ overflow: hidden;
36
+ font-family: var(--sans);
37
+ color: var(--ink);
38
+ -webkit-font-smoothing: antialiased;
39
+ }
40
+ * { box-sizing: border-box; }
41
+
42
+ .stage {
43
+ position: fixed;
44
+ top: 50%; left: 50%;
45
+ width: 1920px; height: 1080px;
46
+ transform-origin: center center;
47
+ background: var(--bg);
48
+ overflow: hidden;
49
+ }
50
+
51
+ /* Film grain */
52
+ .stage::before {
53
+ content: '';
54
+ position: absolute;
55
+ inset: 0;
56
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='300' height='300'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/></svg>");
57
+ opacity: 0.02;
58
+ pointer-events: none;
59
+ z-index: 100;
60
+ }
61
+
62
+ /* Chrome · watermark */
63
+ .mark {
64
+ position: absolute;
65
+ top: 48px; left: 64px;
66
+ font-family: var(--mono);
67
+ font-size: 13px;
68
+ letter-spacing: 0.2em;
69
+ color: rgba(255,255,255,1);
70
+ opacity: 0.16;
71
+ pointer-events: none;
72
+ z-index: 50;
73
+ }
74
+ .mark-right {
75
+ position: absolute;
76
+ top: 48px; right: 64px;
77
+ font-family: var(--mono);
78
+ font-size: 13px;
79
+ letter-spacing: 0.2em;
80
+ color: rgba(255,255,255,1);
81
+ opacity: 0.16;
82
+ pointer-events: none;
83
+ z-index: 50;
84
+ }
85
+
86
+ /* Title */
87
+ .title-line {
88
+ position: absolute;
89
+ top: 112px;
90
+ left: 50%;
91
+ transform: translateX(-50%);
92
+ font-family: var(--mono);
93
+ font-size: 14px;
94
+ letter-spacing: 0.28em;
95
+ color: var(--muted);
96
+ text-transform: uppercase;
97
+ opacity: 0;
98
+ will-change: opacity;
99
+ white-space: nowrap;
100
+ }
101
+
102
+ /* Splitter — horizontal line dividing the two halves */
103
+ .splitter {
104
+ position: absolute;
105
+ left: 160px;
106
+ right: 160px;
107
+ top: 50%;
108
+ height: 1px;
109
+ background: var(--hairline);
110
+ transform: scaleX(0);
111
+ transform-origin: left center;
112
+ will-change: transform;
113
+ z-index: 5;
114
+ }
115
+ .splitter-label {
116
+ position: absolute;
117
+ top: 50%;
118
+ left: 50%;
119
+ transform: translate(-50%, -50%);
120
+ background: var(--bg);
121
+ padding: 0 28px;
122
+ font-family: var(--mono);
123
+ font-size: 11px;
124
+ letter-spacing: 0.32em;
125
+ color: var(--muted);
126
+ z-index: 6;
127
+ opacity: 0;
128
+ will-change: opacity;
129
+ white-space: nowrap;
130
+ }
131
+
132
+ /* ======================================================
133
+ * TOP HALF · 闷头一把梭(3 hours, all at once)
134
+ * ====================================================== */
135
+ .half-top {
136
+ position: absolute;
137
+ top: 200px;
138
+ left: 160px;
139
+ right: 160px;
140
+ height: 300px;
141
+ opacity: 0;
142
+ will-change: opacity;
143
+ }
144
+ .half-label {
145
+ font-family: var(--mono);
146
+ font-size: 13px;
147
+ letter-spacing: 0.24em;
148
+ color: var(--muted);
149
+ text-transform: uppercase;
150
+ margin-bottom: 24px;
151
+ display: flex;
152
+ align-items: center;
153
+ gap: 12px;
154
+ }
155
+ .half-label .tag {
156
+ padding: 3px 10px;
157
+ border: 1px solid var(--hairline);
158
+ border-radius: 2px;
159
+ color: var(--ink-60);
160
+ }
161
+ .half-top .half-label .tag { border-color: rgba(160,74,56,0.4); color: rgba(200,120,100,0.85); }
162
+ .half-label .zh {
163
+ font-family: var(--serif-zh);
164
+ font-size: 22px;
165
+ font-weight: 400;
166
+ letter-spacing: 0.02em;
167
+ color: var(--ink-80);
168
+ margin-left: 4px;
169
+ }
170
+
171
+ /* Single huge terminal panel */
172
+ .terminal-big {
173
+ width: 100%;
174
+ height: 200px;
175
+ background: rgba(20, 20, 20, 1);
176
+ border: 1px solid var(--hairline);
177
+ border-radius: 10px;
178
+ overflow: hidden;
179
+ box-shadow:
180
+ 0 0 0 1px rgba(255,255,255,0.02),
181
+ 0 40px 80px -30px rgba(0,0,0,0.7);
182
+ position: relative;
183
+ }
184
+ .tty-head {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 8px;
188
+ padding: 14px 18px;
189
+ border-bottom: 1px solid var(--hairline);
190
+ background: rgba(255,255,255,0.02);
191
+ }
192
+ .tty-head .d {
193
+ width: 10px; height: 10px; border-radius: 50%;
194
+ background: var(--hairline);
195
+ }
196
+ .tty-title {
197
+ margin-left: 14px;
198
+ color: var(--muted);
199
+ font-size: 12px;
200
+ font-family: var(--mono);
201
+ letter-spacing: 0.04em;
202
+ }
203
+ .tty-body {
204
+ padding: 28px 30px;
205
+ font-family: var(--mono);
206
+ font-size: 17px;
207
+ line-height: 1.6;
208
+ color: rgba(255,255,255,0.86);
209
+ }
210
+ .tty-body .line {
211
+ opacity: 0;
212
+ will-change: opacity;
213
+ }
214
+ .tty-body .prompt { color: var(--accent); margin-right: 10px; }
215
+ .tty-body .dim { color: var(--muted); }
216
+
217
+ /* The long running progress bar (simulated "3-hour render") */
218
+ .progress-row {
219
+ margin-top: 14px;
220
+ display: flex;
221
+ align-items: center;
222
+ gap: 14px;
223
+ font-family: var(--mono);
224
+ font-size: 14px;
225
+ color: var(--ink-60);
226
+ opacity: 0;
227
+ will-change: opacity;
228
+ }
229
+ .progress-bar {
230
+ flex: 1;
231
+ height: 4px;
232
+ background: var(--hairline);
233
+ border-radius: 2px;
234
+ position: relative;
235
+ overflow: hidden;
236
+ }
237
+ .progress-bar-fill {
238
+ position: absolute;
239
+ top: 0; left: 0;
240
+ height: 100%;
241
+ background: var(--accent);
242
+ width: 0%;
243
+ will-change: width, background;
244
+ }
245
+ .progress-bar.failed .progress-bar-fill {
246
+ background: var(--bad-strong);
247
+ }
248
+ .progress-pct {
249
+ font-variant-numeric: tabular-nums;
250
+ letter-spacing: 0.04em;
251
+ min-width: 54px;
252
+ text-align: right;
253
+ }
254
+ .progress-hours {
255
+ color: var(--muted);
256
+ font-size: 12px;
257
+ letter-spacing: 0.12em;
258
+ }
259
+ .progress-row.failed {
260
+ color: var(--bad-strong);
261
+ }
262
+
263
+ /* Big X overlay for failure stamp */
264
+ .fail-stamp {
265
+ position: absolute;
266
+ right: 32px;
267
+ top: 50%;
268
+ transform: translateY(-50%) rotate(-8deg);
269
+ width: 120px; height: 120px;
270
+ pointer-events: none;
271
+ opacity: 0;
272
+ will-change: opacity, transform;
273
+ z-index: 10;
274
+ }
275
+ .fail-stamp svg { width: 100%; height: 100%; }
276
+ .fail-stamp .stamp-text {
277
+ position: absolute;
278
+ bottom: -22px;
279
+ left: 50%;
280
+ transform: translateX(-50%);
281
+ font-family: var(--mono);
282
+ font-size: 10px;
283
+ letter-spacing: 0.32em;
284
+ color: var(--bad-strong);
285
+ white-space: nowrap;
286
+ }
287
+
288
+ /* ======================================================
289
+ * BOTTOM HALF · 尽早 show(small iterations)
290
+ * ====================================================== */
291
+ .half-bot {
292
+ position: absolute;
293
+ top: 580px;
294
+ left: 160px;
295
+ right: 160px;
296
+ height: 340px;
297
+ opacity: 0;
298
+ will-change: opacity;
299
+ }
300
+ .half-bot .half-label .tag {
301
+ border-color: rgba(217,119,87,0.35);
302
+ color: var(--accent);
303
+ }
304
+
305
+ .iter-row {
306
+ display: flex;
307
+ gap: 32px;
308
+ align-items: flex-end;
309
+ height: 240px;
310
+ margin-top: 12px;
311
+ }
312
+
313
+ .iter-panel {
314
+ flex: 1;
315
+ background: rgba(20, 20, 20, 1);
316
+ border: 1px solid var(--hairline);
317
+ border-radius: 8px;
318
+ overflow: hidden;
319
+ height: 100%;
320
+ position: relative;
321
+ opacity: 0;
322
+ transform: translateY(20px);
323
+ will-change: opacity, transform;
324
+ display: flex;
325
+ flex-direction: column;
326
+ }
327
+ .iter-panel .ip-head {
328
+ padding: 10px 14px;
329
+ border-bottom: 1px solid var(--hairline);
330
+ font-family: var(--mono);
331
+ font-size: 11px;
332
+ letter-spacing: 0.16em;
333
+ color: var(--muted);
334
+ display: flex;
335
+ align-items: center;
336
+ justify-content: space-between;
337
+ }
338
+ .iter-panel .ip-version {
339
+ color: var(--accent);
340
+ font-weight: 500;
341
+ }
342
+ .iter-panel .ip-body {
343
+ flex: 1;
344
+ padding: 16px 18px;
345
+ display: flex;
346
+ flex-direction: column;
347
+ justify-content: center;
348
+ gap: 10px;
349
+ }
350
+ /* Rough mockup blocks that grow more detailed each iteration */
351
+ .iter-panel .m-block {
352
+ height: 8px;
353
+ background: var(--dim);
354
+ border-radius: 2px;
355
+ opacity: 0.8;
356
+ }
357
+ .iter-panel .m-block.accent { background: var(--accent); opacity: 0.8; }
358
+ .iter-panel .m-block.short { width: 40%; }
359
+ .iter-panel .m-block.med { width: 70%; }
360
+ .iter-panel .m-block.full { width: 100%; }
361
+ .iter-panel .m-block.tall { height: 24px; }
362
+ .iter-panel .m-block.big { height: 40px; }
363
+
364
+ .iter-panel .nod {
365
+ position: absolute;
366
+ top: 10px;
367
+ right: 14px;
368
+ width: 16px; height: 16px;
369
+ opacity: 0;
370
+ will-change: opacity, transform;
371
+ }
372
+ .iter-panel .nod svg {
373
+ width: 100%; height: 100%;
374
+ stroke: var(--accent);
375
+ fill: none;
376
+ stroke-width: 2;
377
+ }
378
+ .iter-panel .ip-minutes {
379
+ position: absolute;
380
+ bottom: 10px;
381
+ left: 14px;
382
+ font-family: var(--mono);
383
+ font-size: 10px;
384
+ letter-spacing: 0.12em;
385
+ color: var(--muted);
386
+ }
387
+
388
+ /* Rising curve visualization for bottom half */
389
+ .curve-wrap {
390
+ position: absolute;
391
+ right: 0;
392
+ bottom: 0;
393
+ width: 340px;
394
+ height: 180px;
395
+ opacity: 0;
396
+ will-change: opacity;
397
+ }
398
+ .curve-wrap svg {
399
+ width: 100%;
400
+ height: 100%;
401
+ overflow: visible;
402
+ }
403
+ .curve-wrap .axis {
404
+ stroke: var(--hairline);
405
+ stroke-width: 1;
406
+ fill: none;
407
+ }
408
+ .curve-wrap .curve-path {
409
+ stroke: var(--accent);
410
+ stroke-width: 2;
411
+ fill: none;
412
+ stroke-linecap: round;
413
+ stroke-linejoin: round;
414
+ }
415
+ .curve-wrap .curve-dot {
416
+ fill: var(--accent);
417
+ r: 3;
418
+ }
419
+ .curve-wrap .curve-label {
420
+ font-family: var(--mono);
421
+ font-size: 9px;
422
+ fill: var(--muted);
423
+ letter-spacing: 0.12em;
424
+ }
425
+
426
+ /* ======================================================
427
+ * BEAT 3 · Full comparison chart crossfade
428
+ * ====================================================== */
429
+ .final-chart {
430
+ position: absolute;
431
+ left: 50%;
432
+ top: 50%;
433
+ transform: translate(-50%, -50%);
434
+ width: 1280px;
435
+ height: 620px;
436
+ opacity: 0;
437
+ will-change: opacity;
438
+ z-index: 60;
439
+ }
440
+ .final-chart svg {
441
+ width: 100%; height: 100%;
442
+ overflow: visible;
443
+ }
444
+ .final-chart .axis {
445
+ stroke: var(--hairline);
446
+ stroke-width: 1;
447
+ fill: none;
448
+ }
449
+ .final-chart .axis-label {
450
+ font-family: var(--mono);
451
+ font-size: 13px;
452
+ fill: var(--muted);
453
+ letter-spacing: 0.16em;
454
+ }
455
+ .final-chart .tick-label {
456
+ font-family: var(--mono);
457
+ font-size: 11px;
458
+ fill: var(--dim);
459
+ letter-spacing: 0.06em;
460
+ }
461
+ .final-chart .curve-a {
462
+ stroke: var(--cool);
463
+ stroke-width: 2;
464
+ fill: none;
465
+ stroke-linecap: round;
466
+ stroke-linejoin: round;
467
+ }
468
+ .final-chart .curve-a-dash {
469
+ stroke: var(--bad-strong);
470
+ stroke-width: 2.5;
471
+ fill: none;
472
+ stroke-dasharray: 5 7;
473
+ stroke-linecap: round;
474
+ }
475
+ .final-chart .curve-b {
476
+ stroke: var(--accent);
477
+ stroke-width: 3;
478
+ fill: none;
479
+ stroke-linecap: round;
480
+ stroke-linejoin: round;
481
+ }
482
+ .final-chart .curve-b-glow {
483
+ stroke: var(--accent);
484
+ stroke-width: 6;
485
+ fill: none;
486
+ opacity: 0.18;
487
+ stroke-linecap: round;
488
+ stroke-linejoin: round;
489
+ }
490
+ .final-chart .curve-dot {
491
+ fill: var(--accent);
492
+ }
493
+ .final-chart .fail-dot {
494
+ fill: none;
495
+ stroke: var(--bad-strong);
496
+ stroke-width: 2.5;
497
+ }
498
+ .final-chart .cool-dot {
499
+ fill: var(--cool);
500
+ }
501
+ .final-chart .anchor-label {
502
+ font-family: var(--serif-zh);
503
+ font-size: 20px;
504
+ font-weight: 400;
505
+ letter-spacing: 0.02em;
506
+ }
507
+ .final-chart .anchor-en {
508
+ font-family: var(--mono);
509
+ font-size: 11px;
510
+ letter-spacing: 0.18em;
511
+ text-transform: uppercase;
512
+ }
513
+
514
+ /* ======================================================
515
+ * BRAND REVEAL — 统一动作
516
+ * ====================================================== */
517
+ .brand-sheet {
518
+ position: absolute;
519
+ inset: 0;
520
+ background: var(--cd-bg);
521
+ transform: translateY(100%);
522
+ will-change: transform;
523
+ z-index: 80;
524
+ }
525
+ .brand-reveal {
526
+ position: absolute;
527
+ inset: 0;
528
+ z-index: 81;
529
+ display: flex;
530
+ flex-direction: column;
531
+ align-items: center;
532
+ justify-content: center;
533
+ opacity: 0;
534
+ will-change: opacity;
535
+ }
536
+ .brand-reveal .wordmark {
537
+ font-family: var(--sans);
538
+ font-weight: 100;
539
+ font-size: 128px;
540
+ letter-spacing: -0.045em;
541
+ color: var(--cd-ink);
542
+ line-height: 1;
543
+ }
544
+ .brand-reveal .wordmark .accent { color: var(--accent-deep); }
545
+ .brand-reveal .underline {
546
+ width: 0;
547
+ height: 2px;
548
+ background: var(--accent);
549
+ margin-top: 36px;
550
+ will-change: width;
551
+ }
552
+ </style>
553
+ </head>
554
+ <body>
555
+ <div class="stage" id="stage">
556
+ <div class="mark">HUASHU · DESIGN</div>
557
+ <div class="mark-right">V2 · 2026</div>
558
+
559
+ <div class="title-line" id="titleLine">w2 · rough draft now beats perfect draft later</div>
560
+
561
+ <!-- Splitter -->
562
+ <div class="splitter" id="splitter"></div>
563
+ <div class="splitter-label" id="splitterLabel">VS</div>
564
+
565
+ <!-- ============ TOP HALF: All-at-once ============ -->
566
+ <div class="half-top" id="halfTop">
567
+ <div class="half-label">
568
+ <span class="tag">A</span>
569
+ <span class="zh" style="font-family: var(--serif-en); font-style: italic; letter-spacing: 0.01em;">All-at-once</span>
570
+ <span style="font-family: var(--mono); color: var(--muted); letter-spacing: 0.18em; font-size: 11px; margin-left: auto;">3&nbsp;HOUR&nbsp;SESSION</span>
571
+ </div>
572
+ <div class="terminal-big">
573
+ <div class="tty-head">
574
+ <div class="d"></div><div class="d"></div><div class="d"></div>
575
+ <div class="tty-title">designer@studio · 3h session</div>
576
+ </div>
577
+ <div class="tty-body">
578
+ <div class="line" id="ttyL1"><span class="prompt">$</span>build final_design.html <span class="dim">// v1.0 · ship it all at once</span></div>
579
+ <div class="progress-row" id="progRow">
580
+ <div class="progress-bar" id="progBar">
581
+ <div class="progress-bar-fill" id="progFill"></div>
582
+ </div>
583
+ <span class="progress-pct" id="progPct">0%</span>
584
+ <span class="progress-hours" id="progHours">03:00:00</span>
585
+ </div>
586
+ </div>
587
+ <div class="fail-stamp" id="failStamp">
588
+ <svg viewBox="0 0 120 120">
589
+ <circle cx="60" cy="60" r="52" fill="none" stroke="#A04A38" stroke-width="3"/>
590
+ <path d="M 38 38 L 82 82 M 82 38 L 38 82" stroke="#A04A38" stroke-width="4" stroke-linecap="round"/>
591
+ </svg>
592
+ <div class="stamp-text">REJECTED</div>
593
+ </div>
594
+ </div>
595
+ </div>
596
+
597
+ <!-- ============ BOTTOM HALF: Show early ============ -->
598
+ <div class="half-bot" id="halfBot">
599
+ <div class="half-label">
600
+ <span class="tag">B</span>
601
+ <span class="zh" style="font-family: var(--serif-en); font-style: italic; letter-spacing: 0.01em;">Show early</span>
602
+ <span style="font-family: var(--mono); color: var(--muted); letter-spacing: 0.18em; font-size: 11px; margin-left: auto;">SMALL&nbsp;ITERATIONS</span>
603
+ </div>
604
+ <div class="iter-row">
605
+ <div class="iter-panel" id="iter1">
606
+ <div class="ip-head">
607
+ <span>draft · v1</span>
608
+ <span class="ip-version">15 min</span>
609
+ </div>
610
+ <div class="ip-body">
611
+ <div class="m-block short"></div>
612
+ <div class="m-block med"></div>
613
+ <div class="m-block short"></div>
614
+ </div>
615
+ <div class="nod" id="nod1">
616
+ <svg viewBox="0 0 16 16"><path d="M3 8 L7 12 L13 4"/></svg>
617
+ </div>
618
+ </div>
619
+ <div class="iter-panel" id="iter2">
620
+ <div class="ip-head">
621
+ <span>draft · v2</span>
622
+ <span class="ip-version">25 min</span>
623
+ </div>
624
+ <div class="ip-body">
625
+ <div class="m-block full tall"></div>
626
+ <div class="m-block med"></div>
627
+ <div class="m-block short"></div>
628
+ <div class="m-block med accent"></div>
629
+ </div>
630
+ <div class="nod" id="nod2">
631
+ <svg viewBox="0 0 16 16"><path d="M3 8 L7 12 L13 4"/></svg>
632
+ </div>
633
+ </div>
634
+ <div class="iter-panel" id="iter3">
635
+ <div class="ip-head">
636
+ <span>draft · v3</span>
637
+ <span class="ip-version">35 min</span>
638
+ </div>
639
+ <div class="ip-body">
640
+ <div class="m-block full big"></div>
641
+ <div class="m-block full tall accent"></div>
642
+ <div class="m-block med"></div>
643
+ <div class="m-block full"></div>
644
+ <div class="m-block short"></div>
645
+ </div>
646
+ <div class="nod" id="nod3">
647
+ <svg viewBox="0 0 16 16"><path d="M3 8 L7 12 L13 4"/></svg>
648
+ </div>
649
+ </div>
650
+ </div>
651
+ </div>
652
+
653
+ <!-- ============ Beat 3 · Final comparison chart ============ -->
654
+ <div class="final-chart" id="finalChart">
655
+ <svg viewBox="0 0 1280 620" preserveAspectRatio="xMidYMid meet">
656
+ <!-- Axes -->
657
+ <line class="axis" x1="110" y1="60" x2="110" y2="520"/>
658
+ <line class="axis" x1="110" y1="520" x2="1200" y2="520"/>
659
+
660
+ <!-- Y-axis label -->
661
+ <text class="axis-label" x="58" y="290" transform="rotate(-90 58 290)" text-anchor="middle">QUALITY</text>
662
+ <!-- X-axis label -->
663
+ <text class="axis-label" x="655" y="570" text-anchor="middle">TIME</text>
664
+
665
+ <!-- Tick marks -->
666
+ <text class="tick-label" x="110" y="545" text-anchor="middle">0</text>
667
+ <text class="tick-label" x="290" y="545" text-anchor="middle">15m</text>
668
+ <text class="tick-label" x="480" y="545" text-anchor="middle">25m</text>
669
+ <text class="tick-label" x="680" y="545" text-anchor="middle">35m</text>
670
+ <text class="tick-label" x="1200" y="545" text-anchor="middle">3h</text>
671
+
672
+ <!-- Curve A (All-at-once): flat crawl near zero, late spike, then crash -->
673
+ <path class="curve-a" id="curveA"
674
+ d="M 110 500 L 400 495 L 700 490 L 1000 485 L 1140 180" />
675
+ <path class="curve-a-dash" id="curveACrash"
676
+ d="M 1140 180 L 1200 510" />
677
+ <circle class="fail-dot" id="failDot" cx="1140" cy="180" r="9"/>
678
+ <g id="failX" opacity="0">
679
+ <line x1="1130" y1="170" x2="1150" y2="190" stroke="#C85A42" stroke-width="2.5" stroke-linecap="round"/>
680
+ <line x1="1150" y1="170" x2="1130" y2="190" stroke="#C85A42" stroke-width="2.5" stroke-linecap="round"/>
681
+ </g>
682
+
683
+ <text class="anchor-label" x="1200" y="150" fill="#C85A42" text-anchor="end" style="font-family: var(--serif-en); font-style: italic;">All-at-once</text>
684
+ <text class="anchor-en" x="1200" y="170" fill="#C85A42" text-anchor="end">REJECTED</text>
685
+
686
+ <!-- Curve B (Show early): steady step rise across first 35 min -->
687
+ <path class="curve-b-glow" id="curveBGlow"
688
+ d="M 110 500 L 290 380 L 480 270 L 680 140" />
689
+ <path class="curve-b" id="curveB"
690
+ d="M 110 500 L 290 380 L 480 270 L 680 140" />
691
+ <circle class="curve-dot" cx="290" cy="380" r="6"/>
692
+ <circle class="curve-dot" cx="480" cy="270" r="6"/>
693
+ <circle class="curve-dot" cx="680" cy="140" r="8"/>
694
+
695
+ <text class="anchor-label" x="680" y="115" fill="#D97757" text-anchor="middle" style="font-family: var(--serif-en); font-style: italic;">Show early</text>
696
+ <text class="anchor-en" x="680" y="96" fill="#D97757" text-anchor="middle">SHIPPED</text>
697
+
698
+ <text class="tick-label" x="555" y="477" text-anchor="middle" fill="rgba(255,255,255,0.3)" style="letter-spacing: 0.12em;">— 3 hours silence —</text>
699
+ </svg>
700
+ </div>
701
+
702
+ <!-- Brand reveal -->
703
+ <div class="brand-sheet" id="brandSheet"></div>
704
+ <div class="brand-reveal" id="brandReveal">
705
+ <div class="wordmark">huashu<span class="accent"> · </span>design</div>
706
+ <div class="underline" id="brandUnderline"></div>
707
+ </div>
708
+ </div>
709
+
710
+ <script>
711
+ // Auto-scale stage
712
+ function fitStage() {
713
+ const stage = document.getElementById('stage');
714
+ const sx = window.innerWidth / 1920;
715
+ const sy = window.innerHeight / 1080;
716
+ const s = Math.min(sx, sy);
717
+ stage.style.transform = `translate(-50%, -50%) scale(${s})`;
718
+ }
719
+ fitStage();
720
+ window.addEventListener('resize', fitStage);
721
+
722
+ // Easings
723
+ const expoOut = t => t === 1 ? 1 : 1 - Math.pow(2, -10 * t);
724
+ const expoIn = t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1));
725
+ const cubicInOut = t => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2;
726
+ const cubicOut = t => 1 - Math.pow(1 - t, 3);
727
+ const cubicIn = t => t * t * t;
728
+
729
+ function lerp(t, a, b, easing) {
730
+ if (t <= 0) return a;
731
+ if (t >= 1) return b;
732
+ const e = easing ? easing(t) : t;
733
+ return a + (b - a) * e;
734
+ }
735
+ function seg(time, start, end) {
736
+ if (time <= start) return 0;
737
+ if (time >= end) return 1;
738
+ return (time - start) / (end - start);
739
+ }
740
+
741
+ // ────────────────────────────────────
742
+ // Timeline — total 12s (Beat 1: 0-2 · Beat 2: 2-10 · Beat 3: 10-12)
743
+ //
744
+ // 0.0-0.6 title + splitter grow
745
+ // 0.6-1.4 two half-labels fade in (top first, then bot)
746
+ // 1.4-2.0 top terminal line 1 types; bot panel 1 enters
747
+ //
748
+ // Top track (闷头):
749
+ // 2.0-7.8 progress bar crawls from 0 to 99% (slow, painful)
750
+ // 7.8-8.4 stuck at 99%
751
+ // 8.4-8.9 fail stamp lands + bar turns red + bar drops to 0
752
+ //
753
+ // Bottom track (尽早):
754
+ // 2.0-2.6 iter1 enters, nod1 appears @ 2.8
755
+ // 3.6-4.2 iter2 enters, nod2 appears @ 4.4
756
+ // 5.6-6.2 iter3 enters, nod3 appears @ 6.4 (final tick — biggest)
757
+ //
758
+ // 8.8-9.8 both halves dim; final chart crossfades in
759
+ // (curves draw via stroke-dasharray)
760
+ // 9.8-10.4 chart settles, anchor labels bloom
761
+ // 10.0-12.0 brand reveal (sheet + wordmark + underline)
762
+ // ────────────────────────────────────
763
+
764
+ const el = {
765
+ title: document.getElementById('titleLine'),
766
+ splitter: document.getElementById('splitter'),
767
+ splitterLb: document.getElementById('splitterLabel'),
768
+ halfTop: document.getElementById('halfTop'),
769
+ halfBot: document.getElementById('halfBot'),
770
+ ttyL1: document.getElementById('ttyL1'),
771
+ progRow: document.getElementById('progRow'),
772
+ progBar: document.getElementById('progBar'),
773
+ progFill: document.getElementById('progFill'),
774
+ progPct: document.getElementById('progPct'),
775
+ progHours: document.getElementById('progHours'),
776
+ failStamp: document.getElementById('failStamp'),
777
+ iter1: document.getElementById('iter1'),
778
+ iter2: document.getElementById('iter2'),
779
+ iter3: document.getElementById('iter3'),
780
+ nod1: document.getElementById('nod1'),
781
+ nod2: document.getElementById('nod2'),
782
+ nod3: document.getElementById('nod3'),
783
+ finalChart: document.getElementById('finalChart'),
784
+ brandSheet: document.getElementById('brandSheet'),
785
+ brandReveal:document.getElementById('brandReveal'),
786
+ brandUnder: document.getElementById('brandUnderline'),
787
+ curveA: document.getElementById('curveA'),
788
+ curveACrash:document.getElementById('curveACrash'),
789
+ curveB: document.getElementById('curveB'),
790
+ curveBGlow: document.getElementById('curveBGlow'),
791
+ };
792
+
793
+ // Precompute path lengths for draw-on animation
794
+ const lenA = el.curveA.getTotalLength();
795
+ const lenACrash = el.curveACrash.getTotalLength();
796
+ const lenB = el.curveB.getTotalLength();
797
+
798
+ el.curveA.style.strokeDasharray = `${lenA} ${lenA}`;
799
+ el.curveA.style.strokeDashoffset = lenA;
800
+ el.curveACrash.style.strokeDasharray = `${lenACrash} ${lenACrash}`;
801
+ el.curveACrash.style.strokeDashoffset = lenACrash;
802
+ el.curveB.style.strokeDasharray = `${lenB} ${lenB}`;
803
+ el.curveB.style.strokeDashoffset = lenB;
804
+ el.curveBGlow.style.strokeDasharray = `${lenB} ${lenB}`;
805
+ el.curveBGlow.style.strokeDashoffset = lenB;
806
+
807
+ // Also precompute chart dot selections (hide initially)
808
+ const chartDots = el.finalChart.querySelectorAll('circle');
809
+ const chartAnchors = el.finalChart.querySelectorAll('.anchor-label, .anchor-en');
810
+ const chartTicks = el.finalChart.querySelectorAll('.tick-label, .axis-label');
811
+
812
+ const DURATION = 12.0;
813
+ let startTime = null;
814
+ let loop = true;
815
+ if (window.__recording === true) loop = false;
816
+
817
+ function tick(now) {
818
+ if (startTime === null) startTime = now;
819
+ let t = (now - startTime) / 1000;
820
+
821
+ if (t >= DURATION) {
822
+ if (loop) { startTime = now; t = 0; }
823
+ else { t = DURATION; }
824
+ }
825
+
826
+ // ────── Title
827
+ const titleIn = seg(t, 0.1, 1.0);
828
+ const titleOut = seg(t, 9.2, 9.8);
829
+ el.title.style.opacity = Math.max(0, Math.min(cubicOut(titleIn), 1 - titleOut));
830
+
831
+ // ────── Splitter (fade out earlier so Beat 3 is clean)
832
+ const splitT = seg(t, 0.0, 0.8);
833
+ const splitOut = seg(t, 8.4, 8.9);
834
+ el.splitter.style.transform = `scaleX(${expoOut(splitT) * (1 - splitOut)})`;
835
+ const splitLabelT = seg(t, 0.4, 1.0);
836
+ const splitLabelOut = seg(t, 8.2, 8.7);
837
+ el.splitterLb.style.opacity = Math.max(0, Math.min(cubicOut(splitLabelT), 1 - splitLabelOut));
838
+
839
+ // ────── Halves fade in / out (fade out earlier to clear for Beat 3 chart)
840
+ const topIn = seg(t, 0.6, 1.4);
841
+ const topOut = seg(t, 8.4, 9.0);
842
+ el.halfTop.style.opacity = Math.max(0, Math.min(cubicOut(topIn), 1 - topOut));
843
+
844
+ const botIn = seg(t, 1.0, 1.8);
845
+ const botOut = seg(t, 8.4, 9.0);
846
+ el.halfBot.style.opacity = Math.max(0, Math.min(cubicOut(botIn), 1 - botOut));
847
+
848
+ // ────── TOP track: terminal line + progress bar
849
+ const ttyL1In = seg(t, 1.4, 1.8);
850
+ el.ttyL1.style.opacity = cubicOut(ttyL1In);
851
+
852
+ // Progress bar appears @ 1.8, starts crawling 2.0-7.8, stuck 7.8-8.4, fails @ 8.4
853
+ const progRowIn = seg(t, 1.8, 2.2);
854
+ el.progRow.style.opacity = cubicOut(progRowIn);
855
+
856
+ let pct = 0;
857
+ let hoursTxt = '03:00:00';
858
+ if (t >= 2.0 && t < 7.8) {
859
+ const p = seg(t, 2.0, 7.8);
860
+ // Easing: starts fast, slows down to 99% (mimics the "last 10% takes forever" trope)
861
+ pct = 99 * (1 - Math.pow(1 - p, 2.2));
862
+ const remaining = Math.max(0, (1 - p) * 3 * 60 * 60);
863
+ const hh = String(Math.floor(remaining / 3600)).padStart(2, '0');
864
+ const mm = String(Math.floor((remaining % 3600) / 60)).padStart(2, '0');
865
+ const ss = String(Math.floor(remaining % 60)).padStart(2, '0');
866
+ hoursTxt = `${hh}:${mm}:${ss}`;
867
+ } else if (t >= 7.8 && t < 8.4) {
868
+ pct = 99;
869
+ // Micro-jitter to show "stuck"
870
+ const jitter = Math.sin(t * 30) * 0.1;
871
+ pct = 99 + jitter;
872
+ hoursTxt = '00:00:12';
873
+ } else if (t >= 8.4 && t < 8.7) {
874
+ // Fail animation — pct stays at 99 briefly then snaps to 0
875
+ pct = 99;
876
+ hoursTxt = '— REJECTED —';
877
+ } else if (t >= 8.7) {
878
+ pct = 0;
879
+ hoursTxt = '— REJECTED —';
880
+ }
881
+
882
+ el.progFill.style.width = `${pct}%`;
883
+ el.progPct.textContent = `${Math.floor(Math.max(0, pct))}%`;
884
+ el.progHours.textContent = hoursTxt;
885
+
886
+ // Fail state toggle
887
+ if (t >= 8.4) {
888
+ el.progBar.classList.add('failed');
889
+ el.progRow.classList.add('failed');
890
+ } else {
891
+ el.progBar.classList.remove('failed');
892
+ el.progRow.classList.remove('failed');
893
+ }
894
+
895
+ // Fail stamp lands at 8.4
896
+ const stampIn = seg(t, 8.4, 8.7);
897
+ if (stampIn > 0) {
898
+ el.failStamp.style.opacity = cubicOut(stampIn);
899
+ const scale = lerp(stampIn, 1.6, 1.0, expoOut);
900
+ el.failStamp.style.transform = `translateY(-50%) rotate(-8deg) scale(${scale})`;
901
+ } else {
902
+ el.failStamp.style.opacity = 0;
903
+ }
904
+
905
+ // ────── BOTTOM track: 3 iter panels
906
+ const iterTimings = [
907
+ { enter: [2.0, 2.6], nod: [2.8, 3.2] },
908
+ { enter: [3.6, 4.2], nod: [4.4, 4.8] },
909
+ { enter: [5.6, 6.2], nod: [6.4, 6.9] },
910
+ ];
911
+
912
+ [el.iter1, el.iter2, el.iter3].forEach((panel, i) => {
913
+ const { enter } = iterTimings[i];
914
+ const p = seg(t, enter[0], enter[1]);
915
+ const op = expoOut(p);
916
+ const ty = lerp(p, 20, 0, expoOut);
917
+ panel.style.opacity = op;
918
+ panel.style.transform = `translateY(${ty}px)`;
919
+ });
920
+
921
+ [el.nod1, el.nod2, el.nod3].forEach((n, i) => {
922
+ const { nod } = iterTimings[i];
923
+ const p = seg(t, nod[0], nod[1]);
924
+ const op = expoOut(p);
925
+ const scale = lerp(p, 0.4, 1.0, expoOut);
926
+ n.style.opacity = op;
927
+ n.style.transform = `scale(${scale})`;
928
+ });
929
+
930
+ // ────── Beat 3 · final chart crossfade (chart appears as halves fade)
931
+ const chartIn = seg(t, 8.5, 9.2);
932
+ el.finalChart.style.opacity = cubicOut(chartIn);
933
+
934
+ const curveBT = seg(t, 8.8, 9.8);
935
+ el.curveB.style.strokeDashoffset = lenB * (1 - expoOut(curveBT));
936
+ el.curveBGlow.style.strokeDashoffset = lenB * (1 - expoOut(curveBT));
937
+
938
+ const curveAT = seg(t, 8.9, 9.7);
939
+ el.curveA.style.strokeDashoffset = lenA * (1 - cubicOut(curveAT));
940
+ const curveACrashT = seg(t, 9.7, 9.95);
941
+ el.curveACrash.style.strokeDashoffset = lenACrash * (1 - expoOut(curveACrashT));
942
+ const failXT = seg(t, 9.65, 9.85);
943
+ const failXEl = document.getElementById('failX');
944
+ if (failXEl) {
945
+ failXEl.style.opacity = cubicOut(failXT);
946
+ failXEl.style.transform = `scale(${lerp(failXT, 1.6, 1.0, expoOut)})`;
947
+ failXEl.style.transformOrigin = '1140px 180px';
948
+ }
949
+
950
+ chartDots.forEach((dot, i) => {
951
+ const dotT = seg(t, 9.0 + i * 0.12, 9.3 + i * 0.12);
952
+ dot.style.opacity = cubicOut(dotT);
953
+ });
954
+ chartAnchors.forEach((a) => {
955
+ const aT = seg(t, 9.5, 9.95);
956
+ a.style.opacity = cubicOut(aT);
957
+ });
958
+ chartTicks.forEach((tk) => {
959
+ const tkT = seg(t, 8.7, 9.3);
960
+ tk.style.opacity = cubicOut(tkT) * 0.9;
961
+ });
962
+
963
+ // ────── Brand reveal 10.0-12.0
964
+ const sheetT = seg(t, 10.0, 10.6);
965
+ el.brandSheet.style.transform = `translateY(${lerp(sheetT, 100, 0, expoOut)}%)`;
966
+
967
+ const wordT = seg(t, 10.6, 11.4);
968
+ el.brandReveal.style.opacity = cubicOut(wordT);
969
+
970
+ const underT = seg(t, 11.4, 11.9);
971
+ el.brandUnder.style.width = `${lerp(underT, 0, 280, expoOut)}px`;
972
+
973
+ // Mark ready for recorder
974
+ if (!window.__ready) window.__ready = true;
975
+
976
+ if (loop || t < DURATION) requestAnimationFrame(tick);
977
+ }
978
+
979
+ (document.fonts && document.fonts.ready ? document.fonts.ready : Promise.resolve())
980
+ .then(() => requestAnimationFrame(tick));
981
+ </script>
982
+ </body>
983
+ </html>