@autoaiai/aicut 0.1.11 → 0.1.13

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 (1063) hide show
  1. package/MANUAL.md +94 -94
  2. package/package.json +1 -1
  3. package/skills/aicut-motion/SKILL.md +69 -3
  4. package/skills/aicut-motion/THIRD_PARTY_NOTICES.md +14 -0
  5. package/skills/aicut-motion/assets/atlas/lib/harness.js +116 -0
  6. package/skills/aicut-motion/assets/atlas/lib/sound.js +274 -0
  7. package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/code.js +937 -0
  8. package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/poster.jpg +0 -0
  9. package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/style.json +13 -0
  10. package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/code.js +909 -0
  11. package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/poster.jpg +0 -0
  12. package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/style.json +13 -0
  13. package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/code.js +881 -0
  14. package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/poster.jpg +0 -0
  15. package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/style.json +13 -0
  16. package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/code.js +897 -0
  17. package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/poster.jpg +0 -0
  18. package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/style.json +13 -0
  19. package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/code.js +814 -0
  20. package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/poster.jpg +0 -0
  21. package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/style.json +13 -0
  22. package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/code.js +990 -0
  23. package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/poster.jpg +0 -0
  24. package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/style.json +13 -0
  25. package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/code.js +994 -0
  26. package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/poster.jpg +0 -0
  27. package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/style.json +13 -0
  28. package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/code.js +792 -0
  29. package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/poster.jpg +0 -0
  30. package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/style.json +13 -0
  31. package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/code.js +840 -0
  32. package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/poster.jpg +0 -0
  33. package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/style.json +13 -0
  34. package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/code.js +1126 -0
  35. package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/poster.jpg +0 -0
  36. package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/style.json +13 -0
  37. package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/code.js +854 -0
  38. package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/poster.jpg +0 -0
  39. package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/style.json +13 -0
  40. package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/code.js +1124 -0
  41. package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/poster.jpg +0 -0
  42. package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/style.json +13 -0
  43. package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/code.js +728 -0
  44. package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/poster.jpg +0 -0
  45. package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/style.json +13 -0
  46. package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/code.js +664 -0
  47. package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/poster.jpg +0 -0
  48. package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/style.json +13 -0
  49. package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/code.js +991 -0
  50. package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/poster.jpg +0 -0
  51. package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/style.json +13 -0
  52. package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/code.js +801 -0
  53. package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/poster.jpg +0 -0
  54. package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/style.json +13 -0
  55. package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/code.js +692 -0
  56. package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/poster.jpg +0 -0
  57. package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/style.json +13 -0
  58. package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/code.js +756 -0
  59. package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/poster.jpg +0 -0
  60. package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/style.json +13 -0
  61. package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/code.js +922 -0
  62. package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/poster.jpg +0 -0
  63. package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/style.json +13 -0
  64. package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/code.js +852 -0
  65. package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/poster.jpg +0 -0
  66. package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/style.json +13 -0
  67. package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/code.js +724 -0
  68. package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/poster.jpg +0 -0
  69. package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/style.json +13 -0
  70. package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/code.js +793 -0
  71. package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/poster.jpg +0 -0
  72. package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/style.json +13 -0
  73. package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/code.js +846 -0
  74. package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/poster.jpg +0 -0
  75. package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/style.json +13 -0
  76. package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/code.js +1008 -0
  77. package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/poster.jpg +0 -0
  78. package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/style.json +13 -0
  79. package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/code.js +680 -0
  80. package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/poster.jpg +0 -0
  81. package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/style.json +13 -0
  82. package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/code.js +633 -0
  83. package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/poster.jpg +0 -0
  84. package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/style.json +13 -0
  85. package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/code.js +757 -0
  86. package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/poster.jpg +0 -0
  87. package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/style.json +13 -0
  88. package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/code.js +828 -0
  89. package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/poster.jpg +0 -0
  90. package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/style.json +13 -0
  91. package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/code.js +697 -0
  92. package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/poster.jpg +0 -0
  93. package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/style.json +13 -0
  94. package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/code.js +687 -0
  95. package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/poster.jpg +0 -0
  96. package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/style.json +13 -0
  97. package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/code.js +727 -0
  98. package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/poster.jpg +0 -0
  99. package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/style.json +13 -0
  100. package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/code.js +903 -0
  101. package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/poster.jpg +0 -0
  102. package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/style.json +13 -0
  103. package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/code.js +662 -0
  104. package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/poster.jpg +0 -0
  105. package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/style.json +13 -0
  106. package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/code.js +951 -0
  107. package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/poster.jpg +0 -0
  108. package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/style.json +13 -0
  109. package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/code.js +759 -0
  110. package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/poster.jpg +0 -0
  111. package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/style.json +13 -0
  112. package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/code.js +738 -0
  113. package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/poster.jpg +0 -0
  114. package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/style.json +13 -0
  115. package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/code.js +793 -0
  116. package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/poster.jpg +0 -0
  117. package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/style.json +13 -0
  118. package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/code.js +673 -0
  119. package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/poster.jpg +0 -0
  120. package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/style.json +13 -0
  121. package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/code.js +907 -0
  122. package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/poster.jpg +0 -0
  123. package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/style.json +13 -0
  124. package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/code.js +833 -0
  125. package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/poster.jpg +0 -0
  126. package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/style.json +13 -0
  127. package/skills/aicut-motion/assets/atlas/styles/041-manga-page/code.js +845 -0
  128. package/skills/aicut-motion/assets/atlas/styles/041-manga-page/poster.jpg +0 -0
  129. package/skills/aicut-motion/assets/atlas/styles/041-manga-page/style.json +13 -0
  130. package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/code.js +496 -0
  131. package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/poster.jpg +0 -0
  132. package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/style.json +13 -0
  133. package/skills/aicut-motion/assets/atlas/styles/043-light-painting/code.js +635 -0
  134. package/skills/aicut-motion/assets/atlas/styles/043-light-painting/poster.jpg +0 -0
  135. package/skills/aicut-motion/assets/atlas/styles/043-light-painting/style.json +13 -0
  136. package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/code.js +799 -0
  137. package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/poster.jpg +0 -0
  138. package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/style.json +13 -0
  139. package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/code.js +547 -0
  140. package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/poster.jpg +0 -0
  141. package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/style.json +13 -0
  142. package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/code.js +592 -0
  143. package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/poster.jpg +0 -0
  144. package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/style.json +13 -0
  145. package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/code.js +768 -0
  146. package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/poster.jpg +0 -0
  147. package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/style.json +13 -0
  148. package/skills/aicut-motion/assets/atlas/styles/048-transit-map/code.js +666 -0
  149. package/skills/aicut-motion/assets/atlas/styles/048-transit-map/poster.jpg +0 -0
  150. package/skills/aicut-motion/assets/atlas/styles/048-transit-map/style.json +13 -0
  151. package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/code.js +559 -0
  152. package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/poster.jpg +0 -0
  153. package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/style.json +13 -0
  154. package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/code.js +943 -0
  155. package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/poster.jpg +0 -0
  156. package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/style.json +13 -0
  157. package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/code.js +606 -0
  158. package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/poster.jpg +0 -0
  159. package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/style.json +13 -0
  160. package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/code.js +730 -0
  161. package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/poster.jpg +0 -0
  162. package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/style.json +13 -0
  163. package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/code.js +782 -0
  164. package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/poster.jpg +0 -0
  165. package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/style.json +13 -0
  166. package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/code.js +504 -0
  167. package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/poster.jpg +0 -0
  168. package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/style.json +13 -0
  169. package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/code.js +517 -0
  170. package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/poster.jpg +0 -0
  171. package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/style.json +13 -0
  172. package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/code.js +713 -0
  173. package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/poster.jpg +0 -0
  174. package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/style.json +13 -0
  175. package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/code.js +717 -0
  176. package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/poster.jpg +0 -0
  177. package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/style.json +13 -0
  178. package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/code.js +540 -0
  179. package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/poster.jpg +0 -0
  180. package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/style.json +13 -0
  181. package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/code.js +524 -0
  182. package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/poster.jpg +0 -0
  183. package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/style.json +13 -0
  184. package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/code.js +934 -0
  185. package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/poster.jpg +0 -0
  186. package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/style.json +13 -0
  187. package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/code.js +690 -0
  188. package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/poster.jpg +0 -0
  189. package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/style.json +13 -0
  190. package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/code.js +612 -0
  191. package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/poster.jpg +0 -0
  192. package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/style.json +13 -0
  193. package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/code.js +666 -0
  194. package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/poster.jpg +0 -0
  195. package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/style.json +13 -0
  196. package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/code.js +651 -0
  197. package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/poster.jpg +0 -0
  198. package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/style.json +13 -0
  199. package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/code.js +656 -0
  200. package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/poster.jpg +0 -0
  201. package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/style.json +13 -0
  202. package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/code.js +672 -0
  203. package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/poster.jpg +0 -0
  204. package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/style.json +13 -0
  205. package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/code.js +548 -0
  206. package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/poster.jpg +0 -0
  207. package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/style.json +13 -0
  208. package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/code.js +989 -0
  209. package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/poster.jpg +0 -0
  210. package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/style.json +13 -0
  211. package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/code.js +440 -0
  212. package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/poster.jpg +0 -0
  213. package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/style.json +13 -0
  214. package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/code.js +895 -0
  215. package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/poster.jpg +0 -0
  216. package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/style.json +13 -0
  217. package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/code.js +563 -0
  218. package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/poster.jpg +0 -0
  219. package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/style.json +13 -0
  220. package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/code.js +627 -0
  221. package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/poster.jpg +0 -0
  222. package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/style.json +13 -0
  223. package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/code.js +1096 -0
  224. package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/poster.jpg +0 -0
  225. package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/style.json +13 -0
  226. package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/code.js +595 -0
  227. package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/poster.jpg +0 -0
  228. package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/style.json +13 -0
  229. package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/code.js +665 -0
  230. package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/poster.jpg +0 -0
  231. package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/style.json +13 -0
  232. package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/code.js +645 -0
  233. package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/poster.jpg +0 -0
  234. package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/style.json +13 -0
  235. package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/code.js +436 -0
  236. package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/poster.jpg +0 -0
  237. package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/style.json +13 -0
  238. package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/code.js +1237 -0
  239. package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/poster.jpg +0 -0
  240. package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/style.json +13 -0
  241. package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/code.js +622 -0
  242. package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/poster.jpg +0 -0
  243. package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/style.json +13 -0
  244. package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/code.js +524 -0
  245. package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/poster.jpg +0 -0
  246. package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/style.json +13 -0
  247. package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/code.js +689 -0
  248. package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/poster.jpg +0 -0
  249. package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/style.json +13 -0
  250. package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/code.js +574 -0
  251. package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/poster.jpg +0 -0
  252. package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/style.json +13 -0
  253. package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/code.js +469 -0
  254. package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/poster.jpg +0 -0
  255. package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/style.json +13 -0
  256. package/skills/aicut-motion/assets/atlas/styles/084-flow-field/code.js +531 -0
  257. package/skills/aicut-motion/assets/atlas/styles/084-flow-field/poster.jpg +0 -0
  258. package/skills/aicut-motion/assets/atlas/styles/084-flow-field/style.json +13 -0
  259. package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/code.js +675 -0
  260. package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/poster.jpg +0 -0
  261. package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/style.json +13 -0
  262. package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/code.js +609 -0
  263. package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/poster.jpg +0 -0
  264. package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/style.json +13 -0
  265. package/skills/aicut-motion/references/motion-delivery.md +55 -0
  266. package/skills/aicut-motion/references/style-index.json +690 -0
  267. package/skills/aicut-motion/references/style-research.md +73 -0
  268. package/skills/aicut-motion/references/style-selection.md +71 -0
  269. package/skills/aicut-motion/scripts/atlas-viewer.html +195 -0
  270. package/skills/aicut-motion/scripts/atlas.mjs +109 -0
  271. package/studio/server/fetch-github.mjs +14 -3
  272. package/studio/server/server.mjs +40 -3
  273. package/studio/server/skill-summaries.mjs +60 -0
  274. package/studio/server/skills.mjs +121 -7
  275. package/studio/server/styles-store.mjs +235 -0
  276. package/studio/server/template-posters.mjs +2 -2
  277. package/studio/server/templates-page.mjs +93 -93
  278. package/studio/server/templates.mjs +32 -7
  279. package/studio/ui/dist/assets/ExportCenter-DasulhAv.js +1 -0
  280. package/studio/ui/dist/assets/SettingsModal-BZw0Hz2_.js +2 -0
  281. package/studio/ui/dist/assets/es-C8XPZARI.js +1 -0
  282. package/studio/ui/dist/assets/index-BjJVmBzB.js +1623 -0
  283. package/studio/ui/dist/assets/index-C3BfKZFO.css +1 -0
  284. package/studio/ui/dist/assets/ja-BeNkdaEj.js +1 -0
  285. package/studio/ui/dist/assets/ko-DcTVhdzK.js +1 -0
  286. package/studio/ui/dist/assets/zh-CN-Cg51ctbL.js +1 -0
  287. package/studio/ui/dist/index.html +2 -2
  288. package/skills/30x-web-to-video/SKILL.md +0 -421
  289. package/skills/30x-web-to-video/examples/INDEX.md +0 -26
  290. package/skills/30x-web-to-video/references/animations.md +0 -539
  291. package/skills/30x-web-to-video/references/audio.md +0 -256
  292. package/skills/30x-web-to-video/references/components.md +0 -340
  293. package/skills/30x-web-to-video/references/lottie.md +0 -174
  294. package/skills/30x-web-to-video/references/visual-effects.md +0 -157
  295. package/skills/30x-web-to-video/remotion-best-practices/rules/audio.md +0 -169
  296. package/skills/30x-web-to-video/remotion-best-practices/rules/calculate-metadata.md +0 -134
  297. package/skills/30x-web-to-video/remotion-best-practices/rules/charts.md +0 -120
  298. package/skills/30x-web-to-video/remotion-best-practices/rules/compositions.md +0 -154
  299. package/skills/30x-web-to-video/remotion-best-practices/rules/ffmpeg.md +0 -38
  300. package/skills/30x-web-to-video/remotion-best-practices/rules/fonts.md +0 -152
  301. package/skills/3d-asset-generation/SKILL.md +0 -142
  302. package/skills/action-fight-prompt/SKILL.md +0 -136
  303. package/skills/action-fight-prompt/references/camera-and-impact.md +0 -64
  304. package/skills/action-fight-prompt/references/example-15s-duel.md +0 -59
  305. package/skills/action-fight-prompt/references/scene-patterns.md +0 -80
  306. package/skills/ad-creative-video/SKILL.md +0 -205
  307. package/skills/ad-creative-video/references/batch-ad-pipeline.md +0 -289
  308. package/skills/ad-creative-video/references/platform-specs.md +0 -72
  309. package/skills/after-effects/SKILL.md +0 -123
  310. package/skills/after-effects/references/export-recipes.md +0 -168
  311. package/skills/after-effects/references/expression-library.md +0 -184
  312. package/skills/after-effects/references/expressions.md +0 -134
  313. package/skills/after-effects/references/performance-triage.md +0 -138
  314. package/skills/after-effects/references/project-hygiene.md +0 -188
  315. package/skills/ai-media-quality-review/SKILL.md +0 -72
  316. package/skills/ai-product-video/SKILL.md +0 -296
  317. package/skills/ai-product-video/references/aesthetic-rules.md +0 -177
  318. package/skills/ai-product-video/references/final-review.md +0 -110
  319. package/skills/ai-product-video/references/guided-free-creation.md +0 -194
  320. package/skills/ai-product-video/references/music-beat-sync.md +0 -219
  321. package/skills/ai-product-video/references/pipeline.md +0 -392
  322. package/skills/ai-product-video/references/sequences/promo-energy-arc.md +0 -50
  323. package/skills/ai-product-video/references/shots/ATTRIBUTION.md +0 -65
  324. package/skills/ai-product-video/references/shots/camera/basic-3d-scene.md +0 -37
  325. package/skills/ai-product-video/references/shots/camera/crash-zoom-punch.md +0 -39
  326. package/skills/ai-product-video/references/shots/camera/cursor-flyover.md +0 -38
  327. package/skills/ai-product-video/references/shots/camera/depth-layer-moves.md +0 -40
  328. package/skills/ai-product-video/references/shots/camera/graze-face-tour.md +0 -57
  329. package/skills/anidoodle/SKILL.md +0 -185
  330. package/skills/anidoodle/references/anatomy.md +0 -91
  331. package/skills/anidoodle/references/backends-and-adapters.md +0 -82
  332. package/skills/anidoodle/references/camera.md +0 -148
  333. package/skills/anidoodle/references/craft-bar.md +0 -72
  334. package/skills/anidoodle/references/determinism-and-contract.md +0 -46
  335. package/skills/anidoodle/references/formats.md +0 -121
  336. package/skills/anidoodle/references/motion-grammar.md +0 -234
  337. package/skills/anidoodle/references/music/compose.md +0 -388
  338. package/skills/anidoodle/references/music/sound-design.md +0 -245
  339. package/skills/anidoodle/references/music/sounds-licenses.md +0 -69
  340. package/skills/anidoodle/references/music/styles/lofi-electronic.md +0 -112
  341. package/skills/anidoodle/references/music/styles/music-box.md +0 -57
  342. package/skills/animated-component-libraries/SKILL.md +0 -820
  343. package/skills/animated-component-libraries/references/customization_guide.md +0 -699
  344. package/skills/animated-component-libraries/references/magic_ui_components.md +0 -422
  345. package/skills/animated-component-libraries/references/react_bits_components.md +0 -587
  346. package/skills/animated-infographic/SKILL.md +0 -211
  347. package/skills/animated-infographic/references/sequenced-infographic.md +0 -286
  348. package/skills/appshot-core/SKILL.md +0 -872
  349. package/skills/article-highlights/SKILL.md +0 -151
  350. package/skills/avatar-mix/SKILL.md +0 -301
  351. package/skills/bang-motion/SKILL.md +0 -583
  352. package/skills/bang-motion/references/ae-bridge-higgsfield.md +0 -160
  353. package/skills/bang-motion/references/anti-ppt.md +0 -110
  354. package/skills/bang-motion/references/architecture.md +0 -188
  355. package/skills/bang-motion/references/explainer.md +0 -579
  356. package/skills/bang-motion/references/kartun-panggung.md +0 -221
  357. package/skills/bang-motion/references/opener-konsep.md +0 -817
  358. package/skills/bang-motion/references/roadmap.md +0 -85
  359. package/skills/bang-motion/references/techniques.md +0 -690
  360. package/skills/beat-sync-edit/SKILL.md +0 -148
  361. package/skills/book-video-factory/SKILL.md +0 -139
  362. package/skills/book-video-factory/references/first-run.md +0 -50
  363. package/skills/book-video-factory/references/paper-collage-explainer.md +0 -127
  364. package/skills/book-video-factory/references/quality-gates.md +0 -87
  365. package/skills/book-video-production/SKILL.md +0 -211
  366. package/skills/brag/SKILL.md +0 -195
  367. package/skills/brag/references/audio.md +0 -312
  368. package/skills/brag/references/step-1-inspect.md +0 -125
  369. package/skills/brag/references/step-2-plan.md +0 -234
  370. package/skills/brag/references/step-3-compose.md +0 -199
  371. package/skills/brag/references/step-4-deliver.md +0 -141
  372. package/skills/brag/references/tones.md +0 -231
  373. package/skills/brand-setup/SKILL.md +0 -228
  374. package/skills/brewreel/SKILL.md +0 -491
  375. package/skills/brewreel/docs/broll.en.md +0 -252
  376. package/skills/brewreel/docs/broll.md +0 -252
  377. package/skills/brewreel/docs/custom-shot.en.md +0 -66
  378. package/skills/brewreel/docs/custom-shot.md +0 -103
  379. package/skills/brewreel/docs/faq.en.md +0 -90
  380. package/skills/brewreel/docs/faq.md +0 -90
  381. package/skills/brewreel/docs/features.en.md +0 -157
  382. package/skills/brewreel/docs/features.md +0 -157
  383. package/skills/brewreel/docs/gallery.en.md +0 -44
  384. package/skills/brewreel/docs/gallery.md +0 -44
  385. package/skills/brewreel/docs/how-it-works.en.md +0 -64
  386. package/skills/brewreel/docs/how-it-works.md +0 -64
  387. package/skills/caption-animation/SKILL.md +0 -216
  388. package/skills/caption-animation/references/word-timed-captions.md +0 -254
  389. package/skills/cartcut-editing/SKILL.md +0 -615
  390. package/skills/cartcut-editing/references/html-typography.md +0 -277
  391. package/skills/cassette-video-edit/SKILL.md +0 -129
  392. package/skills/ccvideo/SKILL.md +0 -264
  393. package/skills/chekhov-dramaturgy/SKILL.md +0 -367
  394. package/skills/chekhov-dramaturgy/reference.md +0 -375
  395. package/skills/chengfeng-check-updates/SKILL.md +0 -283
  396. package/skills/cinematic-product-promo-skill/SKILL.md +0 -295
  397. package/skills/cinematic-product-promo-skill/references/aesthetic-rules.md +0 -187
  398. package/skills/cinematic-product-promo-skill/references/final-review.md +0 -116
  399. package/skills/cinematic-product-promo-skill/references/guided-free-creation.md +0 -199
  400. package/skills/cinematic-product-promo-skill/references/jianying-export.md +0 -183
  401. package/skills/cinematic-product-promo-skill/references/music-beat-sync.md +0 -257
  402. package/skills/cinematic-product-promo-skill/references/pipeline.md +0 -393
  403. package/skills/cinematic-product-promo-skill/references/sequences/promo-energy-arc.md +0 -50
  404. package/skills/cinematic-product-promo-skill/references/shots/ATTRIBUTION.md +0 -65
  405. package/skills/cinematic-product-promo-skill/references/shots/camera/basic-3d-scene.md +0 -37
  406. package/skills/cinematic-product-promo-skill/references/shots/camera/crash-zoom-punch.md +0 -39
  407. package/skills/cinematic-product-promo-skill/references/shots/camera/cursor-flyover.md +0 -38
  408. package/skills/cinematic-product-promo-skill/references/shots/camera/depth-layer-moves.md +0 -40
  409. package/skills/claude-gif/SKILL.md +0 -211
  410. package/skills/claude-gif/references/gif-optimization.md +0 -209
  411. package/skills/claude-gif/references/perfect-loops.md +0 -295
  412. package/skills/claude-gif/references/platform-specs.md +0 -138
  413. package/skills/claude-gif/references/prompt-engineering.md +0 -211
  414. package/skills/claude-gif/references/remotion-gif.md +0 -560
  415. package/skills/codex-video-pipeline/SKILL.md +0 -213
  416. package/skills/codex-video-pipeline/examples/ai-meeting-notes/INPUT.md +0 -10
  417. package/skills/codex-video-pipeline/examples/ai-meeting-notes/expected/action-list.md +0 -22
  418. package/skills/codex-video-pipeline/references/captions.md +0 -39
  419. package/skills/codex-video-pipeline/references/cover-system.md +0 -72
  420. package/skills/codex-video-pipeline/references/cross-platform.md +0 -77
  421. package/skills/codex-video-pipeline/references/example-run.md +0 -54
  422. package/skills/codex-video-pipeline/references/first-run.md +0 -130
  423. package/skills/codex-video-pipeline/references/project-contract.md +0 -54
  424. package/skills/codex-video-pipeline/references/quality-gates.md +0 -44
  425. package/skills/codex-video-pipeline/references/research-and-script.md +0 -50
  426. package/skills/collage-broll-explainers/SKILL.md +0 -429
  427. package/skills/create-onboarding-video/SKILL.md +0 -233
  428. package/skills/cs-shotcraft-skill/SKILL.md +0 -218
  429. package/skills/cs-shotcraft-skill/references/aesthetic-rules.md +0 -207
  430. package/skills/cs-shotcraft-skill/references/camera-table.md +0 -88
  431. package/skills/cs-shotcraft-skill/references/engineering.md +0 -132
  432. package/skills/cs-shotcraft-skill/references/final-review.md +0 -118
  433. package/skills/cs-shotcraft-skill/references/guided-free-creation.md +0 -199
  434. package/skills/cs-shotcraft-skill/references/jianying-export.md +0 -183
  435. package/skills/cs-shotcraft-skill/references/music-beat-sync.md +0 -257
  436. package/skills/cs-shotcraft-skill/references/pipeline.md +0 -408
  437. package/skills/cs-shotcraft-skill/references/product-machine.md +0 -56
  438. package/skills/cs-shotcraft-skill/references/sequences/promo-energy-arc.md +0 -50
  439. package/skills/cs-shotcraft-skill/references/shots/ATTRIBUTION.md +0 -65
  440. package/skills/cs-shotcraft-skill/references/shots/camera/basic-3d-scene.md +0 -37
  441. package/skills/cut-video/SKILL.md +0 -387
  442. package/skills/cyxj-hyperframes-overlay/SKILL.md +0 -75
  443. package/skills/cyxj-remotion-evolve/SKILL.md +0 -123
  444. package/skills/cyxj-remotion-evolve-vibe-motion/SKILL.md +0 -123
  445. package/skills/demo-video-creation-skill/SKILL.md +0 -152
  446. package/skills/demo-video-creation-skill/references/capture-workflow.md +0 -74
  447. package/skills/demo-video-creation-skill/references/qc-checklist.md +0 -61
  448. package/skills/demo-video-creation-skill/references/remotion-ffmpeg.md +0 -94
  449. package/skills/demo-video-creation-skill/references/storytelling.md +0 -86
  450. package/skills/demo-video-creation-skill/references/visual-system.md +0 -83
  451. package/skills/demoday/SKILL.md +0 -148
  452. package/skills/develop-premiere-pro-mcp/SKILL.md +0 -131
  453. package/skills/diagram-animation/SKILL.md +0 -200
  454. package/skills/diagram-animation/references/diagram-and-chart-recipes.md +0 -218
  455. package/skills/diagram-tour/SKILL.md +0 -287
  456. package/skills/diagram-tour/examples/agent-architecture/agent-architecture-tour.md +0 -78
  457. package/skills/docvideoer/SKILL.md +0 -139
  458. package/skills/draftcut/SKILL.md +0 -104
  459. package/skills/draftcut/docs/agent-bootstrap.md +0 -64
  460. package/skills/draftcut/docs/approvals.md +0 -45
  461. package/skills/draftcut/docs/audio-first-migration.md +0 -35
  462. package/skills/draftcut/docs/configuration.md +0 -54
  463. package/skills/draftcut/docs/getting-started.md +0 -63
  464. package/skills/draftcut/docs/harness-case-study.en.md +0 -23
  465. package/skills/draftcut/docs/harness-case-study.md +0 -47
  466. package/skills/draftcut/references/01-plan.md +0 -30
  467. package/skills/draftcut/references/03-deliver.md +0 -26
  468. package/skills/draftcut/references/04-reference-theme-prompt.md +0 -7
  469. package/skills/draftcut/references/05-social-loudness.md +0 -58
  470. package/skills/draftcut/references/06-modern-components.md +0 -72
  471. package/skills/easyedit/SKILL.md +0 -66
  472. package/skills/erduo-broll-loop-engineering/SKILL.md +0 -136
  473. package/skills/erduo-broll-loop-engineering/references/animation-craft.md +0 -208
  474. package/skills/erduo-broll-loop-engineering/references/first-run-onboarding.md +0 -107
  475. package/skills/erduo-broll-loop-engineering/references/handoff-template.md +0 -70
  476. package/skills/erduo-broll-loop-engineering/references/motion-layout-lint.md +0 -122
  477. package/skills/erduo-broll-loop-engineering/references/parent-review-checklist.md +0 -171
  478. package/skills/erduo-broll-loop-engineering/references/prompt-first-workflow.md +0 -322
  479. package/skills/erduo-broll-loop-engineering/references/remotion-backend.md +0 -334
  480. package/skills/erduo-broll-loop-engineering/references/runtime/remotion-hyperframes-map.md +0 -76
  481. package/skills/erduo-broll-loop-engineering/references/runtime/runtime-contract.md +0 -174
  482. package/skills/erduo-broll-loop-engineering/references/runtime/runtime-selection.md +0 -135
  483. package/skills/erduo-broll-loop-engineering/references/shotcraft/remotion-sources/SOURCE.md +0 -7
  484. package/skills/erduo-broll-loop-engineering/references/shotcraft/upstream-attribution.md +0 -65
  485. package/skills/explainer-assets/SKILL.md +0 -98
  486. package/skills/explainer-video/SKILL.md +0 -146
  487. package/skills/framewright/SKILL.md +0 -324
  488. package/skills/framewright/references/audio.md +0 -230
  489. package/skills/framewright/references/guide.md +0 -276
  490. package/skills/framewright/references/painting.md +0 -425
  491. package/skills/framewright/references/photo.md +0 -75
  492. package/skills/framewright/references/questionnaire.md +0 -115
  493. package/skills/framewright/references/styles.md +0 -388
  494. package/skills/framewright/references/troubleshooting.md +0 -119
  495. package/skills/framewright/references/world.md +0 -215
  496. package/skills/gbro-collage-broll/SKILL.md +0 -435
  497. package/skills/gbro-collage-info/SKILL.md +0 -135
  498. package/skills/gbro-collage-info/references/motion-grammar.md +0 -66
  499. package/skills/gbro-collage-info/references/production.md +0 -67
  500. package/skills/gbro-collage-info/references/style-system.md +0 -38
  501. package/skills/gemini-tts/SKILL.md +0 -208
  502. package/skills/gemini-tts/references/prompting-guide.md +0 -169
  503. package/skills/gen/SKILL.md +0 -282
  504. package/skills/ghost-editor/SKILL.md +0 -437
  505. package/skills/ghost-editor/docs/HOW-IT-WORKS.md +0 -82
  506. package/skills/ghost-editor/docs/PLAYBOOK.md +0 -139
  507. package/skills/ghost-editor/docs/THIRD_PARTY/audio.md +0 -17
  508. package/skills/ghost-editor/docs/THIRD_PARTY/audioqa.md +0 -13
  509. package/skills/ghost-editor/docs/THIRD_PARTY/captions.md +0 -20
  510. package/skills/ghost-editor/docs/THIRD_PARTY/fonts.md +0 -17
  511. package/skills/ghost-editor/docs/THIRD_PARTY/kinetic.md +0 -22
  512. package/skills/ghost-editor/docs/THIRD_PARTY/looks.md +0 -22
  513. package/skills/ghost-editor/docs/THIRD_PARTY/matte.md +0 -20
  514. package/skills/ghost-editor/docs/THIRD_PARTY/models.md +0 -11
  515. package/skills/ghost-editor/docs/THIRD_PARTY/runtime.md +0 -13
  516. package/skills/ghost-editor/docs/THIRD_PARTY/shaders.md +0 -15
  517. package/skills/git-story-film/SKILL.md +0 -220
  518. package/skills/git-story-film/examples/raven-story/FONTS.md +0 -8
  519. package/skills/git-story-film/examples/raven-story/OUTLINE.md +0 -93
  520. package/skills/git-story-film/references/craft.md +0 -148
  521. package/skills/git-story-film/references/directing.md +0 -185
  522. package/skills/git-story-film/references/forms.md +0 -150
  523. package/skills/git-story-film/references/production.md +0 -150
  524. package/skills/git-story-film/references/story.md +0 -137
  525. package/skills/git-story-film/references/text-and-fonts.md +0 -90
  526. package/skills/guizang-product-video-skill/SKILL.md +0 -96
  527. package/skills/guizang-product-video-skill/references/audio-and-qa.md +0 -113
  528. package/skills/guizang-product-video-skill/references/audio-sourcing.md +0 -80
  529. package/skills/guizang-product-video-skill/references/case-study.md +0 -63
  530. package/skills/guizang-product-video-skill/references/component-pipeline.md +0 -86
  531. package/skills/guizang-product-video-skill/references/cover.md +0 -43
  532. package/skills/guizang-product-video-skill/references/direction.md +0 -91
  533. package/skills/guizang-product-video-skill/references/onboarding.md +0 -98
  534. package/skills/guizang-product-video-skill/references/repo-and-style.md +0 -44
  535. package/skills/guizang-product-video-skill/references/review.md +0 -38
  536. package/skills/guizang-product-video-skill/references/starter.md +0 -168
  537. package/skills/guizang-product-video-skill/references/story-and-copy.md +0 -88
  538. package/skills/guizang-product-video-skill/references/visual-vocabulary.md +0 -78
  539. package/skills/guofeng-paper-video/SKILL.md +0 -159
  540. package/skills/guofeng-paper-video/style/design.md +0 -43
  541. package/skills/guofeng-paper-video/style/palette.md +0 -21
  542. package/skills/guofeng-paper-video/style/prompts/01-/345/210/206/351/225/234/350/241/250.md +0 -19
  543. package/skills/guofeng-paper-video/style/prompts/02-/347/224/237/346/210/220/347/272/270/347/211/207.md +0 -37
  544. package/skills/guofeng-paper-video/style/prompts/03-/351/205/215/351/237/263/350/204/232/346/234/254.md +0 -27
  545. package/skills/guofeng-paper-video/style//345/210/206/351/225/234/344/270/216/345/233/276/345/261/202/350/247/204/350/214/203.md +0 -67
  546. package/skills/guofeng-paper-video/style//347/272/270/347/211/207/347/264/240/346/235/220/350/247/204/350/214/203.md +0 -29
  547. package/skills/hand-drawn-explainer-video-nikola/SKILL.md +0 -113
  548. package/skills/hand-drawn-explainer-video-nikola/docs/ARCHITECTURE.md +0 -18
  549. package/skills/hand-drawn-explainer-video-nikola/docs/CONFIGURATION.md +0 -22
  550. package/skills/hand-drawn-explainer-video-nikola/docs/STYLES.md +0 -28
  551. package/skills/hand-drawn-explainer-video-nikola/docs/TROUBLESHOOTING.md +0 -35
  552. package/skills/hand-drawn-explainer-video-nikola/examples/program-animation/skill-demo/DESIGN.md +0 -24
  553. package/skills/hand-drawn-explainer-video-nikola/references/automation-workflow.md +0 -67
  554. package/skills/hand-drawn-explainer-video-nikola/references/output-example.md +0 -79
  555. package/skills/hand-drawn-explainer-video-nikola/references/preflight-and-recovery.md +0 -49
  556. package/skills/hand-drawn-explainer-video-nikola/references/style-guide.md +0 -82
  557. package/skills/hand-drawn-explainer-video-nikola/references/style-selection-and-updates.md +0 -39
  558. package/skills/hand-drawn-explainer-video-nikola/references/upstream-whiteboard-review.md +0 -30
  559. package/skills/hand-drawn-explainer-video-nikola/references/voiceover.md +0 -37
  560. package/skills/hbg-life-simulation/SKILL.md +0 -285
  561. package/skills/hbg-life-simulation/references/image-generation.md +0 -53
  562. package/skills/hbg-life-simulation/references/local-account-api.md +0 -112
  563. package/skills/hbg-life-simulation/references/opening-system.md +0 -45
  564. package/skills/hbg-life-simulation/references/project-spec.md +0 -62
  565. package/skills/hbg-life-simulation/references/render-and-qa.md +0 -107
  566. package/skills/hbg-life-simulation/references/storyboarding.md +0 -69
  567. package/skills/hbg-life-simulation/references/style-system.md +0 -80
  568. package/skills/hbg-life-simulation/references/visual-system.md +0 -44
  569. package/skills/heygen-avatar/SKILL.md +0 -489
  570. package/skills/heygen-avatar/references/asset-routing.md +0 -86
  571. package/skills/heygen-avatar/references/avatar-creation.md +0 -181
  572. package/skills/heygen-avatar/references/troubleshooting.md +0 -137
  573. package/skills/heytea-doodle-poster/SKILL.md +0 -132
  574. package/skills/heytea-doodle-poster/references/desktop-pet-character-modes.md +0 -103
  575. package/skills/heytea-doodle-poster/references/desktop-pet-environment.md +0 -122
  576. package/skills/heytea-doodle-poster/references/desktop-pet-pack.md +0 -106
  577. package/skills/heytea-doodle-poster/references/desktop-pet-workflow.md +0 -264
  578. package/skills/heytea-doodle-poster/references/evaluation.md +0 -246
  579. package/skills/heytea-doodle-poster/references/lettering-guide.md +0 -213
  580. package/skills/heytea-doodle-poster/references/mixed-media-style-guide.md +0 -101
  581. package/skills/heytea-doodle-poster/references/monster-poster-workflow.md +0 -56
  582. package/skills/heytea-doodle-poster/references/style-guide.md +0 -412
  583. package/skills/heytea-doodle-poster-hosted/SKILL.md +0 -132
  584. package/skills/heytea-doodle-poster-hosted/references/desktop-pet-character-modes.md +0 -103
  585. package/skills/heytea-doodle-poster-hosted/references/desktop-pet-environment.md +0 -122
  586. package/skills/heytea-doodle-poster-hosted/references/desktop-pet-pack.md +0 -106
  587. package/skills/heytea-doodle-poster-hosted/references/desktop-pet-workflow.md +0 -264
  588. package/skills/heytea-doodle-poster-hosted/references/evaluation.md +0 -246
  589. package/skills/heytea-doodle-poster-hosted/references/lettering-guide.md +0 -213
  590. package/skills/heytea-doodle-poster-hosted/references/mixed-media-style-guide.md +0 -101
  591. package/skills/heytea-doodle-poster-hosted/references/monster-poster-workflow.md +0 -56
  592. package/skills/heytea-doodle-poster-hosted/references/style-guide.md +0 -412
  593. package/skills/html2video/SKILL.md +0 -290
  594. package/skills/html2video/references/cjk-type.md +0 -173
  595. package/skills/html2video/references/editorial.md +0 -145
  596. package/skills/html2video/references/narration.md +0 -111
  597. package/skills/html2video/references/pitfalls.md +0 -238
  598. package/skills/html2video/references/shots.md +0 -198
  599. package/skills/html2video/references/storyboard.md +0 -323
  600. package/skills/hyperdirector/SKILL.md +0 -202
  601. package/skills/hyperdirector/docs/audio-workflow.md +0 -160
  602. package/skills/hyperdirector/docs/audio-workflow.zh-CN.md +0 -244
  603. package/skills/hyperdirector/docs/brand-kit-setup.md +0 -322
  604. package/skills/hyperdirector/docs/brand-kit-setup.zh-CN.md +0 -277
  605. package/skills/hyperdirector/docs/cursor-development-notes.md +0 -474
  606. package/skills/hyperdirector/docs/faq.md +0 -285
  607. package/skills/hyperdirector/docs/faq.zh-CN.md +0 -198
  608. package/skills/hyperdirector/docs/first-video.md +0 -320
  609. package/skills/hyperdirector/docs/first-video.zh-CN.md +0 -265
  610. package/skills/hyperdirector/docs/installation.md +0 -254
  611. package/skills/hyperdirector/docs/installation.zh-CN.md +0 -222
  612. package/skills/hyperdirector/docs/quickstart.md +0 -203
  613. package/skills/hyperframes/SKILL.md +0 -117
  614. package/skills/hyperframes/references/captions.md +0 -46
  615. package/skills/hyperframes/references/film.md +0 -48
  616. package/skills/hyperframes/references/format.md +0 -158
  617. package/skills/hyperframes/references/look.md +0 -69
  618. package/skills/hyperframes/references/motion.md +0 -95
  619. package/skills/hyperframes/references/overlays.md +0 -39
  620. package/skills/hyperframes/references/review.md +0 -51
  621. package/skills/hyperframes/references/runtimes.md +0 -69
  622. package/skills/hyperframes/references/skill-lifecycle.md +0 -49
  623. package/skills/hyperframes/references/sound.md +0 -43
  624. package/skills/hyperframes/references/spec.md +0 -76
  625. package/skills/hyperframes/references/story.md +0 -103
  626. package/skills/hyperframes-motion-director/SKILL.md +0 -920
  627. package/skills/hyperframes-motion-director/references/asset-choreography-and-render-qa.md +0 -185
  628. package/skills/hyperframes-motion-director/references/audio-sync.md +0 -83
  629. package/skills/hyperframes-motion-director/references/design-engineering.md +0 -156
  630. package/skills/hyperframes-motion-director/references/gsap-choreography.md +0 -202
  631. package/skills/hyperframes-motion-director/references/hyperframes-stability.md +0 -99
  632. package/skills/hyperframes-motion-director/references/imagegen-asset-pipeline.md +0 -227
  633. package/skills/hyperframes-motion-director/references/motion-background-system.md +0 -165
  634. package/skills/hyperframes-motion-director/references/motion-craft.md +0 -182
  635. package/skills/hyperframes-motion-director/references/premium-product-promo.md +0 -287
  636. package/skills/hyperframes-motion-director/references/text-over-background-layout.md +0 -221
  637. package/skills/hyperframes-motion-director/references/visual-standard.md +0 -174
  638. package/skills/hyperframes-motion-director/references/workflow.md +0 -320
  639. package/skills/hypit/SKILL.md +0 -367
  640. package/skills/hypit/references/creation/brief.md +0 -93
  641. package/skills/hypit/references/creation/script-and-time.md +0 -259
  642. package/skills/hypit/references/creation/transformations.md +0 -143
  643. package/skills/hypit/references/playbooks/craft/b-roll.md +0 -94
  644. package/skills/hypit/references/playbooks/craft/caption-tracking.md +0 -126
  645. package/skills/hypit/references/playbooks/craft/captions.md +0 -253
  646. package/skills/hypit/references/playbooks/craft/generated-dependencies.md +0 -38
  647. package/skills/hypit/references/playbooks/craft/graphic-compositions.md +0 -85
  648. package/skills/hypit/references/playbooks/craft/motion-graphics.md +0 -68
  649. package/skills/hypit/references/playbooks/craft/screen-demonstrations.md +0 -51
  650. package/skills/hypit/references/playbooks/craft/sound-mix.md +0 -70
  651. package/skills/hypit/references/playbooks/formats/narration-led-demo.md +0 -87
  652. package/skills/image/SKILL.md +0 -153
  653. package/skills/image/references/characters.md +0 -86
  654. package/skills/image/references/creative-direction.md +0 -137
  655. package/skills/image/references/de-slop.md +0 -95
  656. package/skills/image/references/dimensional.md +0 -88
  657. package/skills/image/references/editing.md +0 -112
  658. package/skills/image/references/golden-rules.md +0 -198
  659. package/skills/image/references/gpt-image.md +0 -228
  660. package/skills/image/references/models.md +0 -78
  661. package/skills/image/references/multi-panel.md +0 -354
  662. package/skills/image/references/nano-banana.md +0 -150
  663. package/skills/image/references/patterns/character-design.md +0 -150
  664. package/skills/image/references/patterns/ecommerce.md +0 -124
  665. package/skills/image-smixs/SKILL.md +0 -153
  666. package/skills/image-smixs/references/characters.md +0 -86
  667. package/skills/image-smixs/references/creative-direction.md +0 -137
  668. package/skills/image-smixs/references/de-slop.md +0 -95
  669. package/skills/image-smixs/references/dimensional.md +0 -88
  670. package/skills/image-smixs/references/editing.md +0 -112
  671. package/skills/image-smixs/references/golden-rules.md +0 -198
  672. package/skills/image-smixs/references/gpt-image.md +0 -228
  673. package/skills/image-smixs/references/models.md +0 -78
  674. package/skills/image-smixs/references/multi-panel.md +0 -354
  675. package/skills/image-smixs/references/nano-banana.md +0 -150
  676. package/skills/image-smixs/references/patterns/character-design.md +0 -150
  677. package/skills/image-smixs/references/patterns/ecommerce.md +0 -124
  678. package/skills/image-story-video-wizard/SKILL.md +0 -148
  679. package/skills/image-story-video-wizard/docs/ARTICLE_ALIGNMENT.md +0 -29
  680. package/skills/image-story-video-wizard/references/host-routing.md +0 -44
  681. package/skills/image-story-video-wizard/references/state-schema.md +0 -79
  682. package/skills/image-story-video-wizard/references/workflow.md +0 -203
  683. package/skills/image-story-video-wizard/references/writing-and-review.md +0 -60
  684. package/skills/ip-as-logo/SKILL.md +0 -151
  685. package/skills/ip-as-logo-s1dashu/SKILL.md +0 -151
  686. package/skills/jtxvideo-skill/SKILL.md +0 -337
  687. package/skills/kinetic-reel/SKILL.md +0 -140
  688. package/skills/kinetic-reel/examples/work-reel-26/STORYBOARD.md +0 -51
  689. package/skills/kinetic-reel/references/sound.md +0 -40
  690. package/skills/kinetic-reel/references/style-guide.md +0 -79
  691. package/skills/knowledge-explainer-skill/SKILL.md +0 -149
  692. package/skills/knowledge-explainer-skill/examples/ai_video_3steps.md +0 -61
  693. package/skills/knowledge-explainer-skill/examples/algorithm_bubble.md +0 -20
  694. package/skills/knowledge-explainer-skill/examples/before_after_demo.md +0 -38
  695. package/skills/knowledge-explainer-skill/examples/cta_outro.md +0 -11
  696. package/skills/knowledge-explainer-skill/examples/double_pendulum.md +0 -20
  697. package/skills/knowledge-explainer-skill/examples/paper_fold.md +0 -20
  698. package/skills/knowledge-explainer-skill/examples/script.md +0 -40
  699. package/skills/lanshu-create-ai-presenter-video/SKILL.md +0 -253
  700. package/skills/lanshu-create-ai-presenter-video/references/editing.md +0 -67
  701. package/skills/lanshu-create-ai-presenter-video/references/generation.md +0 -94
  702. package/skills/lanshu-create-ai-presenter-video/references/qa-recovery.md +0 -83
  703. package/skills/lanshu-create-ai-presenter-video/references/styled-explainer.md +0 -189
  704. package/skills/laoxu-video-script/SKILL.md +0 -117
  705. package/skills/laoxu-video-script/references/cases.md +0 -305
  706. package/skills/laoxu-video-script/references/de-ai.md +0 -32
  707. package/skills/laoxu-video-script/references/diagnostics.md +0 -67
  708. package/skills/laoxu-video-script/references/format.md +0 -62
  709. package/skills/laoxu-video-script/references/formulas.md +0 -43
  710. package/skills/laoxu-video-script/references/method.md +0 -115
  711. package/skills/laoxu-video-script/references/motifs-and-lines.md +0 -829
  712. package/skills/laoxu-video-script/references/persona.md +0 -38
  713. package/skills/laoxu-video-script/references/qihao-path.md +0 -35
  714. package/skills/laoxu-video-script/references/qihao-xinfa.md +0 -39
  715. package/skills/laoxu-video-script/references/redlines.md +0 -26
  716. package/skills/lemo-opuscar/SKILL.md +0 -67
  717. package/skills/lipnardo/SKILL.md +0 -308
  718. package/skills/lipnardo/examples/batch-personalized.md +0 -44
  719. package/skills/lipnardo/examples/photo-to-avatar-pipeline.md +0 -56
  720. package/skills/lipnardo/examples/single-video.md +0 -44
  721. package/skills/lipnardo/references/avatar-types.md +0 -42
  722. package/skills/lipnardo/references/credit-costs.md +0 -39
  723. package/skills/lipnardo/references/error-codes.md +0 -66
  724. package/skills/lipnardo/references/heygen-api-reference.md +0 -416
  725. package/skills/ll-video-decomposer/SKILL.md +0 -105
  726. package/skills/ll-video-decomposer/references/audiovisual-analysis-guide.md +0 -44
  727. package/skills/ll-video-decomposer/references/evidence-and-confidence-rules.md +0 -41
  728. package/skills/ll-video-decomposer/references/multi-video-comparison-template.md +0 -48
  729. package/skills/ll-video-decomposer/references/single-video-report-template.md +0 -47
  730. package/skills/ll-video-decomposer/references/tool-discovery-workflow.md +0 -30
  731. package/skills/ll-video-decomposer/references/transcription-routing.md +0 -65
  732. package/skills/ll-video-decomposer/references/video-acquisition-workflow.md +0 -30
  733. package/skills/ltx2-video/SKILL.md +0 -193
  734. package/skills/ltx2-video/references/mode_ux.md +0 -293
  735. package/skills/make-ai-short/SKILL.md +0 -130
  736. package/skills/make-blender-education-video/SKILL.md +0 -247
  737. package/skills/make-blender-education-video/references/evidence-and-explanation.md +0 -62
  738. package/skills/make-blender-education-video/references/github-workflow-discovery.md +0 -55
  739. package/skills/make-blender-education-video/references/production-workflow.md +0 -62
  740. package/skills/make-blender-education-video/references/story-patterns.md +0 -65
  741. package/skills/make-blender-education-video/references/visual-quality.md +0 -82
  742. package/skills/manage-storyboard-projects/SKILL.md +0 -128
  743. package/skills/manim-composer/SKILL.md +0 -176
  744. package/skills/manim-composer/references/narrative-patterns.md +0 -125
  745. package/skills/manim-composer/references/scene-examples.md +0 -216
  746. package/skills/manim-composer/references/visual-techniques.md +0 -223
  747. package/skills/manim-composer/templates/scenes-template.md +0 -147
  748. package/skills/monet-ai-editor-monet/SKILL.md +0 -367
  749. package/skills/motion-graphics/SKILL.md +0 -206
  750. package/skills/motion-graphics/references/craft.md +0 -136
  751. package/skills/motion-graphics/references/engine.md +0 -130
  752. package/skills/motion-graphics/references/export.md +0 -67
  753. package/skills/motion-graphics/references/physics.md +0 -100
  754. package/skills/motion-graphics/references/verify.md +0 -124
  755. package/skills/motion-video/SKILL.md +0 -133
  756. package/skills/motion-video/references/audio-and-beat-sync.md +0 -109
  757. package/skills/motion-video/references/composition-contract.md +0 -107
  758. package/skills/motion-video/references/production-pipeline.md +0 -147
  759. package/skills/motion-video/references/style-comic-spiderverse.md +0 -87
  760. package/skills/motion-video/references/style-glass-keynote.md +0 -69
  761. package/skills/motion-video-maker/SKILL.md +0 -1452
  762. package/skills/motion-video-maker/reference/components.md +0 -451
  763. package/skills/motion-video-maker/reference/workflow.md +0 -190
  764. package/skills/motioncraft/SKILL.md +0 -221
  765. package/skills/motioncraft/references/animation-system.md +0 -57
  766. package/skills/motioncraft/references/assets-and-licensing.md +0 -21
  767. package/skills/motioncraft/references/customization.md +0 -52
  768. package/skills/motioncraft/references/gpu-cloud-render.md +0 -15
  769. package/skills/motioncraft/references/music.md +0 -43
  770. package/skills/motioncraft/references/phase1-planning-and-preview.md +0 -74
  771. package/skills/motioncraft/references/phase2-timeline-audio.md +0 -33
  772. package/skills/motioncraft/references/phase3-pixel-review.md +0 -13
  773. package/skills/motioncraft/references/phase4-templates.md +0 -30
  774. package/skills/motioncraft/references/preflight.md +0 -27
  775. package/skills/motioncraft/references/qa.md +0 -53
  776. package/skills/motioncraft/references/reference-analysis.md +0 -37
  777. package/skills/narrator-ai-cli/SKILL.md +0 -256
  778. package/skills/narrator-ai-cli/references/magic-video.md +0 -205
  779. package/skills/narrator-ai-cli/references/operations.md +0 -230
  780. package/skills/narrator-ai-cli/references/resources.md +0 -126
  781. package/skills/narrator-ai-cli/references/workflows.md +0 -332
  782. package/skills/newcut-video-clipping/SKILL.md +0 -194
  783. package/skills/newcut-video-clipping/references/examples.md +0 -59
  784. package/skills/newcut-video-clipping/references/provider-config.md +0 -110
  785. package/skills/newcut-video-clipping/references/quality-check.md +0 -35
  786. package/skills/newcut-video-clipping/references/semantic-plan.md +0 -65
  787. package/skills/notes-to-video/SKILL.md +0 -476
  788. package/skills/openchatcut/SKILL.md +0 -100
  789. package/skills/openchatcut/references/editing-workflow.md +0 -54
  790. package/skills/openchatcut/references/getting-started.md +0 -106
  791. package/skills/openchatcut/references/known-errors.md +0 -62
  792. package/skills/openstoryline-install/SKILL.md +0 -228
  793. package/skills/orca-motion/SKILL.md +0 -100
  794. package/skills/orca-motion/references/api.md +0 -100
  795. package/skills/orca-motion/references/integration.md +0 -59
  796. package/skills/orca-motion/references/kinetic-type.md +0 -59
  797. package/skills/orca-motion/references/principles.md +0 -76
  798. package/skills/package-talking-head-video/SKILL.md +0 -90
  799. package/skills/package-talking-head-video/docs/EXAMPLES.md +0 -18
  800. package/skills/package-talking-head-video/docs/TROUBLESHOOTING.md +0 -29
  801. package/skills/package-talking-head-video/docs/USAGE.md +0 -83
  802. package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-multicolor-center-speaker.md +0 -144
  803. package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-semantic-template-system-v2.md +0 -1099
  804. package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-multicolor-center-speaker-design.md +0 -154
  805. package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-semantic-template-system-v2-design.md +0 -365
  806. package/skills/package-talking-head-video/examples/auto-editing-0/GATE_A.md +0 -56
  807. package/skills/package-talking-head-video/examples/auto-editing-0/GATE_D.md +0 -8
  808. package/skills/package-talking-head-video/examples/auto-editing-0/QA_REPORT.md +0 -34
  809. package/skills/package-talking-head-video/references/director-rules.md +0 -29
  810. package/skills/package-talking-head-video/references/motion-and-illustration.md +0 -25
  811. package/skills/paper-cut/SKILL.md +0 -164
  812. package/skills/paper-cut/references/asset-spec.md +0 -47
  813. package/skills/paper-cut/references/audio-and-chatcut.md +0 -26
  814. package/skills/paper-cut/references/hyperframes-assembly.md +0 -47
  815. package/skills/paper-cut/references/image-led-production.md +0 -65
  816. package/skills/paper-cut/references/storyboard-schema.md +0 -48
  817. package/skills/paper-cut/references/workflow.md +0 -39
  818. package/skills/personal-ip-brand-intro/SKILL.md +0 -216
  819. package/skills/personal-ip-brand-intro/references/intake-schema.md +0 -79
  820. package/skills/personal-ip-brand-intro/references/music-upload-workflow.md +0 -40
  821. package/skills/personal-ip-brand-intro/references/originality-rules.md +0 -42
  822. package/skills/personal-ip-brand-intro/references/qa-checklist.md +0 -60
  823. package/skills/personal-ip-brand-intro/references/rhythm-routing.md +0 -41
  824. package/skills/personal-ip-brand-intro/references/storyboard-contract.md +0 -42
  825. package/skills/pixel2motion/SKILL.md +0 -279
  826. package/skills/pixel2motion/references/html-delivery-template.md +0 -42
  827. package/skills/pixel2motion/references/motion-personality.md +0 -109
  828. package/skills/pixel2motion/references/reveal-patterns.md +0 -163
  829. package/skills/pixel2motion/references/ribbon-fitting.md +0 -90
  830. package/skills/pixel2motion/references/twelve-principles-for-logos.md +0 -116
  831. package/skills/premiere-batch-delivery/SKILL.md +0 -71
  832. package/skills/premiere-pro-mcp/SKILL.md +0 -161
  833. package/skills/promo-creator-skills/SKILL.md +0 -209
  834. package/skills/promo-creator-skills/references/mureka_prompt_guide.md +0 -251
  835. package/skills/promo-creator-skills/references/product_promo_bgm_prompting.md +0 -100
  836. package/skills/promo-video/SKILL.md +0 -408
  837. package/skills/qisi-video-remix/SKILL.md +0 -134
  838. package/skills/qisi-video-remix/examples/creative-plan.md +0 -133
  839. package/skills/qisi-video-remix/references/delivery-guide.md +0 -63
  840. package/skills/reel-video/SKILL.md +0 -237
  841. package/skills/remotion-ad-video/SKILL.md +0 -252
  842. package/skills/remotion-ad-video/references/ad-aesthetic-qa.md +0 -60
  843. package/skills/remotion-ad-video/references/ad-brief-contract.md +0 -235
  844. package/skills/remotion-ad-video/references/ad-exemplars.md +0 -186
  845. package/skills/remotion-ad-video/references/ad-intake.md +0 -54
  846. package/skills/remotion-ad-video/references/asset-harvest.md +0 -56
  847. package/skills/remotion-ad-video/references/audio-caption-system.md +0 -202
  848. package/skills/remotion-ad-video/references/concept-contract.md +0 -128
  849. package/skills/remotion-ad-video/references/creative-direction.md +0 -146
  850. package/skills/remotion-ad-video/references/fast-test-workflow.md +0 -86
  851. package/skills/remotion-ad-video/references/game-ad-patterns.md +0 -75
  852. package/skills/remotion-ad-video/references/hyperframes-output.md +0 -90
  853. package/skills/remotion-ad-video/references/industry-angle-library.md +0 -71
  854. package/skills/remotion-ads/SKILL.md +0 -278
  855. package/skills/remotion-ads/references/ad-copywriting.md +0 -229
  856. package/skills/remotion-ads/references/animations.md +0 -693
  857. package/skills/remotion-ads/references/brand-config-template.md +0 -355
  858. package/skills/remotion-ads/references/captions.md +0 -529
  859. package/skills/remotion-ads/references/carousels.md +0 -580
  860. package/skills/remotion-ads/references/components.md +0 -897
  861. package/skills/remotion-ads/references/copy-frameworks.md +0 -144
  862. package/skills/remotion-ads/references/formats.md +0 -436
  863. package/skills/remotion-ads/references/gemini-tts.md +0 -473
  864. package/skills/remotion-ads/references/html-in-canvas.md +0 -555
  865. package/skills/remotion-ads/references/local-assets.md +0 -543
  866. package/skills/remotion-ads/references/music.md +0 -656
  867. package/skills/remotion-code-motion-explainer/SKILL.md +0 -178
  868. package/skills/remotion-code-motion-explainer/references/code-motion-design.md +0 -86
  869. package/skills/remotion-code-motion-explainer/references/motion-production-patterns.md +0 -93
  870. package/skills/remotion-code-motion-explainer/references/production-and-qc.md +0 -99
  871. package/skills/remotion-code-motion-explainer/references/reference-reconstruction.md +0 -48
  872. package/skills/remotion-code-motion-explainer/references/ui-motion-shot-library.md +0 -62
  873. package/skills/remotion-motion-graphics/SKILL.md +0 -169
  874. package/skills/remotion-motion-graphics/references/patterns.md +0 -355
  875. package/skills/remotion-motion-graphics/references/polish.md +0 -102
  876. package/skills/remotion-motion-graphics/references/scaffold.md +0 -144
  877. package/skills/remotion-motion-graphics/references/traps.md +0 -152
  878. package/skills/remotion-resemble-ai/SKILL.md +0 -879
  879. package/skills/remotion-resemble-ai/rules/resemble-captions.md +0 -350
  880. package/skills/remotion-resemble-ai/rules/resemble-remotion-integration.md +0 -305
  881. package/skills/remotion-resemble-ai/rules/resemble-setup.md +0 -284
  882. package/skills/remotion-resemble-ai/rules/resemble-streaming-tts.md +0 -225
  883. package/skills/remotion-resemble-ai/rules/resemble-sync-tts.md +0 -239
  884. package/skills/remotion-resemble-ai/rules/resemble-voices.md +0 -213
  885. package/skills/remotion-resemble-ai/rules/visual-animations.md +0 -567
  886. package/skills/riffkit/SKILL.md +0 -196
  887. package/skills/riffkit/examples/any-look-styles.md +0 -11
  888. package/skills/riffkit/examples/faceless-and-auto.md +0 -16
  889. package/skills/riffkit/examples/localize-spanish.md +0 -18
  890. package/skills/riffkit/examples/tiktok-shop-product.md +0 -22
  891. package/skills/riffkit/references/anchor.md +0 -62
  892. package/skills/riffkit/references/api.md +0 -806
  893. package/skills/riffkit/references/details.md +0 -153
  894. package/skills/riffkit/references/errors.md +0 -69
  895. package/skills/riffkit/references/intents.md +0 -29
  896. package/skills/saas-motion-video/SKILL.md +0 -71
  897. package/skills/script-to-video/SKILL.md +0 -2627
  898. package/skills/shorts/SKILL.md +0 -372
  899. package/skills/shorts/references/caption-styles.md +0 -105
  900. package/skills/shorts/references/platform-specs.md +0 -149
  901. package/skills/shorts/references/remotion-patterns.md +0 -180
  902. package/skills/shorts/references/scoring-rubric.md +0 -106
  903. package/skills/smart-video-editor/SKILL.md +0 -327
  904. package/skills/smart-video-editor/docs/FONTS.md +0 -57
  905. package/skills/story-telling/SKILL.md +0 -222
  906. package/skills/story-telling/rules/composition.md +0 -130
  907. package/skills/story-telling/rules/images.md +0 -119
  908. package/skills/story-telling/rules/models.md +0 -98
  909. package/skills/story-telling/rules/narration.md +0 -87
  910. package/skills/story-telling/rules/pitfalls.md +0 -140
  911. package/skills/story-telling/rules/story-formats.md +0 -108
  912. package/skills/story-telling/rules/story-json.md +0 -143
  913. package/skills/story-telling/rules/voices.md +0 -114
  914. package/skills/story-telling/rules/workflow.md +0 -105
  915. package/skills/story-to-handdrawn-video/SKILL.md +0 -216
  916. package/skills/story-to-handdrawn-video/references/asset-workflow.md +0 -24
  917. package/skills/story-to-handdrawn-video/references/reference-style-workflow.md +0 -27
  918. package/skills/su-card-to-video/SKILL.md +0 -103
  919. package/skills/talking-head-video-pipeline/SKILL.md +0 -224
  920. package/skills/talking-head-video-pipeline/examples/prompts.md +0 -217
  921. package/skills/talking-head-video-pipeline/references/asr-adapters.md +0 -51
  922. package/skills/talking-head-video-pipeline/references/caption-workflow.md +0 -53
  923. package/skills/talking-head-video-pipeline/references/export-recipes.md +0 -78
  924. package/skills/talking-head-video-pipeline/references/layout-safety.md +0 -49
  925. package/skills/talking-head-video-pipeline/references/video-use-integration.md +0 -71
  926. package/skills/talking-head-video-pipeline/references/workflows/captions.md +0 -52
  927. package/skills/talking-head-video-pipeline/references/workflows/design.md +0 -77
  928. package/skills/talking-head-video-pipeline/references/workflows/doctor.md +0 -51
  929. package/skills/talking-head-video-pipeline/references/workflows/export.md +0 -50
  930. package/skills/talking-head-video-pipeline/references/workflows/init.md +0 -51
  931. package/skills/talking-head-video-pipeline/references/workflows/learn.md +0 -36
  932. package/skills/text-to-lottie/SKILL.md +0 -202
  933. package/skills/text-to-lottie/references/chapterization-transition-grammar.md +0 -132
  934. package/skills/text-to-lottie/references/design-taste.md +0 -292
  935. package/skills/text-to-lottie/references/lottie-spec-map.md +0 -82
  936. package/skills/text-to-lottie/references/motion-taste.md +0 -260
  937. package/skills/text-to-lottie/references/player-contract.md +0 -325
  938. package/skills/text-to-lottie/references/recipe-camera-scene-motion.md +0 -65
  939. package/skills/text-to-lottie/references/recipe-data-stats.md +0 -104
  940. package/skills/text-to-lottie/references/recipe-diagram-technical.md +0 -106
  941. package/skills/text-to-lottie/references/recipe-loaders-icons.md +0 -70
  942. package/skills/text-to-lottie/references/recipe-logo.md +0 -72
  943. package/skills/text-to-lottie/references/recipe-lower-thirds.md +0 -62
  944. package/skills/text-to-lottie/references/recipe-product-promo.md +0 -99
  945. package/skills/ultrademo/SKILL.md +0 -212
  946. package/skills/video-assemble/SKILL.md +0 -101
  947. package/skills/video-assemble-zenstory-ai/SKILL.md +0 -153
  948. package/skills/video-assemble-zenstory-ai/references/audio-modes.md +0 -63
  949. package/skills/video-assemble-zenstory-ai/references/explicit-audio-mix.md +0 -77
  950. package/skills/video-assemble-zenstory-ai/references/jianying/SOURCE.md +0 -14
  951. package/skills/video-assemble-zenstory-ai/references/narration-adoption.md +0 -103
  952. package/skills/video-assemble-zenstory-ai/references/packaging.md +0 -44
  953. package/skills/video-assemble-zenstory-ai/references/source-score.md +0 -146
  954. package/skills/video-assemble-zenstory-ai/references/subtitle-track.md +0 -202
  955. package/skills/video-editing/SKILL.md +0 -688
  956. package/skills/video-explainer/SKILL.md +0 -163
  957. package/skills/video-explainer/references/brief-to-script.md +0 -56
  958. package/skills/video-explainer/references/errors-and-privacy.md +0 -18
  959. package/skills/video-explainer/references/motion-storyboard.md +0 -82
  960. package/skills/video-explainer/references/render-and-verify.md +0 -62
  961. package/skills/video-explainer/references/review-gate.md +0 -82
  962. package/skills/video-explainer/references/setup-and-doctor.md +0 -33
  963. package/skills/video-script-builder/SKILL.md +0 -329
  964. package/skills/video-script-builder/examples/quick-start-transcript.md +0 -19
  965. package/skills/video-script-builder/references/audio-workflow.md +0 -84
  966. package/skills/video-script-builder/references/caption-components.md +0 -70
  967. package/skills/video-script-builder/references/common-pitfalls.md +0 -80
  968. package/skills/video-script-builder/references/component-catalog.md +0 -197
  969. package/skills/video-script-builder/references/component-recipes.md +0 -165
  970. package/skills/video-script-builder/references/gsap-patterns.md +0 -112
  971. package/skills/video-script-builder/references/pacing-rules.md +0 -78
  972. package/skills/video-script-builder/references/quality-checklist.md +0 -98
  973. package/skills/video-script-builder/references/remotion-patterns.md +0 -211
  974. package/skills/video-script-builder/references/shader-transitions.md +0 -115
  975. package/skills/video-script-builder/references/taste-principles.md +0 -160
  976. package/skills/video-scrub/SKILL.md +0 -216
  977. package/skills/video-scrub/references/profiles.md +0 -89
  978. package/skills/video-scrub/references/residue-map.md +0 -204
  979. package/skills/video-short-maker/SKILL.md +0 -182
  980. package/skills/video-shot-analysis-feishu/SKILL.md +0 -173
  981. package/skills/video-shotcraft/SKILL.md +0 -267
  982. package/skills/video-shotcraft/docs/deepseek-harness.md +0 -69
  983. package/skills/video-shotcraft/references/aesthetic-rules.md +0 -177
  984. package/skills/video-shotcraft/references/final-review.md +0 -112
  985. package/skills/video-shotcraft/references/guided-free-creation.md +0 -199
  986. package/skills/video-shotcraft/references/jianying-export.md +0 -182
  987. package/skills/video-shotcraft/references/music-beat-sync.md +0 -219
  988. package/skills/video-shotcraft/references/pipeline.md +0 -390
  989. package/skills/video-shotcraft/references/sequences/promo-energy-arc.md +0 -50
  990. package/skills/video-shotcraft/references/shots/ATTRIBUTION.md +0 -65
  991. package/skills/video-shotcraft/references/shots/camera/basic-3d-scene.md +0 -37
  992. package/skills/video-shotcraft/references/shots/camera/crash-zoom-punch.md +0 -39
  993. package/skills/video-shotcraft/references/shots/camera/cursor-flyover.md +0 -38
  994. package/skills/video-shotcraft-vincentwei10/SKILL.md +0 -316
  995. package/skills/video-shotcraft-vincentwei10/references/aesthetic-rules.md +0 -187
  996. package/skills/video-shotcraft-vincentwei10/references/final-review.md +0 -116
  997. package/skills/video-shotcraft-vincentwei10/references/guided-free-creation.md +0 -199
  998. package/skills/video-shotcraft-vincentwei10/references/jianying-export.md +0 -183
  999. package/skills/video-shotcraft-vincentwei10/references/music-beat-sync.md +0 -257
  1000. package/skills/video-shotcraft-vincentwei10/references/pipeline.md +0 -401
  1001. package/skills/video-shotcraft-vincentwei10/references/publish-upload-post.md +0 -111
  1002. package/skills/video-shotcraft-vincentwei10/references/sequences/promo-energy-arc.md +0 -50
  1003. package/skills/video-shotcraft-vincentwei10/references/shots/ATTRIBUTION.md +0 -62
  1004. package/skills/video-shotcraft-vincentwei10/references/shots/camera/basic-3d-scene.md +0 -41
  1005. package/skills/video-shotcraft-vincentwei10/references/shots/camera/crash-zoom-punch.md +0 -52
  1006. package/skills/video-shotcraft-vincentwei10/references/shots/camera/cursor-flyover.md +0 -39
  1007. package/skills/video-structure-analyzer/SKILL.md +0 -148
  1008. package/skills/video-structure-analyzer/examples/xhs-rook-time-spend/xhs-rook-time-spend_/346/213/211/347/211/207/346/213/206/350/247/243.md +0 -50
  1009. package/skills/video-structure-analyzer/examples/xhs-smelly-cat/xhs-smelly-cat_/346/213/211/347/211/207/346/213/206/350/247/243.md +0 -19
  1010. package/skills/video-toolkit/SKILL.md +0 -686
  1011. package/skills/videocut/SKILL.md +0 -159
  1012. package/skills/videodb/SKILL.md +0 -497
  1013. package/skills/videodb/reference/api-reference.md +0 -741
  1014. package/skills/videodb/reference/capture-reference.md +0 -399
  1015. package/skills/videodb/reference/capture.md +0 -110
  1016. package/skills/videodb/reference/editor-reference.md +0 -506
  1017. package/skills/videodb/reference/editor.md +0 -389
  1018. package/skills/videodb/reference/generative.md +0 -344
  1019. package/skills/videodb/reference/indexing-reference.md +0 -481
  1020. package/skills/videodb/reference/indexing.md +0 -537
  1021. package/skills/videodb/reference/legacy/index-reference.md +0 -223
  1022. package/skills/videodb/reference/legacy/index.md +0 -241
  1023. package/skills/videodb/reference/legacy/search.md +0 -249
  1024. package/skills/videodb/reference/migration.md +0 -113
  1025. package/skills/vlog-auto-edit/SKILL.md +0 -982
  1026. package/skills/vlog-auto-edit/examples/project_structure.md +0 -84
  1027. package/skills/vox-animated-ad-mcp/SKILL.md +0 -419
  1028. package/skills/vox-director/SKILL.md +0 -351
  1029. package/skills/vox-director/references/beat-layer.md +0 -143
  1030. package/skills/vox-director/references/host-mode.md +0 -120
  1031. package/skills/vox-director/references/local-engine.md +0 -73
  1032. package/skills/vox-director/references/models-and-gotchas.md +0 -91
  1033. package/skills/vox-director/references/prompt-guide.md +0 -275
  1034. package/skills/vox-director/references/voices.md +0 -59
  1035. package/skills/xingchen-vox-collage/SKILL.md +0 -251
  1036. package/skills/xingchen-vox-collage/references/asset-layer-contract.md +0 -98
  1037. package/skills/xingchen-vox-collage/references/creative-exploration.md +0 -19
  1038. package/skills/xingchen-vox-collage/references/learned-branches.md +0 -34
  1039. package/skills/xingchen-vox-collage/references/remotion-scene-contract.md +0 -77
  1040. package/skills/xingchen-vox-collage/references/visual-language.md +0 -74
  1041. package/skills/xingchen-vox-collage/references/visual-qa.md +0 -59
  1042. package/skills/youtube/SKILL.md +0 -147
  1043. package/skills/youtube/references/algorithm-guide.md +0 -59
  1044. package/skills/youtube/references/analytics-benchmarks.md +0 -67
  1045. package/skills/youtube/references/dataforseo-integration.md +0 -51
  1046. package/skills/youtube/references/monetization-guide.md +0 -62
  1047. package/skills/youtube/references/repurposing-guide.md +0 -54
  1048. package/skills/youtube/references/retention-scripting-guide.md +0 -75
  1049. package/skills/youtube/references/seo-playbook.md +0 -77
  1050. package/skills/youtube/references/shorts-playbook.md +0 -64
  1051. package/skills/youtube/references/thumbnail-ctr-guide.md +0 -73
  1052. package/skills/youtube-shorts-factory/SKILL.md +0 -358
  1053. package/skills/youtube-shorts-factory/resources/adaptation-guide.md +0 -133
  1054. package/skills/youtube-shorts-factory/resources/storyboard-template.md +0 -271
  1055. package/skills/youtube-shorts-factory/resources/workflow-steps.md +0 -139
  1056. package/studio/ui/dist/assets/ExportCenter-DEyy1vs_.js +0 -1
  1057. package/studio/ui/dist/assets/SettingsModal-CQmsA2A2.js +0 -2
  1058. package/studio/ui/dist/assets/es-AqUfIkAy.js +0 -1
  1059. package/studio/ui/dist/assets/index-C7moXjTY.css +0 -1
  1060. package/studio/ui/dist/assets/index-DdU5QNpY.js +0 -1623
  1061. package/studio/ui/dist/assets/ja-YwiCB4QQ.js +0 -1
  1062. package/studio/ui/dist/assets/ko-CKtBPDze.js +0 -1
  1063. package/studio/ui/dist/assets/zh-CN-DtNEwKWJ.js +0 -1
