takomi 2.1.41 → 2.1.42

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 (597) hide show
  1. package/README.md +7 -4
  2. package/assets/.agent/skills/embedded-captions/CATALOG.md +93 -0
  3. package/assets/.agent/skills/embedded-captions/SKILL.md +286 -0
  4. package/assets/.agent/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
  5. package/assets/.agent/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
  6. package/assets/.agent/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  7. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  8. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  9. package/assets/.agent/skills/embedded-captions/dna/README.md +148 -0
  10. package/assets/.agent/skills/embedded-captions/dna/chrome.json +68 -0
  11. package/assets/.agent/skills/embedded-captions/dna/cream.json +69 -0
  12. package/assets/.agent/skills/embedded-captions/dna/documentary.json +62 -0
  13. package/assets/.agent/skills/embedded-captions/dna/editorial.json +70 -0
  14. package/assets/.agent/skills/embedded-captions/dna/glitch.json +82 -0
  15. package/assets/.agent/skills/embedded-captions/dna/ink.json +65 -0
  16. package/assets/.agent/skills/embedded-captions/dna/keynote.json +62 -0
  17. package/assets/.agent/skills/embedded-captions/dna/loud.json +75 -0
  18. package/assets/.agent/skills/embedded-captions/dna/neon.json +58 -0
  19. package/assets/.agent/skills/embedded-captions/dna/velocity.json +89 -0
  20. package/assets/.agent/skills/embedded-captions/modes/cinematic/README.md +48 -0
  21. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  22. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  23. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  24. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  25. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  26. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  27. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  28. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  29. package/assets/.agent/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  30. package/assets/.agent/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
  31. package/assets/.agent/skills/embedded-captions/modes/standard/_motion.md +192 -0
  32. package/assets/.agent/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
  33. package/assets/.agent/skills/embedded-captions/references/aesthetic-principles.md +168 -0
  34. package/assets/.agent/skills/embedded-captions/references/anti-patterns.md +188 -0
  35. package/assets/.agent/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  36. package/assets/.agent/skills/embedded-captions/references/caption-grouping.md +130 -0
  37. package/assets/.agent/skills/embedded-captions/references/composition-craft.md +522 -0
  38. package/assets/.agent/skills/embedded-captions/references/direction-catalog.md +138 -0
  39. package/assets/.agent/skills/embedded-captions/references/example-renders/champion.html +371 -0
  40. package/assets/.agent/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  41. package/assets/.agent/skills/embedded-captions/references/failure-modes.md +145 -0
  42. package/assets/.agent/skills/embedded-captions/references/layout-heuristics.md +238 -0
  43. package/assets/.agent/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  44. package/assets/.agent/skills/embedded-captions/references/rail.md +68 -0
  45. package/assets/.agent/skills/embedded-captions/references/reference-bar.md +47 -0
  46. package/assets/.agent/skills/embedded-captions/references/scene-types.md +94 -0
  47. package/assets/.agent/skills/embedded-captions/references/test-set.md +66 -0
  48. package/assets/.agent/skills/embedded-captions/references/typographic-moves.md +266 -0
  49. package/assets/.agent/skills/embedded-captions/references/typography-presets.md +63 -0
  50. package/assets/.agent/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
  51. package/assets/.agent/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
  52. package/assets/.agent/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
  53. package/assets/.agent/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
  54. package/assets/.agent/skills/embedded-captions/scripts/check-timing.cjs +173 -0
  55. package/assets/.agent/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
  56. package/assets/.agent/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
  57. package/assets/.agent/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
  58. package/assets/.agent/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
  59. package/assets/.agent/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
  60. package/assets/.agent/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
  61. package/assets/.agent/skills/embedded-captions/scripts/make-composition.cjs +404 -0
  62. package/assets/.agent/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
  63. package/assets/.agent/skills/embedded-captions/scripts/matte.cjs +279 -0
  64. package/assets/.agent/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
  65. package/assets/.agent/skills/embedded-captions/scripts/prepare.sh +39 -0
  66. package/assets/.agent/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
  67. package/assets/.agent/skills/embedded-captions/scripts/render-and-composite.sh +469 -0
  68. package/assets/.agent/skills/embedded-captions/scripts/render-theme.sh +34 -0
  69. package/assets/.agent/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
  70. package/assets/.agent/skills/embedded-captions/scripts/transcribe.cjs +332 -0
  71. package/assets/.agent/skills/embedded-captions/themes/PORTING.md +49 -0
  72. package/assets/.agent/skills/embedded-captions/themes/README.md +244 -0
  73. package/assets/.agent/skills/embedded-captions/themes/anchor.json +27 -0
  74. package/assets/.agent/skills/embedded-captions/themes/arcade.json +51 -0
  75. package/assets/.agent/skills/embedded-captions/themes/aurora.json +41 -0
  76. package/assets/.agent/skills/embedded-captions/themes/biolume.json +35 -0
  77. package/assets/.agent/skills/embedded-captions/themes/brush.json +74 -0
  78. package/assets/.agent/skills/embedded-captions/themes/chalkboard.json +52 -0
  79. package/assets/.agent/skills/embedded-captions/themes/dossier.json +56 -0
  80. package/assets/.agent/skills/embedded-captions/themes/graffiti.json +62 -0
  81. package/assets/.agent/skills/embedded-captions/themes/hologram.json +41 -0
  82. package/assets/.agent/skills/embedded-captions/themes/inkwater.json +43 -0
  83. package/assets/.agent/skills/embedded-captions/themes/laser.json +46 -0
  84. package/assets/.agent/skills/embedded-captions/themes/lastpage.json +33 -0
  85. package/assets/.agent/skills/embedded-captions/themes/neonsign.json +53 -0
  86. package/assets/.agent/skills/embedded-captions/themes/nightcity.json +56 -0
  87. package/assets/.agent/skills/embedded-captions/themes/ordnance.json +54 -0
  88. package/assets/.agent/skills/embedded-captions/themes/papercut.json +37 -0
  89. package/assets/.agent/skills/embedded-captions/themes/popup.json +46 -0
  90. package/assets/.agent/skills/embedded-captions/themes/ransom.json +62 -0
  91. package/assets/.agent/skills/embedded-captions/themes/scoreboard.json +54 -0
  92. package/assets/.agent/skills/embedded-captions/themes/spectrum.json +46 -0
  93. package/assets/.agent/skills/embedded-captions/themes/stardust.json +29 -0
  94. package/assets/.agent/skills/embedded-captions/themes/stomp.json +43 -0
  95. package/assets/.agent/skills/embedded-captions/themes/terminal.json +49 -0
  96. package/assets/.agent/skills/embedded-captions/themes/thunder.json +44 -0
  97. package/assets/.agent/skills/embedded-captions/themes/transit.json +44 -0
  98. package/assets/.agent/skills/embedded-captions/themes/vhs.json +47 -0
  99. package/assets/.agent/skills/faceless-explainer/SKILL.md +209 -0
  100. package/assets/.agent/skills/faceless-explainer/references/cut-catalog.md +215 -0
  101. package/assets/.agent/skills/faceless-explainer/references/motion-language.md +156 -0
  102. package/assets/.agent/skills/faceless-explainer/references/story-design.md +248 -0
  103. package/assets/.agent/skills/faceless-explainer/references/visual-design.md +146 -0
  104. package/assets/.agent/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
  105. package/assets/.agent/skills/faceless-explainer/scripts/audio.mjs +253 -0
  106. package/assets/.agent/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
  107. package/assets/.agent/skills/faceless-explainer/scripts/captions.mjs +508 -0
  108. package/assets/.agent/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
  109. package/assets/.agent/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
  110. package/assets/.agent/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
  111. package/assets/.agent/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
  112. package/assets/.agent/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
  113. package/assets/.agent/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
  114. package/assets/.agent/skills/faceless-explainer/scripts/transitions.mjs +320 -0
  115. package/assets/.agent/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
  116. package/assets/.agent/skills/figma/SKILL.md +121 -0
  117. package/assets/.agent/skills/general-video/SKILL.md +143 -0
  118. package/assets/.agent/skills/hyperframes/SKILL.md +164 -0
  119. package/assets/.agent/skills/hyperframes-animation/SKILL.md +84 -0
  120. package/assets/.agent/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  121. package/assets/.agent/skills/hyperframes-animation/adapters/animejs.md +114 -0
  122. package/assets/.agent/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  123. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
  124. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  125. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
  126. package/assets/.agent/skills/hyperframes-animation/adapters/gsap.md +105 -0
  127. package/assets/.agent/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  128. package/assets/.agent/skills/hyperframes-animation/adapters/lottie.md +117 -0
  129. package/assets/.agent/skills/hyperframes-animation/adapters/three.md +131 -0
  130. package/assets/.agent/skills/hyperframes-animation/adapters/typegpu.md +178 -0
  131. package/assets/.agent/skills/hyperframes-animation/adapters/waapi.md +101 -0
  132. package/assets/.agent/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  133. package/assets/.agent/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
  134. package/assets/.agent/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
  135. package/assets/.agent/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
  136. package/assets/.agent/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
  137. package/assets/.agent/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
  138. package/assets/.agent/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
  139. package/assets/.agent/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
  140. package/assets/.agent/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
  141. package/assets/.agent/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
  142. package/assets/.agent/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  143. package/assets/.agent/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  144. package/assets/.agent/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
  145. package/assets/.agent/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  146. package/assets/.agent/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  147. package/assets/.agent/skills/hyperframes-animation/blueprints-index.md +146 -0
  148. package/assets/.agent/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
  149. package/assets/.agent/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
  150. package/assets/.agent/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
  151. package/assets/.agent/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
  152. package/assets/.agent/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
  153. package/assets/.agent/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  154. package/assets/.agent/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  155. package/assets/.agent/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  156. package/assets/.agent/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  157. package/assets/.agent/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  158. package/assets/.agent/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  159. package/assets/.agent/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  160. package/assets/.agent/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  161. package/assets/.agent/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  162. package/assets/.agent/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  163. package/assets/.agent/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  164. package/assets/.agent/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  165. package/assets/.agent/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  166. package/assets/.agent/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
  167. package/assets/.agent/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
  168. package/assets/.agent/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
  169. package/assets/.agent/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
  170. package/assets/.agent/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
  171. package/assets/.agent/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
  172. package/assets/.agent/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
  173. package/assets/.agent/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
  174. package/assets/.agent/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
  175. package/assets/.agent/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
  176. package/assets/.agent/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
  177. package/assets/.agent/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
  178. package/assets/.agent/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
  179. package/assets/.agent/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
  180. package/assets/.agent/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
  181. package/assets/.agent/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
  182. package/assets/.agent/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
  183. package/assets/.agent/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
  184. package/assets/.agent/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
  185. package/assets/.agent/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
  186. package/assets/.agent/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
  187. package/assets/.agent/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
  188. package/assets/.agent/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
  189. package/assets/.agent/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
  190. package/assets/.agent/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
  191. package/assets/.agent/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
  192. package/assets/.agent/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
  193. package/assets/.agent/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
  194. package/assets/.agent/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
  195. package/assets/.agent/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
  196. package/assets/.agent/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
  197. package/assets/.agent/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
  198. package/assets/.agent/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
  199. package/assets/.agent/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
  200. package/assets/.agent/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
  201. package/assets/.agent/skills/hyperframes-animation/rules/viewport-change.md +349 -0
  202. package/assets/.agent/skills/hyperframes-animation/rules-index.md +86 -0
  203. package/assets/.agent/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
  204. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
  205. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
  206. package/assets/.agent/skills/hyperframes-animation/techniques.md +507 -0
  207. package/assets/.agent/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
  208. package/assets/.agent/skills/hyperframes-animation/transitions/catalog.md +127 -0
  209. package/assets/.agent/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  210. package/assets/.agent/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  211. package/assets/.agent/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  212. package/assets/.agent/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  213. package/assets/.agent/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  214. package/assets/.agent/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  215. package/assets/.agent/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  216. package/assets/.agent/skills/hyperframes-animation/transitions/css-light.md +49 -0
  217. package/assets/.agent/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  218. package/assets/.agent/skills/hyperframes-animation/transitions/css-other.md +25 -0
  219. package/assets/.agent/skills/hyperframes-animation/transitions/css-push.md +41 -0
  220. package/assets/.agent/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  221. package/assets/.agent/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  222. package/assets/.agent/skills/hyperframes-animation/transitions/overview.md +153 -0
  223. package/assets/.agent/skills/hyperframes-cli/SKILL.md +113 -0
  224. package/assets/.agent/skills/hyperframes-cli/references/doctor-browser.md +45 -0
  225. package/assets/.agent/skills/hyperframes-cli/references/init-and-scaffold.md +51 -0
  226. package/assets/.agent/skills/hyperframes-cli/references/lambda.md +132 -0
  227. package/assets/.agent/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
  228. package/assets/.agent/skills/hyperframes-cli/references/preview-render.md +164 -0
  229. package/assets/.agent/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
  230. package/assets/.agent/skills/hyperframes-core/SKILL.md +78 -0
  231. package/assets/.agent/skills/hyperframes-core/references/composition-patterns.md +263 -0
  232. package/assets/.agent/skills/hyperframes-core/references/data-attributes.md +70 -0
  233. package/assets/.agent/skills/hyperframes-core/references/determinism-rules.md +68 -0
  234. package/assets/.agent/skills/hyperframes-core/references/full-screen-motion.md +62 -0
  235. package/assets/.agent/skills/hyperframes-core/references/minimal-composition.md +66 -0
  236. package/assets/.agent/skills/hyperframes-core/references/script-format.md +49 -0
  237. package/assets/.agent/skills/hyperframes-core/references/storyboard-format.md +95 -0
  238. package/assets/.agent/skills/hyperframes-core/references/sub-compositions.md +237 -0
  239. package/assets/.agent/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
  240. package/assets/.agent/skills/hyperframes-core/references/tailwind.md +125 -0
  241. package/assets/.agent/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
  242. package/assets/.agent/skills/hyperframes-core/references/variables-and-media.md +90 -0
  243. package/assets/.agent/skills/hyperframes-creative/SKILL.md +70 -0
  244. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  245. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  246. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  247. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  248. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  249. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  250. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  251. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  252. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  253. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  254. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  255. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  256. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  257. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  258. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  259. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  260. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  261. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  262. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  263. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  264. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  265. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
  266. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
  267. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
  268. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  269. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  270. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  271. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  272. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  273. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  274. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  275. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  276. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  277. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  278. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  279. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  280. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  281. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  282. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  283. package/assets/.agent/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  284. package/assets/.agent/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  285. package/assets/.agent/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  286. package/assets/.agent/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  287. package/assets/.agent/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  288. package/assets/.agent/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  289. package/assets/.agent/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  290. package/assets/.agent/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  291. package/assets/.agent/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  292. package/assets/.agent/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  293. package/assets/.agent/skills/hyperframes-creative/references/beat-direction.md +164 -0
  294. package/assets/.agent/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  295. package/assets/.agent/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  296. package/assets/.agent/skills/hyperframes-creative/references/design-adherence.md +19 -0
  297. package/assets/.agent/skills/hyperframes-creative/references/design-picker.md +123 -0
  298. package/assets/.agent/skills/hyperframes-creative/references/design-spec.md +55 -0
  299. package/assets/.agent/skills/hyperframes-creative/references/house-style.md +73 -0
  300. package/assets/.agent/skills/hyperframes-creative/references/motion-principles.md +150 -0
  301. package/assets/.agent/skills/hyperframes-creative/references/narration.md +92 -0
  302. package/assets/.agent/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  303. package/assets/.agent/skills/hyperframes-creative/references/typography.md +218 -0
  304. package/assets/.agent/skills/hyperframes-creative/references/video-composition.md +63 -0
  305. package/assets/.agent/skills/hyperframes-creative/references/visual-styles.md +457 -0
  306. package/assets/.agent/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
  307. package/assets/.agent/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
  308. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
  309. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
  310. package/assets/.agent/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  311. package/assets/.agent/skills/hyperframes-keyframes/SKILL.md +237 -0
  312. package/assets/.agent/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  313. package/assets/.agent/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
  314. package/assets/.agent/skills/hyperframes-media/SKILL.md +97 -0
  315. package/assets/.agent/skills/hyperframes-media/assets/sfx/CREDITS.md +35 -0
  316. package/assets/.agent/skills/hyperframes-media/assets/sfx/manifest.json +97 -0
  317. package/assets/.agent/skills/hyperframes-media/references/bgm.md +72 -0
  318. package/assets/.agent/skills/hyperframes-media/references/captions/authoring.md +159 -0
  319. package/assets/.agent/skills/hyperframes-media/references/captions/motion.md +87 -0
  320. package/assets/.agent/skills/hyperframes-media/references/captions/transcript-handling.md +97 -0
  321. package/assets/.agent/skills/hyperframes-media/references/remove-background.md +143 -0
  322. package/assets/.agent/skills/hyperframes-media/references/requirements.md +29 -0
  323. package/assets/.agent/skills/hyperframes-media/references/sfx.md +42 -0
  324. package/assets/.agent/skills/hyperframes-media/references/transcribe.md +52 -0
  325. package/assets/.agent/skills/hyperframes-media/references/tts-to-captions.md +24 -0
  326. package/assets/.agent/skills/hyperframes-media/references/tts.md +135 -0
  327. package/assets/.agent/skills/hyperframes-media/scripts/audio.mjs +293 -0
  328. package/assets/.agent/skills/hyperframes-media/scripts/heygen-tts.mjs +121 -0
  329. package/assets/.agent/skills/hyperframes-media/scripts/lib/bgm.mjs +235 -0
  330. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.mjs +14 -0
  331. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.test.mjs +41 -0
  332. package/assets/.agent/skills/hyperframes-media/scripts/lib/heygen.mjs +131 -0
  333. package/assets/.agent/skills/hyperframes-media/scripts/lib/sfx.mjs +128 -0
  334. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.mjs +298 -0
  335. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.spawn.test.mjs +97 -0
  336. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.test.mjs +66 -0
  337. package/assets/.agent/skills/hyperframes-media/scripts/lyria-recipe.py +128 -0
  338. package/assets/.agent/skills/hyperframes-media/scripts/wait-bgm.mjs +167 -0
  339. package/assets/.agent/skills/hyperframes-registry/SKILL.md +101 -0
  340. package/assets/.agent/skills/hyperframes-registry/examples/add-block.md +51 -0
  341. package/assets/.agent/skills/hyperframes-registry/examples/add-component.md +73 -0
  342. package/assets/.agent/skills/hyperframes-registry/references/contributing.md +166 -0
  343. package/assets/.agent/skills/hyperframes-registry/references/demo-html-pattern.md +54 -0
  344. package/assets/.agent/skills/hyperframes-registry/references/discovery.md +215 -0
  345. package/assets/.agent/skills/hyperframes-registry/references/install-locations.md +45 -0
  346. package/assets/.agent/skills/hyperframes-registry/references/templates.md +417 -0
  347. package/assets/.agent/skills/hyperframes-registry/references/wiring-blocks.md +61 -0
  348. package/assets/.agent/skills/hyperframes-registry/references/wiring-components.md +39 -0
  349. package/assets/.agent/skills/media-use/SKILL.md +124 -0
  350. package/assets/.agent/skills/media-use/scripts/eval.mjs +369 -0
  351. package/assets/.agent/skills/media-use/scripts/lib/adopt.mjs +112 -0
  352. package/assets/.agent/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
  353. package/assets/.agent/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
  354. package/assets/.agent/skills/media-use/scripts/lib/cache.mjs +114 -0
  355. package/assets/.agent/skills/media-use/scripts/lib/freeze.mjs +26 -0
  356. package/assets/.agent/skills/media-use/scripts/lib/heygen-search.mjs +51 -0
  357. package/assets/.agent/skills/media-use/scripts/lib/image-provider.mjs +44 -0
  358. package/assets/.agent/skills/media-use/scripts/lib/index-gen.mjs +63 -0
  359. package/assets/.agent/skills/media-use/scripts/lib/manifest.mjs +91 -0
  360. package/assets/.agent/skills/media-use/scripts/lib/manifest.test.mjs +293 -0
  361. package/assets/.agent/skills/media-use/scripts/lib/probe.mjs +39 -0
  362. package/assets/.agent/skills/media-use/scripts/lib/probe.test.mjs +31 -0
  363. package/assets/.agent/skills/media-use/scripts/lib/providers.mjs +29 -0
  364. package/assets/.agent/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
  365. package/assets/.agent/skills/media-use/scripts/resolve.mjs +247 -0
  366. package/assets/.agent/skills/media-use/scripts/resolve.test.mjs +247 -0
  367. package/assets/.agent/skills/motion-graphics/SKILL.md +172 -0
  368. package/assets/.agent/skills/motion-graphics/agents/builder.md +40 -0
  369. package/assets/.agent/skills/motion-graphics/agents/director.md +53 -0
  370. package/assets/.agent/skills/motion-graphics/agents/finalize.md +17 -0
  371. package/assets/.agent/skills/motion-graphics/catalog-map.md +40 -0
  372. package/assets/.agent/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  373. package/assets/.agent/skills/motion-graphics/categories/charts/module.md +21 -0
  374. package/assets/.agent/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  375. package/assets/.agent/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  376. package/assets/.agent/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
  377. package/assets/.agent/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
  378. package/assets/.agent/skills/motion-graphics/categories/maps/module.md +61 -0
  379. package/assets/.agent/skills/motion-graphics/categories/news/module.md +56 -0
  380. package/assets/.agent/skills/motion-graphics/categories/stat/module.md +21 -0
  381. package/assets/.agent/skills/motion-graphics/categories/tweet/module.md +16 -0
  382. package/assets/.agent/skills/motion-graphics/categories/webpage/module.md +21 -0
  383. package/assets/.agent/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  384. package/assets/.agent/skills/motion-graphics/grounding/locate.mjs +227 -0
  385. package/assets/.agent/skills/motion-graphics/phases/source/guide.md +21 -0
  386. package/assets/.agent/skills/motion-graphics/references/builder-contract.md +38 -0
  387. package/assets/.agent/skills/motion-graphics/references/motion-vocabulary.md +43 -0
  388. package/assets/.agent/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  389. package/assets/.agent/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  390. package/assets/.agent/skills/music-to-video/SKILL.md +197 -0
  391. package/assets/.agent/skills/music-to-video/references/frame-skeleton.md +100 -0
  392. package/assets/.agent/skills/music-to-video/references/montage.md +58 -0
  393. package/assets/.agent/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
  394. package/assets/.agent/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +154 -0
  395. package/assets/.agent/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +11 -0
  396. package/assets/.agent/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +326 -0
  397. package/assets/.agent/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +120 -0
  398. package/assets/.agent/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +95 -0
  399. package/assets/.agent/skills/music-to-video/references/motion-primitives/braam-punch/index.html +135 -0
  400. package/assets/.agent/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +146 -0
  401. package/assets/.agent/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +103 -0
  402. package/assets/.agent/skills/music-to-video/references/motion-primitives/counting-punch/index.html +154 -0
  403. package/assets/.agent/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +155 -0
  404. package/assets/.agent/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +166 -0
  405. package/assets/.agent/skills/music-to-video/references/motion-primitives/directional-fill/index.html +133 -0
  406. package/assets/.agent/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +137 -0
  407. package/assets/.agent/skills/music-to-video/references/motion-primitives/electric-arc/index.html +144 -0
  408. package/assets/.agent/skills/music-to-video/references/motion-primitives/flash-cut/index.html +132 -0
  409. package/assets/.agent/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +241 -0
  410. package/assets/.agent/skills/music-to-video/references/motion-primitives/hard-cut/index.html +117 -0
  411. package/assets/.agent/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +79 -0
  412. package/assets/.agent/skills/music-to-video/references/motion-primitives/iris-open/index.html +104 -0
  413. package/assets/.agent/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +92 -0
  414. package/assets/.agent/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +131 -0
  415. package/assets/.agent/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +109 -0
  416. package/assets/.agent/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +124 -0
  417. package/assets/.agent/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +108 -0
  418. package/assets/.agent/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +117 -0
  419. package/assets/.agent/skills/music-to-video/references/motion-primitives/palette-flip/index.html +132 -0
  420. package/assets/.agent/skills/music-to-video/references/motion-primitives/particle-burst/index.html +141 -0
  421. package/assets/.agent/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +121 -0
  422. package/assets/.agent/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +160 -0
  423. package/assets/.agent/skills/music-to-video/references/motion-primitives/screen-shake/index.html +113 -0
  424. package/assets/.agent/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +130 -0
  425. package/assets/.agent/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +137 -0
  426. package/assets/.agent/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +117 -0
  427. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
  428. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +313 -0
  429. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +136 -0
  430. package/assets/.agent/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +144 -0
  431. package/assets/.agent/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +122 -0
  432. package/assets/.agent/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +126 -0
  433. package/assets/.agent/skills/music-to-video/references/planning.md +104 -0
  434. package/assets/.agent/skills/music-to-video/references/storyboard-format.md +94 -0
  435. package/assets/.agent/skills/music-to-video/references/template-catalog.md +106 -0
  436. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
  437. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
  438. package/assets/.agent/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
  439. package/assets/.agent/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
  440. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
  441. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
  442. package/assets/.agent/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
  443. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
  444. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
  445. package/assets/.agent/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
  446. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
  447. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
  448. package/assets/.agent/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
  449. package/assets/.agent/skills/music-to-video/scripts/analyze-beatgrid.py +531 -0
  450. package/assets/.agent/skills/music-to-video/scripts/assemble-index.mjs +218 -0
  451. package/assets/.agent/skills/music-to-video/scripts/lib/storyboard.mjs +249 -0
  452. package/assets/.agent/skills/music-to-video/scripts/stage-assets.mjs +58 -0
  453. package/assets/.agent/skills/music-to-video/scripts/validate-plan.mjs +161 -0
  454. package/assets/.agent/skills/music-to-video/sub-agents/frame-worker.md +75 -0
  455. package/assets/.agent/skills/pr-to-video/SKILL.md +240 -0
  456. package/assets/.agent/skills/pr-to-video/references/code-vocabulary.md +111 -0
  457. package/assets/.agent/skills/pr-to-video/references/cut-catalog.md +215 -0
  458. package/assets/.agent/skills/pr-to-video/references/motion-language.md +156 -0
  459. package/assets/.agent/skills/pr-to-video/references/story-design.md +211 -0
  460. package/assets/.agent/skills/pr-to-video/references/visual-design.md +164 -0
  461. package/assets/.agent/skills/pr-to-video/scripts/assemble-index.mjs +570 -0
  462. package/assets/.agent/skills/pr-to-video/scripts/audio.mjs +253 -0
  463. package/assets/.agent/skills/pr-to-video/scripts/build-frame.mjs +536 -0
  464. package/assets/.agent/skills/pr-to-video/scripts/captions.mjs +508 -0
  465. package/assets/.agent/skills/pr-to-video/scripts/fetch-people-avatars.mjs +157 -0
  466. package/assets/.agent/skills/pr-to-video/scripts/fetch-pr.mjs +164 -0
  467. package/assets/.agent/skills/pr-to-video/scripts/ingest.mjs +539 -0
  468. package/assets/.agent/skills/pr-to-video/scripts/lib/assets.mjs +55 -0
  469. package/assets/.agent/skills/pr-to-video/scripts/lib/dimensions.mjs +45 -0
  470. package/assets/.agent/skills/pr-to-video/scripts/lib/storyboard.mjs +249 -0
  471. package/assets/.agent/skills/pr-to-video/scripts/lib/tokens.mjs +204 -0
  472. package/assets/.agent/skills/pr-to-video/scripts/lib/transition-registry.mjs +38 -0
  473. package/assets/.agent/skills/pr-to-video/scripts/lib/transitions.json +71 -0
  474. package/assets/.agent/skills/pr-to-video/scripts/transitions.mjs +320 -0
  475. package/assets/.agent/skills/pr-to-video/sub-agents/frame-worker.md +95 -0
  476. package/assets/.agent/skills/product-launch-video/SKILL.md +208 -0
  477. package/assets/.agent/skills/product-launch-video/references/cut-catalog.md +220 -0
  478. package/assets/.agent/skills/product-launch-video/references/motion-language.md +156 -0
  479. package/assets/.agent/skills/product-launch-video/references/story-design.md +373 -0
  480. package/assets/.agent/skills/product-launch-video/references/visual-design.md +126 -0
  481. package/assets/.agent/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
  482. package/assets/.agent/skills/product-launch-video/scripts/audio.mjs +253 -0
  483. package/assets/.agent/skills/product-launch-video/scripts/build-frame.mjs +536 -0
  484. package/assets/.agent/skills/product-launch-video/scripts/captions.mjs +508 -0
  485. package/assets/.agent/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
  486. package/assets/.agent/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
  487. package/assets/.agent/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
  488. package/assets/.agent/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
  489. package/assets/.agent/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
  490. package/assets/.agent/skills/product-launch-video/scripts/lib/transitions.json +71 -0
  491. package/assets/.agent/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
  492. package/assets/.agent/skills/product-launch-video/scripts/transitions.mjs +320 -0
  493. package/assets/.agent/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
  494. package/assets/.agent/skills/remotion-to-hyperframes/SKILL.md +127 -0
  495. package/assets/.agent/skills/remotion-to-hyperframes/assets/.gitkeep +0 -0
  496. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -0
  497. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  498. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  499. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -0
  500. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  501. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -0
  502. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -0
  503. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -0
  504. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -0
  505. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  506. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  507. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  508. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -0
  509. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  510. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -0
  511. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -0
  512. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -0
  513. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -0
  514. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  515. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -0
  516. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  517. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  518. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -0
  519. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  520. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -0
  521. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -0
  522. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -0
  523. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -0
  524. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -0
  525. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -0
  526. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -0
  527. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -0
  528. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -0
  529. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -0
  530. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  531. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  532. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -0
  533. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -0
  534. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -0
  535. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -0
  536. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -0
  537. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -0
  538. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -0
  539. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -0
  540. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  541. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -0
  542. package/assets/.agent/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  543. package/assets/.agent/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  544. package/assets/.agent/skills/remotion-to-hyperframes/references/eval.md +140 -0
  545. package/assets/.agent/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  546. package/assets/.agent/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  547. package/assets/.agent/skills/remotion-to-hyperframes/references/lottie.md +121 -0
  548. package/assets/.agent/skills/remotion-to-hyperframes/references/media.md +149 -0
  549. package/assets/.agent/skills/remotion-to-hyperframes/references/parameters.md +167 -0
  550. package/assets/.agent/skills/remotion-to-hyperframes/references/sequencing.md +195 -0
  551. package/assets/.agent/skills/remotion-to-hyperframes/references/timing.md +165 -0
  552. package/assets/.agent/skills/remotion-to-hyperframes/references/transitions.md +114 -0
  553. package/assets/.agent/skills/remotion-to-hyperframes/scripts/.gitkeep +0 -0
  554. package/assets/.agent/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -0
  555. package/assets/.agent/skills/remotion-to-hyperframes/scripts/lint_source.py +358 -0
  556. package/assets/.agent/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -0
  557. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -0
  558. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -0
  559. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -0
  560. package/assets/.agent/skills/slideshow/SKILL.md +550 -0
  561. package/assets/.agent/skills/slideshow/references/standalone-harness.md +1020 -0
  562. package/assets/.agent/skills/talking-head-recut/NOTICE.md +39 -0
  563. package/assets/.agent/skills/talking-head-recut/SKILL.md +1191 -0
  564. package/assets/.agent/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
  565. package/assets/.agent/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  566. package/assets/.agent/skills/talking-head-recut/references/frames/clean.html +92 -0
  567. package/assets/.agent/skills/talking-head-recut/references/frames/hairline.html +171 -0
  568. package/assets/.agent/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  569. package/assets/.agent/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  570. package/assets/.agent/skills/talking-head-recut/references/layouts/pip.html +143 -0
  571. package/assets/.agent/skills/talking-head-recut/references/layouts/split.html +121 -0
  572. package/assets/.agent/skills/talking-head-recut/references/layouts/stack.html +109 -0
  573. package/assets/.agent/skills/talking-head-recut/references/styles/academic.html +172 -0
  574. package/assets/.agent/skills/talking-head-recut/references/styles/audit.html +170 -0
  575. package/assets/.agent/skills/talking-head-recut/references/styles/editorial.html +189 -0
  576. package/assets/.agent/skills/talking-head-recut/references/styles/geom.html +181 -0
  577. package/assets/.agent/skills/talking-head-recut/references/styles/minimal.html +130 -0
  578. package/assets/.agent/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  579. package/assets/.agent/skills/talking-head-recut/references/styles/swiss.html +188 -0
  580. package/assets/.agent/skills/talking-head-recut/references/styles/terminal.html +196 -0
  581. package/assets/.agent/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  582. package/assets/.agent/skills/talking-head-recut/references/styles/xhs.html +206 -0
  583. package/assets/.agent/skills/website-to-video/SKILL.md +145 -0
  584. package/assets/.agent/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
  585. package/assets/.agent/skills/website-to-video/assets/sfx/manifest.json +97 -0
  586. package/assets/.agent/skills/website-to-video/references/beat-builder-guide.md +263 -0
  587. package/assets/.agent/skills/website-to-video/references/capabilities.md +713 -0
  588. package/assets/.agent/skills/website-to-video/references/step-0-capture.md +55 -0
  589. package/assets/.agent/skills/website-to-video/references/step-1-design.md +333 -0
  590. package/assets/.agent/skills/website-to-video/references/step-2-brief.md +178 -0
  591. package/assets/.agent/skills/website-to-video/references/step-3-storyboard.md +572 -0
  592. package/assets/.agent/skills/website-to-video/references/step-4-vo.md +230 -0
  593. package/assets/.agent/skills/website-to-video/references/step-5-build.md +483 -0
  594. package/assets/.agent/skills/website-to-video/references/step-6-validate.md +341 -0
  595. package/assets/.agent/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
  596. package/package.json +1 -1
  597. package/src/skills-catalog.js +32 -0
