@mevdragon/vidfarm-devcli 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/.agents/skills/embedded-captions/CATALOG.md +93 -0
  2. package/.agents/skills/embedded-captions/SKILL.md +286 -0
  3. package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
  4. package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
  5. package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  6. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  7. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  8. package/.agents/skills/embedded-captions/dna/README.md +148 -0
  9. package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
  10. package/.agents/skills/embedded-captions/dna/cream.json +69 -0
  11. package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
  12. package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
  13. package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
  14. package/.agents/skills/embedded-captions/dna/ink.json +65 -0
  15. package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
  16. package/.agents/skills/embedded-captions/dna/loud.json +75 -0
  17. package/.agents/skills/embedded-captions/dna/neon.json +58 -0
  18. package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
  19. package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
  20. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  21. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  22. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  23. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  24. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  25. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  26. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  27. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  28. package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  29. package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
  30. package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
  31. package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
  32. package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
  33. package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
  34. package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  35. package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
  36. package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
  37. package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
  38. package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
  39. package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  40. package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
  41. package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
  42. package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  43. package/.agents/skills/embedded-captions/references/rail.md +68 -0
  44. package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
  45. package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
  46. package/.agents/skills/embedded-captions/references/test-set.md +66 -0
  47. package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
  48. package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
  49. package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
  50. package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
  51. package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
  52. package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
  53. package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
  54. package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
  55. package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
  56. package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
  57. package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
  58. package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
  59. package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
  60. package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
  61. package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
  62. package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
  63. package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
  64. package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
  65. package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
  66. package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
  67. package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
  68. package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
  69. package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
  70. package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
  71. package/.agents/skills/embedded-captions/themes/README.md +244 -0
  72. package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
  73. package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
  74. package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
  75. package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
  76. package/.agents/skills/embedded-captions/themes/brush.json +74 -0
  77. package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
  78. package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
  79. package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
  80. package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
  81. package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
  82. package/.agents/skills/embedded-captions/themes/laser.json +46 -0
  83. package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
  84. package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
  85. package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
  86. package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
  87. package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
  88. package/.agents/skills/embedded-captions/themes/popup.json +46 -0
  89. package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
  90. package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
  91. package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
  92. package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
  93. package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
  94. package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
  95. package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
  96. package/.agents/skills/embedded-captions/themes/transit.json +44 -0
  97. package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
  98. package/.agents/skills/faceless-explainer/SKILL.md +209 -0
  99. package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
  100. package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
  101. package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
  102. package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
  103. package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
  104. package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
  105. package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
  106. package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
  107. package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
  108. package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
  109. package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
  110. package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
  111. package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
  112. package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
  113. package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
  114. package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
  115. package/.agents/skills/flockposter/LICENSE +17 -0
  116. package/.agents/skills/flockposter/README.md +72 -0
  117. package/.agents/skills/flockposter/SKILL.md +562 -0
  118. package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
  119. package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
  120. package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
  121. package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
  122. package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
  123. package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
  124. package/.agents/skills/general-video/SKILL.md +143 -0
  125. package/.agents/skills/hyperframes/SKILL.md +160 -0
  126. package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
  127. package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
  129. package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
  131. package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
  133. package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
  136. package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
  137. package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
  138. package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  140. package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
  141. package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
  142. package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
  143. package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
  144. package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
  145. package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
  146. package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
  147. package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
  148. package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
  149. package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  150. package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  151. package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
  152. package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  153. package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  154. package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
  155. package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
  156. package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
  157. package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
  158. package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
  159. package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
  160. package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  161. package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  162. package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  163. package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  164. package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  165. package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  166. package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  167. package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  168. package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  169. package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  170. package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  171. package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  172. package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  173. package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
  174. package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
  175. package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
  176. package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
  177. package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
  178. package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
  179. package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
  180. package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
  181. package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
  182. package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
  183. package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
  184. package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
  185. package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
  186. package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
  187. package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
  188. package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
  189. package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
  190. package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
  191. package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
  192. package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
  193. package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
  194. package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
  195. package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
  196. package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
  197. package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
  198. package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
  199. package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
  200. package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
  201. package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
  202. package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
  203. package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
  204. package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
  205. package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
  206. package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
  207. package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
  208. package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
  209. package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
  210. package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
  211. package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
  212. package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
  213. package/.agents/skills/hyperframes-animation/techniques.md +507 -0
  214. package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
  215. package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
  216. package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  217. package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  218. package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  219. package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  220. package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  221. package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  222. package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  223. package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
  224. package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  225. package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
  226. package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
  227. package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  228. package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  229. package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
  230. package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
  231. package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
  232. package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
  233. package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
  234. package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
  235. package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
  236. package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
  237. package/.agents/skills/hyperframes-core/SKILL.md +78 -0
  238. package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
  239. package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
  240. package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
  241. package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
  242. package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
  243. package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
  244. package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
  245. package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
  246. package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
  247. package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
  248. package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
  249. package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
  250. package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
  251. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  252. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  253. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  254. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  255. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  256. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  257. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  258. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  259. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  260. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  261. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  262. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  263. package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  264. package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  265. package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  266. package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  267. package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  268. package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  269. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  270. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  271. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  272. package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
  273. package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
  274. package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
  275. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  276. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  277. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  278. package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  279. package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  280. package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  281. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  282. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  283. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  284. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  285. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  286. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  287. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  288. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  289. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  290. package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  291. package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  292. package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  293. package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  294. package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  295. package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  296. package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  297. package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  298. package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  299. package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  300. package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
  301. package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  302. package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  303. package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
  304. package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
  305. package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
  306. package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
  307. package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
  308. package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
  309. package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  310. package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
  311. package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
  312. package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
  313. package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
  314. package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
  315. package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
  316. package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
  317. package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  318. package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
  319. package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  320. package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
  321. package/.agents/skills/motion-graphics/SKILL.md +172 -0
  322. package/.agents/skills/motion-graphics/agents/builder.md +40 -0
  323. package/.agents/skills/motion-graphics/agents/director.md +53 -0
  324. package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
  325. package/.agents/skills/motion-graphics/catalog-map.md +40 -0
  326. package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  327. package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
  328. package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  329. package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  330. package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
  331. package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
  332. package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
  333. package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
  334. package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
  335. package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
  336. package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
  337. package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  338. package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
  339. package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
  340. package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
  341. package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
  342. package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  343. package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  344. package/.agents/skills/product-launch-video/SKILL.md +208 -0
  345. package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
  346. package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
  347. package/.agents/skills/product-launch-video/references/story-design.md +373 -0
  348. package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
  349. package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
  350. package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
  351. package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
  352. package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
  353. package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
  354. package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
  355. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
  356. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
  357. package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
  358. package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
  359. package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
  360. package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
  361. package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
  362. package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
  363. package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
  364. package/.agents/skills/slideshow/SKILL.md +550 -0
  365. package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
  366. package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
  367. package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
  368. package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
  369. package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  370. package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
  371. package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
  372. package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  373. package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  374. package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
  375. package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
  376. package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
  377. package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
  378. package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
  379. package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
  380. package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
  381. package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
  382. package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  383. package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
  384. package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
  385. package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  386. package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
  387. package/.agents/skills/vidfarm-media/SKILL.md +85 -0
  388. package/.agents/skills/vidfarm-media/references/tts.md +54 -0
  389. package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
  390. package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
  391. package/.agents/skills/website-to-video/SKILL.md +145 -0
  392. package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
  393. package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
  394. package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
  395. package/.agents/skills/website-to-video/references/capabilities.md +713 -0
  396. package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
  397. package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
  398. package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
  399. package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
  400. package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
  401. package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
  402. package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
  403. package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
  404. package/SKILL.director.md +60 -4
  405. package/SKILL.platform.md +7 -2
  406. package/demo/dist/app.css +1 -1
  407. package/demo/dist/app.js +485 -86
  408. package/dist/src/account-pages-legacy.js +9 -14
  409. package/dist/src/app.js +659 -159
  410. package/dist/src/cli.js +618 -17
  411. package/dist/src/composition-runtime.js +286 -6
  412. package/dist/src/devcli/composition-edit.js +176 -8
  413. package/dist/src/devcli/doctor.js +192 -0
  414. package/dist/src/devcli/hyperframes-cli.js +118 -0
  415. package/dist/src/devcli/skills.js +476 -0
  416. package/dist/src/devcli/stills.js +249 -0
  417. package/dist/src/devcli/transitions.js +205 -0
  418. package/dist/src/editor-chat.js +260 -4
  419. package/dist/src/frontend/template-editor-chat.js +6 -5
  420. package/dist/src/homepage.js +2 -48
  421. package/dist/src/hyperframes/composition.js +188 -7
  422. package/dist/src/services/composition-lint.js +199 -0
  423. package/dist/src/services/hyperframes.js +127 -28
  424. package/dist/src/services/serverless-records.js +7 -0
  425. package/dist/src/template-editor-shell.js +87 -48
  426. package/package.json +2 -1
  427. package/public/assets/page-runtime-client-app.js +31 -31