@@ -1,1452 +0,0 @@
1
- ---
2
- name: motion-video-maker
3
- description: "motion-video-maker: the method the original skill taught, run as an AICUT film — pages that draw any moment t, cut on tracks. Runs in AICUT: the film is film.html, a page per shot, drawn by `aicut look` and `aicut render`."
4
- license: MIT
5
- source: "GordenSun/react-bits-video"
6
- ---
7
-
8
- # motion-video-maker
9
-
10
- ## Running it in AICUT
11
-
12
- AICUT's film is `film.html`: it cuts pages, footage, pictures and sound together on tracks. A page is a web page that
13
- sets `window.film = { frame(t) }` and draws that moment — no framework, no build step, no composition object, no
14
- `registerRoot`. Five shots are five pages cut together, not one page that changes scene, so each shot stays trimmable
15
- and replaceable in Studio.
16
-
17
- ```sh
18
- npx -y @autoaiai/aicut@latest # the manual: the format and the commands, always current
19
- npx -y @autoaiai/aicut@latest open . # make this folder a film and print Studio's address
20
- npx -y @autoaiai/aicut@latest look # a contact sheet of the whole film, its sound, and a determinism check
21
- npx -y @autoaiai/aicut@latest look 4.5 # one frame, full size — look at the PNG, not at the code
22
- npx -y @autoaiai/aicut@latest render # the MP4, beside film.html
23
- ```
24
-
25
- Run the manual before the first film: it is authoritative for the format, and this skill is about the method above it.
26
-
27
- Where the words below name another program's part, it becomes this:
28
-
29
- | elsewhere | in AICUT |
30
- |---|---|
31
- | composition, timeline, project file | `film.html`; tracks and clips inside it |
32
- | a scene, a sequence, a slide | a page (`pages/<name>.html`) cut onto a track |
33
- | `useCurrentFrame()`, `interpolate()` | `frame(t)` — the picture depends only on `t`, never on state or `Date.now()` |
34
- | a still, a screengrab | `aicut look <t>` |
35
- | `render` / `build` / `export` | `aicut render` (the person can also export from Studio) |
36
- | a dev server, a preview window | `aicut open` and the Studio address it prints |
37
-
38
- Hard rules that hold whatever the method says: the picture depends only on `t`; every value in the person's prompt is
39
- binding; look at the frames `look` writes before saying a film is done.
40
-
41
-
42
- A self-contained skill for authoring **cinematic HTML animations** and
43
- rendering them to **frame-accurate MP4** video. One composition = one HTML
44
- file driven by a tiny deterministic timeline runtime.
45
-
46
- ## Hard Rules — READ FIRST (non-negotiable)
47
-
48
- These prevent the bugs we keep seeing in agent-generated videos.
49
- `scripts/lint.mjs` enforces most of them and exits non-zero on violations.
50
-
51
- | ❌ Don't | ✅ Do |
52
- |---|---|
53
- | `style="font-size: 180px"` on a long heading | use `.title-2xl` / `.title-xl` / `.title-lg` class (see [Typography limits](#typography-limits)) |
54
- | `.text-aurora` (blue-cyan gradient) over a cool palette | match palette family → use `.text-on-cool` instead |
55
- | `data-background` without `data-palette` and without `data-colors` | always pick a named palette (`cool-deep`, `warm-glow`, etc.) |
56
- | `style="position: relative"` on a `[data-background]` element | leave it alone — CSS already sets `position: absolute` |
57
- | `Math.random()` / `Date.now()` / `new Date()` inside `<script>` | use `__mvm.random("seed")` / pass `t` from `mvm-seek` event |
58
- | odd `data-width` / `data-height` (e.g. 1921×1081) | use even integers — H.264 refuses odd dimensions |
59
- | `data-animation-out` on a non-final scene without a `<div data-transition>` | bridge the cut with a transition (pixel-dissolve / iris / glitch / wipe-left / flash) |
60
- | inline `<style>` with `transition:` / `@keyframes` | use `data-animation` + the runtime — CSS transitions don't seek and break determinism |
61
- | fade non-final scenes to opacity 0 | only the **last** scene may fade to black; everything else must hand off via a transition |
62
- | `background-image: url(...)` (CSS bg image, browser doesn't fire load event) | use `<img class="bg-img" style="position:absolute;inset:0;">` |
63
- | `gsap.utils.random(...)` / `Math.random()` inside any `gsap.to/from/timeline` value | wrap with `__mvm.random("seed")` or pass a deterministic precomputed value — see [GSAP integration](#gsap-integration--every-plugin-deterministic-bridged) |
64
- | `setTimeout(() => gsap.to(...), 1000)` / wall-clock-driven GSAP construction | build the timeline at parse-time, anchor it with `__mvmGsap.timeline({at: <s>})` so `mvm-seek` drives it |
65
- | Importing / referencing `ScrollTrigger` / `ScrollSmoother` / `Draggable` / `Observer` / `InertiaPlugin` | these need user interaction that doesn't exist in offline render — use a GSAP timeline driven by `mvm-seek` instead |
66
- | Loading `gsap-bridge.js` BEFORE `gsap.min.js` and the plugin scripts | always load gsap core + plugins FIRST, then the bridge — the bridge only registers what already exists on `window` |
67
-
68
- Run `node scripts/lint.mjs path/to/index.html` before rendering. Add
69
- `--strict` in CI so warnings also fail.
70
-
71
- ## Determinism Contract
72
-
73
- Two renders of the same HTML file MUST produce byte-identical MP4 output.
74
- The runtime + render pipeline already enforce this — but author code can
75
- break it. The rules:
76
-
77
- 1. **Never call `Math.random()`** in inline scripts. Use one of:
78
- - `window.__mvm.random("a-stable-string-seed")` → stateful PRNG function
79
- - `window.__mvm.randomSample("seed")` → one deterministic value
80
- 2. **Never call `Date.now()` / `new Date()` / `performance.now()`** for
81
- anything visible. Time MUST come from the `mvm-seek` event detail.
82
- 3. **Never use CSS `transition` / `animation`** on stage elements — those
83
- don't respect the timeline's seek mechanism, so they play in preview
84
- but appear "frozen" in the rendered MP4.
85
- 4. **Never use `setTimeout` / `setInterval`** to drive visuals. The renderer
86
- issues `seek(t)` at 30 fps step boundaries; any wall-clock-driven code
87
- will skip frames.
88
- 5. **All async resources go through `delayRender` / `continueRender`**:
89
- ```js
90
- const h = window.__mvm.delayRender('Loading hero image');
91
- img.onload = () => window.__mvm.continueRender(h);
92
- img.onerror = () => window.__mvm.cancelRender(new Error('hero image failed'));
93
- ```
94
- The renderer waits for `__mvm.ready === true` (i.e. all handles cleared)
95
- before screenshotting each frame; failures surface immediately with the
96
- pending handle labels printed.
97
- ```
98
-
99
- ## Scene Transitions — non-negotiable rules
100
-
101
- Borrowed from Hyperframes. Failing these is the #1 reason a video feels
102
- "choppy" or "broken".
103
-
104
- 1. **Every scene boundary must have a `<div data-transition>`.** Pick one
105
- of: `pixel-dissolve` / `iris` / `glitch` / `wipe-left` / `wipe-right`
106
- / `wipe-up` / `wipe-down` / `flash`. The transition straddles the cut.
107
- 2. **Every text/element must have a `data-animation` (entrance).** Don't
108
- appear out of nothing — fade, slide, drop, mask in.
109
- 3. **Don't add `data-animation-out` to a non-final scene.** The transition
110
- IS the exit. Adding an extra fade-out makes the screen go blank for
111
- ~0.3s and looks like a bug. `scripts/lint.mjs` flags this as `E005`.
112
- 4. **Only the final scene may fade to opacity 0.** Earlier scenes hand off
113
- via the transition; the last scene closes the video.
114
-
115
- ```html
116
- <!-- Scene 1 -->
117
- <div data-background="meta-balls" data-palette="warm-glow"
118
- data-clip data-start="0" data-duration="5.8"
119
- data-animation="fadeIn"></div> <!-- ✅ entrance only -->
120
-
121
- <!-- Transition (bridges 5.3s → 6.0s) -->
122
- <div data-transition="pixel-dissolve" data-start="5.3" data-duration="0.7"></div>
123
-
124
- <!-- Scene 2 starts at 5.8s -->
125
- <div data-background="liquid-ether" data-palette="cool-deep"
126
- data-clip data-start="5.8" data-duration="5.5"
127
- data-animation="fadeIn"></div> <!-- ✅ no data-animation-out -->
128
-
129
- ## Style Presets — 8 recipes to start from or hybridise
130
-
131
- Each preset is a **complete vibe**: palette + typography + animation
132
- pattern + transition + pacing. They're not classes you import; they're
133
- **templates you copy from** when you want a recognisable look. Hybridise
134
- freely — use Asian Ink typography with Glitch Tech transitions, etc.
135
-
136
- ### 1. Cinematic Trailer
137
-
138
- > Big serif over warm darkness. Long beats, single ideas per scene.
139
- > Feels like a film opening.
140
-
141
- | | |
142
- |---|---|
143
- | **Palette** | `warm-glow` / `warm-ember` / `mono-deep` |
144
- | **Background** | `meta-balls` (slow `data-intensity="0.8"`) / `lightning` (sparingly) / solid `#0a0606` |
145
- | **Typography** | `.title-3xl` or `.title-2xl`, `cn-serif` (Noto Serif SC), `letter-spacing: 0.04em` |
146
- | **Text color** | `.text-on-warm` (off-white) or `#FFE87A` |
147
- | **Entrance** | `data-text-animation="split-text"` with `data-stagger="0.06"` `data-easing="easeOutQuart"` |
148
- | **Pacing** | 5–8s per scene, hold one idea at a time |
149
- | **Transitions** | `flash` (0.4s) between climactic beats, `iris` (1.0s) for softer cuts |
150
- | **Camera** | `data-camera-zoom="1.08"` (slow push-in) on hero shots |
151
- | **Avoid** | bright pinks, fast cuts, springBouncy, glitch-text |
152
-
153
- ### 2. Glitch Tech / Cyberpunk
154
-
155
- > Hard cuts, electric edges, decrypting text. Reads "future" or "hacker".
156
-
157
- | | |
158
- |---|---|
159
- | **Palette** | `cool-neon` / `prismatic-cyber` / `mono-ink` |
160
- | **Background** | `lightning` (`data-intensity="1.4"`), `prismatic-burst`, `letter-glitch` canvas |
161
- | **Typography** | `.title-xl` mono fonts (`cn-mono` / JetBrains Mono), `text-transform: uppercase`, `letter-spacing: 0.25em` |
162
- | **Text color** | `.text-on-prismatic` (white + halo) or `#5BC0EB` / `#FFD400` accents |
163
- | **Entrance** | `data-text-animation="decrypted-text"` / `glitch-text` / `scramble-text` |
164
- | **Pacing** | 1.5–3s clips, **lots of them**. Quick rhythm. |
165
- | **Transitions** | `glitch` (0.5s) almost everywhere, occasional `pixel-dissolve` (0.4s) |
166
- | **Effects** | `data-effect="electric-border"` on hero card, `star-border` accents |
167
- | **Avoid** | cn-brush, slow ease, warm palettes, single-scene 8s holds |
168
-
169
- ### 3. Asian Ink / 中国风水墨
170
-
171
- > 留白、宋体、行楷。Soft paper background, brushed accents, slow rhythm.
172
-
173
- | | |
174
- |---|---|
175
- | **Palette** | `light-paper` (background) or `warm-ember` (subtle dark) |
176
- | **Background** | solid `#f7f5ef` paper, or `aurora warm-ember` very faint, or a `iridescence` shader at `data-intensity="0.3"` |
177
- | **Typography** | `cn-serif` (Noto Serif SC) for body, `cn-brush` (Ma Shan Zheng / Long Cang) for hero accents, `.title-2xl` to `.title-3xl` |
178
- | **Text color** | `.text-on-light` (deep ink `#1a0a08`) or `#3a1c08` |
179
- | **Entrance** | `data-animation="unmaskUp"` or `unmaskRight` slow (`data-in-duration="1.2"`), `data-easing="easeInOutQuart"` |
180
- | **Pacing** | 6–10s per scene. Let the brush strokes breathe. |
181
- | **Transitions** | `wipe-up` or `wipe-left` (1.2s) with `data-color="#f7f5ef"`, soft `flash` (0.5s) |
182
- | **Special** | red seal stamp: small square `mvm-card` with cn-brush "印", `data-animation="dropIn"` |
183
- | **Avoid** | electric-border, glitch, neon palettes, mono fonts |
184
-
185
- ### 4. Data Story
186
-
187
- > Hero numbers + supporting cards. Each stat lands with weight.
188
-
189
- | | |
190
- |---|---|
191
- | **Palette** | `cool-deep` (background), accents via `.mvm-stat--red/cool/warm` borders |
192
- | **Background** | `liquid-ether cool-deep` or `iridescence cool-violet`, kept moving but quiet |
193
- | **Typography** | `.mvm-stat` preset (built-in 120px digit + label), `.title-lg` for section headers |
194
- | **Entrance** | `data-text-animation="count-up"` + `data-odometer="true"` on every number; stat cards `data-animation="magneticIn"` / `dropIn` / `slideBlurIn` (alternate for variety) |
195
- | **Pacing** | 3.5–5s per stat, 1s in / 2s hold / 1s out |
196
- | **Transitions** | `iris` (0.7s) between stat groups, `pixel-dissolve` between sections |
197
- | **Layout** | 1, 2, or 3 stats stacked vertically with `gap: 32px` |
198
- | **Avoid** | text-aurora, glitch-text, busy shaders behind the numbers |
199
-
200
- ### 5. Pop Vibrant
201
-
202
- > Saturated colors, bouncy springs, candy. Reads "consumer brand" or
203
- > "playful product".
204
-
205
- | | |
206
- |---|---|
207
- | **Palette** | `prismatic-vapor` / `prismatic-magic` / custom `data-colors="#FF3CAC,#FFD400,#2af598,#5BC0EB"` |
208
- | **Background** | `meta-balls`, `iridescence` at high `data-intensity="1.2"` |
209
- | **Typography** | `cn-sans` (Noto Sans SC) bold, `.title-xl`/`title-2xl`, can mix multiple sizes in one scene |
210
- | **Entrance** | `data-easing="springBouncy"` or `springWobbly` everywhere; `data-animation="cubeIn"` / `flipInX` / `magneticIn` (rotate per scene for variety) |
211
- | **Pacing** | 3–5s clips, lots of motion |
212
- | **Transitions** | `pixel-dissolve` with bright `data-color="#FFD400"`, occasional `flash` |
213
- | **Avoid** | cn-serif, slow ease, mono palette |
214
-
215
- ### 6. Minimal Editorial
216
-
217
- > 90% empty space. Tiny eyebrow over a giant serif. One movement at a time.
218
-
219
- | | |
220
- |---|---|
221
- | **Palette** | `mono-graphite` or solid `#0a0a14` (no shader) |
222
- | **Background** | `<div>` with solid color OR `iridescence cool-violet` at `data-intensity="0.25"` |
223
- | **Typography** | One huge `.title-3xl` (160px) + one tiny `.body-sm` eyebrow; serif everywhere |
224
- | **Entrance** | `unmaskUp` very slow (`data-in-duration="1.4"`), `easeInOutQuart` |
225
- | **Pacing** | 8–12s per scene, very few scenes (3–4 total in 30s) |
226
- | **Camera** | `data-camera-zoom="1.06"` ken-burns push on background, **never on text** |
227
- | **Transitions** | `wipe-up` (1.2s) only |
228
- | **Avoid** | crowded compositions, multiple animations per scene, decorative effects |
229
-
230
- ### 7. Liquid Dreamy
231
-
232
- > Iridescent shaders, soft text, ethereal pacing. Reads "calm" or "luxury".
233
-
234
- | | |
235
- |---|---|
236
- | **Palette** | `cool-violet` / `prismatic-vapor` |
237
- | **Background** | `iridescence` (`data-intensity="0.7" data-scale="1.4"`), layered with a `aurora` at low opacity |
238
- | **Typography** | `cn-wenkai` (LXGW WenKai), `.title-2xl`, `letter-spacing: 0.12em` |
239
- | **Text color** | `.text-on-cool-soft` (warm cream) |
240
- | **Entrance** | `data-animation="slideBlurIn"` `data-easing="springGentle"`; `blur-text` for body |
241
- | **Pacing** | 6–8s scenes, slow drift |
242
- | **Transitions** | long `flash` (0.8s) with `data-color="#9d8df1"` (lavender), `iris` (1.2s) |
243
- | **Avoid** | hard cuts, glitch, springBouncy, primary colors |
244
-
245
- ### 8. Documentary
246
-
247
- > Sepia-ish, slow zoom on stills, somber typography, long holds.
248
-
249
- | | |
250
- |---|---|
251
- | **Palette** | `warm-autumn` / `mono-graphite` (desaturated) |
252
- | **Background** | A real `<img>` photo (b/w or duotone via CSS `filter: grayscale(80%) sepia(20%)`) OR `aurora warm-autumn` at low intensity |
253
- | **Typography** | `cn-serif`, `.title-lg`/`title-md`, body uses `.body-md` |
254
- | **Entrance** | `fadeIn` + `data-camera-zoom="1.15"` (slow ken-burns); subtitles use `unmaskUp` |
255
- | **Pacing** | 8–14s per scene, **lots of held screen time** |
256
- | **Transitions** | `wipe-right` (1.5s) only; very slow `flash` (0.6s) for chapter breaks |
257
- | **Avoid** | shaders, bright colors, fast text animations |
258
-
259
- ### Hybridising — yes, do it
260
-
261
- The presets are starting points, not boxes. Real "stand-out" videos
262
- cross-pollinate:
263
-
264
- - **"Cinematic + Glitch"** — warm palette + serif type + occasional
265
- glitch transition + decrypted-text eyebrow. Hero shot stays cinematic,
266
- intro chyrons feel tech.
267
- - **"Asian Ink + Data Story"** — paper background + ink red stat
268
- numbers + cn-brush labels. Annual report visual language.
269
- - **"Liquid Dreamy + Pop Vibrant"** — iridescent shader + bouncy spring.
270
- Reads "beauty / cosmetics brand".
271
-
272
- When in doubt: **commit to one style for 80% of the runtime, sprinkle
273
- the other style on 1 scene as contrast**. Pure-blend rarely reads.
274
-
275
- ```
276
- motion-video-maker/
277
- ├── runtime/ # timeline.js, components.js, spring.js, shaders.js,
278
- │ │ # transitions.js, effects.js, styles.css,
279
- │ │ # contrast-check.js, layout-check.js,
280
- │ │ # gsap-bridge.js (← determinism bridge for GSAP)
281
- │ └── gsap/ # gsap.min.js + every plugin we ship: CustomEase,
282
- │ # CustomWiggle, CustomBounce, EasePack,
283
- │ # DrawSVGPlugin, MorphSVGPlugin, MotionPathPlugin,
284
- │ # Physics2DPlugin, PhysicsPropsPlugin, Flip,
285
- │ # SplitText, ScrambleTextPlugin, TextPlugin
286
- ├── assets/fonts/ # 12 open-source Chinese fonts (auto-installed)
287
- ├── scripts/ # render.mjs, preview.mjs, install-fonts.mjs,
288
- │ # new-video.mjs, debug.mjs, snap.mjs, lint.mjs
289
- ├── templates/ # base.html, diagnostic.html, showcase.html,
290
- │ # effects-showcase.html (signature effects sampler)
291
- ├── examples/ # time-flies/ (30s reference)
292
- │ # raycast-deep-dive/ (40s v1: canvas only)
293
- │ # raycast-deep-dive-v2/ (40s v2: + spring + shaders + transitions)
294
- │ # raycast-deep-dive-v3/ (40s v3: + electric-border / image-trail / odometer)
295
- │ # gsap-showcase/ (42s GSAP plugin sampler — every plugin in one file)
296
- └── reference/ # components.md, workflow.md
297
- ```
298
-
299
- ## Creative Latitude — these are tools, not training wheels
300
-
301
- The Hard Rules above prevent **broken** videos. They are NOT a recipe for
302
- **good** videos. Many compositions look identical because agents stop at
303
- "safe and lint-clean" instead of pushing the medium. **Push the medium.**
304
-
305
- What "push the medium" means in practice:
306
-
307
- 1. **Pick a STYLE first, primitives second.** Don't reach for `split-text`
308
- + `fadeIn` + `meta-balls` by reflex. Decide what the video should
309
- *feel* like (see [Style decision tree](#style-decision-tree)), then
310
- pick primitives that serve that feeling. The same primitive read
311
- differently in different styles — `split-text` at 0.04 stagger feels
312
- urgent and confident; the same animation at 0.2 stagger with `springGentle`
313
- easing feels meditative.
314
-
315
- 2. **Combine primitives to invent new effects.** Every "signature" effect
316
- in this Skill (electric-border, image-trail, odometer flip) is a
317
- composition of simpler parts. You can do the same:
318
- - `mask-text` + `gradient-text` on a duplicate layered behind = neon
319
- edge title that bleeds color through the negative space.
320
- - `image-trail` + a small camera-pan = parallax-feeling depth.
321
- - Two `liquid-ether` shaders with different `data-palette` and
322
- opposite `data-scale`, blended `mix-blend-mode: screen` =
323
- iridescent fluid impossible to get with one shader.
324
- - `wave-text` with `data-amplitude="3"` + `springSnap` = subtle
325
- "breathing" hero title for slow scenes.
326
-
327
- 3. **Bend the timeline.** A 30s video doesn't need 6 scenes of 5s each.
328
- - Cinematic trailers spend 8s on a single hero shot then sprint
329
- through 4 quick cuts in 6s.
330
- - Glitch / tech videos use very short clips (1.2–2s) with hard cuts
331
- between shaders + glitch transitions.
332
- - Editorial / minimalist videos hold one scene for 12s with a slow
333
- `kenBurnsIn` on the background.
334
-
335
- 4. **Custom animations are welcome.** If none of the built-in
336
- `data-animation` values fit, you can:
337
- - Write your own keyframe-like animation by listening to `mvm-seek`
338
- and applying transforms based on `event.detail.time`. See
339
- `runtime/components.js` for the pattern.
340
- - Use `data-effect="custom"` with inline `style="--my-anim-progress: ..."`
341
- to drive your own CSS variables off the timeline.
342
- - Compose multiple `data-animation` by nesting elements with
343
- independent animations.
344
-
345
- 5. **Camera moves**. Wrap a scene in `<div class="mvm-cam" data-camera-zoom="1.15"
346
- data-camera-pan-x="-40" data-camera-pan-y="20">` and the whole scene
347
- slowly zooms / pans across its lifetime. Subtle camera moves are the
348
- single biggest "I am watching a film, not a slideshow" cue.
349
-
350
- You are encouraged to read users' descriptive cues literally and translate
351
- them. "Cinematic", "elegant", "punchy", "ink wash", "data-driven", "playful",
352
- "otherworldly", "vintage", "futurist", "documentary" — each maps to a
353
- different combination of palette / typography / motion. See
354
- [Style Presets](#style-presets) for 8 ready-made recipes you can adopt or
355
- hybridise.
356
-
357
- ## Style decision tree — pick by user intent
358
-
359
- When the user describes the *feeling* but not the parts, use this map:
360
-
361
- | User mentions... | Style preset | Why |
362
- |---|---|---|
363
- | "电影感 / cinematic / trailer / epic" | **Cinematic Trailer** | slow + big serif + warm/mono + flash transitions |
364
- | "科技 / cyber / tech / futurist / glitch" | **Glitch Tech** | electric-border + glitch-text + prismatic/cool + fast cuts |
365
- | "水墨 / 中国风 / 书法 / 古典 / ink" | **Asian Ink** | cn-brush + paper palette + slow unmask + Ma Shan Zheng |
366
- | "数据 / data / report / 业绩 / stats" | **Data Story** | odometer + mvm-stat + cards + drop / magnetic entry |
367
- | "活泼 / playful / pop / bouncy / 卡通" | **Pop Vibrant** | saturated + springBouncy + meta-balls + cube/flip |
368
- | "极简 / minimal / 高级 / editorial / 杂志" | **Minimal Editorial** | huge serif + lots of whitespace + slow ken burns |
369
- | "梦幻 / 流体 / liquid / dreamy / 治愈" | **Liquid Dreamy** | iridescence + slow + soft + warm-soft tones |
370
- | "纪录片 / documentary / 历史 / 沉稳" | **Documentary** | desaturated + ken-burns + long holds + serif body |
371
- | 没说,但内容像 PPT 介绍 | **Cinematic Trailer** | safest default, looks production-grade |
372
- | 没说,但内容是产品发布 | **Glitch Tech** or **Cinematic** | depends on product vibe |
373
-
374
- If the user mixes cues ("中国风但要现代感"), **hybridise**: take Asian Ink's
375
- typography + palette and Cinematic Trailer's camera moves + flash.
376
-
377
- **You decide.** Don't always ask back — read the prompt for tone cues and
378
- commit to a style. Variety is the goal.
379
-
380
- ---
381
-
382
- **Every composition MUST include this script chain in this order:**
383
-
384
- ```html
385
- <script src="../../runtime/spring.js"></script> <!-- physics -->
386
- <script src="../../runtime/timeline.js"></script> <!-- seekable timeline -->
387
- <script src="../../runtime/components.js"></script> <!-- text / canvas bg -->
388
- <script src="../../runtime/shaders.js"></script> <!-- WebGL shader bg -->
389
- <script src="../../runtime/transitions.js"></script> <!-- scene transitions -->
390
- <script src="../../runtime/effects.js"></script> <!-- electric / star / image-trail -->
391
-
392
- <!-- GSAP — load any plugins you'll use BEFORE the bridge.
393
- The bridge tolerates missing plugins; drop ones you don't need. -->
394
- <script src="../../runtime/gsap/gsap.min.js"></script>
395
- <script src="../../runtime/gsap/CustomEase.min.js"></script>
396
- <script src="../../runtime/gsap/EasePack.min.js"></script>
397
- <script src="../../runtime/gsap/SplitText.min.js"></script>
398
- <script src="../../runtime/gsap/DrawSVGPlugin.min.js"></script>
399
- <script src="../../runtime/gsap/MorphSVGPlugin.min.js"></script>
400
- <script src="../../runtime/gsap/MotionPathPlugin.min.js"></script>
401
- <script src="../../runtime/gsap/Physics2DPlugin.min.js"></script>
402
- <script src="../../runtime/gsap/Flip.min.js"></script>
403
- <script src="../../runtime/gsap/ScrambleTextPlugin.min.js"></script>
404
- <script src="../../runtime/gsap-bridge.js"></script> <!-- MUST come AFTER gsap -->
405
-
406
- ## Quick Start
407
-
408
- # 1) One-time setup (installs Chinese fonts; idempotent)
409
- node scripts/install-fonts.mjs
410
-
411
- # 2) Scaffold a new composition
412
- node scripts/new-video.mjs my-video --duration 12 --fps 30 --bg aurora
413
-
414
- # 3) Live-preview in a browser
415
- node scripts/preview.mjs examples/my-video/index.html
416
-
417
- # → http://localhost:5173/examples/my-video/index.html
418
-
419
- # 4) Render to MP4 (frame-accurate, deterministic)
420
- node scripts/render.mjs examples/my-video/index.html examples/my-video/output.mp4
421
- ```
422
- See [`examples/time-flies/index.html``index.html` for a
423
- complete 30-second reference composition that exercises every component.
424
- ```
425
-
426
- ## How a Composition Works
427
-
428
- A composition is **one HTML file** with three layers:
429
-
430
- 1. **`<div id="stage" data-*>`** — declares pixel size, fps, total duration.
431
- 2. **`[data-background]`** — full-bleed animated backgrounds (canvas).
432
- 3. **`[data-clip]`** — any element that appears, moves, or animates.
433
-
434
- ```html
435
- <div id="stage" data-composition-id="my-video"
436
- data-width="1920" data-height="1080"
437
- data-fps="30" data-duration="10">
438
-
439
- <div data-background="aurora"
440
- data-colors="#3a1c71,#d76d77,#ffaf7b"></div>
441
-
442
- <h1 class="title text-aurora"
443
- data-clip data-start="0.5" data-duration="9"
444
- data-text-animation="split-text"
445
- data-stagger="0.06" data-char-duration="0.9">你好,世界</h1>
446
-
447
- <p class="subtitle"
448
- data-clip data-start="1.4" data-duration="8"
449
- data-animation="fadeInUp" data-in-duration="0.8">第一帧</p>
450
- </div>
451
-
452
- <script src="../../runtime/timeline.js"></script>
453
- <script src="../../runtime/components.js"></script>
454
- ```
455
- The renderer (`render.mjs`) launches headless Chromium, sets
456
- `window.__mvmRenderMode = true` to suppress the wall-clock preview loop,
457
- then for every frame `i` calls `window.__mvm.seek(i / fps)` and screenshots
458
- the page. Frames are encoded to H.264 MP4 via FFmpeg.
459
- ```
460
-
461
- ## Composition Attributes Reference
462
-
463
- ### Stage (`#stage`)
464
-
465
- | Attribute | Purpose | Example |
466
- |---|---|---|
467
- | `data-width` / `data-height` | Canvas pixel size | `1920` / `1080` |
468
- | `data-fps` | Frames per second | `30` (recommended) |
469
- | `data-duration` | Total seconds | `30` |
470
- | `data-background` | Page-level bg color | `#0a0a0f` |
471
-
472
- ### Clip (`[data-clip]`)
473
-
474
- Governs **visibility window** and outer **in/out animation** of any element.
475
-
476
- | Attribute | Purpose |
477
- |---|---|
478
- | `data-start` | When the clip first appears (seconds) |
479
- | `data-duration` | How long the clip stays visible |
480
- | `data-animation` (or `data-animation-in`) | In animation: `fadeIn` `fadeInUp` `fadeInDown` `fadeInLeft` `fadeInRight` `slideUp` `slideDown` `zoomIn` `zoomOut` `pop` `blurIn` `blurOut` `rotateIn` `swing3D` `floatIn` |
481
- | `data-animation-out` | Out animation (any of the above ending in `Out` or any name from the list) |
482
- | `data-in-duration` / `data-out-duration` | Animation duration (default 0.6s) |
483
- | `data-easing` / `data-easing-out` | Standard: `linear` `easeIn` `easeOut` `easeInOut` `easeOutCubic` `easeInOutCubic` `easeOutQuart` `easeInOutQuart` `easeOutQuint` `easeOutExpo` `easeInOutExpo` `easeOutBack` `easeOutElastic` `easeOutBounce`. **Spring physics**: `springGentle` `springSoft` `springSnap` `springSmooth` `springBouncy` `springWobbly` `springStiff` |
484
- | `data-hide-mode` | **`visibility` (default — keeps the layout slot so siblings DON'T jump when a later element fades in)** or `display` (legacy — removes from layout). Set `display` only when you actually want surrounding content to collapse into the empty space. |
485
- | `data-scrim` | Auto-inject a backdrop layer behind the element so text stays readable on busy shader/particle backgrounds. Values: `card` (translucent dark pill + blur), `blur` (semi-dark + backdrop-filter blur), `radial` (radial darkness fade), `auto` (radial + auto drop-shadow). Tune with `data-scrim-padding`, `data-scrim-opacity`, `data-scrim-radius`, `data-scrim-color`, `data-scrim-blur`. |
486
-
487
- **Available outer-animation presets** (for `data-animation` / `data-animation-in` / `data-animation-out`):
488
-
489
- | Group | Names |
490
- |---|---|
491
- | **Fade / slide** | `fadeIn` `fadeOut` `fadeInUp` `fadeInDown` `fadeInLeft` `fadeInRight` `slideUp` `slideDown` |
492
- | **Scale / pop** | `zoomIn` `zoomOut` `pop` `kenBurnsIn` `irisIn` |
493
- | **Blur** | `blurIn` `blurOut` `slideBlurIn` |
494
- | **Rotate / 3D** | `rotateIn` `swing3D` `flipInX` `flipInY` `cubeIn` `skewIn` |
495
- | **Mask reveal** | `unmaskUp` `unmaskDown` `unmaskLeft` `unmaskRight` (clip-path inset – feels cinematic) |
496
- | **Physics-ish** | `floatIn` `magneticIn` `dropIn` `glitchIn` |
497
-
498
- > **Variety tip:** when you have N parallel elements (cards, list items, layers), give each one a *different* preset from a different group — that's exactly what turns a "generic" composition into a polished one.
499
-
500
- ### Text animations (`[data-text-animation]`)
501
-
502
- Use **on the element whose text you want to animate**. Combine with `data-clip` so the element has a defined visibility window. The text component reads `data-anim-duration` for its own animation length, falling back to `data-duration`.
503
-
504
- | `data-text-animation` | Effect | Key attributes |
505
- |---|---|---|
506
- | `split-text` | Per-char staggered fade+slide | `data-stagger` `data-char-duration` `data-travel` `data-split-mode` (`char`/`word`) |
507
- | `blur-text` | Per-char blur → focus | `data-stagger` `data-char-duration` |
508
- | `shiny-text` | Metallic sheen sweep | `data-speed` |
509
- | `gradient-text` | Animated rainbow sweep | `data-colors` `data-speed` |
510
- | `glitch-text` | RGB split + jitter | `data-intensity` |
511
- | `decrypted-text` | Hacker-style decode | `data-anim-duration` |
512
- | `type-text` | Typewriter + blinking cursor | `data-cps` (chars/second) |
513
- | `rotating-text` | Cycle through phrases | `data-phrases` (pipe-separated) `data-each` |
514
- | `count-up` | Animated number counter — set `data-odometer="true"` for **mechanical-flip rendering** (each digit is a separate column that gently rotates as it carries) | `data-from` `data-to` `data-anim-duration` `data-decimals` `data-prefix` `data-suffix` `data-separator` `data-odometer` |
515
- | `shuffle-text` | Char shuffle reveal | `data-anim-duration` |
516
- | `mask-text` | Whole-text clip-path reveal — wipe direction set by `data-mask-from` (`left` / `right` / `top` / `bottom` / `center`). **Note:** does NOT compose well with `.text-raycast` / `.text-aurora` / `.text-fire` gradient classes that use `-webkit-text-fill-color: transparent` (Chromium hides the gradient under a clip-path). Use on solid-color text or pair with `data-scrim`. | `data-mask-from` `data-anim-duration` `data-easing` |
517
- | `wave-text` | Per-char vertical sine wave that travels across the text — characters ride the crest into place. | `data-stagger` `data-char-duration` `data-amplitude` `data-wave` `data-easing` |
518
- | `scramble-text` | Symbol/digit scramble that resolves left→right (more aggressive than `shuffle-text` — uses `!@#$%&*+={}[]\\|01101001`). Great for technical labels. | `data-anim-duration` |
519
-
520
- ### Backgrounds (`[data-background]`)
521
-
522
- Absolute-positioned full-stage backgrounds — both Canvas2D and WebGL.
523
-
524
- **Canvas backgrounds** (lighter, no GPU):
525
-
526
- | `data-background` | Effect | Key attributes |
527
- |---|---|---|
528
- | `aurora` | Lightful gradient orbs | `data-colors` |
529
- | `particles` | Drifting particle field | `data-count` `data-color` `data-size` `data-seed` |
530
- | `starfield` | Galaxy / parallax stars | `data-count` `data-speed` `data-seed` `data-bg` |
531
- | `threads` | Sinusoidal flowing lines | `data-lines` `data-color` `data-bg` |
532
- | `waves` | Layered ocean waves | `data-colors` `data-bg` |
533
- | `dot-grid` | Pulsing radial dot grid | `data-gap` `data-color` `data-bg` |
534
- | `hyperspeed` | Radial speed-line warp | `data-count` `data-colors` `data-seed` |
535
- | `letter-glitch` | Matrix-style char cells | `data-cell` `data-colors` `data-bg` |
536
- | `noise` | Film-grain overlay | `data-strength` |
537
- | `magnet-lines` | Vector-field grid where short line segments align toward animated magnetic poles | `data-colors` `data-poles` `data-gap` `data-length` `data-bg` |
538
- | `ribbons` | Multi-layer parametric flowing ribbons with glow | `data-colors` `data-count` `data-bg` |
539
-
540
- **WebGL fragment-shader backgrounds** (richer, real shaders — require `shaders.js`):
541
-
542
- | `data-background` | Effect | Common attributes |
543
- |---|---|---|
544
- | `liquid-ether` | Domain-warped fbm fluid, iridescent rim | `data-colors` (4 stops) `data-intensity` `data-scale` |
545
- | `iridescence` | Curved rainbow interference bands | `data-colors` `data-intensity` `data-scale` `data-seed` |
546
- | `prismatic-burst` | Center-radiating volumetric light + chromatic split | `data-colors` `data-intensity` |
547
- | `lightning` | Procedural lightning bolts with flicker + glow | `data-colors` `data-intensity` `data-seed` |
548
- | `plasma` | Classic organic plasma turbulence | `data-colors` `data-intensity` `data-scale` |
549
- | `beams` | Crossing rotating light beams + hot spot | `data-colors` `data-intensity` |
550
- | `meta-balls` | N orbiting isosurface meta-balls with gradient fill + chromatic edge highlight | `data-colors` `data-intensity` `data-scale` `data-seed` |
551
-
552
- All shader backgrounds accept `data-colors` as 4 hex stops (e.g. `"#FF6363,#FF8B5E,#FFD400,#0a0a16"`).
553
-
554
- ### Scene transitions (`[data-transition]`)
555
-
556
- Place a `<div data-transition="..." data-start="..." data-duration="...">`
557
- **anywhere inside `#stage`** — it auto-mounts a fullscreen overlay canvas
558
- that paints the transition over everything from `start` to `start+duration`.
559
-
560
- | `data-transition` | Effect | Extra attributes |
561
- |---|---|---|
562
- | `wipe-up` / `wipe-down` / `wipe-left` / `wipe-right` | Solid bar sweeps across | `data-color` `data-easing` |
563
- | `wipe` (with `data-dir="diag"`) | Diagonal sweep | as above |
564
- | `iris` / `circle-reveal` | Circular mask shrinks then expands | `data-color` `data-easing` |
565
- | `pixel-dissolve` | Deterministic tile reveal + hide | `data-color` `data-tile` |
566
- | `shape` | Twin-shape morph with circle erase | `data-color` `data-easing` |
567
- | `flash` | Quick full-screen flash | `data-color` (white default) |
568
- | `glitch` | RGB-split + horizontal panel tear | — |
569
-
570
- The full transition window is `duration`; half-way through (`p=0.5`) the
571
- overlay is fully opaque so the underlying scenes can swap invisibly.
572
-
573
- ### Effects (`[data-fx]`)
574
-
575
- | `data-fx` | Effect | Key attributes |
576
- |---|---|---|
577
- | `clock` | Analog clock with hands | `data-speed` (time multiplier) |
578
-
579
- ### Element-level effects (`[data-effect]`)
580
-
581
- Decorations that attach to **an existing element** and animate around it.
582
- Inspired by react-bits' ElectricBorder / StarBorder / ImageTrail.
583
-
584
- | `data-effect` | Effect | Key attributes |
585
- |---|---|---|
586
- | `electric-border` | RGB-split, noise-perturbed electric arcs flowing around the element's rounded perimeter | `data-color` `data-color2` `data-color3` `data-intensity` `data-speed` `data-padding` `data-border-radius` |
587
- | `star-border` | N glowing 4-point stars orbit the perimeter with comet trails | `data-color` `data-count` `data-tail` `data-speed` `data-size` `data-padding` |
588
- | `image-trail` | While the element is *entering*, draws N ghost copies that lag the in-animation progress, fading out behind it. Reads the element's `data-animation` to reuse its in-style. | `data-trail-count` `data-trail-stride` `data-trail-decay` |
589
-
590
- ```html
591
- <!-- card with electric flowing border, perfect for "chosen" highlights -->
592
- <div class="card chosen"
593
- data-effect="electric-border"
594
- data-color="#FF6363" data-color2="#FFD400" data-color3="#5BC0EB"
595
- data-intensity="1.3" data-speed="1.4" data-padding="22"
596
- data-border-radius="18"
597
- data-clip data-start="2" data-duration="6"
598
- data-animation="pop" data-easing="springBouncy"
599
- style="opacity:0;">CHOSEN</div>
600
-
601
- <!-- title with image-trail during its slide-in -->
602
- <h1 data-effect="image-trail"
603
- data-trail-count="5" data-trail-stride="0.06" data-trail-decay="0.7"
604
- data-clip data-start="0" data-duration="4"
605
- data-animation="fadeInLeft" data-in-duration="0.9"
606
- data-easing="springSmooth">FLOW</h1>
607
-
608
- ## GSAP integration — every plugin, deterministic, bridged
609
-
610
- The runtime now bundles **GSAP 3.15** plus every plugin Webflow makes free
611
- (see lineage). All of them animate on the same `mvm-seek` clock as
612
- the native runtime — two renders are still byte-identical.
613
-
614
- ### What you get
615
-
616
- | Capability | Plugin | data-* attribute | Programmatic |
617
- |---|---|---|---|
618
- | Tween any CSS / transform property with arbitrary ease | core | `data-gsap-from` / `data-gsap-to` | `__mvmGsap.timeline({at}).to(...)` |
619
- | Per-line / -word / -char text reveals with masks | SplitText | `data-gsap-split="lines,words,chars"` | `SplitText.create(...)` then tween |
620
- | Stroke draw on an SVG path | DrawSVGPlugin | `data-draw-svg="0% 100%"` | `gsap.fromTo(path, {drawSVG:'0 0'}, {drawSVG:'100%'})` |
621
- | Morph one SVG path into another | MorphSVGPlugin | `data-morph-to="#otherPath"` | `gsap.to(p, {morphSVG:'#x'})` |
622
- | Animate any element along an SVG path | MotionPathPlugin | `data-motion-path="#pathId"` | `gsap.to(el, {motionPath:{path}})` |
623
- | Velocity / angle / gravity physics | Physics2DPlugin | `data-physics2d='{"velocity":300,"angle":-80,"gravity":600}'` | `gsap.to(el, {physics2D: {...}})` |
624
- | Per-property velocity / acceleration | PhysicsPropsPlugin | (programmatic only) | `gsap.to(el, {physicsProps: {x:{velocity}}})` |
625
- | FLIP layout transitions between scenes | Flip | `class="mvm-flip" data-flip-id="x" data-flip-at="3.0"` | `Flip.getState() / Flip.from()` |
626
- | Decoder scramble | ScrambleTextPlugin | `data-scramble='{"text":"DONE"}'` | `gsap.to(el, {scrambleText: {...}})` |
627
- | Type / replace text content over time | TextPlugin | (programmatic only) | `gsap.to(el, {text: "new"})` |
628
- | Custom cubic / SVG easing curves | CustomEase | `data-easing="mvm.<name>"` | `__mvmGsap.registerCustomEase(name, def)` |
629
- | Wiggle / oscillating ease | CustomWiggle | `data-easing="mywiggle"` | `CustomWiggle.create("mywiggle", {...})` |
630
- | Real bounce ease | CustomBounce | `data-easing="mybounce"` | `CustomBounce.create("mybounce", {...})` |
631
- | SlowMo / RoughEase / ExpoScaleEase | EasePack | `data-easing="slow(0.7,0.7)"` etc. | string in any tween's `ease` |
632
-
633
- **Deliberately omitted** (because they need user interaction that
634
- doesn't exist in offline render):
635
-
636
- - `ScrollTrigger` / `ScrollSmoother` — there is no scroll
637
- - `Draggable` / `Observer` / `InertiaPlugin` — there is no pointer
638
-
639
- If you reference these, `scripts/lint.mjs` raises `W006`. Replace
640
- them with a timeline that you anchor onto `gsap.globalTimeline` —
641
- the bridge will seek into it on every `mvm-seek`.
642
-
643
- ### How the bridge works (the determinism contract)
644
-
645
- 1. The bridge calls `gsap.ticker.lagSmoothing(0)` and removes
646
- `gsap.updateRoot` from `gsap.ticker` so GSAP's RAF clock never
647
- advances anything on its own in render mode.
648
- 2. On every `mvm-seek` event the bridge calls
649
- `gsap.updateRoot(seekTime)` — the official "drive me from a
650
- custom clock" API. Every tween, child timeline, and plugin
651
- advances to that exact absolute second. ([gsap.com/docs](https://gsap.com/docs/v3/GSAP/gsap.updateRoot()))
652
- 3. The bridge proxies `window.__mvm.easing` so any GSAP ease string
653
- (e.g. `"power2.inOut"`, `"back.out(1.7)"`, `"elastic.out(1, 0.3)"`)
654
- silently resolves through `gsap.parseEase(...)` and is then
655
- available to the *native* `data-animation` system too. So you
656
- can write `data-animation="fadeInUp" data-easing="back.out(1.6)"`
657
- and the runtime now understands it.
658
- 4. Anything you author with `data-gsap-from` / `data-gsap-to` / etc.
659
- becomes a `gsap.fromTo(...)` tween anchored at the host element's
660
- `data-start + data-gsap-delay`. The clip's lifecycle still owns
661
- visibility — GSAP only handles the tween itself.
662
-
663
- > **Author hard-rules:**
664
- > - Don't wrap `gsap.to()` / `gsap.from()` in `setTimeout` /
665
- > `setInterval` / `requestAnimationFrame`. Wall-clock timers
666
- > bypass `gsap.updateRoot` and produce different output every
667
- > render. `lint.mjs W007` flags this.
668
- > - Don't call `gsap.utils.random()` — it uses `Math.random` under
669
- > the hood. Wrap with `__mvm.random("seed")` or pass a
670
- > pre-computed deterministic value. `lint.mjs W008` flags this.
671
- > - Build the timeline at parse-time; don't try to construct new
672
- > tweens inside an `mvm-seek` handler (that fires every frame
673
- > and would create thousands of tweens).
674
-
675
- ### Declarative recipes — copy these
676
-
677
- #### 1) Drop-in tween (works on any element with `data-clip`)
678
-
679
- ```html
680
- <h1 class="title text-readable"
681
- data-clip data-start="2.0" data-duration="6"
682
- data-gsap-from='{"y":120,"opacity":0,"rotationX":-30}'
683
- data-gsap-to='{"y":0,"opacity":1,"rotationX":0}'
684
- data-gsap-duration="1.0"
685
- data-gsap-ease="back.out(1.4)">Hello GSAP</h1>
686
- ```
687
- #### 2) Pro SplitText (line / word / char reveal with mask)
688
- ```
689
- ```html
690
- <h1 class="title"
691
- data-clip data-start="0.6" data-duration="5"
692
- data-gsap-split="lines,words,chars"
693
- data-gsap-mask="lines"
694
- data-gsap-stagger="0.05" data-gsap-duration="0.9"
695
- data-gsap-y="120" data-gsap-ease="power3.out">动画引擎</h1>
696
- ```
697
- `data-gsap-mask="lines"` clips each line to its own bounding box —
698
- characters that translate up appear "lifted" out of an invisible
699
- slot. Combine with a serif font for an editorial feel.
700
-
701
- #### 3) DrawSVG — animate a stroke
702
- ```
703
- ```html
704
- <svg class="logo" viewBox="0 0 1100 520">
705
- <path d="M 80 440 L 80 100 L 240 360 L 400 100 L 400 440"
706
- fill="none" stroke="#FFD400" stroke-width="4"
707
- data-clip data-start="6.4" data-duration="5"
708
- data-draw-svg="0% 100%"
709
- data-gsap-duration="1.6"
710
- data-gsap-ease="power2.inOut" />
711
- </svg>
712
- ```
713
- The path MUST have a visible `stroke` (CSS or attribute). Multiple
714
- paths can share `data-clip data-start` to draw simultaneously, or
715
- stagger them by 0.2-0.5s for a "logotype building itself" effect.
716
-
717
- #### 4) MorphSVG — square → triangle → star
718
-
719
- Hide the target shapes (so they don't render their own strokes/fill),
720
- keep the visible morphing path, and animate it through targets:
721
- ```
722
- ```html
723
- <svg viewBox="0 0 540 540">
724
- <!-- targets are visibility:hidden so only their `d` matters -->
725
- <path id="shape-triangle" style="visibility:hidden"
726
- d="M 270 60 L 480 470 L 60 470 Z" />
727
- <path id="shape-star" style="visibility:hidden"
728
- d="M 270 60 L 320 220 L 480 220 L 350 320 L 400 480
729
- L 270 380 L 140 480 L 190 320 L 60 220 L 220 220 Z" />
730
-
731
- <!-- The visible path morphs through them. First hop is declarative,
732
- further hops are sequenced on a real GSAP timeline. -->
733
- <path id="morph"
734
- d="M 80 80 L 460 80 L 460 460 L 80 460 Z"
735
- fill="none" stroke="#5BC0EB" stroke-width="6"
736
- data-clip data-start="12.4" data-duration="5"
737
- data-morph-to="#shape-triangle"
738
- data-gsap-duration="1.0" />
739
- </svg>
740
-
741
- <script>
742
- document.addEventListener('DOMContentLoaded', () => {
743
- const tl = window.__mvmGsap.timeline({ at: 13.6 });
744
- tl.to('#morph', { morphSVG: '#shape-star', duration: 1, ease: 'power2.inOut' })
745
- .to('#morph', { morphSVG: '#shape-circle', duration: 1, ease: 'power2.inOut' }, '+=0.4');
746
- });
747
- </script>
748
- ```
749
- #### 5) MotionPath — anything along an SVG path
750
- ```
751
- ```html
752
- <svg class="track" viewBox="0 0 1280 540" style="position:absolute;top:50%;left:50%;
753
- transform:translate(-50%,-50%); width:1280px; height:540px;">
754
- <path id="rocket-path" d="M 60 480 C 260 480 360 60 640 270
755
- C 920 480 1020 60 1220 60"
756
- fill="none" stroke="#FFD400" stroke-width="2"
757
- stroke-dasharray="4 6" />
758
- </svg>
759
-
760
- <div style="position:absolute; left:0; top:0; font-size:84px;"
761
- data-clip data-start="18.6" data-duration="5"
762
- data-motion-path="#rocket-path"
763
- data-motion-path-rotate="true"
764
- data-gsap-duration="4.6"
765
- data-gsap-ease="power1.inOut">🚀</div>
766
- ```
767
- `data-motion-path-rotate="true"` rotates the host to follow the
768
- tangent of the curve (great for arrows, comets, planes).
769
-
770
- #### 6) Physics2D confetti — programmatic, deterministic
771
- ```
772
- ```html
773
- <div id="conf-host" style="position:absolute; left:960px; top:540px;"></div>
774
- <script>
775
- document.addEventListener('DOMContentLoaded', () => {
776
- const host = document.getElementById('conf-host');
777
- const palette = ['#FF6363', '#FFD400', '#5BC0EB', '#9d8df1', '#2af598'];
778
- const rng = window.__mvm.random('confetti'); // deterministic PRNG
779
- const tl = window.__mvmGsap.timeline({ at: 24.6 }); // anchor at 24.6s
780
- for (let i = 0; i < 60; i++) {
781
- const dot = document.createElement('div');
782
- Object.assign(dot.style, {
783
- position:'absolute', left:'0', top:'0',
784
- width:'22px', height:'22px', borderRadius:'4px',
785
- background: palette[Math.floor(rng() * palette.length)],
786
- });
787
- host.appendChild(dot);
788
- const angle = -90 + (rng() * 160 - 80);
789
- const velocity = 700 + rng() * 700;
790
- const gravity = 1400 + rng() * 400;
791
- const dur = 2.4 + rng() * 0.9;
792
- tl.to(dot, { physics2D: { velocity, angle, gravity },
793
- rotation: (rng() - 0.5) * 1080,
794
- duration: dur, ease: 'none' }, 0);
795
- tl.to(dot, { opacity: 0, duration: 0.6, ease: 'power2.in' }, dur - 0.6);
796
- }
797
- });
798
- </script>
799
- ```
800
- Use `__mvm.random("seed")` for the RNG so the burst pattern is
801
- identical between renders. Lint rule `W008` enforces this.
802
-
803
- #### 7) ScrambleText — decoder reveal
804
- ```
805
- ```html
806
- <p class="text-readable"
807
- data-clip data-start="30.6" data-duration="5"
808
- data-scramble='{"text":"DECRYPTING ACCESS","chars":"upperAndLowerCase"}'
809
- data-gsap-duration="2.0">▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓</p>
810
-
811
- <!-- with custom CJK character pool -->
812
- <p data-clip data-start="32" data-duration="3"
813
- data-scramble='{"text":"动画即数据","chars":"龙腾虎跃春夏秋冬天地"}'
814
- data-gsap-duration="1.4">?????</p>
815
- ```
816
- `chars` accepts:
817
- - `"upperAndLowerCase"` / `"upperCase"` / `"lowerCase"` — Latin
818
- - `"01"` — binary
819
- - any string of glyphs to cycle through (works perfectly with CJK)
820
-
821
- #### 8) Programmatic timeline — full GSAP sequencing
822
-
823
- When you want to choreograph 10+ elements in one scene:
824
- ```
825
- ```html
826
- <script>
827
- document.addEventListener('DOMContentLoaded', () => {
828
- const cells = document.querySelectorAll('.grid-cell');
829
- // Custom ease registered via the bridge
830
- window.__mvmGsap.registerCustomEase(
831
- 'mvm.swoop',
832
- 'M0,0 C0.2,0.0 0.0,0.6 0.4,0.85 0.7,1.05 0.8,0.98 1,1'
833
- );
834
- const tl = window.__mvmGsap.timeline({ at: 36.4 });
835
- tl.from(cells, {
836
- y: 240, opacity: 0, scale: 0.4, rotation: -12,
837
- stagger: { each: 0.06, from: 'center' },
838
- duration: 0.9, ease: 'mvm.swoop',
839
- }, 0)
840
- .to(cells, {
841
- scale: 1.08, duration: 0.4, ease: 'sine.inOut',
842
- stagger: { each: 0.04, from: 'edges' },
843
- yoyo: true, repeat: 1,
844
- }, 1.4)
845
- .to(cells, {
846
- rotationY: 360, duration: 1.2, ease: 'power2.inOut',
847
- stagger: { each: 0.08, from: 'start', grid: [2, 4], axis: 'x' },
848
- }, 2.6);
849
- });
850
- </script>
851
- ```
852
- `__mvmGsap.timeline({at: 36.4})` returns a real `gsap.timeline()`
853
- that has been added to `gsap.globalTimeline` at absolute time
854
- `36.4s`. Internal positioning (`0`, `1.4`, `'+=0.2'`, `'<'`, …)
855
- follows GSAP's [position parameter](https://gsap.com/docs/v3/GSAP/Timeline)
856
- verbatim.
857
- ```
858
-
859
- ### CustomEase / CustomWiggle / CustomBounce / EasePack
860
-
861
- These plug straight into the runtime's existing easing table. Once
862
- the bridge mounts, `data-easing="<gsap-ease-name>"` works on any
863
- mvm-native preset:
864
-
865
- ```html
866
- <!-- power easings (the most useful for video pacing) -->
867
- <h1 data-animation="fadeInUp" data-easing="power3.out">…</h1>
868
- <h2 data-animation="slideBlurIn" data-easing="expo.inOut">…</h2>
869
-
870
- <!-- back / elastic / bounce -->
871
- <p data-animation="pop" data-easing="back.out(1.7)">…</p>
872
- <p data-animation="dropIn" data-easing="elastic.out(1, 0.3)">…</p>
873
-
874
- <!-- EasePack -->
875
- <p data-animation="fadeIn" data-easing="slow(0.7, 0.7, false)">…</p>
876
- <p data-animation="zoomIn" data-easing="rough({clamp:true,points:20})">…</p>
877
-
878
- <!-- Author-defined CustomEase -->
879
- <script>
880
- document.addEventListener('DOMContentLoaded', () => {
881
- window.__mvmGsap.registerCustomEase('mvm.swoop',
882
- 'M0,0 C0.2,0.0 0.0,0.6 0.4,0.85 0.7,1.05 0.8,0.98 1,1');
883
- });
884
- </script>
885
- <h1 data-animation="fadeInUp" data-easing="mvm.swoop">…</h1>
886
-
887
- <!-- CustomWiggle / CustomBounce -->
888
- <script>
889
- CustomWiggle.create('myWiggle', { wiggles: 6, type: 'random' });
890
- CustomBounce.create('myBounce', { strength: 0.7, squash: 3 });
891
- </script>
892
- <div data-gsap-from='{"rotation":-30}' data-gsap-to='{"rotation":30}'
893
- data-gsap-duration="1.5" data-gsap-ease="myWiggle">…</div>
894
-
895
- ### When to use mvm-native vs GSAP
896
-
897
- | Goal | Use |
898
- |---|---|
899
- | Quick entrance from the 24-preset table (`fadeInUp`, `unmaskUp`, `magneticIn`, …) | mvm `data-animation=` |
900
- | Per-character text animation that doesn't need lines or masks | mvm `data-text-animation="split-text"` |
901
- | Stagger over arbitrary properties / arbitrary easing | GSAP `data-gsap-from` / `data-gsap-to` |
902
- | Line-aware split, mask reveal, autoSplit on font-load | GSAP `data-gsap-split` |
903
- | Stroke draw, shape morph, motion path | GSAP plugins (DrawSVG / MorphSVG / MotionPath) |
904
- | Particle bursts with physics | GSAP `Physics2DPlugin` |
905
- | Choreographing 5+ elements with overlapping time positions | `__mvmGsap.timeline({at})` |
906
- | Layout transitions between scenes (FLIP) | GSAP `Flip` |
907
- | Custom mathematical ease curve (cubic-bezier or SVG path) | GSAP `CustomEase` (use anywhere) |
908
-
909
- The two systems compose freely — use whichever reads best for the
910
- scene. Existing examples (`time-flies`, `raycast-deep-dive-v*`)
911
- still use the mvm-native attributes; new compositions are
912
- encouraged to mix the two for richer motion.
913
-
914
- ### Where to look
915
-
916
- - **`runtime/gsap-bridge.js`** — the determinism layer. Read this
917
- to understand exactly how `mvm-seek` drives every GSAP tween.
918
- - **`runtime/gsap/`** — bundled GSAP 3.15 + every plugin (UMD).
919
- - **`examples/gsap-showcase/index.html`** — 7-scene 42s reference
920
- exercising each plugin (SplitText / DrawSVG / MorphSVG /
921
- MotionPath / Physics2D / ScrambleText / programmatic timeline +
922
- CustomEase). Render with `npm run render:gsap`.
923
-
924
- ## Typography limits — never write `font-size: 180px` for a long title
925
-
926
- The stage is **1920×1080**. At that width, "Motion Video Maker" wraps
927
- mid-word once you go above ~140px; longer phrases like
928
- "HTML 驱动的电影级动画引擎" need even smaller sizes. Always pick from
929
- the safe scale instead of writing px:
930
-
931
- ```html
932
- <!-- ✅ Safe — fits 1920px stage for typical 15–22 char titles -->
933
- <h1 class="title-2xl text-on-warm">Motion Video Maker</h1>
934
-
935
- <!-- ✅ Also safe — for shorter, punchier hero titles -->
936
- <h1 class="title-3xl text-on-cool">时间飞逝</h1>
937
-
938
- <!-- ❌ Don't do this — wraps to two left-aligned lines on a 1920 stage -->
939
- <h1 style="font-size: 180px;">Motion Video Maker</h1>
940
-
941
- ### Safe font-size scale (verified non-wrapping @ 1920×1080)
942
-
943
- | Class | font-size | Safe up to (latin / CJK) |
944
- |---|---|---|
945
- | `.title-3xl` | 160px | 14 chars / 12 chars |
946
- | `.title-2xl` | 130px | 18 chars / 15 chars |
947
- | `.title-xl` | 100px | 22 chars / 18 chars |
948
- | `.title-lg` | 80px | 28 chars / 22 chars |
949
- | `.title-md` | 60px | 38 chars / 28 chars |
950
- | `.title-sm` | 44px | wide subtitles |
951
- | `.body-lg/md/sm` | 40/32/24px | paragraphs |
952
-
953
- The runtime ships `layout-check.js`: any heading that wraps or extends
954
- past the stage edge produces a `[mvm-layout]` console.warn during
955
- rendering, and the render script prints a summary at the end so you
956
- know to dial down the font size before re-rendering.
957
-
958
- ### Center by default
959
-
960
- The runtime now applies `text-align: center; margin: 0 auto; max-width: 92%`
961
- to every `#stage h1–h6, #stage p`. Flex containers no longer cause
962
- left-aligned titles when text wraps. Set `text-align: left` (or
963
- `.pos-left` / `.pos-right`) on the element if you actually want it
964
- off-center.
965
-
966
- ## Background palette + matching text class — the PALETTE PAIR rule
967
-
968
- This is the **#1 thing other agents got wrong** in the wild: choosing
969
- a shader palette and a text gradient class from the same hue family,
970
- producing invisible text. Examples observed:
971
-
972
- - `.text-aurora` (cyan/blue/violet gradient) on `liquid-ether` with a
973
- blue/violet `data-colors` → text vanishes into the background.
974
- - `.text-fire` (yellow/orange/red gradient) on `meta-balls` with a
975
- red/orange `data-colors` → text vanishes into the background.
976
-
977
- To eliminate this entire class of bugs, the runtime now ships
978
- **named palettes** for every shader and **matching text classes** that
979
- have been hand-tuned for 4.5:1 contrast against that palette family.
980
- You only ever have to pick one of each.
981
-
982
- ### Named palettes (`data-palette="..."`)
983
-
984
- | Family | Palette names | Best with text class |
985
- |---|---|---|
986
- | **Cool** (blue / violet) | `cool-deep` `cool-arctic` `cool-neon` `cool-violet` | `.text-on-cool` (warm yellow) / `.text-on-cool-soft` |
987
- | **Warm** (red / orange / gold) | `warm-glow` `warm-sunset` `warm-ember` `warm-autumn` | `.text-on-warm` (cool white-blue) / `.text-on-warm-soft` |
988
- | **Prismatic** (rainbow / vapor) | `prismatic-cyber` `prismatic-vapor` `prismatic-magic` | `.text-on-prismatic` (pure white + heavy halo) |
989
- | **Mono** (deep neutral) | `mono-deep` `mono-ink` `mono-graphite` | `.text-on-mono` (warm yellow) |
990
- | **Light** (paper / misty) | `light-paper` `light-misty` | `.text-on-light` (dark ink) |
991
-
992
- ```html
993
- <!-- ✅ Cool palette + cool text class -->
994
- <div data-background="liquid-ether" data-palette="cool-deep"
995
- data-clip data-start="0" data-duration="6"
996
- data-animation="fadeIn" data-animation-out="fadeOut"></div>
997
-
998
- <div class="scene-scrim" data-clip data-hide-mode="visibility"
999
- data-start="0" data-duration="5.5"
1000
- style="position:absolute; inset:0; z-index:10; display:flex; ...">
1001
- <p class="eyebrow text-on-cool">ANIMATION COMPONENTS</p>
1002
- <h1 class="text-on-cool" style="font-size:120px; color:#fff;">标题</h1>
1003
- </div>
1004
-
1005
- <!-- ❌ Don't do this — .text-aurora over a cool shader = invisible -->
1006
- <h1 class="text-aurora" ...>标题</h1>
1007
-
1008
- ### Drop-in stat-card preset (`.mvm-stat`)
1009
-
1010
- When showing numeric stats on any shader, use the `.mvm-stat` family
1011
- to skip color-picking entirely. Pair the border accent with the
1012
- scene's palette family:
1013
-
1014
- ```html
1015
- <!-- Cool-themed scene → red/cool/warm accents from .mvm-stat--* -->
1016
- <div class="mvm-stat mvm-stat--red"
1017
- data-clip ... data-animation="magneticIn">
1018
- <span class="mvm-stat-num" data-text-animation="count-up" data-odometer="true"
1019
- data-from="0" data-to="17">0</span>
1020
- <span class="mvm-stat-label">种文字动画</span>
1021
- </div>
1022
- ```
1023
- The stat card has a solid dark plate built-in (no contrast worry),
1024
- white digits, muted serif label, and the accent border lets you
1025
- differentiate three or four stats by hue without changing text color.
1026
-
1027
- See **[`examples/skill-intro/index.html``index.html`** — 6 scenes,
1028
- 6 different palettes, 0 contrast warnings.
1029
- ```
1030
-
1031
- ## Color & contrast contract — READ THIS FIRST
1032
-
1033
- The runtime gives every composition a **white-on-dark default**. Follow
1034
- three rules and your text will always be visible:
1035
-
1036
- ### Rule 1 — Always link `runtime/styles.css` BEFORE author CSS
1037
-
1038
- ```html
1039
- <head>
1040
- <link rel="stylesheet" href="../../runtime/styles.css" /> <!-- FIRST -->
1041
- <link rel="stylesheet" href="../../assets/fonts/fonts.css" />
1042
- <style>/* your overrides */</style>
1043
- </head>
1044
- ```
1045
- Without this, `#stage` has no default `color`/`background-color` and
1046
- the browser falls back to **black-on-white** — invisible against the
1047
- dark backgrounds you probably want.
1048
- ```
1049
-
1050
- ### Rule 2 — If you set `background: light` on ANY element, also set `color: dark` (and vice versa)
1051
-
1052
- `#stage` defaults to `background: var(--mvm-bg, #0a0a0f)` and
1053
- `color: var(--mvm-text, #fff)`. Every descendant inherits the white
1054
- text **unless** you (or a class you apply) explicitly changes it.
1055
-
1056
- This is the #1 mistake: an agent writes
1057
- ```html
1058
- <div style="background: white; padding: 30px;">
1059
- <h2>这个会看不见</h2>
1060
- </div>
1061
- ```
1062
- …and the heading inherits white → invisible on white card. **Solution:**
1063
- use the paired utility classes, NEVER write half-pairs.
1064
-
1065
- | If your container has… | Use this class |
1066
- |---|---|
1067
- | Dark background | `.mvm-card-dark` — paints dark + sets text white |
1068
- | Light background | `.mvm-card-light` — paints light + sets text dark |
1069
- | Need just text color | `.mvm-light` (white) / `.mvm-dark` (#0a0a0f) |
1070
- | Need full-scene theme flip | `.mvm-bg-light` / `.mvm-bg-dark` on the scene wrapper |
1071
- | Need a tonal mute | `.mvm-light-muted` / `.mvm-dark-muted` |
1072
- ```
1073
- ```html
1074
- <!-- ✅ Good — paired class -->
1075
- <div class="mvm-card-light">
1076
- <h2>清晰可见 — 亮卡片自动配深字</h2>
1077
- </div>
1078
-
1079
- <!-- ✅ Good — explicit pair -->
1080
- <div style="background:#FFD400; color:#1a0a08; padding:30px;">
1081
- <h2>also fine — explicit dark text on yellow</h2>
1082
- </div>
1083
-
1084
- <!-- ❌ Bad — only background, color forgotten -->
1085
- <div style="background: white; padding: 30px;">
1086
- <h2>invisible — inherits white from #stage</h2>
1087
- </div>
1088
-
1089
- ### Rule 3 — Run the contrast checker (it's automatic during render)
1090
-
1091
- `runtime/contrast-check.js` runs on every `mvm-seek` tick and walks
1092
- every visible text element under `#stage`, computes the WCAG luminance
1093
- ratio against its effective background, and emits a `console.warn` for
1094
- any element under **2.2:1** (essentially invisible).
1095
-
1096
- `render.mjs` collects those warnings and prints a one-shot summary at
1097
- the end of the export so you never ship an MP4 with hidden text:
1098
-
1099
- ```
1100
- [mvm] ⚠ 2 LOW-CONTRAST TEXT ISSUE(S) DETECTED
1101
- [mvm] • text "看不见" (color rgb(255,255,255)) on background rgba(255,255,255,1)
1102
- [mvm] at <h2.subtitle>. Fix: add .mvm-light / .mvm-card-dark, or set color/background explicitly.
1103
- ```
1104
- ```
1105
- `templates/contrast-test.html` is a self-test page with 4 cells (2 bad
1106
- + 2 good) you can use as a regression test of the safety net.
1107
- ```
1108
-
1109
- ### Theming an entire composition
1110
-
1111
- ```html
1112
- <!-- Light-themed composition: flip --mvm-bg and --mvm-text on #stage -->
1113
- <div id="stage"
1114
- style="--mvm-bg: #f7f5ef; --mvm-text: #0a0a0f;"
1115
- data-width="1920" data-height="1080" data-fps="30" data-duration="10">
1116
- <!-- now every default-text descendant is DARK on light, automatic -->
1117
- </div>
1118
-
1119
- ## Keeping text readable on busy backgrounds
1120
-
1121
- Shader / particle / video backgrounds tend to swallow typography. The
1122
- skill provides a **3-layer defense** — pick the strongest layer your
1123
- scene needs:
1124
-
1125
- ### Layer 1 — `.scene-scrim` on the scene container (recommended baseline)
1126
-
1127
- Adds a CSS-only radial dark vignette covering the entire scene area,
1128
- sitting between the shader background and the foreground content.
1129
- Every text inside gets a "free" 30–60% darkness lift with no per-text
1130
- tuning.
1131
-
1132
- | Class | Darkness profile |
1133
- |---|---|
1134
- | `.scene-scrim` | Radial 35–60% center→edge (default) |
1135
- | `.scene-scrim-soft` | 15–35% (subtle) |
1136
- | `.scene-scrim-strong` | 55–80% (heavy — turns bright backgrounds nearly black) |
1137
- | `.scene-scrim-top` | Linear 0–85% top edge (lower-third style) |
1138
- | `.scene-scrim-bottom` | Linear bottom edge gradient |
1139
-
1140
- ```html
1141
- <!-- Scene 4 in raycast-deep-dive-v4: iridescence shader auto-darkened -->
1142
- <div class="scene-scrim"
1143
- data-clip data-hide-mode="visibility"
1144
- data-start="14.5" data-duration="7.5"
1145
- style="z-index: 10; position: absolute; inset: 0;">
1146
- ... scene content ...
1147
- </div>
1148
- ```
1149
- > **Important:** apply `.scene-scrim` to a container that already has
1150
- > `position: absolute / fixed / relative`. The `.scene-scrim` style
1151
- > does NOT set position itself (so it doesn't clobber your layout).
1152
- ```
1153
-
1154
- ### Layer 2 — per-element wrappers when you need guaranteed contrast
1155
-
1156
- | Helper | What it does | When to use |
1157
- |---|---|---|
1158
- | `.text-readable` | Multi-layer dark `text-shadow` only (safe with gradient text classes) | Default for any title sitting on a shader |
1159
- | `.text-stroke-dark` | 2px dark `-webkit-text-stroke` with `paint-order: stroke fill` | Solid-color body text |
1160
- | `.text-stroke-dark-thick` | 4px dark stroke variant | Captions on very bright backgrounds |
1161
- | `.text-glow-dark` | Heavy dark `text-shadow` alone | When you want extra "lift" without strokes |
1162
- | `.text-card` | Translucent dark rounded pill `backdrop-filter: blur(20px)` | Quotes / hero lower-thirds (best on shaders that support backdrop-filter) |
1163
- | **`.text-plate`** | **Solid dark `rgba(6,8,14,0.82)` rounded pill — NO backdrop-filter, works in EVERY render path** | **Use when you absolutely cannot afford the text to blend in** |
1164
- | `.text-plate-tight` / `-loose` / `-soft` / `-hard` | Padding & opacity variants of `.text-plate` | |
1165
- | `.text-scrim` | Built-in radial CSS scrim around the element | Pure CSS, render-frame-buffer safe |
1166
- | `data-scrim="card / radial / blur / auto"` | Runtime injects a backdrop element behind the host | One-off "make it readable" |
1167
- | `.scrim-top` / `.scrim-bottom` | Top/bottom edge gradient bars (lower-third feel) | News-ticker / broadcast captions |
1168
-
1169
- ### Layer 3 — color-pairing rule of thumb
1170
-
1171
- If your text uses a *warm* gradient (`.text-raycast`, `.text-fire`,
1172
- `.text-gold`), give it a **cool** background shader (`liquid-ether`
1173
- with blue/violet palette, `iridescence` with cool stops). If your
1174
- text is *cool* (`.text-blue`, `.text-aurora`), choose a warm-dark
1175
- background. This single rule eliminates most readability bugs.
1176
-
1177
- ### Known gotchas (documented from real-world v3 → v4 fixes)
1178
-
1179
- 1. **`-webkit-text-fill-color: transparent` + 3D `transform` breaks
1180
- gradient text in Chromium.** `flipInX/Y`, `cubeIn`, `swing3D`,
1181
- and `irisIn` introduce perspective; if you must use them, switch
1182
- to solid `color: white` + `text-shadow` instead of a gradient class.
1183
- That's what closing-title in `raycast-deep-dive-v4` does.
1184
- 2. **`-webkit-text-stroke` on transparent-gradient text makes it
1185
- appear hollow** — `.text-readable` deliberately uses only
1186
- `text-shadow` (no stroke, no `filter`) so it composes safely with
1187
- `.text-raycast` / `.text-aurora`.
1188
- 3. **`mask-text` (clip-path) + gradient text also fails** in
1189
- Chromium screenshot mode — fall back to `split-text` for gradient
1190
- titles.
1191
-
1192
- ```html
1193
- <!-- Hero title on a busy shader: cool background + warm gradient + readable -->
1194
- <div data-background="liquid-ether"
1195
- data-colors="#06061a,#1a1240,#2a2070,#0a3055"></div>
1196
- <h1 class="hero-title text-raycast text-readable"
1197
- style="filter: drop-shadow(0 8px 40px rgba(255,99,99,0.5))
1198
- drop-shadow(0 4px 12px rgba(0,0,0,0.9));"
1199
- data-clip data-start="0.7" data-duration="3.3"
1200
- data-text-animation="split-text">RAYCAST 2.0</h1>
1201
-
1202
- <!-- Closing quote with an explicit dark card -->
1203
- <p class="quote-text text-readable text-card"
1204
- style="padding: 32px 80px;"
1205
- data-clip data-start="35" data-duration="3"
1206
- data-text-animation="wave-text">代码只是手段,产品才是目的。</p>
1207
-
1208
- <!-- Generic "make it readable" -->
1209
- <h2 data-scrim="auto" data-scrim-padding="32"
1210
- data-clip data-start="5" data-duration="4">任何标题</h2>
1211
-
1212
- ## Layout stability — siblings never jump when another sibling enters
1213
-
1214
- Earlier versions used `display: none` as the default hide state, which
1215
- meant a later sibling appearing would re-trigger flex/grid layout and
1216
- push already-visible siblings around. **From this version on,
1217
- `data-hide-mode` defaults to `"visibility"` instead.**
1218
-
1219
- What that means in practice:
1220
-
1221
- - A hidden clip still **occupies its layout slot** (its width / height
1222
- are reserved in the flex/grid track).
1223
- - When a sibling fades in, surrounding siblings keep their pixel
1224
- position — **zero jump**.
1225
- - Your `transform` animations (translate, rotate, scale) still move the
1226
- visual position freely; only the layout slot is preserved.
1227
-
1228
- If you actually want the legacy "fully remove from layout" behaviour
1229
- (e.g. for a corner element that should completely disappear and let
1230
- surrounding content collapse into its slot), opt in explicitly:
1231
-
1232
- ```html
1233
- <div data-clip data-hide-mode="display"
1234
- data-start="3" data-duration="2">temporary tooltip</div>
1235
- ```
1236
- See `examples/raycast-deep-dive-v4/stability-readability.jpg` for a
1237
- visual proof: 5 timestamps of the same scene, every already-visible
1238
- element stays exactly where it was while new elements enter.
1239
- ```
1240
-
1241
- ## Animation variety — avoid the "fadeIn everything" trap
1242
-
1243
- A common mistake is to apply the same entrance animation to every
1244
- element in a scene. The runtime ships **24 outer-animation presets**
1245
- across 6 groups so you can mix them:
1246
-
1247
- ```html
1248
- <!-- A row of 4 cards, each with a DIFFERENT animation preset -->
1249
- <div class="card" data-animation="unmaskLeft" data-easing="easeInOutQuart">...</div>
1250
- <div class="card" data-animation="slideBlurIn" data-easing="springSoft">...</div>
1251
- <div class="card" data-animation="magneticIn" data-easing="springBouncy">...</div>
1252
- <div class="card" data-animation="glitchIn" data-easing="easeOutCubic">...</div>
1253
- ```
1254
- This is exactly the technique used in `examples/raycast-deep-dive-v4/`
1255
- to upgrade from a "generic" v3 to a polished v4.
1256
- ```
1257
-
1258
- ## Authoring Workflow
1259
-
1260
- 1. **Pick a duration.** 6–15s is great for hooks; 30s for fuller pieces.
1261
- 2. **Sketch scenes by time.** E.g.: 0–4s opener, 4–9s point 1, 9–18s data, 18–30s finale.
1262
- 3. **Pick one background per scene** (cross-fade by giving the prior bg `data-animation-out="fadeOut"`).
1263
- 4. **Wrap each scene** in a container with `data-clip` (the default `data-hide-mode="visibility"` keeps the child layout stable) so all children share the same visibility window:
1264
- ```html
1265
- <div class="scene center"
1266
- data-clip data-hide-mode="visibility"
1267
- data-start="4.0" data-duration="5.0">
1268
- ... clips here ...
1269
- </div>
1270
- ```
1271
- 5. **Use `text-animation` for kinetic text**, plain `data-animation` for outer transforms (zoom, slide, fade).
1272
- 6. **Preview at 15fps first** to iterate quickly:
1273
- ```
1274
- ```
1275
- 7. **Render final at 30fps**:
1276
- ```
1277
-
1278
- ## Common Patterns
1279
-
1280
- ### Gradient text + character split
1281
-
1282
- The runtime detects `color: transparent` + `background-clip: text` parents and
1283
- copies the gradient onto each split span, so the effect survives. Use the
1284
- preset classes `.text-aurora`, `.text-fire`, `.text-gold`, `.text-silver`.
1285
-
1286
- ```html
1287
- <h1 class="title text-fire"
1288
- data-clip data-start="0" data-duration="4"
1289
- data-text-animation="split-text" data-stagger="0.08">光阴似箭</h1>
1290
-
1291
- ### Scene-wide entrance + per-element timing
1292
-
1293
- Outer scene controls visibility; inner clips animate in staggered:
1294
-
1295
- ```html
1296
- <div class="scene center" data-clip data-hide-mode="visibility"
1297
- data-start="10" data-duration="6">
1298
- <h1 data-clip data-start="10.2" data-duration="5.6"
1299
- data-text-animation="split-text">标题</h1>
1300
- <p data-clip data-start="11.0" data-duration="4.8"
1301
- data-animation="fadeInUp">副标题</p>
1302
- </div>
1303
-
1304
- ### Animated counter (plain or odometer-flip)
1305
-
1306
- ```html
1307
- <!-- plain (textContent updated per frame) -->
1308
- <span data-clip data-start="5" data-duration="6"
1309
- data-text-animation="count-up"
1310
- data-from="0" data-to="86400" data-anim-duration="3"
1311
- data-separator="," data-easing="easeOutExpo">0</span>
1312
-
1313
- <!-- odometer: per-digit columns rotate mechanically as they carry -->
1314
- <span style="font-size:200px; font-weight:900;"
1315
- data-clip data-start="5" data-duration="6"
1316
- data-text-animation="count-up"
1317
- data-odometer="true"
1318
- data-from="0" data-to="86400" data-anim-duration="3"
1319
- data-separator="," data-easing="easeOutExpo">0</span>
1320
- ```
1321
- > **Odometer caveat:** the inner per-digit divs do **not** inherit
1322
- > `background-clip: text` gradients. Use a solid `color` on the counter
1323
- > element instead of `.text-aurora` / `.text-fire`.
1324
- ```
1325
-
1326
- ### Cross-fading backgrounds
1327
-
1328
- ```html
1329
- <div data-clip data-start="0" data-duration="12"
1330
- data-animation="fadeIn" data-animation-out="fadeOut"
1331
- data-background="aurora"></div>
1332
- <div data-clip data-start="11.5" data-duration="8"
1333
- data-animation="fadeIn" data-animation-out="fadeOut"
1334
- data-background="dot-grid"></div>
1335
-
1336
- ## Chinese Typography
1337
-
1338
- Twelve preinstalled families (`assets/fonts/fonts.css`):
1339
-
1340
- * **`Noto Sans SC`** 400/700/900 — modern sans
1341
- * **`Noto Serif SC`** 400/900 — classical serif
1342
- * **`LXGW WenKai`** 400 — calligraphic wenkai (霞鹜文楷)
1343
- * **`ZCOOL XiaoWei`** / **`ZCOOL KuaiLe`** / **`ZCOOL QingKe HuangYou`** — display
1344
- * **`Ma Shan Zheng`** (马善政毛笔) — brush strokes
1345
- * **`Long Cang`** (龙藏体) — calligraphic flow
1346
- * **`Liu Jian Mao Cao`** (柳建毛草) — running script
1347
-
1348
- **Default body family changed in v5** — now prefers `Noto Serif SC`
1349
- (思源宋体) → `LXGW WenKai` (霞鹜文楷) → `STSong` / `Songti SC`, falling
1350
- back to the modern Noto Sans family. This gives Chinese text a more
1351
- literary / elegant feel out of the box. When you need the impact-heavy
1352
- modern look (e.g. big digit displays, monospace eyebrows), opt in via:
1353
-
1354
- | Class | Family stack | When to use |
1355
- |---|---|---|
1356
- | `.cn-serif` | Noto Serif SC → Source Han Serif → STSong | Default body / titles (elegant) |
1357
- | `.cn-wenkai` (aliased to `.wenkai`) | LXGW WenKai → Noto Serif SC | Poetic quotes, calligraphic body |
1358
- | `.cn-sans` | Noto Sans SC → PingFang → YaHei | Big digit numbers / poster labels |
1359
- | `.cn-mono` (aliased to `.mono`) | JetBrains Mono | Code / timestamps / eyebrows |
1360
- | `.cn-poster` | ZCOOL XiaoWei → Noto Serif SC | Decorative posters |
1361
- | `.cn-brush` | Ma Shan Zheng → Long Cang → LXGW WenKai | 毛笔 brush titles (≤ 8 chars) |
1362
- | `.cn-running` | Long Cang → Liu Jian Mao Cao | 行草 running script |
1363
-
1364
- `.title` / `.title-md` / `.title-sm` / `.huge` now default to the serif
1365
- family with looser tracking (`letter-spacing: 0.02em`) which makes large
1366
- Chinese headlines breathe properly. Add `.cn-sans` to force sans:
1367
-
1368
- ```html
1369
- <!-- elegant default — serif 思源宋体 Black -->
1370
- <h1 class="title">岁月静好</h1>
1371
-
1372
- <!-- modern poster look -->
1373
- <h1 class="title cn-sans" style="letter-spacing: -0.02em;">2026 KEYNOTE</h1>
1374
-
1375
- <!-- calligraphic poem -->
1376
- <p class="cn-wenkai" style="font-size: 60px;">「春水初生,春林初盛」</p>
1377
-
1378
- <!-- brush 4-char title -->
1379
- <h1 class="cn-brush" style="font-size: 280px;">活在当下</h1>
1380
- ```
1381
- Other helper classes: `.subtitle`, `.caption`, `.text-gold`,
1382
- `.text-aurora`, `.text-fire`, `.text-silver`, `.text-stroke`, `.glow`,
1383
- `.glow-cool`, plus the readability stack (`.text-readable`,
1384
- `.text-stroke-dark`, `.text-plate`, `.text-card`).
1385
-
1386
- To add additional fonts, drop a TTF/OTF/WOFF2 into `assets/fonts/` and append
1387
- an `@font-face` rule to `assets/fonts/fonts.css`, or extend the manifest in
1388
- `scripts/install-fonts.mjs` and re-run it.
1389
- ```
1390
-
1391
- ## Render Options
1392
-
1393
- ```
1394
- | Option | Default | Notes |
1395
- |---|---|---|
1396
- | `fps=` | from `data-fps` | Override frame rate |
1397
- | `duration=` | from `data-duration` | Override duration (s) |
1398
- | `width=` / `height=` | from `data-*` | Override stage size |
1399
- | `crf=` | `18` | x264 quality (lower = better, 16 archival, 23 web) |
1400
- | `preset=` | `slow` | `ultrafast` for previews, `medium`/`slow` for finals |
1401
- | `keepFrames=1` | off | Keep PNG sequence beside the MP4 |
1402
- ```
1403
-
1404
- ## Debugging
1405
-
1406
- If something doesn't appear:
1407
-
1408
- 1. `node scripts/debug.mjs <input.html> <time> <selector>`
1409
- Dumps each matching element's computed `display` / `visibility` /
1410
- `opacity` / `transform` / bounding rect at that instant.
1411
- 2. `node scripts/snap.mjs <input.html> <time> <out.png>`
1412
- Saves a high-res single-frame screenshot for visual inspection.
1413
- 3. Open `scripts/preview.mjs` in a browser — the wall-clock loop runs and
1414
- any JS error appears in DevTools.
1415
-
1416
- ## Lineage — What this skill borrows from where
1417
-
1418
- | Borrowed from | What we took |
1419
- |---|---|
1420
- | **react-bits** | Component taxonomy (text / animations / backgrounds / decorations); naming (`split-text`, `blur-text`, `decrypted-text`, `iridescence`, `liquid-ether`, `prismatic-burst`, `lightning`, `plasma`, `beams`, `meta-balls`, `pixel-dissolve`, `electric-border`, `star-border`, `image-trail`, `magnet-lines`, `ribbons`, `odometer`); the "shader background" idea (we wrote our own GLSL from scratch instead of porting OGL). |
1421
- | **motion.dev / framer-motion** | Closed-form spring physics math (damped harmonic oscillator) for `springGentle/Soft/Snap/Smooth/Bouncy/Wobbly/Stiff`. |
1422
- | **hyperframes** | HTML-native composition; `data-*` attribute API; single `index.html` per video; puppeteer-screenshot frame capture. |
1423
- | **remotion** | Frame-accurate deterministic seek; image2pipe → ffmpeg encoder; chrome launch flags; `delayRender` / `continueRender` / `cancelRender` API. |
1424
- | **GSAP** ([greensock/gsap-skills](https://github.com/greensock/gsap-skills)) | The full animation engine — core tweens, timelines, easing, plus every plugin (SplitText, DrawSVGPlugin, MorphSVGPlugin, MotionPathPlugin, Physics2DPlugin, PhysicsPropsPlugin, Flip, ScrambleTextPlugin, TextPlugin, CustomEase, CustomWiggle, CustomBounce, EasePack). All free and bundled in `runtime/gsap/`; integrated through `runtime/gsap-bridge.js` which routes `gsap.updateRoot` through `mvm-seek` for byte-identical determinism. |
1425
-
1426
- The shader backgrounds (`liquid-ether`, `iridescence`, `meta-balls`, etc.)
1427
- are NOT ports of react-bits' OGL implementations — they are hand-written
1428
- GLSL fragment shaders using FBM noise, polar warps, isosurface fields and
1429
- procedural primitives. Element-level effects (`electric-border`,
1430
- `star-border`, `image-trail`) and canvas decorations (`magnet-lines`,
1431
- `ribbons`) are likewise re-implemented from scratch on plain Canvas2D, so
1432
- the runtime stays zero-dependency.
1433
-
1434
- ## Additional Resources
1435
-
1436
- - **[reference/components.md](reference/components.md)** — full per-component prop tables and gotchas.
1437
- - **[reference/workflow.md](reference/workflow.md)** — step-by-step recipes (data video, ad bumper, social hook).
1438
- - **[examples/time-flies/index.html`index.html`** — annotated 30s reference composition.
1439
- - **[examples/raycast-deep-dive-v2/index.html`index.html`** — 40s deep-dive showing spring + shader + transition together.
1440
- - **[examples/raycast-deep-dive-v3/index.html`index.html`** — 40s v3 with electric-border on Hybrid card + magnet-lines architecture + image-trail rows + odometer memory counters.
1441
- - **[examples/raycast-deep-dive-v4/index.html`index.html`** — 40s v4: text-readability pass (`.scene-scrim` on every scene, gradient-on-3D-transform fixes), `data-hide-mode="visibility"` default that eliminates layout jitter, Scene-2 layout overhauled to centered flex (no more right-edge overflow on "macOS + Windows" tag), and 12+ different animation presets across 7 scenes.
1442
- - **[examples/gsap-showcase/index.html`index.html`** — 42s GSAP plugin sampler: SplitText (line-mask + char stagger, Scene 1) → DrawSVG (4-stroke "MVM" wordmark, Scene 2) → MorphSVG (square→triangle→star→circle→square, Scene 3) → MotionPath (rocket on a curved path, Scene 4) → Physics2D (60-piece confetti burst, Scene 5) → ScrambleText (Latin + CJK pools, Scene 6) → programmatic GSAP timeline + CustomEase + 4-axis grid stagger (Scene 7). Render with `npm run render:gsap`.
1443
- - **[examples/time-flies-v2/index.html`index.html`** — 42s reflective piece on time. Showcases the elegant serif default (思源宋体 Black for 「时间飞逝」/「活在当下」titles, 霞鹜文楷 for poetic quotes), 7 different shader backgrounds, 6 inter-scene transitions, 12+ entrance animations, and the full odometer chain (463 → 70 → 3,600 → 86,400 → 525,600). See `contact-sheet.jpg`.
1444
- - **[examples/optimization-v5-summary.jpg`optimization-v5-summary.jpg`** — 6-frame proof that both v5 fixes landed: typography upgrade + Scene 2 overflow fix.
1445
- - **[templates/showcase.html`showcase.html`** — 6-cell grid that renders every shader at once.
1446
- - **[templates/effects-showcase.html`effects-showcase.html`** — 6-cell sampler for electric-border, star-border, image-trail, meta-balls, magnet-lines, ribbons.
1447
- - **[templates/readable-showcase.html`readable-showcase.html`** — 12-cell grid that tests `.text-readable` / `data-scrim` against busy shaders, plus a sampler for the 10 new outer-animation and 3 new text-animation presets.
1448
-
1449
- ## Source
1450
-
1451
- Rewritten for AICUT from [`GordenSun/react-bits-video`](https://github.com/GordenSun/react-bits-video)
1452
- (MIT), SKILL.md. The method is that skill's own; the way it runs is AICUT's.