@@ -0,0 +1,115 @@
1
+ # When to bow out: the runtime interop pattern
2
+
3
+ Some Remotion compositions can't be translated cleanly. The skill should
4
+ recognize them upfront and recommend the **runtime interop pattern** from
5
+ [PR #214](https://github.com/heygen-com/hyperframes/pull/214) instead of
6
+ producing broken HTML.
7
+
8
+ ## When to recommend interop
9
+
10
+ Run `scripts/lint_source.py` first. If it returns any blocker, recommend
11
+ interop. The blockers are:
12
+
13
+ | Rule | What it catches |
14
+ | --------------------------- | -------------------------------------------------------------- |
15
+ | `r2hf/use-state` | useState driving animation |
16
+ | `r2hf/use-reducer` | useReducer driving animation |
17
+ | `r2hf/use-effect-deps` | useEffect/useLayoutEffect with non-empty deps (side effects) |
18
+ | `r2hf/async-metadata` | calculateMetadata returns a Promise |
19
+ | `r2hf/third-party-react-ui` | Imports from MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI |
20
+
21
+ Each of these breaks the seek-driven, deterministic-frame model that HF
22
+ relies on. Translating them produces silently-wrong output.
23
+
24
+ ## What the interop pattern actually does
25
+
26
+ Per [PR #214](https://github.com/heygen-com/hyperframes/pull/214), the
27
+ runtime adapter:
28
+
29
+ 1. Bundles the user's Remotion code with React + `@remotion/player` via esbuild.
30
+ 2. Mounts a Remotion `<Player>` inside an HF composition's HTML.
31
+ 3. Pauses the player on mount.
32
+ 4. Registers the player on `window.__hfRemotion` with `seekTo(frame)`,
33
+ `pause()`, `durationInFrames`, `fps`.
34
+ 5. HF's render loop seeks the player frame-by-frame via `seekTo(frame)`.
35
+
36
+ Result: Remotion's React tree renders at HF's deterministic frame ticks.
37
+ Custom hooks, useState, useEffect, MUI components — all work because
38
+ Remotion's React reconciler is doing the rendering.
39
+
40
+ ## The recommendation message
41
+
42
+ When the skill detects a blocker, output something like:
43
+
44
+ > The Remotion source uses `useState` (and others), which can't be
45
+ > translated to HF's seek-driven HTML model. The recommended path is the
46
+ > **runtime interop pattern**: bundle your Remotion code with `@remotion/player`
47
+ > and let HF drive it frame-by-frame.
48
+ >
49
+ > See https://github.com/heygen-com/hyperframes/pull/214 for the full
50
+ > implementation. Quick summary:
51
+ >
52
+ > 1. Bundle `entry.tsx` with esbuild: `npx esbuild entry.tsx --bundle --outfile=dist/bundle.js --format=iife --jsx=automatic`
53
+ > 2. Mount the Player and register on `window.__hfRemotion`:
54
+ >
55
+ > ```tsx
56
+ > const playerRef = useRef<PlayerRef>(null);
57
+ > useEffect(() => {
58
+ > playerRef.current?.pause();
59
+ > window.__hfRemotion = window.__hfRemotion || [];
60
+ > window.__hfRemotion.push({
61
+ > seekTo: (f) => playerRef.current?.seekTo(f),
62
+ > pause: () => playerRef.current?.pause(),
63
+ > durationInFrames,
64
+ > fps,
65
+ > });
66
+ > }, []);
67
+ > ```
68
+ >
69
+ > 3. Reference the bundle from your HF `index.html` and render normally:
70
+ > `<script src="dist/bundle.js"></script>`
71
+
72
+ ## The lint output already includes recommendations
73
+
74
+ `lint_source.py` emits a `recommendation` field per finding. Surface those
75
+ verbatim — they're tuned per blocker rule:
76
+
77
+ ```json
78
+ {
79
+ "rule": "r2hf/use-state",
80
+ "message": "useState detected — Remotion compositions that drive animation via React state are not deterministic frame-capture targets in HyperFrames",
81
+ "recommendation": "Use the runtime interop pattern from PR #214 instead of attempting a translation"
82
+ }
83
+ ```
84
+
85
+ ## When NOT to bow out: warnings only
86
+
87
+ Some patterns produce warnings, not blockers — translate after dropping
88
+ the wrappers:
89
+
90
+ | Rule | Action |
91
+ | ------------------------- | ------------------------------------------------------------------- |
92
+ | `r2hf/lambda-import` | drop the `@remotion/lambda` config; HF runs single-machine, log gap |
93
+ | `r2hf/delay-render` | drop the call; HF handles asset readiness |
94
+ | `r2hf/use-callback` | drop the wrapper, inline the function |
95
+ | `r2hf/use-memo` | drop the wrapper, compute inline |
96
+ | `r2hf/custom-hook` (pure) | inline the hook body if it's a derivation of `useCurrentFrame` |
97
+ | `r2hf/static-file` | replace `staticFile("x")` with `"assets/x"` |
98
+ | `r2hf/interpolate-colors` | translate to GSAP color tween (see [timing.md](timing.md)) |
99
+
100
+ These are documented in T4 cases 05–07.
101
+
102
+ `r2hf/lambda-import` is a warning — not a blocker — because Lambda
103
+ configuration is orthogonal to the rendered composition. Translating an
104
+ otherwise-clean Remotion comp shouldn't fail just because the author also
105
+ configured AWS Lambda for distributed rendering. The skill drops the
106
+ `@remotion/lambda` imports and `renderMediaOnLambda(...)` calls in step 3
107
+ (Generate) and writes a `TRANSLATION_NOTES.md` entry so the user knows to
108
+ set up HF rendering separately.
109
+
110
+ ## When the source has BOTH blockers AND warnings
111
+
112
+ Bow out. The presence of a single blocker means the skill shouldn't
113
+ attempt translation — even if the rest of the composition is clean.
114
+ The user should use interop for the whole thing OR refactor the
115
+ blocker patterns out of their Remotion source first.
@@ -0,0 +1,140 @@
1
+ # Eval: how to validate a translation end-to-end
2
+
3
+ Every translation should be measured. The skill ships three scripts and
4
+ a tiered test corpus that, together, gate translation quality.
5
+
6
+ ## The three scripts
7
+
8
+ | Script | Input | Output |
9
+ | ------------------------ | --------------------------- | ------------------------------------------------------------------- |
10
+ | `scripts/lint_source.py` | Remotion source dir or file | JSON findings + exit code (0 clean, 1 has blockers) |
11
+ | `scripts/render_diff.sh` | two MP4 paths | per-frame SSIM + JSON summary (`mean`, `min`, `p05`, `p95`, `pass`) |
12
+ | `scripts/frame_strip.sh` | two MP4 paths | side-by-side comparison strip PNG for visual debugging |
13
+
14
+ Run them in this order: **lint → render → diff → (if fail) strip**.
15
+
16
+ ## Per-fixture flow
17
+
18
+ ```bash
19
+ # 1. Lint the source — blockers mean stop
20
+ python3 ../../scripts/lint_source.py ./remotion-src/src/
21
+
22
+ # 2. Generate any binary assets (T2+T3 only)
23
+ [ -f setup.sh ] && ./setup.sh
24
+
25
+ # 3. Render Remotion baseline
26
+ cd remotion-src && npm install && npm run render
27
+ # -> remotion-src/out/baseline.mp4
28
+
29
+ # 4. Render HF translation
30
+ cd .. && node ../../../packages/cli/dist/cli.js render hf-src/ --output hf.mp4
31
+ # -> hf.mp4
32
+
33
+ # 5. SSIM diff
34
+ ../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff
35
+ # -> diff/summary.json
36
+
37
+ # 6. If diff fails, generate frame strip for visual inspection
38
+ ../../scripts/frame_strip.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./strip 8
39
+ # -> strip/strip.png
40
+ ```
41
+
42
+ ## Reading `diff/summary.json`
43
+
44
+ ```json
45
+ {
46
+ "frame_count": 90,
47
+ "mean": 0.974,
48
+ "min": 0.972,
49
+ "max": 0.999,
50
+ "p05": 0.972,
51
+ "p95": 0.983,
52
+ "threshold": 0.95,
53
+ "pass": true
54
+ }
55
+ ```
56
+
57
+ | Field | What it tells you |
58
+ | ------------- | --------------------------------------------------------------------------- |
59
+ | `mean` | average SSIM across all frames; the headline number |
60
+ | `min` | worst frame; below threshold means at least one frame is structurally wrong |
61
+ | `p05` / `p95` | 5th / 95th percentile — most frames sit between these |
62
+ | `threshold` | from `R2HF_SSIM_THRESHOLD` env var (default 0.85) |
63
+ | `pass` | whether `mean >= threshold` |
64
+
65
+ ## Validated tier thresholds
66
+
67
+ Calibrated against actual Remotion + HF renders:
68
+
69
+ | Tier | Composition shape | Mean | Threshold | Margin |
70
+ | ---- | ------------------------------------------- | ----- | --------- | ------ |
71
+ | T1 | single-element fade-in | 0.974 | 0.95 | +0.022 |
72
+ | T2 | multi-scene + spring + audio + image | 0.985 | 0.95 | +0.016 |
73
+ | T3 | data-driven, custom subcomponents, count-up | 0.953 | 0.90 | +0.038 |
74
+
75
+ Each fixture's `expected.json` carries:
76
+
77
+ - `ssim_threshold` — the gate for `pass`
78
+ - `validation` — the actual measured numbers from the calibration run
79
+ - `translation_notes` — what's lossy and why
80
+
81
+ ## Critical: encoder config
82
+
83
+ Both Remotion and HF must output the same pixel format for SSIM to be
84
+ meaningful. Remotion's default JPEG output writes `yuvj420p` (full-range);
85
+ HF outputs `yuv420p` (limited-range). The mismatch costs ~0.05 SSIM.
86
+
87
+ Every fixture's `remotion.config.ts` sets:
88
+
89
+ ```ts
90
+ Config.setVideoImageFormat("png");
91
+ Config.setColorSpace("bt709");
92
+ ```
93
+
94
+ If the user's source doesn't have these, add them in the translation
95
+ step — otherwise the diff measures encoder differences, not translation
96
+ fidelity.
97
+
98
+ ## What the noise floor looks like
99
+
100
+ The dominant non-translation noise is **system font fallback divergence**.
101
+ Remotion's bundled Chromium and HF's `chrome-headless-shell` interpret
102
+ `font-weight: 800` differently when there's no real font installed:
103
+
104
+ - Remotion HELLO at 160px: medium-weight stroke
105
+ - HF HELLO at 160px: heavy-weight stroke
106
+
107
+ This costs ~0.025 mean SSIM. Visible in T1's frame strip.
108
+ [fonts.md](fonts.md) covers how to mitigate (use Inter, load explicit
109
+ Google Fonts).
110
+
111
+ ## Threshold rule of thumb
112
+
113
+ Set the threshold ~0.02 below measured `p05`:
114
+
115
+ - Real translation regressions drop mean by 0.05+ — caught.
116
+ - Encoder/font drift between CI runs is bounded at ~0.01 — not caught.
117
+
118
+ If a calibration run's measured mean is far above your initial threshold
119
+ guess, _don't_ tighten the threshold to fit. Leave headroom — fixtures
120
+ re-rendered on different hardware will drift.
121
+
122
+ ## When the diff fails
123
+
124
+ 1. **Look at `frame_strip.sh` output first.** A side-by-side strip at 6–10
125
+ evenly-spaced timestamps shows whether the failure is structural
126
+ (wrong scene durations, missing element) or cosmetic (different font
127
+ weight, slight timing skew).
128
+ 2. **Check `diff/ssim.log`.** Per-frame SSIM tells you _which_ frames
129
+ failed. Cluster of bad frames in the middle of a scene = animation
130
+ problem; bad frames at scene boundaries = sequencing problem.
131
+ 3. **Re-read the relevant reference.** [timing.md](timing.md) for
132
+ spring/easing issues, [sequencing.md](sequencing.md) for scene
133
+ boundary issues, [media.md](media.md) for asset loading issues.
134
+
135
+ ## CI integration
136
+
137
+ The fixtures are not yet wired into CI (`packages/producer/tests/` runs
138
+ inside Docker; the skill corpus needs the same). PR 7 of the stack adds
139
+ the orchestrator that runs all four tiers and emits an aggregated pass
140
+ report. For now, evaluate by hand per fixture.
@@ -0,0 +1,112 @@
1
+ # Font translation
2
+
3
+ Fonts are the dominant non-translation noise floor. Same `font-weight: 800`
4
+ renders perceptibly bolder on HF's `chrome-headless-shell` than on
5
+ Remotion's bundled Chromium when there's no real font installed. Validation
6
+ showed this costs ~0.025 mean SSIM at the noise floor.
7
+
8
+ ## Pattern: `@remotion/google-fonts/<Family>`
9
+
10
+ ```tsx
11
+ import { loadFont } from "@remotion/google-fonts/Inter";
12
+ loadFont("normal", { weights: ["400", "800"] });
13
+ ```
14
+
15
+ Translate to a `<link>` tag in `<head>`:
16
+
17
+ ```html
18
+ <head>
19
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
20
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
21
+ <link
22
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;800&display=swap"
23
+ rel="stylesheet"
24
+ />
25
+ <style>
26
+ body {
27
+ font-family: Inter, sans-serif;
28
+ }
29
+ </style>
30
+ </head>
31
+ ```
32
+
33
+ Pull the family name and weights from the import path and `loadFont`
34
+ arguments. HF's compiler inlines the Google Fonts CSS at render time, so
35
+ you don't pay a network round-trip per render.
36
+
37
+ ## Pattern: local fonts via `@font-face`
38
+
39
+ ```tsx
40
+ import { Font } from "remotion";
41
+
42
+ Font.loadFont("/MyFont.woff2", "MyFont");
43
+ ```
44
+
45
+ Translate to a `@font-face` rule:
46
+
47
+ ```html
48
+ <style>
49
+ @font-face {
50
+ font-family: "MyFont";
51
+ src: url("assets/MyFont.woff2") format("woff2");
52
+ font-weight: 400;
53
+ font-style: normal;
54
+ }
55
+ </style>
56
+ ```
57
+
58
+ Copy the font file into `hf-src/assets/` next to the HTML.
59
+
60
+ ## Pattern: system font fallback (no font load)
61
+
62
+ ```tsx
63
+ <div style={{ fontFamily: "Helvetica, Arial, sans-serif" }}>...</div>
64
+ ```
65
+
66
+ Same string in HF — but be aware: on Linux without a real Helvetica
67
+ installed (typical CI environment), Remotion and HF fall back to
68
+ _different_ sans-serif system fonts because they bundle different
69
+ Chromium versions. This is the noise floor: ~0.025 mean SSIM cost,
70
+ visible as different stroke widths at large font weights (800+).
71
+
72
+ If matching the Remotion render exactly matters for a specific
73
+ fixture, load the same font explicitly — don't rely on system
74
+ fallback.
75
+
76
+ ## When in doubt: use Inter
77
+
78
+ Inter renders identically across Chromium versions and is free.
79
+ Translate any "system sans-serif" Remotion comp to Inter when you
80
+ need to minimize font drift in the validation harness.
81
+
82
+ ## Font loading and `delayRender`
83
+
84
+ Remotion uses `delayRender()` to defer the first frame until fonts
85
+ load. HF's compiler inlines Google Fonts at compile time and waits
86
+ on `@font-face` readiness via the Frame Adapter pattern — the
87
+ `delayRender` call drops in translation. See [media.md](media.md).
88
+
89
+ ## Multi-weight loading
90
+
91
+ When Remotion loads multiple weights:
92
+
93
+ ```tsx
94
+ loadFont("normal", { weights: ["400", "500", "700", "800"] });
95
+ ```
96
+
97
+ Inline all weights in the Google Fonts URL:
98
+
99
+ ```
100
+ ?family=Inter:wght@400;500;700;800&display=swap
101
+ ```
102
+
103
+ Translation rule: enumerate every distinct `font-weight` value
104
+ that appears in the composition's CSS (`font-weight: 800` →
105
+ weight 800 must be loaded). If the Remotion source loads weights
106
+ that aren't actually used, drop them.
107
+
108
+ ## Font subsetting
109
+
110
+ Remotion's `loadFont` doesn't subset; HF's compiler doesn't either
111
+ (yet). Don't try to optimize this in translation — it's lossless to
112
+ keep the same weight set as the Remotion source.
@@ -0,0 +1,136 @@
1
+ # Translation limitations
2
+
3
+ What the skill explicitly cannot translate, separated from the
4
+ blocker-list (which is enforced by `lint_source.py`). These are
5
+ _known_ gaps — surface them to the user as translation notes
6
+ when translating the surrounding composition.
7
+
8
+ ## React patterns the skill refuses
9
+
10
+ See [escape-hatch.md](escape-hatch.md). Any of these triggers
11
+ a bow-out:
12
+
13
+ - `useState`, `useReducer` driving animation
14
+ - `useEffect` / `useLayoutEffect` with non-empty deps (side effects)
15
+ - async `calculateMetadata`
16
+ - Third-party React UI libraries (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI)
17
+
18
+ `@remotion/lambda` is no longer in this list — it's a warning, not a
19
+ blocker, because Lambda config is orthogonal to composition rendering.
20
+ The skill drops the imports and `renderMediaOnLambda(...)` calls and
21
+ writes a `TRANSLATION_NOTES.md` entry. See
22
+ [escape-hatch.md](escape-hatch.md).
23
+
24
+ ## Patterns that work with caveats
25
+
26
+ ### Volume ramps on `<Audio>`
27
+
28
+ Remotion accepts a function for `volume`:
29
+
30
+ ```tsx
31
+ <Audio src={...} volume={(f) => interpolate(f, [0, 30], [0, 1])} />
32
+ ```
33
+
34
+ HF supports static `data-volume` only. Translation: bake the ramp into
35
+ the audio file at translation time using `ffmpeg afade`, OR drop the
36
+ ramp with a note. The dropped-ramp path produces audibly different
37
+ output but visually-identical video, so SSIM passes — just flag it.
38
+
39
+ ### `<Loop>` with stateful children
40
+
41
+ ```tsx
42
+ <Loop durationInFrames={30}>
43
+ <CounterThatIncrementsViaUseRef />
44
+ </Loop>
45
+ ```
46
+
47
+ Loop with `repeat: -1` works for _visual_ repetition. If the looped
48
+ child has cross-iteration state (a counter, a randomness seed), HF
49
+ won't reproduce it identically per iteration. Bow out unless the
50
+ child is fully deterministic per-iteration.
51
+
52
+ ### Remotion's `<Img>` with crossOrigin
53
+
54
+ ```tsx
55
+ <Img src="https://other-domain.com/x.png" crossOrigin="anonymous" />
56
+ ```
57
+
58
+ HF's renderer doesn't enforce CORS the same way Remotion does. Most
59
+ public images work; private images served with auth headers won't.
60
+ If the source uses `crossOrigin="use-credentials"`, the asset needs
61
+ to be downloaded and inlined at translation time.
62
+
63
+ ### Custom `presentation` in `<TransitionSeries>`
64
+
65
+ ```tsx
66
+ const customPresentation: PresentationComponent = ({ children, presentationProgress }) => {
67
+ return <div style={{ filter: `blur(${(1 - presentationProgress) * 20}px)` }}>{children}</div>;
68
+ };
69
+ ```
70
+
71
+ Pure presentations (transform/filter/opacity computed from progress)
72
+ translate to GSAP tweens cleanly. Presentations that read
73
+ `useCurrentFrame()` internally or have stateful children don't —
74
+ bow out.
75
+
76
+ ### Code-split components (`React.lazy`)
77
+
78
+ ```tsx
79
+ const HeavyChart = React.lazy(() => import("./HeavyChart"));
80
+ ```
81
+
82
+ `React.lazy` is async and doesn't fit the deterministic-render model.
83
+ Translate to a regular import; the resulting HF composition will
84
+ just include all the code upfront.
85
+
86
+ ## Patterns that always work
87
+
88
+ - `<AbsoluteFill>` and `<Sequence>` (any nesting)
89
+ - `useCurrentFrame()` derivations: `interpolate`, `spring`, `Easing`,
90
+ `interpolateColors`, manual math
91
+ - `<Audio>`, `<Video>`, `<Img>`, `<IFrame>` with simple props
92
+ - `staticFile()` references
93
+ - Custom React subcomponents that are pure functions of props
94
+ - Custom hooks that are pure derivations of `useCurrentFrame`
95
+ - `@remotion/lottie` (translates to HF's Lottie adapter)
96
+ - `@remotion/google-fonts/<Family>` (translates to `<link>` or `@font-face`)
97
+ - Sync `calculateMetadata` (resolved at translation time)
98
+ - `<TransitionSeries>` with built-in presentations (`fade`, `slide`,
99
+ `wipe`, `clockWipe`, `flip`, `iris`)
100
+
101
+ ## What the skill never tries to translate
102
+
103
+ These are out-of-scope by design:
104
+
105
+ - **HDR rendering** — HF supports HDR but Remotion doesn't, so there's
106
+ nothing to translate from.
107
+ - **Variable frame rate** — both tools assume constant fps.
108
+ - **Multi-composition `<Composition>` lists** — translate one at a
109
+ time. The skill prompts the user to choose which composition.
110
+ - **Remotion Studio props panel** — visual prop editing in HF Studio
111
+ needs different infrastructure; out of scope.
112
+
113
+ ## Reporting gaps to the user
114
+
115
+ When translation produces _something_ but the something has gaps, write
116
+ a `TRANSLATION_NOTES.md` next to the output:
117
+
118
+ ```markdown
119
+ # Translation notes
120
+
121
+ The following Remotion patterns were translated with caveats:
122
+
123
+ - `<Audio volume={(f) => ...}>` (line 15): volume ramp dropped — added
124
+ static `data-volume="0.5"`. To preserve the ramp, run
125
+ `ffmpeg -i music.wav -af "afade=t=in:st=0:d=1" music.faded.wav` and
126
+ swap the source file.
127
+ - `<HeavyChart>` (line 30): translated as inline HTML. The original
128
+ React.lazy boundary was dropped — bundle size unchanged because HF
129
+ serves a single HTML file.
130
+
131
+ If any of these caveats matter, consider the runtime interop pattern
132
+ instead.
133
+ ```
134
+
135
+ This file is also generated by the skill alongside the HF output, not
136
+ held in the corpus.
@@ -0,0 +1,121 @@
1
+ # Lottie translation: @remotion/lottie → HF lottie adapter
2
+
3
+ Lottie animations are a clean translation case — HF has a built-in
4
+ [Lottie adapter](https://github.com/heygen-com/hyperframes/blob/main/packages/core/src/runtime/adapters/lottie.ts)
5
+ that supports both `lottie-web` and `@lottiefiles/dotlottie-web`. The
6
+ adapter auto-discovers animations registered on `window.__hfLottie`
7
+ and seeks them per-frame via `goToAndStop`.
8
+
9
+ ## Pattern
10
+
11
+ ```tsx
12
+ import { Lottie } from "@remotion/lottie";
13
+ import animationData from "./hello.json";
14
+
15
+ export const MyComp = () => (
16
+ <AbsoluteFill>
17
+ <Lottie animationData={animationData} loop={false} />
18
+ </AbsoluteFill>
19
+ );
20
+ ```
21
+
22
+ Translates to:
23
+
24
+ ```html
25
+ <div id="stage" ...>
26
+ <div id="lottie-anim" style="width:100%;height:100%"></div>
27
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/bodymovin/5.12.2/lottie.min.js"></script>
28
+ <script>
29
+ const anim = lottie.loadAnimation({
30
+ container: document.getElementById("lottie-anim"),
31
+ renderer: "svg",
32
+ loop: false,
33
+ autoplay: false,
34
+ path: "assets/hello.json",
35
+ });
36
+ window.__hfLottie = window.__hfLottie || [];
37
+ window.__hfLottie.push(anim);
38
+ </script>
39
+ </div>
40
+ ```
41
+
42
+ Key differences from a typical Lottie embed:
43
+
44
+ - `autoplay: false` — HF drives playback by seeking
45
+ - `loop: false` typically (unless Remotion's `loop={true}`)
46
+ - `window.__hfLottie.push(anim)` is what hooks the animation into HF's
47
+ per-frame seek
48
+
49
+ ## Asset handling
50
+
51
+ Remotion bundles the animation JSON via webpack import. HF needs the JSON
52
+ on disk under `assets/` and references it via path:
53
+
54
+ 1. Copy `hello.json` from the Remotion project into `hf-src/assets/`.
55
+ 2. Reference as `path: "assets/hello.json"` in `loadAnimation`.
56
+
57
+ For dotlottie (binary) format, swap in `@lottiefiles/dotlottie-web`:
58
+
59
+ ```html
60
+ <script src="https://unpkg.com/@lottiefiles/dotlottie-web"></script>
61
+ <canvas id="anim" style="width:100%;height:100%"></canvas>
62
+ <script>
63
+ const player = new DotLottie({
64
+ canvas: document.getElementById("anim"),
65
+ src: "assets/hello.lottie",
66
+ autoplay: false,
67
+ });
68
+ window.__hfLottie = window.__hfLottie || [];
69
+ window.__hfLottie.push(player);
70
+ </script>
71
+ ```
72
+
73
+ The HF adapter handles both player APIs (it duck-types `goToAndStop`
74
+ vs `setCurrentRawFrameValue` / `seek`).
75
+
76
+ ## Multiple Lottie animations
77
+
78
+ Multiple `<Lottie>` instances in one composition work — push each one
79
+ onto `window.__hfLottie` and the adapter will seek all of them in sync:
80
+
81
+ ```js
82
+ window.__hfLottie.push(anim1);
83
+ window.__hfLottie.push(anim2);
84
+ window.__hfLottie.push(anim3);
85
+ ```
86
+
87
+ ## Lottie source isn't actually translation-blocking
88
+
89
+ Lottie animations encode their own deterministic timeline. They're the
90
+ _easiest_ part of a Remotion composition to translate because the
91
+ animation logic is already self-contained — neither Remotion nor HF
92
+ "animate" them, both just seek them. Translation cost is near-zero.
93
+
94
+ ## After Effects → Lottie limitations
95
+
96
+ Lottie supports a subset of After Effects features. Expressions, most
97
+ Effects (drop shadow, color overlay), all blend modes beyond Normal/Add/
98
+ Multiply, luma mattes, and most 3D parameters are not supported. If the
99
+ Remotion composition uses a Lottie file that depends on these, the
100
+ animation will break in BOTH Remotion and HF — this isn't a translation
101
+ problem, it's a Lottie limitation. See
102
+ [airbnb/lottie/after-effects.md](https://github.com/airbnb/lottie/blob/master/after-effects.md)
103
+ for the full supported feature list.
104
+
105
+ ## Loop behavior
106
+
107
+ Remotion's `loop={true}` plays the animation continuously. Translate to
108
+ the player option only after checking the generated frames. The HF
109
+ adapter seeks absolute composition time; it does not add modulo looping
110
+ or playback-rate scaling on top of the player. For exact repeating
111
+ cycles or non-default playback rates, bake the timing into the Lottie
112
+ asset or author an explicit timeline around the Lottie layer and verify
113
+ the rendered output.
114
+
115
+ ## Performance note
116
+
117
+ Per the [Lottie adapter](https://github.com/heygen-com/hyperframes/blob/main/packages/core/src/runtime/adapters/lottie.ts)
118
+ docs: lottie-web's `goToAndStop(time, isFrame=false)` takes time in ms;
119
+ the adapter passes `time * 1000` for precision. This is more accurate
120
+ than passing frame numbers (especially for animations whose internal
121
+ fps doesn't match the HF render fps).