@@ -0,0 +1,273 @@
1
+ ---
2
+ name: multi-phase-camera
3
+ description: Sequential camera zoom with 2-3 distinct phases (pull-back / focus / push) plus continuous micro-drift for organic cinematic feel.
4
+ metadata:
5
+ tags: camera, zoom, phase, drift, scale, cinematic
6
+ ---
7
+
8
+ # Multi-Phase Camera
9
+
10
+ A camera wrapper around the entire scene that progresses through discrete zoom phases at scripted triggers. Continuous sine-driven micro-drift overlays so the camera never feels static between phases. Distinct from a single linear zoom — multi-phase creates "cinematic pacing" (anticipation → reveal → settle).
11
+
12
+ ## How It Works
13
+
14
+ The camera is a single wrapping `<div>` whose `transform: scale() translate(x, y)` is driven by:
15
+
16
+ 1. **Phase scale** — a stepwise scale value that advances through phases at trigger times (e.g. `PHASE_1_SCALE` at t=0 → `PHASE_2_SCALE` at PHASE_2_AT → `PHASE_3_SCALE` at PHASE_3_AT)
17
+ 2. **Drift offset** — a continuous sine-based `translateX` / `translateY` (small amplitude, slow frequency) ADDED to the phase transform
18
+
19
+ Both run inside the GSAP timeline so HF seeks frame-by-frame deterministically.
20
+
21
+ ## HTML
22
+
23
+ ```html
24
+ <div
25
+ class="scene"
26
+ data-composition-id="cam-scene"
27
+ data-start="0"
28
+ data-duration="6"
29
+ data-track-index="0"
30
+ >
31
+ <div class="camera" id="camera">
32
+ <div class="content">
33
+ <div class="hero">{Brand}</div>
34
+ <div class="tagline">{tagline}</div>
35
+ <div class="cta">{ctaText}</div>
36
+ </div>
37
+ </div>
38
+ </div>
39
+ ```
40
+
41
+ ## CSS
42
+
43
+ ```css
44
+ .scene {
45
+ position: relative;
46
+ width: 100%;
47
+ height: 100%;
48
+ overflow: hidden;
49
+ background: {sceneBgColor};
50
+ }
51
+ .camera {
52
+ position: absolute;
53
+ inset: 0;
54
+ display: grid;
55
+ place-items: center;
56
+ transform-origin: 50% 50%;
57
+ will-change: transform;
58
+ }
59
+ .content {
60
+ display: flex;
61
+ flex-direction: column;
62
+ align-items: center;
63
+ gap: 32px;
64
+ text-align: center;
65
+ }
66
+ .hero {
67
+ font-family: {font};
68
+ font-weight: 900;
69
+ font-size: {heroSize};
70
+ letter-spacing: 8px;
71
+ color: {textColor};
72
+ text-transform: uppercase;
73
+ }
74
+ .tagline {
75
+ font-family: {font};
76
+ font-weight: 600;
77
+ font-size: {taglineSize};
78
+ color: {accentColor};
79
+ }
80
+ .cta {
81
+ font-family: {monoFont};
82
+ font-weight: 700;
83
+ font-size: {ctaSize};
84
+ letter-spacing: 6px;
85
+ color: {accentColor};
86
+ text-transform: uppercase;
87
+ }
88
+ ```
89
+
90
+ ## GSAP Timeline
91
+
92
+ ```html
93
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
94
+ <script>
95
+ window.__timelines = window.__timelines || {};
96
+ const tl = gsap.timeline({ paused: true });
97
+
98
+ const camera = document.getElementById("camera");
99
+
100
+ // Three-phase scale plan: pullback → focus → push
101
+ const phase = { scale: PHASE_1_SCALE };
102
+
103
+ // Phase 1 — start pulled back
104
+ // (no tween needed for the initial value; set via the phase object)
105
+
106
+ // Phase 2 — settle to neutral focus
107
+ tl.to(
108
+ phase,
109
+ {
110
+ scale: PHASE_2_SCALE,
111
+ duration: PHASE_2_DUR,
112
+ ease: PHASE_2_EASE,
113
+ },
114
+ PHASE_2_AT,
115
+ );
116
+
117
+ // Phase 3 — slow push-in for the climax
118
+ tl.to(
119
+ phase,
120
+ {
121
+ scale: PHASE_3_SCALE,
122
+ duration: PHASE_3_DUR,
123
+ ease: PHASE_3_EASE,
124
+ },
125
+ PHASE_3_AT,
126
+ );
127
+
128
+ // Drift driver — continuous sine motion overlaid on the phase scale
129
+ const drift = { p: 0 };
130
+
131
+ tl.to(
132
+ drift,
133
+ {
134
+ p: Math.PI * 2 * DRIFT_CYCLES,
135
+ duration: TOTAL_DURATION,
136
+ ease: "none",
137
+ onUpdate: () => {
138
+ const dx = Math.sin(drift.p) * DRIFT_AMP_X;
139
+ const dy = Math.sin(drift.p * DRIFT_FREQ_RATIO) * DRIFT_AMP_Y;
140
+ camera.style.transform = `scale(${phase.scale}) translate(${dx}px, ${dy}px)`;
141
+ },
142
+ },
143
+ 0,
144
+ );
145
+
146
+ // Content reveals (entry beats inside the camera frame)
147
+ tl.from(".hero", { opacity: 0, y: 32, scale: 0.96, duration: 0.9, ease: "power3.out" }, HERO_AT);
148
+ tl.from(".tagline", { opacity: 0, y: 16, duration: 0.7, ease: "power3.out" }, TAGLINE_AT);
149
+ tl.from(".cta", { opacity: 0, y: 8, duration: 0.7, ease: "power3.out" }, CTA_AT);
150
+
151
+ window.__timelines["cam-scene"] = tl;
152
+ </script>
153
+ ```
154
+
155
+ ## How to Choose Values
156
+
157
+ - **PHASE_1_SCALE / PHASE_2_SCALE / PHASE_3_SCALE** — three-step zoom values
158
+ - Range: PHASE_1 0.88–0.96; PHASE_2 0.98–1.02; PHASE_3 1.04–1.15
159
+ - Effects: tighter spread = subtler camera; wider = more cinematic
160
+ - Constraints: at PHASE_1_SCALE < 1, `.scene` MUST have `overflow: hidden` or the inner content's edges leak outside the frame
161
+
162
+ - **PHASE_2_AT / PHASE_2_DUR** — when the focus phase starts and how long it takes
163
+ - Range: PHASE_2_AT 0.3–1.0 s; PHASE_2_DUR 1.0–1.8 s
164
+ - Effects: longer DUR = slower settle, more cinematic
165
+
166
+ - **PHASE_3_AT / PHASE_3_DUR** — when the push phase starts and how long it takes
167
+ - Range: PHASE_3_AT 2.0–4.0 s; PHASE_3_DUR 1.0–2.0 s
168
+ - Constraints: PHASE_3_AT must be ≥ PHASE_2_AT + PHASE_2_DUR (otherwise focus is preempted)
169
+
170
+ - **PHASE_2_EASE / PHASE_3_EASE** — ease per transition
171
+ - Discrete choice: `power2.out`, `power3.out`, `power2.inOut`
172
+ - Selection: cinematic feel; spring/back easing on a camera feels uncomfortable. Each later phase should imply more settling than the previous (longer dur OR more out-easing).
173
+
174
+ - **TOTAL_DURATION** — composition's total runtime (matches `data-duration`)
175
+ - Reference: the drift tween must span the whole composition
176
+
177
+ - **DRIFT_CYCLES** — number of sine cycles across TOTAL_DURATION
178
+ - Range: 1–3
179
+ - Effects: 1 = one slow breath; 3 = noticeably busier
180
+ - Constraints: high values read as mechanical wobble rather than organic drift
181
+
182
+ - **DRIFT_AMP_X / DRIFT_AMP_Y** — peak drift offset in pixels
183
+ - Range: DRIFT_AMP_X 2–8 px; DRIFT_AMP_Y 1–4 px
184
+ - Effects: per-frame imperceptible, visible over time. If drift is a discrete shake, it's too much.
185
+
186
+ - **DRIFT_FREQ_RATIO** — multiplier on the Y-axis sine frequency
187
+ - Range: 1.2–1.5
188
+ - Effects: 1.0 = perfect diagonal (reads mechanical); ~1.3 = organic Lissajous
189
+
190
+ - **HERO_AT / TAGLINE_AT / CTA_AT** — content reveal beats
191
+ - Constraints: HERO_AT should land AFTER PHASE_1 settles via PHASE_2 (otherwise the hero feels like it's flying away while camera is still pulling back)
192
+
193
+ ## Phase Patterns
194
+
195
+ | Pattern | Scale Sequence (Phase 1 → 2 → 3) | Feel | When to use |
196
+ | ------------------- | --------------------------------- | ------------------------------- | ----------------------------- |
197
+ | **Focus-in** | back → neutral → slight push | Approach → settle → slight push | Default product reveal |
198
+ | **Dramatic reveal** | push → neutral → pull | Wide → focus → settle back | Hero shot with breathing room |
199
+ | **Steady push** | neutral → slight push → more push | Gradual forward momentum | Continuous narrative push |
200
+ | **Bookend pull** | neutral → strong push → neutral | Settle → push → release | CTA emphasis then release |
201
+
202
+ ## Variations
203
+
204
+ ### Phase trigger by content beat (not time)
205
+
206
+ If the composition has content phases (e.g. an entry completes, then orbit starts), align the camera tween start time with the content tween's end time rather than using a fixed clock value.
207
+
208
+ ### Camera shake (panic / impact)
209
+
210
+ For a brief shake instead of drift, replace the drift tween with a higher-amplitude, higher-frequency one over a short window:
211
+
212
+ ```js
213
+ tl.to(
214
+ drift,
215
+ {
216
+ p: Math.PI * 2 * SHAKE_CYCLES,
217
+ duration: SHAKE_DUR,
218
+ ease: "none",
219
+ onUpdate: () => {
220
+ const dx = Math.sin(drift.p) * SHAKE_AMP_X;
221
+ const dy = Math.sin(drift.p * SHAKE_FREQ_RATIO) * SHAKE_AMP_Y;
222
+ camera.style.transform = `scale(${phase.scale}) translate(${dx}px, ${dy}px)`;
223
+ },
224
+ },
225
+ SHAKE_AT,
226
+ );
227
+ ```
228
+
229
+ ### Targeted zoom into off-center element
230
+
231
+ If the climax should zoom into a non-centered element, combine scale with counter-translation. Compute the offset so the target ends at viewport center after scale:
232
+
233
+ ```js
234
+ const target = document.querySelector(".cta");
235
+ const tRect = target.getBoundingClientRect();
236
+ const viewportCenter = { x: STAGE_W / 2, y: STAGE_H / 2 };
237
+ const offsetX = (viewportCenter.x - (tRect.left + tRect.width / 2)) / phase.scale;
238
+ const offsetY = (viewportCenter.y - (tRect.top + tRect.height / 2)) / phase.scale;
239
+ // then in onUpdate: translate(offsetX + dx, offsetY + dy)
240
+ ```
241
+
242
+ ## Key Principles
243
+
244
+ - **Drift is imperceptible per-frame, visible over time** — if drift reads as discrete shake, the amplitude is too high
245
+ - **Drift X and Y at slightly different frequencies** — `DRIFT_FREQ_RATIO ≈ 1.3` prevents perfect-diagonal motion, which reads as mechanical
246
+ - **Phase springs softer than UI springs** — `power2.inOut` or `power3.out` for cinematic feel; spring/back easing on a camera feels uncomfortable
247
+ - **Each later phase settles "deeper"** — phase 2 ease should imply more settling than phase 1 (longer duration OR more out-easing). Wakes up → settles → settles deeper
248
+ - **Camera wraps EVERYTHING in the scene** — applying camera per-element creates parallax bugs and breaks "this is one viewpoint"
249
+ - **❗ overflow: hidden on .scene** — phases that pull back (`scale < 1`) reveal edges of the inner content. Without `overflow: hidden`, those edges leak outside the stage frame and HF renders them as visible content
250
+ - **❗ Hero reveal starts AFTER initial pullback ease lands** — if the camera is still pulling back when the headline fades in, the headline feels like it's flying away
251
+
252
+ ## Critical Constraints
253
+
254
+ - **Timeline must be paused**: `gsap.timeline({ paused: true })`
255
+ - **Registry key = `data-composition-id`**
256
+ - **No CSS `transition` on `.camera`** — competes with the GSAP transform
257
+ - **`transform-origin: 50% 50%`** on camera — off-center origin creates unpredictable phase-to-phase drift
258
+ - **`will-change: transform`** on `.camera` — the camera transform updates every frame
259
+ - **`overflow: hidden` on `.scene`** — required when any phase scale < 1
260
+ - **Scene background on `.scene`, not `.camera`** — if background is on camera, scaling/translating it reveals the outer void
261
+
262
+ ## Combinations
263
+
264
+ - [orbit-3d-entry.md](orbit-3d-entry.md) — orbit motion inside a slowly drifting camera
265
+ - [counting-dynamic-scale.md](counting-dynamic-scale.md) — climax phase push synced to counter peak
266
+ - [3d-text-depth-layers.md](3d-text-depth-layers.md) — depth-stacked hero with cinematic camera moves
267
+ - [sine-wave-loop.md](sine-wave-loop.md) — element idle inside the camera (compound motion)
268
+
269
+ ## Pairs with HF skills
270
+
271
+ - `/hyperframes-animation` — multi-phase tween + drift onUpdate
272
+ - `/hyperframes-core` — composition wiring, scene wrapper
273
+ - `/hyperframes-cli` — `hyperframes lint`
@@ -0,0 +1,301 @@
1
+ ---
2
+ name: orbit-3d-entry
3
+ description: Elements flip in from 3D space then settle into continuous elliptical orbit around a focal point.
4
+ metadata:
5
+ tags: orbit, 3d, flip, ellipse, circular, icon, entry, continuous
6
+ ---
7
+
8
+ # Orbit with 3D Entry
9
+
10
+ Elements flip in from 3D space (rotateX + rotateY + translateZ) then transition into a continuous elliptical orbit around a focal point. Distinct from one-shot reveals — the orbit keeps running.
11
+
12
+ ## How It Works
13
+
14
+ Two phases per element:
15
+
16
+ 1. **Entry (per element)**: GSAP tween from hidden 3D orientation (`rotateX`, `rotateY`, negative `z`) to flat (`rotateX: 0, rotateY: 0, z: 0`). Spring-like ease (`back.out`) for the flip-in.
17
+ 2. **Orbit (after entry)**: Continuous trigonometric position around a center point. The element's `x` and `y` translate are driven by `cos(t)` and `sin(t)` at a slow angular speed.
18
+
19
+ The orbit runs **inside the timeline** — not via `requestAnimationFrame` — so HF seek-by-frame stays deterministic.
20
+
21
+ ## HTML
22
+
23
+ ```html
24
+ <div
25
+ class="scene"
26
+ id="orbit-scene"
27
+ data-composition-id="orbit-scene"
28
+ data-start="0"
29
+ data-duration="5"
30
+ data-track-index="0"
31
+ >
32
+ <div class="orbit-stage">
33
+ <div class="orbit-item" data-angle="0">{glyph1}</div>
34
+ <div class="orbit-item" data-angle="60">{glyph2}</div>
35
+ <div class="orbit-item" data-angle="120">{glyph3}</div>
36
+ <div class="orbit-item" data-angle="180">{glyph4}</div>
37
+ <div class="orbit-item" data-angle="240">{glyph5}</div>
38
+ <div class="orbit-item" data-angle="300">{glyph6}</div>
39
+ <div class="orbit-center">{centerLabel}</div>
40
+ </div>
41
+ </div>
42
+ ```
43
+
44
+ ## CSS
45
+
46
+ ```css
47
+ .scene {
48
+ position: relative;
49
+ width: 100%;
50
+ height: 100%;
51
+ display: grid;
52
+ place-items: center;
53
+ background: {sceneBackground};
54
+ perspective: 1800px; /* REQUIRED — without perspective, rotateX/Y flatten */
55
+ }
56
+ .orbit-stage {
57
+ position: relative;
58
+ width: 1000px;
59
+ height: 700px;
60
+ display: grid;
61
+ place-items: center;
62
+ transform-style: preserve-3d;
63
+ }
64
+ .orbit-item {
65
+ position: absolute;
66
+ /* Items live at stage center; GSAP translates them along the orbit. */
67
+ top: 50%;
68
+ left: 50%;
69
+ width: 140px;
70
+ height: 140px;
71
+ display: grid;
72
+ place-items: center;
73
+ background: {accentColor};
74
+ border-radius: 50%;
75
+ font-family: {font};
76
+ font-weight: 900;
77
+ font-size: 64px;
78
+ color: {itemTextColor};
79
+ transform-style: preserve-3d;
80
+ will-change: transform;
81
+ box-shadow: 0 12px 36px {accentShadowColor};
82
+ }
83
+ .orbit-center {
84
+ position: relative;
85
+ z-index: 5;
86
+ font-family: {font};
87
+ font-weight: 900;
88
+ font-size: 96px;
89
+ letter-spacing: 8px;
90
+ color: {centerTextColor};
91
+ text-transform: uppercase;
92
+ }
93
+ ```
94
+
95
+ ## GSAP Timeline
96
+
97
+ ```html
98
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
99
+ <script>
100
+ window.__timelines = window.__timelines || {};
101
+ const tl = gsap.timeline({ paused: true });
102
+
103
+ const items = document.querySelectorAll(".orbit-item");
104
+ // RADIUS_X, RADIUS_Y, ORBIT_DURATION, ENTRY_DUR, STAGGER, FLIP_BACK, CENTER_BACK
105
+ // — all named constants; values per "How to Choose Values" below.
106
+ const RADIUS_Y = RADIUS_X * Y_TO_X_RATIO; // perspective-flattened ellipse
107
+
108
+ items.forEach((el, i) => {
109
+ const initialAngleDeg = Number(el.dataset.angle);
110
+ const initialAngleRad = (initialAngleDeg / 360) * Math.PI * 2;
111
+ const startX = Math.cos(initialAngleRad) * RADIUS_X;
112
+ const startY = Math.sin(initialAngleRad) * RADIUS_Y;
113
+
114
+ // 1) Place at orbital position with opacity 0 — BEFORE any tween fires
115
+ gsap.set(el, {
116
+ xPercent: -50,
117
+ yPercent: -50,
118
+ x: startX,
119
+ y: startY,
120
+ rotateX: ROTATE_X_FROM,
121
+ rotateY: ROTATE_Y_FROM,
122
+ z: Z_FROM,
123
+ opacity: 0,
124
+ scale: SCALE_FROM,
125
+ });
126
+
127
+ // 2) Phase 1 — flip in IN PLACE at orbital position
128
+ tl.to(
129
+ el,
130
+ {
131
+ rotateX: 0,
132
+ rotateY: 0,
133
+ z: 0,
134
+ opacity: 1,
135
+ scale: 1,
136
+ duration: ENTRY_DUR,
137
+ ease: `back.out(${FLIP_BACK})`,
138
+ },
139
+ i * STAGGER,
140
+ );
141
+
142
+ // 3) Phase 2 — continuous orbit driven via a 0→1 progress tween
143
+ const orbitState = { p: 0 };
144
+ tl.to(
145
+ orbitState,
146
+ {
147
+ p: 1,
148
+ duration: ORBIT_DURATION,
149
+ ease: "none",
150
+ onUpdate: () => {
151
+ const angle = initialAngleRad + orbitState.p * Math.PI * 2;
152
+ const x = Math.cos(angle) * RADIUS_X;
153
+ const y = Math.sin(angle) * RADIUS_Y;
154
+ // z-index by orbit Y — see "Center label clearance" in Key Principles
155
+ // for the capped-range form when a center label is present.
156
+ el.style.zIndex = String(Math.round(y + RADIUS_Y));
157
+ el.style.transform = `translate(-50%, -50%) translate(${x}px, ${y}px)`;
158
+ },
159
+ },
160
+ i * STAGGER + ENTRY_DUR,
161
+ );
162
+ });
163
+
164
+ // Center label fades in once a few orbit items have landed
165
+ tl.from(
166
+ ".orbit-center",
167
+ { opacity: 0, scale: 0.6, duration: ENTRY_DUR, ease: `back.out(${CENTER_BACK})` },
168
+ CENTER_FADE_AT,
169
+ );
170
+
171
+ window.__timelines["orbit-scene"] = tl;
172
+ </script>
173
+ ```
174
+
175
+ ## How to Choose Values
176
+
177
+ - **RADIUS_X** — horizontal radius of the orbit ellipse, in px
178
+ - Range: 300–900 px
179
+ - Effects: small radius reads as a tight cluster; large radius spreads the ring across the frame and lets a large center element breathe
180
+ - Constraints: must clear the center element horizontally at every angle — see Key Principles for the `RADIUS_X * min(|cos(θ)|) ≥ L_w + I_w + breathing_room` rule
181
+ - Reference: ../../examples/cta-orbit-collapse.html uses 480
182
+
183
+ - **Y_TO_X_RATIO** — `RADIUS_Y / RADIUS_X`, the orbit's perspective flattening
184
+ - Range: 0.4–0.7
185
+ - Effects: low values read as a near-horizontal disc seen from above; values approaching 1 read as a flat plane facing the camera
186
+ - Constraints: keep < 1 — the orbit should look like a tilted ring, not a frontal halo
187
+ - Reference: ../../examples/cta-orbit-collapse.html uses ≈ 0.58
188
+
189
+ - **ORBIT_DURATION** — seconds for one full revolution
190
+ - Range: 4–25 s (longer for ambient backdrop, shorter for active feature motion)
191
+ - Effects: short durations look frenetic; long durations read as drifting / calm
192
+ - Constraints: must be ≥ the time the orbit is on screen, otherwise the tween ends and items stop
193
+ - Reference: ../../examples/cta-orbit-collapse.html uses ~25 s effective (orbit speed 0.25 rad/s)
194
+
195
+ - **ENTRY_DUR** — per-element flip-in duration
196
+ - Range: 0.4–0.8 s
197
+ - Effects: short feels punchy; long feels stately
198
+ - Constraints: must be ≤ the gap between the first and last element's start so the cascade doesn't overlap to incoherence
199
+ - Reference: ../../examples/cta-orbit-collapse.html uses 0.55 s
200
+
201
+ - **STAGGER** — delay between consecutive element entries
202
+ - Range: 0.06–0.12 s
203
+ - Effects: below ~0.06 s reads as "popcorn"; above ~0.12 s reads as plodding
204
+ - Constraints: total cascade `(n - 1) * STAGGER` should still complete before the next scene phase begins
205
+ - Reference: ../../examples/cta-orbit-collapse.html uses 0.10 s
206
+
207
+ - **FLIP_BACK** — `back.out(<n>)` overshoot for the flip-in
208
+ - Range: 1.2–2.0
209
+ - Effects: low end is a soft arrive; high end snaps with visible overshoot
210
+ - Constraints: pair with a calmer `CENTER_BACK` if both fire close together — competing overshoots cancel each other
211
+ - Reference: ../../examples/cta-orbit-collapse.html uses 1.4
212
+
213
+ - **CENTER_BACK** — `back.out(<n>)` overshoot for the center label fade-in
214
+ - Range: 1.2–1.8
215
+ - Effects: low end keeps the label calm under the busy orbit; high end gives it a small "pop" of arrival
216
+ - Reference: ../../examples/cta-orbit-collapse.html uses 1.4
217
+
218
+ - **CENTER_FADE_AT** — when the center label fades in, in seconds
219
+ - Range: just after the first 2–4 elements have landed
220
+ - Effects: too early competes with the cascade; too late leaves a hole at the center of the orbit
221
+ - Reference: ../../examples/cta-orbit-collapse.html starts the center brand near the front of the scene
222
+
223
+ - **ROTATE_X_FROM / ROTATE_Y_FROM / Z_FROM / SCALE_FROM** — initial 3D orientation
224
+ - Range: rotateX ±60° to ±120°; rotateY ±45° to ±120°; z −200 to −400; scale 0.2–0.6
225
+ - Effects: higher absolute rotation + deeper negative z = more dramatic "card flipping out of depth"; lower = subtle reorientation
226
+ - Constraints: pick a direction consistent with the scene's perspective; mixing positive and negative rotateY across items reads as noise
227
+ - Reference: ../../examples/cta-orbit-collapse.html uses rotateX 90, rotateY −45, z −100, scale 0
228
+
229
+ ## Variations
230
+
231
+ ### Collapse to center
232
+
233
+ To reverse — orbit then collapse inward — interpolate `RADIUS_X` and `RADIUS_Y` to 0 in a final phase by multiplying both radii by a 1→0 driver:
234
+
235
+ ```js
236
+ const collapse = { r: 1 };
237
+ tl.to(
238
+ collapse,
239
+ {
240
+ r: 0,
241
+ duration: COLLAPSE_DUR,
242
+ ease: "power3.inOut",
243
+ onUpdate: () =>
244
+ items.forEach((el) => {
245
+ const a = (Number(el.dataset.angle) / 360) * Math.PI * 2;
246
+ const x = Math.cos(a) * RADIUS_X * collapse.r;
247
+ const y = Math.sin(a) * RADIUS_Y * collapse.r;
248
+ el.style.transform = `translate(-50%,-50%) translate(${x}px,${y}px) scale(${collapse.r})`;
249
+ }),
250
+ },
251
+ COLLAPSE_AT,
252
+ );
253
+ ```
254
+
255
+ ### Tilted orbit plane
256
+
257
+ For a more dramatic 3D orbit, rotate the entire `.orbit-stage` on the X axis:
258
+
259
+ ```css
260
+ .orbit-stage {
261
+ transform: rotateX(25deg);
262
+ }
263
+ ```
264
+
265
+ Items rendered above/below the equator visually arc through the plane.
266
+
267
+ ## Key Principles
268
+
269
+ - **`perspective` on scene root REQUIRED** — without it, rotateX/Y read as 2D scale and the flip-in looks flat
270
+ - **`transform-style: preserve-3d`** on both the stage and each item — preserves the 3D context as items have their own transforms
271
+ - **Stagger entries** — cascade reads as "swarm forming," simultaneous reads as "popcorn." See `STAGGER` in How to Choose Values
272
+ - **Element count 4-12** — fewer feels empty, more crowds the center
273
+ - **❗ Center label clearance — translateZ + capped item z-index** — `z-index` ALONE is unreliable inside a `transform-style: preserve-3d` stage (paint order follows Z position, not stacking-context z-index). For the orbit to NEVER occlude the headline:
274
+ 1. Push the center label forward: `transform: translateZ(220px); z-index: 9999;`
275
+ 2. Cap orbit-item dynamic z-index in `[1, 50]` so bottom-of-orbit items still read as "in front of" top-of-orbit items, but **never above the center label**. e.g.: `el.style.zIndex = String(1 + Math.round((y + RADIUS_Y) / (2 * RADIUS_Y) * 49));`
276
+ 3. **Choose `RADIUS_X` so items also clear the center label HORIZONTALLY at all angles.** If the label's half-width is `L_w` and the item's half-width is `I_w`, then `RADIUS_X` must satisfy `RADIUS_X * min(|cos(θ_minimum)|) ≥ L_w + I_w + breathing_room`. For a 6-item orbit with 60° angular spacing, the worst case is `cos(30°) ≈ 0.866` between items. Scale `RADIUS_X` with the center label's width — a heavier wordmark needs a wider ring.
277
+ - **❗ Center element is the headline** — the orbit is ornamental motion around it. If the orbit dominates the eye, increase center element size or fade orbit items down
278
+
279
+ ## Critical Constraints
280
+
281
+ - **No `requestAnimationFrame`** — orbit must run inside the timeline so HF seeks frame-by-frame deterministically
282
+ - **Timeline must be paused**: `gsap.timeline({ paused: true })`
283
+ - **Registry key = `data-composition-id`**
284
+ - **Each item gets its OWN orbit tween** — don't share one tween with `targets: '.orbit-item'` because each starts at a different `initialAngle`
285
+ - **`will-change: transform`** — many simultaneous orbital transforms benefit from compositor hints
286
+ - **Don't animate `left`/`top`** — use `translate()` (composes with `translate(-50%, -50%)` centering)
287
+ - **❗ Entry must flip IN PLACE at orbital position, NOT at center** — a fromTo whose "from" and "to" both have `x: 0, y: 0` keeps the item at the stage center during phase 1, so it collides with the center label during flip-in (and then snaps to orbit on phase 2 start — a visible teleport).
288
+
289
+ The correct pattern (see GSAP Timeline above) is to `gsap.set()` each item at `(cos(initialAngle)*RADIUS_X, sin(initialAngle)*RADIUS_Y)` with `opacity: 0` BEFORE adding tweens, then have phase 1 animate only rotation/opacity/scale — NOT translate. The item fades in IN PLACE at its orbital starting point, and phase 2 picks up the orbit smoothly from there.
290
+
291
+ ## Combinations
292
+
293
+ - [center-outward-expansion.md](center-outward-expansion.md) — alternative entry pattern (burst, not orbit); also the reversed driver for an orbit-collapse finish
294
+ - [cursor-click-ripple.md](cursor-click-ripple.md) — pairs naturally when the center element is a CTA the user "clicks" to trigger the collapse
295
+ - [sine-wave-loop.md](sine-wave-loop.md) — per-item idle wobble layered on top of the orbit
296
+
297
+ ## Pairs with HF skills
298
+
299
+ - `/hyperframes-animation` — timeline + `onUpdate` API
300
+ - `/hyperframes-core` — composition wiring
301
+ - `/hyperframes-cli` — `hyperframes lint`