freecodego 0.1.7-alpha.2.2 → 0.1.7-rc.2.2

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 (593) hide show
  1. package/README.i18n.yaml +45 -5
  2. package/README.md +4 -4
  3. package/README.zh.md +4 -4
  4. package/cordis.patch.yml +230 -126
  5. package/dist/assets/design/craft/FUTURE_SECTIONS.md +9 -0
  6. package/dist/assets/design/craft/LICENSE +201 -0
  7. package/dist/assets/design/craft/PROVENANCE.md +77 -0
  8. package/dist/assets/design/craft/README.md +106 -0
  9. package/dist/assets/design/craft/accessibility-baseline.md +201 -0
  10. package/dist/assets/design/craft/animation-discipline.md +154 -0
  11. package/dist/assets/design/craft/anti-ai-slop.md +84 -0
  12. package/dist/assets/design/craft/color.md +88 -0
  13. package/dist/assets/design/craft/form-validation.md +221 -0
  14. package/dist/assets/design/craft/laws-of-ux.md +296 -0
  15. package/dist/assets/design/craft/rtl-and-bidi.md +186 -0
  16. package/dist/assets/design/craft/state-coverage.md +134 -0
  17. package/dist/assets/design/craft/typography-hierarchy-editorial.md +182 -0
  18. package/dist/assets/design/craft/typography-hierarchy.md +165 -0
  19. package/dist/assets/design/craft/typography.md +122 -0
  20. package/dist/assets/design/react-bits/SKILL.md +130 -0
  21. package/dist/assets/design/skills/embedded-captions/CATALOG.md +91 -0
  22. package/dist/assets/design/skills/embedded-captions/SKILL.md +260 -0
  23. package/dist/assets/design/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  24. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  25. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  26. package/dist/assets/design/skills/embedded-captions/dna/README.md +148 -0
  27. package/dist/assets/design/skills/embedded-captions/dna/chrome.json +68 -0
  28. package/dist/assets/design/skills/embedded-captions/dna/cream.json +69 -0
  29. package/dist/assets/design/skills/embedded-captions/dna/documentary.json +62 -0
  30. package/dist/assets/design/skills/embedded-captions/dna/editorial.json +70 -0
  31. package/dist/assets/design/skills/embedded-captions/dna/glitch.json +82 -0
  32. package/dist/assets/design/skills/embedded-captions/dna/ink.json +65 -0
  33. package/dist/assets/design/skills/embedded-captions/dna/keynote.json +62 -0
  34. package/dist/assets/design/skills/embedded-captions/dna/loud.json +75 -0
  35. package/dist/assets/design/skills/embedded-captions/dna/neon.json +58 -0
  36. package/dist/assets/design/skills/embedded-captions/dna/velocity.json +89 -0
  37. package/dist/assets/design/skills/embedded-captions/modes/cinematic/README.md +48 -0
  38. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  39. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  40. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  41. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  42. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  43. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  44. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  45. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  46. package/dist/assets/design/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  47. package/dist/assets/design/skills/embedded-captions/modes/standard/_anatomy.md +232 -0
  48. package/dist/assets/design/skills/embedded-captions/modes/standard/_motion.md +192 -0
  49. package/dist/assets/design/skills/embedded-captions/references/aesthetic-principles.md +167 -0
  50. package/dist/assets/design/skills/embedded-captions/references/anti-patterns.md +188 -0
  51. package/dist/assets/design/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  52. package/dist/assets/design/skills/embedded-captions/references/caption-grouping.md +130 -0
  53. package/dist/assets/design/skills/embedded-captions/references/composition-craft.md +522 -0
  54. package/dist/assets/design/skills/embedded-captions/references/direction-catalog.md +138 -0
  55. package/dist/assets/design/skills/embedded-captions/references/example-renders/champion.html +371 -0
  56. package/dist/assets/design/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  57. package/dist/assets/design/skills/embedded-captions/references/failure-modes.md +145 -0
  58. package/dist/assets/design/skills/embedded-captions/references/layout-heuristics.md +238 -0
  59. package/dist/assets/design/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  60. package/dist/assets/design/skills/embedded-captions/references/rail.md +68 -0
  61. package/dist/assets/design/skills/embedded-captions/references/reference-bar.md +47 -0
  62. package/dist/assets/design/skills/embedded-captions/references/scene-types.md +94 -0
  63. package/dist/assets/design/skills/embedded-captions/references/typographic-moves.md +266 -0
  64. package/dist/assets/design/skills/embedded-captions/references/typography-presets.md +63 -0
  65. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/theme.json +11 -0
  66. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/transcript.json +10 -0
  67. package/dist/assets/design/skills/embedded-captions/themes/README.md +243 -0
  68. package/dist/assets/design/skills/embedded-captions/themes/anchor.json +27 -0
  69. package/dist/assets/design/skills/embedded-captions/themes/arcade.json +51 -0
  70. package/dist/assets/design/skills/embedded-captions/themes/aurora.json +41 -0
  71. package/dist/assets/design/skills/embedded-captions/themes/biolume.json +35 -0
  72. package/dist/assets/design/skills/embedded-captions/themes/brush.json +74 -0
  73. package/dist/assets/design/skills/embedded-captions/themes/chalkboard.json +52 -0
  74. package/dist/assets/design/skills/embedded-captions/themes/dossier.json +56 -0
  75. package/dist/assets/design/skills/embedded-captions/themes/graffiti.json +62 -0
  76. package/dist/assets/design/skills/embedded-captions/themes/hologram.json +41 -0
  77. package/dist/assets/design/skills/embedded-captions/themes/inkwater.json +43 -0
  78. package/dist/assets/design/skills/embedded-captions/themes/laser.json +46 -0
  79. package/dist/assets/design/skills/embedded-captions/themes/lastpage.json +33 -0
  80. package/dist/assets/design/skills/embedded-captions/themes/neonsign.json +53 -0
  81. package/dist/assets/design/skills/embedded-captions/themes/ordnance.json +54 -0
  82. package/dist/assets/design/skills/embedded-captions/themes/papercut.json +37 -0
  83. package/dist/assets/design/skills/embedded-captions/themes/popup.json +46 -0
  84. package/dist/assets/design/skills/embedded-captions/themes/ransom.json +62 -0
  85. package/dist/assets/design/skills/embedded-captions/themes/scoreboard.json +54 -0
  86. package/dist/assets/design/skills/embedded-captions/themes/spectrum.json +46 -0
  87. package/dist/assets/design/skills/embedded-captions/themes/stardust.json +29 -0
  88. package/dist/assets/design/skills/embedded-captions/themes/stomp.json +43 -0
  89. package/dist/assets/design/skills/embedded-captions/themes/terminal.json +49 -0
  90. package/dist/assets/design/skills/embedded-captions/themes/thunder.json +44 -0
  91. package/dist/assets/design/skills/embedded-captions/themes/transit.json +44 -0
  92. package/dist/assets/design/skills/embedded-captions/themes/vhs.json +47 -0
  93. package/dist/assets/design/skills/faceless-explainer/SKILL.md +235 -0
  94. package/dist/assets/design/skills/faceless-explainer/references/cut-catalog.md +215 -0
  95. package/dist/assets/design/skills/faceless-explainer/references/motion-language.md +156 -0
  96. package/dist/assets/design/skills/faceless-explainer/references/story-design.md +255 -0
  97. package/dist/assets/design/skills/faceless-explainer/references/visual-design.md +146 -0
  98. package/dist/assets/design/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
  99. package/dist/assets/design/skills/general-video/SKILL.md +164 -0
  100. package/dist/assets/design/skills/general-video/sub-agents/frame-worker.md +34 -0
  101. package/dist/assets/design/skills/hyperframes/SKILL.md +134 -0
  102. package/dist/assets/design/skills/hyperframes/references/brief-contract.md +108 -0
  103. package/dist/assets/design/skills/hyperframes/references/brief-format.md +72 -0
  104. package/dist/assets/design/skills/hyperframes/references/capability-menu.md +47 -0
  105. package/dist/assets/design/skills/hyperframes/references/frame-worker-core.md +80 -0
  106. package/dist/assets/design/skills/hyperframes/references/intent-interview.md +71 -0
  107. package/dist/assets/design/skills/hyperframes/references/pitch-round.md +40 -0
  108. package/dist/assets/design/skills/hyperframes/references/production-loop.md +26 -0
  109. package/dist/assets/design/skills/hyperframes/references/review-loop.md +37 -0
  110. package/dist/assets/design/skills/hyperframes/references/route-briefs.md +11 -0
  111. package/dist/assets/design/skills/hyperframes/references/routes/embedded-captions.md +11 -0
  112. package/dist/assets/design/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
  113. package/dist/assets/design/skills/hyperframes/references/routes/general-video.md +12 -0
  114. package/dist/assets/design/skills/hyperframes/references/routes/motion-graphics.md +11 -0
  115. package/dist/assets/design/skills/hyperframes/references/routes/music-to-video.md +12 -0
  116. package/dist/assets/design/skills/hyperframes/references/routes/pr-to-video.md +28 -0
  117. package/dist/assets/design/skills/hyperframes/references/routes/product-launch-video.md +13 -0
  118. package/dist/assets/design/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
  119. package/dist/assets/design/skills/hyperframes/references/routes/slideshow.md +11 -0
  120. package/dist/assets/design/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
  121. package/dist/assets/design/skills/hyperframes/references/script-format.md +52 -0
  122. package/dist/assets/design/skills/hyperframes/references/skill-lifecycle.md +30 -0
  123. package/dist/assets/design/skills/hyperframes/references/storyboard-format.md +99 -0
  124. package/dist/assets/design/skills/hyperframes/references/subagent-dispatch.md +35 -0
  125. package/dist/assets/design/skills/hyperframes/references/workflow-catalog.md +10 -0
  126. package/dist/assets/design/skills/hyperframes-animation/SKILL.md +86 -0
  127. package/dist/assets/design/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/dist/assets/design/skills/hyperframes-animation/adapters/animejs.md +130 -0
  129. package/dist/assets/design/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
  131. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
  133. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/dist/assets/design/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/dist/assets/design/skills/hyperframes-animation/adapters/lottie.md +130 -0
  136. package/dist/assets/design/skills/hyperframes-animation/adapters/three.md +145 -0
  137. package/dist/assets/design/skills/hyperframes-animation/adapters/typegpu.md +182 -0
  138. package/dist/assets/design/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/dist/assets/design/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
  140. package/dist/assets/design/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
  141. package/dist/assets/design/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  142. package/dist/assets/design/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
  143. package/dist/assets/design/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
  144. package/dist/assets/design/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
  145. package/dist/assets/design/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
  146. package/dist/assets/design/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
  147. package/dist/assets/design/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
  148. package/dist/assets/design/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
  149. package/dist/assets/design/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
  150. package/dist/assets/design/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
  151. package/dist/assets/design/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
  152. package/dist/assets/design/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
  153. package/dist/assets/design/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
  154. package/dist/assets/design/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  155. package/dist/assets/design/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  156. package/dist/assets/design/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
  157. package/dist/assets/design/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
  158. package/dist/assets/design/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  159. package/dist/assets/design/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  160. package/dist/assets/design/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
  161. package/dist/assets/design/skills/hyperframes-animation/blueprints-index.md +202 -0
  162. package/dist/assets/design/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  163. package/dist/assets/design/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  164. package/dist/assets/design/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  165. package/dist/assets/design/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  166. package/dist/assets/design/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  167. package/dist/assets/design/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  168. package/dist/assets/design/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  169. package/dist/assets/design/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  170. package/dist/assets/design/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  171. package/dist/assets/design/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  172. package/dist/assets/design/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  173. package/dist/assets/design/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  174. package/dist/assets/design/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  175. package/dist/assets/design/skills/hyperframes-animation/references/motion-blur.md +133 -0
  176. package/dist/assets/design/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
  177. package/dist/assets/design/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
  178. package/dist/assets/design/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
  179. package/dist/assets/design/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
  180. package/dist/assets/design/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
  181. package/dist/assets/design/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
  182. package/dist/assets/design/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
  183. package/dist/assets/design/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
  184. package/dist/assets/design/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
  185. package/dist/assets/design/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
  186. package/dist/assets/design/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
  187. package/dist/assets/design/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
  188. package/dist/assets/design/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
  189. package/dist/assets/design/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
  190. package/dist/assets/design/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
  191. package/dist/assets/design/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
  192. package/dist/assets/design/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
  193. package/dist/assets/design/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
  194. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
  195. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
  196. package/dist/assets/design/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
  197. package/dist/assets/design/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
  198. package/dist/assets/design/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
  199. package/dist/assets/design/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
  200. package/dist/assets/design/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
  201. package/dist/assets/design/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
  202. package/dist/assets/design/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
  203. package/dist/assets/design/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
  204. package/dist/assets/design/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
  205. package/dist/assets/design/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
  206. package/dist/assets/design/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
  207. package/dist/assets/design/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
  208. package/dist/assets/design/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
  209. package/dist/assets/design/skills/hyperframes-animation/rules/particle-burst.md +149 -0
  210. package/dist/assets/design/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
  211. package/dist/assets/design/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
  212. package/dist/assets/design/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
  213. package/dist/assets/design/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
  214. package/dist/assets/design/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
  215. package/dist/assets/design/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
  216. package/dist/assets/design/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
  217. package/dist/assets/design/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
  218. package/dist/assets/design/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
  219. package/dist/assets/design/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
  220. package/dist/assets/design/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
  221. package/dist/assets/design/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
  222. package/dist/assets/design/skills/hyperframes-animation/rules/viewport-change.md +148 -0
  223. package/dist/assets/design/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
  224. package/dist/assets/design/skills/hyperframes-animation/rules-index.md +113 -0
  225. package/dist/assets/design/skills/hyperframes-animation/techniques.md +507 -0
  226. package/dist/assets/design/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
  227. package/dist/assets/design/skills/hyperframes-animation/transitions/catalog.md +127 -0
  228. package/dist/assets/design/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  229. package/dist/assets/design/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  230. package/dist/assets/design/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  231. package/dist/assets/design/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  232. package/dist/assets/design/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  233. package/dist/assets/design/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  234. package/dist/assets/design/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  235. package/dist/assets/design/skills/hyperframes-animation/transitions/css-light.md +49 -0
  236. package/dist/assets/design/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  237. package/dist/assets/design/skills/hyperframes-animation/transitions/css-other.md +25 -0
  238. package/dist/assets/design/skills/hyperframes-animation/transitions/css-push.md +41 -0
  239. package/dist/assets/design/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  240. package/dist/assets/design/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  241. package/dist/assets/design/skills/hyperframes-animation/transitions/overview.md +153 -0
  242. package/dist/assets/design/skills/hyperframes-audio/SKILL.md +476 -0
  243. package/dist/assets/design/skills/hyperframes-audio/references/attributes.md +138 -0
  244. package/dist/assets/design/skills/hyperframes-audio/references/diagnosis.md +274 -0
  245. package/dist/assets/design/skills/hyperframes-audio/references/fx-registry.md +84 -0
  246. package/dist/assets/design/skills/hyperframes-audio/references/presets.md +216 -0
  247. package/dist/assets/design/skills/hyperframes-core/SKILL.md +97 -0
  248. package/dist/assets/design/skills/hyperframes-core/references/composition-patterns.md +224 -0
  249. package/dist/assets/design/skills/hyperframes-core/references/creator-editing-recipes.md +491 -0
  250. package/dist/assets/design/skills/hyperframes-core/references/data-attributes.md +78 -0
  251. package/dist/assets/design/skills/hyperframes-core/references/determinism-rules.md +53 -0
  252. package/dist/assets/design/skills/hyperframes-core/references/full-screen-motion.md +67 -0
  253. package/dist/assets/design/skills/hyperframes-core/references/minimal-composition.md +69 -0
  254. package/dist/assets/design/skills/hyperframes-core/references/sub-compositions.md +176 -0
  255. package/dist/assets/design/skills/hyperframes-core/references/tailwind.md +104 -0
  256. package/dist/assets/design/skills/hyperframes-core/references/tracks-and-clips.md +87 -0
  257. package/dist/assets/design/skills/hyperframes-core/references/variables-and-media.md +107 -0
  258. package/dist/assets/design/skills/hyperframes-creative/SKILL.md +71 -0
  259. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  260. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  261. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  262. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  263. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  264. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  265. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  266. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  267. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  268. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  269. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  270. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  271. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  272. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  273. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  274. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  275. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  276. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  277. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  278. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  279. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  280. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  281. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  282. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  283. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
  284. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
  285. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
  286. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
  287. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
  288. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
  289. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  290. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  291. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  292. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  293. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  294. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  295. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  296. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  297. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  298. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  299. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  300. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  301. package/dist/assets/design/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  302. package/dist/assets/design/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  303. package/dist/assets/design/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  304. package/dist/assets/design/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  305. package/dist/assets/design/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  306. package/dist/assets/design/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  307. package/dist/assets/design/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  308. package/dist/assets/design/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  309. package/dist/assets/design/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  310. package/dist/assets/design/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  311. package/dist/assets/design/skills/hyperframes-creative/references/beat-direction.md +164 -0
  312. package/dist/assets/design/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  313. package/dist/assets/design/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  314. package/dist/assets/design/skills/hyperframes-creative/references/design-adherence.md +19 -0
  315. package/dist/assets/design/skills/hyperframes-creative/references/design-picker.md +123 -0
  316. package/dist/assets/design/skills/hyperframes-creative/references/design-spec.md +55 -0
  317. package/dist/assets/design/skills/hyperframes-creative/references/house-style.md +73 -0
  318. package/dist/assets/design/skills/hyperframes-creative/references/motion-principles.md +151 -0
  319. package/dist/assets/design/skills/hyperframes-creative/references/narration.md +92 -0
  320. package/dist/assets/design/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  321. package/dist/assets/design/skills/hyperframes-creative/references/story-spine.md +45 -0
  322. package/dist/assets/design/skills/hyperframes-creative/references/storyboard-recipe.md +57 -0
  323. package/dist/assets/design/skills/hyperframes-creative/references/typography.md +218 -0
  324. package/dist/assets/design/skills/hyperframes-creative/references/video-composition.md +63 -0
  325. package/dist/assets/design/skills/hyperframes-creative/references/visual-styles.md +457 -0
  326. package/dist/assets/design/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  327. package/dist/assets/design/skills/hyperframes-keyframes/SKILL.md +262 -0
  328. package/dist/assets/design/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  329. package/dist/assets/design/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
  330. package/dist/assets/design/skills/hyperframes-studio/SKILL.md +75 -0
  331. package/dist/assets/design/skills/motion-graphics/SKILL.md +175 -0
  332. package/dist/assets/design/skills/motion-graphics/agents/builder.md +41 -0
  333. package/dist/assets/design/skills/motion-graphics/agents/director.md +54 -0
  334. package/dist/assets/design/skills/motion-graphics/agents/finalize.md +17 -0
  335. package/dist/assets/design/skills/motion-graphics/catalog-map.md +52 -0
  336. package/dist/assets/design/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  337. package/dist/assets/design/skills/motion-graphics/categories/charts/module.md +22 -0
  338. package/dist/assets/design/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  339. package/dist/assets/design/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  340. package/dist/assets/design/skills/motion-graphics/categories/lower-thirds/module.md +20 -0
  341. package/dist/assets/design/skills/motion-graphics/categories/maps/module.md +61 -0
  342. package/dist/assets/design/skills/motion-graphics/categories/news/module.md +56 -0
  343. package/dist/assets/design/skills/motion-graphics/categories/stat/module.md +21 -0
  344. package/dist/assets/design/skills/motion-graphics/categories/tweet/module.md +16 -0
  345. package/dist/assets/design/skills/motion-graphics/categories/webpage/module.md +30 -0
  346. package/dist/assets/design/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  347. package/dist/assets/design/skills/motion-graphics/phases/source/guide.md +21 -0
  348. package/dist/assets/design/skills/motion-graphics/references/builder-contract.md +38 -0
  349. package/dist/assets/design/skills/motion-graphics/references/motion-vocabulary.md +47 -0
  350. package/dist/assets/design/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  351. package/dist/assets/design/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  352. package/dist/assets/design/skills/music-to-video/SKILL.md +207 -0
  353. package/dist/assets/design/skills/music-to-video/references/frame-skeleton.md +100 -0
  354. package/dist/assets/design/skills/music-to-video/references/montage.md +55 -0
  355. package/dist/assets/design/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
  356. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +53 -0
  357. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +119 -0
  358. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +53 -0
  359. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +294 -0
  360. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +54 -0
  361. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +85 -0
  362. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +53 -0
  363. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +60 -0
  364. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/index.html +53 -0
  365. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +100 -0
  366. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +53 -0
  367. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +111 -0
  368. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +53 -0
  369. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +68 -0
  370. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/index.html +54 -0
  371. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +119 -0
  372. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +53 -0
  373. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +120 -0
  374. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +55 -0
  375. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +131 -0
  376. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/index.html +53 -0
  377. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +103 -0
  378. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +53 -0
  379. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +102 -0
  380. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/index.html +54 -0
  381. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +105 -0
  382. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/index.html +53 -0
  383. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +97 -0
  384. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +54 -0
  385. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +206 -0
  386. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/index.html +53 -0
  387. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +82 -0
  388. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +53 -0
  389. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +44 -0
  390. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/index.html +53 -0
  391. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/scene.html +69 -0
  392. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +53 -0
  393. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +64 -0
  394. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +53 -0
  395. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +96 -0
  396. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +53 -0
  397. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +74 -0
  398. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +53 -0
  399. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +89 -0
  400. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +53 -0
  401. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +73 -0
  402. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +53 -0
  403. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +82 -0
  404. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/index.html +53 -0
  405. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +97 -0
  406. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/index.html +53 -0
  407. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +106 -0
  408. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +53 -0
  409. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +86 -0
  410. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +53 -0
  411. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +130 -0
  412. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/index.html +53 -0
  413. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +78 -0
  414. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +53 -0
  415. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +100 -0
  416. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +53 -0
  417. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +102 -0
  418. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +53 -0
  419. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +82 -0
  420. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
  421. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +53 -0
  422. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +280 -0
  423. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +54 -0
  424. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +106 -0
  425. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +53 -0
  426. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +109 -0
  427. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +53 -0
  428. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +91 -0
  429. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +53 -0
  430. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +96 -0
  431. package/dist/assets/design/skills/music-to-video/references/planning.md +104 -0
  432. package/dist/assets/design/skills/music-to-video/references/storyboard-format.md +94 -0
  433. package/dist/assets/design/skills/music-to-video/references/template-catalog.md +106 -0
  434. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
  435. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
  436. package/dist/assets/design/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
  437. package/dist/assets/design/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
  438. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
  439. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
  440. package/dist/assets/design/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
  441. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
  442. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
  443. package/dist/assets/design/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
  444. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
  445. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
  446. package/dist/assets/design/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
  447. package/dist/assets/design/skills/music-to-video/sub-agents/frame-worker.md +49 -0
  448. package/dist/assets/design/skills/pr-to-video/SKILL.md +271 -0
  449. package/dist/assets/design/skills/pr-to-video/references/code-vocabulary.md +112 -0
  450. package/dist/assets/design/skills/pr-to-video/references/cut-catalog.md +215 -0
  451. package/dist/assets/design/skills/pr-to-video/references/motion-language.md +156 -0
  452. package/dist/assets/design/skills/pr-to-video/references/story-design.md +230 -0
  453. package/dist/assets/design/skills/pr-to-video/references/visual-design.md +164 -0
  454. package/dist/assets/design/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
  455. package/dist/assets/design/skills/product-launch-video/SKILL.md +262 -0
  456. package/dist/assets/design/skills/product-launch-video/references/cut-catalog.md +220 -0
  457. package/dist/assets/design/skills/product-launch-video/references/motion-language.md +156 -0
  458. package/dist/assets/design/skills/product-launch-video/references/story-design.md +508 -0
  459. package/dist/assets/design/skills/product-launch-video/references/visual-design.md +126 -0
  460. package/dist/assets/design/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
  461. package/dist/assets/design/skills/remotion-to-hyperframes/SKILL.md +130 -0
  462. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  463. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  464. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html +31 -0
  465. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +46 -0
  466. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  467. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  468. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  469. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  470. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html +35 -0
  471. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html +35 -0
  472. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html +36 -0
  473. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +75 -0
  474. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  475. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  476. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  477. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  478. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +52 -0
  479. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +99 -0
  480. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +55 -0
  481. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +70 -0
  482. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  483. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  484. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  485. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  486. package/dist/assets/design/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  487. package/dist/assets/design/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  488. package/dist/assets/design/skills/remotion-to-hyperframes/references/eval.md +140 -0
  489. package/dist/assets/design/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  490. package/dist/assets/design/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  491. package/dist/assets/design/skills/remotion-to-hyperframes/references/lottie.md +119 -0
  492. package/dist/assets/design/skills/remotion-to-hyperframes/references/media.md +149 -0
  493. package/dist/assets/design/skills/remotion-to-hyperframes/references/parameters.md +172 -0
  494. package/dist/assets/design/skills/remotion-to-hyperframes/references/sequencing.md +251 -0
  495. package/dist/assets/design/skills/remotion-to-hyperframes/references/timing.md +165 -0
  496. package/dist/assets/design/skills/remotion-to-hyperframes/references/transitions.md +113 -0
  497. package/dist/assets/design/skills/slideshow/SKILL.md +530 -0
  498. package/dist/assets/design/skills/slideshow/references/standalone-harness.md +1017 -0
  499. package/dist/assets/design/skills/talking-head-recut/NOTICE.md +39 -0
  500. package/dist/assets/design/skills/talking-head-recut/SKILL.md +1007 -0
  501. package/dist/assets/design/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  502. package/dist/assets/design/skills/talking-head-recut/references/confirm-visual-direction-with-user-do-this-first.md +211 -0
  503. package/dist/assets/design/skills/talking-head-recut/references/frames/clean.html +92 -0
  504. package/dist/assets/design/skills/talking-head-recut/references/frames/hairline.html +171 -0
  505. package/dist/assets/design/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  506. package/dist/assets/design/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  507. package/dist/assets/design/skills/talking-head-recut/references/layouts/pip.html +143 -0
  508. package/dist/assets/design/skills/talking-head-recut/references/layouts/split.html +121 -0
  509. package/dist/assets/design/skills/talking-head-recut/references/layouts/stack.html +109 -0
  510. package/dist/assets/design/skills/talking-head-recut/references/styles/academic.html +172 -0
  511. package/dist/assets/design/skills/talking-head-recut/references/styles/audit.html +170 -0
  512. package/dist/assets/design/skills/talking-head-recut/references/styles/editorial.html +189 -0
  513. package/dist/assets/design/skills/talking-head-recut/references/styles/geom.html +181 -0
  514. package/dist/assets/design/skills/talking-head-recut/references/styles/minimal.html +130 -0
  515. package/dist/assets/design/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  516. package/dist/assets/design/skills/talking-head-recut/references/styles/swiss.html +188 -0
  517. package/dist/assets/design/skills/talking-head-recut/references/styles/terminal.html +196 -0
  518. package/dist/assets/design/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  519. package/dist/assets/design/skills/talking-head-recut/references/styles/xhs.html +206 -0
  520. package/dist/assets/design/taste/LICENSE +21 -0
  521. package/dist/assets/design/taste/PROVENANCE.md +70 -0
  522. package/dist/assets/design/taste/brandkit/SKILL.md +798 -0
  523. package/dist/assets/design/taste/brutalist-skill/SKILL.md +92 -0
  524. package/dist/assets/design/taste/gpt-tasteskill/SKILL.md +74 -0
  525. package/dist/assets/design/taste/image-to-code-skill/SKILL.md +1228 -0
  526. package/dist/assets/design/taste/imagegen-frontend-mobile/SKILL.md +1465 -0
  527. package/dist/assets/design/taste/imagegen-frontend-web/SKILL.md +987 -0
  528. package/dist/assets/design/taste/minimalist-skill/SKILL.md +85 -0
  529. package/dist/assets/design/taste/output-skill/SKILL.md +49 -0
  530. package/dist/assets/design/taste/redesign-skill/SKILL.md +178 -0
  531. package/dist/assets/design/taste/soft-skill/SKILL.md +98 -0
  532. package/dist/assets/design/taste/stitch-skill/DESIGN.md +121 -0
  533. package/dist/assets/design/taste/stitch-skill/SKILL.md +184 -0
  534. package/dist/assets/design/taste/taste-skill/SKILL.md +1043 -0
  535. package/dist/assets/design/taste/taste-skill/references/4-2-color-calibration.md +24 -0
  536. package/dist/assets/design/taste/taste-skill/references/4-7-layout-discipline-hard-rules-failing-any-of-.md +27 -0
  537. package/dist/assets/design/taste/taste-skill/references/4-8-image-visual-asset-strategy.md +35 -0
  538. package/dist/assets/design/taste/taste-skill/references/4-9-content-density.md +34 -0
  539. package/dist/assets/design/taste/taste-skill/references/9-f-production-test-tells-banned-outright.md +54 -0
  540. package/dist/assets/design/taste/taste-skill-v1/SKILL.md +226 -0
  541. package/dist/assets/engineering/skills-starter/engineering-ui-design/SKILL.md +84 -0
  542. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/SKILL.md +68 -459
  543. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/dispatch-and-review-rules.md +74 -0
  544. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/example-workflow.md +70 -0
  545. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/model-selection.md +40 -0
  546. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/process-diagrams.md +92 -0
  547. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/setup-and-ledger.md +75 -0
  548. package/dist/assets/uiux/LICENSE +21 -0
  549. package/dist/assets/uiux/PROVENANCE.md +110 -0
  550. package/dist/assets/uiux/data/app-interface.csv +33 -0
  551. package/dist/assets/uiux/data/charts.csv +26 -0
  552. package/dist/assets/uiux/data/colors.csv +193 -0
  553. package/dist/assets/uiux/data/icons.csv +106 -0
  554. package/dist/assets/uiux/data/landing.csv +35 -0
  555. package/dist/assets/uiux/data/motion.csv +18 -0
  556. package/dist/assets/uiux/data/products.csv +193 -0
  557. package/dist/assets/uiux/data/react-performance.csv +45 -0
  558. package/dist/assets/uiux/data/stacks/angular.csv +51 -0
  559. package/dist/assets/uiux/data/stacks/astro.csv +54 -0
  560. package/dist/assets/uiux/data/stacks/avalonia.csv +57 -0
  561. package/dist/assets/uiux/data/stacks/flutter.csv +53 -0
  562. package/dist/assets/uiux/data/stacks/html-tailwind.csv +60 -0
  563. package/dist/assets/uiux/data/stacks/javafx.csv +76 -0
  564. package/dist/assets/uiux/data/stacks/jetpack-compose.csv +53 -0
  565. package/dist/assets/uiux/data/stacks/laravel.csv +51 -0
  566. package/dist/assets/uiux/data/stacks/nextjs.csv +62 -0
  567. package/dist/assets/uiux/data/stacks/nuxt-ui.csv +77 -0
  568. package/dist/assets/uiux/data/stacks/nuxtjs.csv +68 -0
  569. package/dist/assets/uiux/data/stacks/react-native.csv +52 -0
  570. package/dist/assets/uiux/data/stacks/react.csv +67 -0
  571. package/dist/assets/uiux/data/stacks/shadcn.csv +69 -0
  572. package/dist/assets/uiux/data/stacks/svelte.csv +56 -0
  573. package/dist/assets/uiux/data/stacks/swiftui.csv +51 -0
  574. package/dist/assets/uiux/data/stacks/threejs.csv +54 -0
  575. package/dist/assets/uiux/data/stacks/uno.csv +60 -0
  576. package/dist/assets/uiux/data/stacks/uwp.csv +56 -0
  577. package/dist/assets/uiux/data/stacks/vue.csv +50 -0
  578. package/dist/assets/uiux/data/stacks/winui.csv +60 -0
  579. package/dist/assets/uiux/data/stacks/wpf.csv +57 -0
  580. package/dist/assets/uiux/data/styles.csv +89 -0
  581. package/dist/assets/uiux/data/typography.csv +75 -0
  582. package/dist/assets/uiux/data/ui-reasoning.csv +193 -0
  583. package/dist/assets/uiux/data/ux-guidelines.csv +120 -0
  584. package/dist/auto-review.js +38 -4
  585. package/dist/bootstrap.js +65061 -56810
  586. package/dist/client.cjs +4668 -3598
  587. package/dist/subagent-claude-code.js +493 -0
  588. package/dist/subagent-codex.js +1068 -0
  589. package/dist/tool-session-query.js +993 -0
  590. package/package.json +81 -74
  591. package/dist/agent-team.js +0 -16235
  592. package/dist/schedule.js +0 -15898
  593. package/dist/tool-agent-team.js +0 -16766
@@ -0,0 +1,1007 @@
1
+ ---
2
+ name: talking-head-recut
3
+ description: Package an existing talking-head / interview / podcast video with timed, designed GRAPHIC OVERLAY cards — kinetic titles, lower-thirds, data callouts, quotes, side panels, picture-in-picture — synced to the transcript, on a 16:9 / 9:16 / 4:5 canvas of your choice; the clip plays untouched underneath. Trigger on "graphic overlays", "on-screen graphics", "package / dress up my video". Not plain subtitles (/embedded-captions). Unclear → /hyperframes.
4
+ ---
5
+
6
+ > **First, keep this skill fresh — confirm with the user before running:** `this pack is bundled offline and is not updated at runtime talking-head-recut`. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them.
7
+
8
+ # Talking Head Recut
9
+
10
+ Talking Head Recut takes a local video that **plays in full** and layers a sequence of
11
+ timed, designed **graphic cards** onto it — titles, lower-thirds, data callouts,
12
+ quotes, side panels, picture-in-picture — synced to what's being said. The agent
13
+ designs the cards (timing + content) and **writes each card's HTML directly in the
14
+ conversation**, then assembles a single composition HTML and renders it to MP4 via
15
+ `hyperframes`. There is no fixed archetype list and no prescribed card structure —
16
+ the overlays emerge from what the transcript actually says.
17
+
18
+ > **The front door is `/hyperframes`.** This skill packages an **existing talking-head clip** with **designed graphic cards** (titles, lower-thirds, data callouts, quotes, side panels, PiP) — not plain captions (the spoken words as text). **The clip plays untouched.** Any other intent — plain subtitles, a standalone graphic, a from-scratch video — or any uncertainty → read `/hyperframes` first: the intent layer owns every route decision.
19
+
20
+ > **Graphic-packaging sibling of `embedded-captions`.** Captions add the _spoken words_
21
+ > as a readable subtitle; this adds _designed graphics_ on top of the playing video.
22
+ > Plain subtitles → `embedded-captions`. Build a video from scratch → the creation
23
+ > workflows (`product-launch-video` / `faceless-explainer` / …).
24
+
25
+ Routed through `/hyperframes`, the intent layer confirms only the input (which clip) and **announces** the render-strategy questions as deferred asks — aspect, layout, style group, and card count stay at Step 7, where the probed footage and transcript ground the recommendations; the layer's run-shape questions don't apply. A `BRIEF.md`, when present, carries the confirmed input and any user notes — read it first.
26
+
27
+ Inspectable intermediate files in the work directory:
28
+
29
+ - `metadata.json` — duration / width / height / fps
30
+ - `audio.mp3` — extracted audio
31
+ - `transcript.json` — a flat **word array** `[{ text, start, end }, …]` (Whisper; no `segments`, no `words` wrapper)
32
+ - `storyboard.json` — lightweight card outline (the agent's plan)
33
+ - `public/cards/card-XX.html` — one HTML fragment per card
34
+ - `public/index.html` — final assembled composition
35
+ - `output.mp4` — rendered video
36
+
37
+ ## CLI Resolution
38
+
39
+ ```bash
40
+ # hyperframes — transcription (local Whisper) + rendering the assembled HTML to MP4
41
+ ```
42
+
43
+ This skill runs entirely on the **hyperframes** CLI plus system `ffmpeg` / `ffprobe`.
44
+ Transcription is local **Whisper** via `hyperframes transcribe` — no third-party
45
+ service, API key, or rate-limited proxy.
46
+
47
+ ## Workflow
48
+
49
+ ### 1. Check Environment
50
+
51
+ ```bash
52
+ the design engine self-check in the Design settings page # ffmpeg, headless browser, render deps
53
+ # confirm bundled assets:
54
+ ls "<SKILL_DIR>/assets/fonts" "<SKILL_DIR>/assets/vendor/gsap.min.js"
55
+ ```
56
+
57
+ Required:
58
+
59
+ - `ffmpeg` / `ffprobe` (system)
60
+ - `<SKILL_DIR>/assets/fonts/*.woff2`, `<SKILL_DIR>/assets/vendor/gsap.min.js` (bundled inside this skill, staged to work dir in Step 9)
61
+
62
+ Transcription needs no key — `hyperframes transcribe` runs Whisper locally (Step 4).
63
+
64
+ Strongly recommended on macOS for `freecodego_design_render`:
65
+
66
+ ```bash
67
+ export PRODUCER_BROWSER_GPU_MODE=hardware
68
+ ```
69
+
70
+ ### 2. Create a Work Directory
71
+
72
+ All artifacts live under `videos/<project-name>/` — the same convention as the other
73
+ video workflows (`product-launch-video` / `faceless-explainer` / `pr-to-video`). Keep
74
+ the cwd at the workspace root; everything below writes under this one subdirectory.
75
+
76
+ ```bash
77
+ VIDEO_PATH="/absolute/path/input.mp4"
78
+ WORK_DIR="videos/$(basename "$VIDEO_PATH" | sed 's/\.[^.]*$//')"
79
+ mkdir -p "$WORK_DIR"
80
+ ```
81
+
82
+ ### 3. Extract Audio and Metadata
83
+
84
+ ```bash
85
+ # metadata — duration / width / height / fps
86
+ ffprobe -v error -select_streams v:0 \
87
+ -show_entries stream=width,height,r_frame_rate \
88
+ -show_entries format=duration -of json "$VIDEO_PATH" > "$WORK_DIR/metadata.json"
89
+ # audio
90
+ ffmpeg -y -i "$VIDEO_PATH" -vn -acodec libmp3lame -q:a 2 "$WORK_DIR/audio.mp3"
91
+ ```
92
+
93
+ Outputs: `metadata.json` (read `width`/`height`/`duration`; fps = the `r_frame_rate`
94
+ fraction evaluated, e.g. `30000/1001 → 29.97`) + `audio.mp3`.
95
+
96
+ ### 4. Transcribe
97
+
98
+ ```bash
99
+ ```
100
+
101
+ Local **Whisper** — no API key, no proxy, no rate limit. Writes a word-level
102
+ `transcript.json` into the work dir (word `text` + `start` / `end` timestamps).
103
+ Read it for the word / sentence timings that drive card timing in Step 6; group
104
+ words into sentences yourself at punctuation / pauses if you need segment-level
105
+ chunks.
106
+
107
+ **Clamp to media duration.** Whisper can return the final word's `end` a hair past the
108
+ actual clip length — clamp every card `endSec` and `composition.durationSeconds` to the
109
+ `metadata.json` duration, or the render will show a black tail past the video.
110
+
111
+ ### 5. Correct Transcript
112
+
113
+ `transcript.json` is a **flat array of word objects** — `[{ "text": "...", "start": s, "end": s }, …]` (no `segments` array, no `words` wrapper; the per-word key is **`text`**). Read it and fix obvious ASR errors:
114
+
115
+ - Homophones, product names, technical terms, punctuation
116
+ - Edit a word's `text` in place; **preserve its `start` / `end`** timestamps
117
+ - There is no pre-grouped `segments` array — **group words into sentences yourself** (split at terminal punctuation / pauses) when you need segment-level chunks for card timing
118
+
119
+ ### 6. Draft a Lightweight Storyboard (in chat)
120
+
121
+ **No CLI involved.** Read `transcript.json` + `metadata.json` and design
122
+ cards directly. `storyboard.json` is an agent-internal planning artifact
123
+ — no CLI command consumes it; it exists so you can think clearly
124
+ about timing and content before writing each card's HTML. Keep the
125
+ shape consistent with the example below so the same outline can drive
126
+ the composition you author in Step 9:
127
+
128
+ ```json
129
+ {
130
+ "schemaVersion": 3,
131
+ "composition": {
132
+ "fps": 30,
133
+ "width": 1080,
134
+ "height": 1920,
135
+ "durationSeconds": 121.2,
136
+ "layout": "portrait",
137
+ "themeId": "noir",
138
+ "seed": 42
139
+ },
140
+ "videoTrack": {
141
+ "sourcePath": "input-video.mp4",
142
+ "startSec": 0,
143
+ "endSec": 121.2,
144
+ "bounds": { "x": 0, "y": 0, "width": 1080, "height": 1920 }
145
+ },
146
+ "subtitles": { "enabled": false },
147
+ "cards": [
148
+ {
149
+ "id": "card-01",
150
+ "intent": "Hook with the speaker's anxious midnight question",
151
+ "startSec": 0.5,
152
+ "endSec": 13.0,
153
+ "accentIndex": 0,
154
+ "zone": "fullscreen",
155
+ "contentHints": {
156
+ "kicker": "AN HONEST QUESTION",
157
+ "title": "The soul-searching question at 11 PM",
158
+ "detail": "Client's 60-second voice message: 'If the RMB appreciates, does that mean my USD policy is a terrible loss?'"
159
+ }
160
+ }
161
+ ]
162
+ }
163
+ ```
164
+
165
+ **Required Card fields:**
166
+
167
+ | field | type | purpose |
168
+ | ----------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
169
+ | `id` | string | stable id used in card HTML & GSAP selectors |
170
+ | `intent` | string | natural-language description; fed to card synthesis |
171
+ | `startSec` / `endSec` | number | times in seconds (endSec > startSec) |
172
+ | `accentIndex` | 0 \| 1 \| 2 \| 3 \| 4 | which of the 5 theme accent colors this card pulls |
173
+ | `zone` | enum (see below) | where on the canvas the card lives |
174
+ | `contentHints` | object | free-form bag; agent puts kicker/title/detail/data/quote here |
175
+ | `archetype` (optional) | string | free-form label you may attach to remember a card's pattern; absent = free-form, which is the default |
176
+ | `transition` (optional) | enum: `cut` \| `fade` \| `slide` \| `wipe` | declarative card-to-card transition |
177
+
178
+ **Five `zone` values:**
179
+
180
+ | zone | resolved bounds | when to use |
181
+ | ----------------- | ---------------------------------------------- | --------------------------------------- |
182
+ | `fullscreen` | covers whole canvas | hero moments, big numbers, mantras |
183
+ | `whiteboard-area` | inset 40px margin (or 45% of portrait height) | dense data / annotated content |
184
+ | `lower-third` | bottom 30% band | annotation over visible video |
185
+ | `side-panel` | right 42% (landscape) or bottom 40% (portrait) | data side, video other side |
186
+ | `video-overlay` | full canvas, expects mostly-transparent card | annotation overlays on full-bleed video |
187
+
188
+ When you assemble the composition in Step 9, resolve each card's `zone`
189
+ into pixel bounds on the card-host wrapper following the table above.
190
+ Video bounds are set **once** at composition level (`videoTrack.bounds`);
191
+ to make video appear to "move between cards", author GSAP tweens against
192
+ `#video-wrap` in the composition's `<script>` (see Step 9).
193
+
194
+ **No prescribed card roles, no prescribed narrative arc.** Cards emerge
195
+ from what the video actually says — could be all quotes or all data,
196
+ could open with a number or with a story. Let the transcript drive the
197
+ rhythm.
198
+
199
+ **How many takeaways? — auto-infer from duration + density.** No fixed
200
+ upper limit. Pick a **base pace** from the video duration, then adjust
201
+ by **information density**. Only **floor is fixed: minimum 5 cards** so
202
+ even short videos have rhythm.
203
+
204
+ **Step 1 — base pace by duration** (the natural sec/card for medium density):
205
+
206
+ | video duration | base pace (sec per card) | rationale |
207
+ | ------------------ | ------------------------ | ------------------------------------------- |
208
+ | < 60s (short reel) | **6–8s** | viewers expect fast cuts in short-form |
209
+ | 60s – 3 min | **8–12s** | normal social pace |
210
+ | 3 – 10 min | **12–20s** | give breathing room; each card carries more |
211
+ | 10 – 30 min | **20–35s** | long-form lecture / interview rhythm |
212
+ | > 30 min | **30–60s** | episodic, near-chapter feel |
213
+
214
+ **Step 2 — density multiplier** (multiplies the base pace):
215
+
216
+ | signal in the transcript | multiplier | effect |
217
+ | --------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------------------ |
218
+ | **High density** — many numbers, distinct claims, staccato pacing, list-like enumeration, every 1–2 sentences is a new idea | **× 0.7** | cuts faster, more cards |
219
+ | **Medium density** — mixed flow with both data and narrative | **× 1.0** | base pace |
220
+ | **Low density** — one extended story, repeated reframing, slow reflective pacing, single argument unfolding | **× 1.5** | cuts slower, fewer cards |
221
+
222
+ **Step 3 — compute:**
223
+
224
+ ```
225
+ secPerCard = basePace × densityMultiplier
226
+ cardCount = max(5, round(videoDurationSec / secPerCard))
227
+ ```
228
+
229
+ Examples (notice — **no upper clamp**; long videos naturally produce more cards):
230
+
231
+ - **30s reel, single punchline (low density)** → 7 × 1.5 = 10.5s/card → round(30/10.5)=3 → floor to **5** cards
232
+ - **60s reflective monologue (low density)** → 10 × 1.5 = 15s/card → **4** → floor to **5** cards
233
+ - **121s talking-head with rich data (high density)** → 10 × 0.7 = 7s/card → **17** cards
234
+ - **5 min interview, mixed density** → 16 × 1.0 = 16s/card → **19** cards
235
+ - **10 min deep-dive, high density** → 16 × 0.7 = 11s/card → **55** cards
236
+ - **30 min lecture, medium density** → 28 × 1.0 = 28s/card → **64** cards
237
+ - **1 hr podcast, low density** → 45 × 1.5 = 67.5s/card → **53** cards
238
+
239
+ When a card holds longer than ~15s, plan for a richer card (data block,
240
+ multi-step reveal, several sub-points unfolding with staggered
241
+ animations) — a static one-liner gets boring past 8s. For long pieces
242
+ where many cards exceed 30s, consider **chunking the timeline into
243
+ sub-compositions** (one .html per chapter, mounted with
244
+ `data-composition-src`) so the GSAP timeline per file stays manageable
245
+ — see the `timeline_track_too_dense` HyperFrames lint warning.
246
+
247
+ `content` can be a plain string ("Title: annualized 5.69%\nNotes: ...") or any JSON
248
+ shape that captures the data. The agent decides the shape per card.
249
+
250
+ **Optional outro.** This skill ships **no fixed brand outro**. If the user wants a closing card, design a neutral one yourself (wordmark + one-line tagline, ~1.5-2s, fade in -> short hold -> fade out), append it to `cards[]`, and extend `composition.durationSeconds` to its `endSec`. Otherwise end on the last content card.
251
+
252
+ ### 7. Decide Render Strategy
253
+
254
+ #### Confirm Visual Direction with User (DO THIS FIRST)
255
+
256
+ This section is in [`references/confirm-visual-direction-with-user-do-this-first.md`](references/confirm-visual-direction-with-user-do-this-first.md) — read it before acting on it.
257
+ #### Render Strategy Inputs
258
+
259
+ With ratio / layout / style / cardCount / frame locked from Step 7.0,
260
+ the remaining per-card decisions are:
261
+
262
+ - **Source-video fit inside the GSAP target**: video element has
263
+ `object-fit: cover` and is clipped to `#video-wrap`'s tween bounds.
264
+ If you want NO cropping (e.g. portrait source on landscape canvas
265
+ shouldn't get its top/bottom chopped), aim the tween at a rect that
266
+ matches the source's aspect ratio and let surrounding canvas show
267
+ through (or fill with the card / a backdrop).
268
+ - **`card.zone` per card**: derive from your chosen composition layout
269
+ (split → side-panel, stack → lower-third, pip → fullscreen, overlay
270
+ → video-overlay), OR pick a different zone for one-off variants
271
+ (fullscreen for hero / quote, whiteboard-area for dense data).
272
+ - **`accentIndex` per card**: each card pulls one of the 5 theme accent
273
+ colors. Vary across cards for rhythm; reuse the same index when two
274
+ cards belong to the same narrative beat.
275
+ - **Motion vocabulary**: pick 2–3 repeatable patterns from
276
+ `data-anim` kinds (see the table later) and stick to them so the
277
+ composition feels coherent.
278
+
279
+ Pick from these `themeId` palettes (use them as `--accent-N` /
280
+ `--bg` / `--text` CSS variables in your composition `<style>` block):
281
+
282
+ | themeId | accent palette (5 colors) | board bg | text |
283
+ | ------- | ----------------------------------------- | ----------------- | --------- |
284
+ | classic | `#1971c2 #e03131 #2f9e44 #e8590c #9c36b5` | `#FFF9E3` (paper) | `#1e1e1e` |
285
+ | noir | `#4cc9f0 #f72585 #4ade80 #fb923c #a78bfa` | `#1a1a1a` | `#f1f1f1` |
286
+ | mint | `#0077b6 #d62828 #2d6a4f #e76f51 #7209b7` | `#e8faf0` | `#1b4332` |
287
+ | craft | `#bf5700 #d62728 #6c757d #e9b54a #3d5a80` | `#f6efe1` | `#2d2d2d` |
288
+ | slate | `#0ea5e9 #ef4444 #22c55e #f97316 #a855f7` | `#1e293b` | `#f1f5f9` |
289
+ | mono | `#000 #555 #888 #aaa #ccc` | `#fff` | `#000` |
290
+
291
+ Available fonts (woff2 in `<SKILL_DIR>/assets/fonts/`, staged to work dir in Step 9): `Caveat` (handwriting),
292
+ `LXGW WenKai TC` (Chinese hand-script), `Inter` (modern sans), `Virgil`
293
+ (geometric hand). Reference via `@font-face` or `font-family` directly.
294
+
295
+ For inspiration on visual patterns, `<SKILL_DIR>/references/styles/`
296
+ ships 10 self-contained reference cards (academic / editorial / minimal
297
+ / spotlight / geom / whiteboard / audit / terminal / swiss / xhs) that
298
+ you can copy as starting points — but **do not feel constrained to
299
+ match any of these**. Each card is your own design.
300
+
301
+ #### Visual Design Library (<SKILL_DIR>/references/)
302
+
303
+ Beyond the composition-level `themeId`, the skill ships a richer **reference
304
+ library** at `<SKILL_DIR>/references/` covering three **orthogonal**
305
+ visual dimensions you can freely mix:
306
+
307
+ ```
308
+ Style × Layout × VideoFrame
309
+ (10) (4) (3)
310
+ ```
311
+
312
+ | dimension | keys | what it decides |
313
+ | ---------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
314
+ | **style** | `academic` `editorial` `minimal` `spotlight` `geom` `whiteboard` `audit` `terminal` `swiss` `xhs` | the card's visual language — fonts, colors, ornament, layout-within-card |
315
+ | **layout** | `split` `stack` `pip` `overlay` | how the source video and the card share the canvas |
316
+ | **frame** | `clean` `hairline` `polaroid` | the decorative chrome around the video element |
317
+
318
+ Read `<SKILL_DIR>/references/DESIGN_INDEX.md`
319
+ for the full matrix and a loose decision guide (interview / product launch / data analysis /
320
+ social clip / technical tutorial / emotional story …). When you decide to use a specific
321
+ style / layout / frame, Read the corresponding file:
322
+
323
+ - `references/styles/<key>.html` — self-contained card fragment with that
324
+ style's CSS tokens (colors, fonts, padding, ornament) and a placeholder
325
+ takeaway. Copy the `.card[data-card-id="ref-<key>"]` style block, rename
326
+ the data-card-id to your card's id, swap the placeholder content for the
327
+ real takeaway, and you're done.
328
+ - `references/layouts/<key>.html` — exact `videoBounds` + `cardBounds` for
329
+ both landscape and portrait, with a copy-paste JSON snippet for
330
+ `storyboard.json`'s per-card `layout` field.
331
+ - `references/frames/<key>.html` — decorative HTML to add as a sibling of
332
+ `#video-wrap`, plus placement instructions for the composition CSS.
333
+
334
+ Pick `style × layout × frame` **per card** — you can change all three
335
+ between cards as long as the transitions read smoothly. A common rhythm:
336
+ open `editorial × overlay × clean`, switch to `audit × split × hairline`
337
+ for the data card, close on `whiteboard × pip × polaroid`.
338
+
339
+ The 10 styles are skill-side design tokens, **not composition-level themes** —
340
+ they don't need to be declared in `storyboard.composition`; they live
341
+ inside each card's HTML. The `themeId` field can still pick a
342
+ composition-level palette (table above) that controls page-body background
343
+ and video border chrome.
344
+
345
+ #### Layout Compositions (Card + Video)
346
+
347
+ Two coordinated decisions per card define how it shares the canvas with
348
+ the source video:
349
+
350
+ - **`card.zone`** (declared in `storyboard.json`) — one of the 5 schema
351
+ values; resolve it into pixel bounds (per the table in Step 6) when
352
+ you write the card-host wrapper's inline `style` in Step 9.
353
+ - **`#video-wrap` bounds at this card's time window** (declared
354
+ imperatively in the composition's GSAP timeline) — the agent tweens
355
+ `#video-wrap` to a target rect for each layout transition.
356
+
357
+ Schema does NOT store per-card video bounds. `videoTrack.bounds` is
358
+ **one-time** at composition level (defaults to full canvas). Video
359
+ "moving" between cards is purely a GSAP animation authored in
360
+ `index.html`. There is no `card.layout` field — earlier versions of this
361
+ doc invented one; the real schema only has `card.zone`.
362
+
363
+ **4 composition layouts** (from `references/layouts/`) — each is a
364
+ recipe pairing a `zone` with a `#video-wrap` tween target:
365
+
366
+ | composition layout | recommended `card.zone` | GSAP target for `#video-wrap` (landscape 1920×1080) | GSAP target for `#video-wrap` (portrait 1080×1920) | when to use |
367
+ | ------------------ | ----------------------- | ------------------------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------- |
368
+ | `split` | `side-panel` | `{ left: 960, top: 0, width: 960, height: 1080 }` | `{ left: 0, top: 960, width: 1080, height: 960 }` (bottom half) | speaker + data side-by-side / 50:50 weight |
369
+ | `stack` | `lower-third` | `{ left: 14, top: 14, width: 1892, height: 548 }` (top 52%) | `{ left: 0, top: 0, width: 1080, height: 844 }` (top 44%) | speaker on top + summary card below |
370
+ | `pip` | `fullscreen` | `{ left: 1480, top: 760, width: 400, height: 300 }` + add `.framed` class | `{ left: 690, top: 28, width: 360, height: 203 }` + add `.framed` | content-heavy card + corner pip |
371
+ | `overlay` | `video-overlay` | `{ left: 0, top: 0, width: 1920, height: 1080 }` (full-bleed) | `{ left: 0, top: 0, width: 1080, height: 1920 }` | cinematic / dramatic / glass card on full video |
372
+
373
+ For 4:5 (1080×1350), scale portrait y/h values by `1350/1920 ≈ 0.703`
374
+ (see Step 7.0 Channel A / Channel B `recommendedRatio` resolution
375
+ table).
376
+
377
+ **Other zone values for one-off variants** (still uses `card.zone`; no
378
+ fake "layout" field):
379
+
380
+ | `zone` | resolved bounds | common use |
381
+ | ----------------- | ------------------------------------------------------ | ------------------------------------- |
382
+ | `fullscreen` | covers whole canvas | hero card, video tweens to hidden/pip |
383
+ | `whiteboard-area` | inset 40px margin (landscape) or bottom 45% (portrait) | dense data card, free margins |
384
+ | `lower-third` | bottom 30% band | talking-head annotation |
385
+ | `side-panel` | right 42% (landscape) or bottom 40% (portrait) | sidebar / "split" recipe |
386
+ | `video-overlay` | full canvas; expect transparent card root | glass overlay on full-bleed video |
387
+
388
+ You can mix recipes per card — choose `card.zone` based on what suits
389
+ the moment, then write the GSAP tween for `#video-wrap` between cards.
390
+
391
+ #### Storyboard Render Contract
392
+
393
+ `storyboard.json` is an agent-internal planning artifact — no CLI
394
+ command parses it. It exists to keep your timing and content decisions
395
+ explicit before you write each card's HTML. Stick to the v3-style
396
+ shape below so the same outline drives the composition you assemble in
397
+ Step 9.
398
+
399
+ Required structure (see Step 6 for the full example):
400
+
401
+ - `schemaVersion: 3`
402
+ - `composition: { fps, width, height, durationSeconds, layout, themeId, seed }` — note `durationSeconds`/`fps`/`themeId`/`layout` live **inside** `composition`, NOT at top level
403
+ - `videoTrack: { sourcePath, startSec, endSec, bounds? }` — video bounds default to full canvas
404
+ - `subtitles: { enabled, ... }`
405
+ - `cards[]` — each card has the 6 required fields: `id`, `intent`, `startSec`, `endSec`, `accentIndex`, `zone`, `contentHints`
406
+
407
+ Rules:
408
+
409
+ - Card times stay inside `composition.durationSeconds` and should not overlap unless intentional (use `data-track-index` to control z-order when they do).
410
+ - Visual details live in card HTML fragments (Step 8), NOT in `contentHints`. `contentHints` is your own structured prompt for designing the card; the rendered look is the HTML.
411
+ - Keep the storyboard shape stable — even though nothing parses it, you read it back while authoring Step 8/9, and consistency keeps card IDs and timing in sync.
412
+ - Agent-side decisions like "I picked overlay × geom × clean" do NOT belong in `storyboard.json` — keep them in working memory and use them when authoring card HTML + GSAP tweens.
413
+
414
+ **Transparent card backgrounds for cards that share canvas with video.**
415
+ When the GSAP tween leaves video visible behind/beside the card (overlay
416
+ recipe, pip recipe, or any `card.zone = 'lower-third' | 'video-overlay'`
417
+ moment), the card's `.root` MUST NOT paint a full opaque background —
418
+ otherwise it occludes the video. Two patterns:
419
+
420
+ ```css
421
+ /* Pattern A: transparent root, page body provides the cream backdrop */
422
+ html,
423
+ body {
424
+ background: var(--bg);
425
+ }
426
+ .card[data-card-id="card-X"] .root {
427
+ background: transparent;
428
+ }
429
+
430
+ /* Pattern B: explicit per-card background ONLY for fullscreen cards */
431
+ .card[data-card-id="card-hero"] .root {
432
+ background: var(--bg);
433
+ }
434
+ .card[data-card-id="card-overlay"] .root {
435
+ background: transparent;
436
+ }
437
+ ```
438
+
439
+ For `side-panel`-zone cards (split recipe), the card-host is already
440
+ only half the canvas, so an opaque card bg is fine — it only covers its
441
+ half.
442
+
443
+ ### 8. Write Each Card's HTML
444
+
445
+ Create `$WORK_DIR/public/cards/{card-id}.html` for each card. Each file
446
+ contains a single rooted HTML fragment that follows this contract:
447
+
448
+ #### Card HTML Contract
449
+
450
+ ```html
451
+ <div class="card" data-card-id="{cardId}">
452
+ <style>
453
+ /* MUST: every rule starts with .card[data-card-id="{cardId}"] */
454
+ .card[data-card-id="card-01"] .root {
455
+ width: 100%; height: 100%;
456
+ display: flex; ...;
457
+ font-family: 'Caveat', 'LXGW WenKai TC', serif;
458
+ color: var(--text);
459
+ background: var(--bg);
460
+ }
461
+ .card[data-card-id="card-01"] .title { font-size: 84px; ... }
462
+ </style>
463
+
464
+ <div class="root">
465
+ <h1
466
+ id="card-01-title"
467
+ data-anim="kinetic-chars"
468
+ data-anim-at="0.3"
469
+ data-anim-duration="0.5"
470
+ data-anim-stagger="0.04"
471
+ data-anim-pattern="pop"
472
+ >
473
+ <span class="char">S</span>
474
+ <span class="char">u</span>
475
+ </h1>
476
+ <div
477
+ id="card-01-line"
478
+ data-anim="grow-x"
479
+ data-anim-at="0.65"
480
+ data-anim-duration="0.5"
481
+ data-anim-target-w="420"
482
+ style="width:0;height:8px;background:var(--accent-0);border-radius:4px;"
483
+ ></div>
484
+ </div>
485
+ </div>
486
+ ```
487
+
488
+ **Hard rules** (`hyperframes` lint will reject violations):
489
+
490
+ - Single root `<div class="card" data-card-id="{cardId}">`
491
+ - Inline `<style>` rules MUST be prefixed with the scope selector above
492
+ - **No `<script>` tags**
493
+ - **No external URLs** in `src=` / `href=` (no CDN, no remote fonts)
494
+ - **No inline event handlers** (`onclick=` etc.)
495
+ - All assets via relative paths into the same `public/` directory
496
+ - Colors via `var(--accent-N)` etc. for portability across themes
497
+
498
+ **Animations are declared, not coded.** Use `data-anim-*` attributes
499
+ only; never write `<script>` to animate. You compile every `data-anim-*`
500
+ declaration into the single master GSAP timeline in Step 9.
501
+
502
+ #### Card Sizing — Mobile-First in Portrait
503
+
504
+ The 10 `references/styles/*.html` are sized for a **1920×1080 landscape**
505
+ preview. When `storyboard.layout = "portrait"` (1080×1920, the dominant
506
+ case for social / mobile), **scale every visual size up** — phones hold
507
+ the screen close, and the same pixel count reads smaller than on a
508
+ landscape TV-style canvas.
509
+
510
+ | token | landscape baseline | **portrait target** | scale |
511
+ | ------------------------- | ------------------ | ------------------- | ------------- |
512
+ | title (h1/h2 hero) | 64–96px | **88–132px** | ×1.35 |
513
+ | detail / body | 24–30px | **30–40px** | ×1.30 |
514
+ | kicker / chip label | 14–16px | **18–22px** | ×1.30 |
515
+ | timecode / meta | 12–14px | **16–18px** | ×1.30 |
516
+ | data block primary number | 48–60px | **64–88px** | ×1.40 |
517
+ | line-height multiplier | 1.05–1.5 | same | (don't scale) |
518
+
519
+ **Rule of thumb:** `portraitPx = round(landscapePx × 1.3)`, then floor
520
+ to a nearby 4px multiple for visual rhythm. Hero headlines may go up to
521
+ ×1.4; small meta text stays at ×1.2 to avoid crowding.
522
+
523
+ Padding **shrinks slightly** in portrait — the card is narrower so big
524
+ landscape padding (40–64px) eats too much width. Use 24–36px horizontal
525
+ padding in portrait.
526
+
527
+ If you're producing a single card that must work in **both** layouts,
528
+ prefer a `@container` query on the card root over hard-coding sizes:
529
+
530
+ ```css
531
+ .card[data-card-id="X"] .root {
532
+ container-type: inline-size;
533
+ }
534
+ .card[data-card-id="X"] .title {
535
+ font-size: clamp(64px, 8.5cqi, 132px);
536
+ }
537
+ .card[data-card-id="X"] .detail {
538
+ font-size: clamp(24px, 3.2cqi, 40px);
539
+ }
540
+ ```
541
+
542
+ But for most cards, a single layout choice is fine — just pick the size
543
+ table column that matches the storyboard's `layout` field.
544
+
545
+ #### Available `data-anim` Kinds
546
+
547
+ This list is closed, and deliberately so: a card is an HTML fragment whose motion this
548
+ skill compiles into the shared overlay timeline in Step 9 (see the GSAP mapping table
549
+ there). That is why this workflow does not search the HyperFrames component registry the
550
+ This plugin ships no hosted look registry, so the local materials this skill carries are the catalogue.
551
+ compositions that carry their own timeline, and a card has no place to mount one. Reach a
552
+ look the kinds below cannot express with plain CSS inside the card's scoped `<style>`.
553
+
554
+ | kind | use for | key params |
555
+ | --------------- | ------------------- | ----------------------------------------------------------------------------------------------- |
556
+ | `fade-in` | enter | `at`, `duration`, `ease?` |
557
+ | `fade-out` | exit | `at`, `duration`, `ease?` |
558
+ | `slide-in` | slide enter | `at`, `duration`, `from=left\|right\|top\|bottom`, `distance` |
559
+ | `kinetic-chars` | per-char pop | `at`, `duration`, `stagger`, `pattern=pop\|fade` — element needs `<span class="char">` children |
560
+ | `typewriter` | per-char fade | same as kinetic-chars but slower default stagger |
561
+ | `count-up` | animate number | `at`, `duration`, `from`, `to`, `format=.0f\|.1f\|.2f\|,d` |
562
+ | `draw-path` | SVG path reveal | `at`, `duration` — element should be a `<path>` |
563
+ | `grow-y` | bar height | `at`, `duration`, `target-h` (px) — element starts `height:0` |
564
+ | `grow-x` | bar width | `at`, `duration`, `target-w` (px) — element starts `width:0` |
565
+ | `scale-pop` | pop entrance | `at`, `duration` |
566
+ | `blur-in` | unfocused → focused | `at`, `duration` |
567
+ | `mask-reveal` | clip reveal | `at`, `duration`, `direction=left\|right\|top\|bottom` |
568
+ | `morph-to` | tween any CSS | `at`, `duration`, `props='{...JSON...}'` |
569
+
570
+ `data-anim-at` is **seconds relative to the card's startSec** — when you
571
+ compile each declaration into the GSAP timeline in Step 9, add the
572
+ card's `startSec` to get the absolute time and quantize to 1/fps.
573
+
574
+ ### 9. Assemble the Composition HTML
575
+
576
+ Stage the assets and write `$WORK_DIR/public/index.html`:
577
+
578
+ ```bash
579
+ # SKILL_DIR is injected by the host ("Base directory for this skill: …")
580
+ SKILL_DIR="<SKILL_DIR>"
581
+
582
+ mkdir -p "$WORK_DIR/public/fonts" "$WORK_DIR/public/vendor" "$WORK_DIR/public/cards"
583
+ cp -n "$SKILL_DIR/assets/fonts/"* "$WORK_DIR/public/fonts/"
584
+ cp -n "$SKILL_DIR/assets/vendor/gsap.min.js" "$WORK_DIR/public/vendor/"
585
+ # stage the input video — RE-ENCODE with dense keyframes. Sources with a sparse GOP
586
+ # (keyframe interval > ~1s) freeze on seek in the renderer (a frozen frame under the
587
+ # overlays); -g / -keyint_min set to your composition fps make every frame seekable.
588
+ # (Set both to your fps — 30 shown; use 24/25/60 to match.)
589
+ ffmpeg -y -i "$VIDEO_PATH" -c:v libx264 -crf 18 -g 30 -keyint_min 30 \
590
+ -pix_fmt yuv420p -movflags +faststart -c:a aac "$WORK_DIR/public/input-video.mp4"
591
+ ```
592
+
593
+ #### Composition Template
594
+
595
+ ```html
596
+ <!doctype html>
597
+ <html lang="en">
598
+ <head>
599
+ <meta charset="utf-8" />
600
+ <style>
601
+ @font-face {
602
+ font-family: "Caveat";
603
+ src: url("fonts/Caveat-400-latin.woff2") format("woff2");
604
+ font-weight: 400;
605
+ font-display: block;
606
+ }
607
+ @font-face {
608
+ font-family: "Caveat";
609
+ src: url("fonts/Caveat-700-latin.woff2") format("woff2");
610
+ font-weight: 700;
611
+ font-display: block;
612
+ }
613
+ @font-face {
614
+ font-family: "LXGW WenKai TC";
615
+ src: url("fonts/LXGWWenKaiTC-400-latin.woff2") format("woff2");
616
+ font-weight: 400;
617
+ font-display: block;
618
+ }
619
+ @font-face {
620
+ font-family: "Inter";
621
+ src: url("fonts/Inter-400-latin.woff2") format("woff2");
622
+ font-weight: 400;
623
+ font-display: block;
624
+ }
625
+ @font-face {
626
+ font-family: "Inter";
627
+ src: url("fonts/Inter-700-latin.woff2") format("woff2");
628
+ font-weight: 700;
629
+ font-display: block;
630
+ }
631
+ @font-face {
632
+ font-family: "Virgil";
633
+ src: url("fonts/Virgil.woff2") format("woff2");
634
+ font-display: block;
635
+ }
636
+
637
+ :root {
638
+ /* Pick from the themeId palette table in Step 7 — example: classic */
639
+ --bg: #fff9e3;
640
+ --text: #1e1e1e;
641
+ --accent-0: #1971c2;
642
+ --accent-1: #e03131;
643
+ --accent-2: #2f9e44;
644
+ --accent-3: #e8590c;
645
+ --accent-4: #9c36b5;
646
+ --font-family: "Caveat", "LXGW WenKai TC", serif;
647
+ }
648
+ * {
649
+ box-sizing: border-box;
650
+ }
651
+ /* Body font-family MUST list concrete font names (not just var(--font-family)) —
652
+ the HyperFrames renderer's static analyzer doesn't expand CSS variables when
653
+ resolving fonts, so a var-only chain triggers `font_family_without_font_face`
654
+ lint and falls back to a generic. Use the concrete chain here; cards that
655
+ want the theme font can still reference var(--font-family) internally. */
656
+ html,
657
+ body {
658
+ margin: 0;
659
+ padding: 0;
660
+ width: 100%;
661
+ height: 100%;
662
+ overflow: hidden;
663
+ background: #000;
664
+ font-family: "Inter", "Caveat", "LXGW WenKai TC", ui-sans-serif, system-ui, sans-serif;
665
+ }
666
+ #stage {
667
+ position: relative;
668
+ width: 100%;
669
+ height: 100%;
670
+ overflow: hidden;
671
+ }
672
+
673
+ /* video-wrapper holds the source video. Its position / size are animated
674
+ over time by the master timeline (one tween per layout transition). */
675
+ .video-wrapper {
676
+ position: absolute;
677
+ left: 0;
678
+ top: 0;
679
+ width: 1920px;
680
+ height: 1080px;
681
+ overflow: hidden;
682
+ border-radius: 0;
683
+ box-shadow: none;
684
+ }
685
+ .video-wrapper video {
686
+ width: 100%;
687
+ height: 100%;
688
+ object-fit: cover;
689
+ }
690
+
691
+ .card-host {
692
+ position: absolute;
693
+ pointer-events: none;
694
+ overflow: hidden;
695
+ }
696
+ .card-host .card {
697
+ position: relative;
698
+ width: 100%;
699
+ height: 100%;
700
+ overflow: hidden;
701
+ }
702
+ .card-host .char {
703
+ display: inline-block;
704
+ visibility: visible;
705
+ }
706
+
707
+ /* Subtle drop shadow + rounded corners for non-fullscreen video framings */
708
+ .video-wrapper.framed {
709
+ border-radius: 16px;
710
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35);
711
+ }
712
+ </style>
713
+ </head>
714
+ <body>
715
+ <div
716
+ id="stage"
717
+ data-composition-id="talking-head-recut"
718
+ data-start="0"
719
+ data-duration="121.2"
720
+ data-fps="30"
721
+ data-width="1920"
722
+ data-height="1080"
723
+ >
724
+ <!-- Layer 1: source video — initial position matches card-01's layout -->
725
+ <div class="video-wrapper" id="video-wrap">
726
+ <video
727
+ id="bg-video"
728
+ src="input-video.mp4"
729
+ muted
730
+ playsinline
731
+ data-start="0"
732
+ data-duration="121.2"
733
+ data-track-index="1"
734
+ ></video>
735
+ </div>
736
+ <!-- Preserve the source program audio while the visual video stays muted. -->
737
+ <audio
738
+ id="source-audio"
739
+ src="input-video.mp4"
740
+ data-start="0"
741
+ data-duration="121.2"
742
+ data-track-index="10"
743
+ data-volume="1"
744
+ ></audio>
745
+
746
+ <!-- Layer 2: each card-host sits at the bounds dictated by its layout. -->
747
+ <!-- IMPORTANT: every card-host MUST carry BOTH "card-host" and "clip" classes. -->
748
+ <!-- - "card-host" → our positioning + pointer-events styles -->
749
+ <!-- - "clip" → the marker Studio and the linter use to recognise a -->
750
+ <!-- clip. Visibility itself comes from data-start / -->
751
+ <!-- data-duration, which the runtime honours with or -->
752
+ <!-- without this class -->
753
+ <!-- (lint: timed_element_missing_clip_class, a warning). -->
754
+ <!-- Example: card-01 with zone="fullscreen" → card-host covers (0,0,1920,1080) -->
755
+ <div
756
+ class="card-host clip"
757
+ data-card-id="card-01"
758
+ data-start="1.0000"
759
+ data-duration="6.5000"
760
+ data-track-index="2"
761
+ style="left:0;top:0;width:1920px;height:1080px;visibility:hidden;opacity:0;"
762
+ >
763
+ <!-- paste the contents of public/cards/card-01.html here -->
764
+ </div>
765
+
766
+ <!-- Example: card-02 with zone="side-panel" (split composition layout) → card on left half -->
767
+ <div
768
+ class="card-host clip"
769
+ data-card-id="card-02"
770
+ data-start="8.0000"
771
+ data-duration="12.0000"
772
+ data-track-index="2"
773
+ style="left:0;top:0;width:960px;height:1080px;visibility:hidden;opacity:0;"
774
+ >
775
+ <!-- card-02 HTML -->
776
+ </div>
777
+
778
+ <!-- ...one "card-host clip" per card with inline bounds matching resolveZoneBounds(card.zone)... -->
779
+
780
+ <script src="vendor/gsap.min.js"></script>
781
+ <script>
782
+ (function () {
783
+ // count-up formatter helper
784
+ window.__fmt = function (v, fmt) {
785
+ if (typeof fmt === "string" && /^\.[0-9]+f$/.test(fmt)) {
786
+ return Number(v).toFixed(Number(fmt.slice(1, -1)));
787
+ }
788
+ if (fmt === ",d") return Math.round(v).toLocaleString();
789
+ return String(Math.round(v));
790
+ };
791
+
792
+ const tl = window.gsap.timeline({ paused: true });
793
+
794
+ // ── Card lifecycle (one block per card) ──
795
+ // Example for card-01 [1.0, 7.5] with kinetic-chars at +0.3, grow-x at +0.65:
796
+
797
+ // Enter (fade in over 0.4s)
798
+ tl.set('.card-host[data-card-id="card-01"]', { visibility: "visible" }, 1.0);
799
+ tl.fromTo(
800
+ '.card-host[data-card-id="card-01"]',
801
+ { opacity: 0 },
802
+ { opacity: 1, duration: 0.4, ease: "power2.out" },
803
+ 1.0,
804
+ );
805
+
806
+ // Card-internal anims (compile each data-anim-* declaration here)
807
+ tl.from(
808
+ '.card[data-card-id="card-01"] #card-01-title .char',
809
+ { opacity: 0, y: 8, scale: 0.8, duration: 0.5, ease: "power2.out", stagger: 0.04 },
810
+ 1.3,
811
+ );
812
+ tl.fromTo(
813
+ '.card[data-card-id="card-01"] #card-01-line',
814
+ { width: 0 },
815
+ { width: 420, duration: 0.5, ease: "power2.out" },
816
+ 1.65,
817
+ );
818
+
819
+ // Exit (fade out over 0.35s, ending at endSec)
820
+ tl.to(
821
+ '.card-host[data-card-id="card-01"]',
822
+ { opacity: 0, duration: 0.35, ease: "power2.in" },
823
+ 7.15,
824
+ );
825
+ tl.set('.card-host[data-card-id="card-01"]', { visibility: "hidden" }, 7.5);
826
+
827
+ // ── Video framing transitions ──
828
+ // When the next card uses a different composition layout, animate the
829
+ // video-wrapper to its new bounds. Example: card-01 = fullscreen
830
+ // (video hidden behind), card-02 = split composition (zone="side-panel"
831
+ // → video on right, card on left).
832
+
833
+ // Card-02 enters at 8.0s with the split composition. Animate video to
834
+ // the right half during the card-01 → card-02 gap (between 7.5 and 8.0s).
835
+ tl.set("#video-wrap", { className: "video-wrapper framed" }, 7.5);
836
+ tl.to(
837
+ "#video-wrap",
838
+ { left: 960, top: 0, width: 960, height: 1080, duration: 0.6, ease: "power2.inOut" },
839
+ 7.5,
840
+ );
841
+
842
+ // Card-02 enter — same pattern as card-01
843
+ tl.set('.card-host[data-card-id="card-02"]', { visibility: "visible" }, 8.0);
844
+ tl.fromTo(
845
+ '.card-host[data-card-id="card-02"]',
846
+ { opacity: 0 },
847
+ { opacity: 1, duration: 0.4, ease: "power2.out" },
848
+ 8.0,
849
+ );
850
+ // ...card-02 internal anims...
851
+
852
+ // ── repeat for each card; if the NEXT card's layout differs,
853
+ // insert another tl.to('#video-wrap', ...) tween before its enter ──
854
+
855
+ window.__timelines = window.__timelines || {};
856
+ window.__timelines["talking-head-recut"] = tl;
857
+ })();
858
+ </script>
859
+ </div>
860
+ </body>
861
+ </html>
862
+ ```
863
+
864
+ #### GSAP Statement Cheat Sheet
865
+
866
+ Compile each `data-anim` attribute into a GSAP statement. Times are
867
+ **absolute seconds** = card.startSec + data-anim-at, quantized to 1/fps.
868
+ Selector is `.card[data-card-id="X"] #elementId`.
869
+
870
+ | data-anim | GSAP statement template |
871
+ | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
872
+ | `fade-in` | `tl.fromTo(SEL, { opacity: 0 }, { opacity: 1, duration: D, ease: 'power2.out' }, T);` |
873
+ | `fade-out` | `tl.to(SEL, { opacity: 0, duration: D, ease: 'power2.in' }, T);` |
874
+ | `slide-in` (from=left, dist=80) | `tl.fromTo(SEL, { opacity: 0, x: -80 }, { opacity: 1, x: 0, duration: D, ease: 'power2.out' }, T);` |
875
+ | `kinetic-chars` (pop) | `tl.from(SEL + ' .char', { opacity: 0, y: 8, scale: 0.8, duration: D, ease: 'power2.out', stagger: S }, T);` |
876
+ | `count-up` | `(function(){const o={v:FROM};tl.to(o,{v:TO,duration:D,ease:'power2.out',onUpdate:function(){const el=document.querySelector(SEL);if(el)el.textContent=__fmt(o.v,'FMT');}},T);})();` |
877
+ | `draw-path` | `(function(){const el=document.querySelector(SEL);if(el){const L=el.getTotalLength();tl.set(SEL,{strokeDasharray:L,strokeDashoffset:L},T);tl.to(SEL,{strokeDashoffset:0,duration:D,ease:'power2.inOut'},T);}})();` |
878
+ | `grow-x` (target-w=W) | `tl.fromTo(SEL, { width: 0 }, { width: W, duration: D, ease: 'power2.out' }, T);` |
879
+ | `grow-y` (target-h=H) | `tl.fromTo(SEL, { height: 0 }, { height: H, duration: D, ease: 'power2.out' }, T);` |
880
+ | `scale-pop` | `tl.fromTo(SEL, { opacity: 0, scale: 0.6 }, { opacity: 1, scale: 1, duration: D, ease: 'back.out(1.6)' }, T);` |
881
+ | `mask-reveal` (direction=left) | `tl.fromTo(SEL, { clipPath: 'inset(0 100% 0 0)' }, { clipPath: 'inset(0 0 0 0)', duration: D, ease: 'power2.inOut' }, T);` |
882
+
883
+ Quantize: `T = Math.round(absSec * fps) / fps`. At 30fps the smallest
884
+ step is `1/30 ≈ 0.0333s`; rounding to 4 decimals (`.toFixed(4)`) is fine
885
+ inside the JS literal.
886
+
887
+ #### Video Framing Reference (per `layout` value)
888
+
889
+ The selector for the video container is `#video-wrap`. Animate its
890
+ bounds between cards using `tl.to('#video-wrap', { ...bounds }, T)`.
891
+ Initial bounds should be set inline on the element to match card-01's
892
+ layout. Pick a transition duration of 0.5–0.7s with `ease: 'power2.inOut'`.
893
+
894
+ **Decorative frames** (`clean` / `hairline` / `polaroid`) sit as a
895
+ **sibling** of `#video-wrap` and follow it through layout transitions.
896
+ See
897
+ [`references/frames/`](references/frames/) for each frame's placement
898
+ HTML, suggested CSS, and which layouts it pairs with. Quick rule:
899
+ `overlay` layout suppresses decorative frames (the full-bleed video
900
+ clashes with chrome); PiP layouts already have their own pill treatment
901
+ (border-radius + white ring + shadow), so add a decorative frame only on
902
+ top of `split` / `stack`.
903
+
904
+ **GSAP target lookup table** for `#video-wrap` per composition layout
905
+ (landscape 1920×1080 — for portrait & 4:5 see `references/layouts/*.html`
906
+ which list all three ratios):
907
+
908
+ | composition layout | typical card.zone | `#video-wrap` GSAP target | extra css class |
909
+ | ------------------------------------ | ----------------- | ------------------------------------------------------------------------- | ------------------------------------------ |
910
+ | `split` | `side-panel` | `{ left: 960, top: 0, width: 960, height: 1080 }` | — |
911
+ | `stack` | `lower-third` | `{ left: 14, top: 14, width: 1892, height: 548 }` (top 52%) | — |
912
+ | `pip` (bottom-right) | `fullscreen` | `{ left: 1480, top: 760, width: 400, height: 300 }` | `pip-pill` (border-radius + ring + shadow) |
913
+ | `pip` (top-left) | `fullscreen` | `{ left: 40, top: 40, width: 400, height: 300 }` | `pip-pill` |
914
+ | `overlay` (video full-bleed) | `video-overlay` | `{ left: 0, top: 0, width: 1920, height: 1080 }` (no change from default) | — |
915
+ | **hide video** (pure-graphic moment) | `fullscreen` | `{ opacity: 0 }` (or move off-canvas) | — |
916
+
917
+ To toggle the pip-pill chrome (border-radius + white ring + drop shadow)
918
+ when entering or leaving a pip moment:
919
+
920
+ ```js
921
+ // Enter pip — add chrome
922
+ tl.set("#video-wrap", { className: "video-wrapper pip-pill" }, T);
923
+ tl.to(
924
+ "#video-wrap",
925
+ { left: 1480, top: 760, width: 400, height: 300, duration: 0.6, ease: "power2.inOut" },
926
+ T,
927
+ );
928
+
929
+ // Leave pip — back to clean full-bleed
930
+ tl.set("#video-wrap", { className: "video-wrapper" }, T_NEXT);
931
+ tl.to(
932
+ "#video-wrap",
933
+ { left: 0, top: 0, width: 1920, height: 1080, duration: 0.6, ease: "power2.inOut" },
934
+ T_NEXT,
935
+ );
936
+ ```
937
+
938
+ **Card-host bounds match the zone**. Resolve the card's `zone` into
939
+ pixel bounds using the table at the top of Step 6, then write those
940
+ into the card-host's inline `style="left:Xpx;top:Ypx;width:Wpx;
941
+ height:Hpx;..."`. For `video-overlay` zone (overlay recipe), the
942
+ card-host fills the full canvas — your CSS inside `.card .root`
943
+ decides where the actual visible card sits.
944
+
945
+ #### HyperFrames Layout / Animation QA Rules
946
+
947
+ - Build each card's static hero frame first: the moment where the card is fully visible and readable.
948
+ - Confirm video, cards, subtitles/captions, and diagrams do not unintentionally overlap.
949
+ - Confirm hidden video areas are clipped by the frame and not visible outside intended bounds.
950
+ - Register one paused master timeline as `window.__timelines["talking-head-recut"]`.
951
+ - Build timelines synchronously at page load; no `async`, `setTimeout`, Promises, or media `play()` calls.
952
+ - Do not use `Math.random()` or `Date.now()` in render paths.
953
+ - Do not use `repeat: -1`; calculate finite repeats from the video duration.
954
+ - Prefer GSAP transforms and opacity (`x`, `y`, `scale`, `rotation`, `opacity`) over layout properties (`top`, `left`, `width`, `height`) for motion.
955
+ - Animate wrappers such as `#video-wrap`, not the video element dimensions directly.
956
+ - Avoid animating the same property on the same element from multiple timelines at the same time.
957
+ - Use `data-track-index`, not `data-layer`; use `data-duration`, not `data-end`.
958
+ - Every timed element (`card-host`, sub-composition, etc.) should include `class="clip"` alongside its own classes — e.g. `class="card-host clip"`. Visibility itself is driven by `data-start` / `data-duration`: the runtime gates every `[data-start]` element to its window whether or not this class is present. `.clip` is the marker Studio and the GSAP clip-ownership rules read to recognise a clip, so leaving it off makes the element harder to edit and to lint (lint: `timed_element_missing_clip_class`, a warning).
959
+ - For body / global `font-family`, list **concrete font names** (`'Inter', 'Caveat', …`) — not a CSS variable like `var(--font-family)`. The HyperFrames font resolver doesn't expand CSS vars during static analysis (lint: `font_family_without_font_face`). Cards may still use `var(--font-family)` internally since their `@font-face` declarations are loaded.
960
+
961
+ ### 10. Render to MP4
962
+
963
+ ```bash
964
+ cd "$WORK_DIR"
965
+ PRODUCER_BROWSER_GPU_MODE=hardware freecodego_design_render public \
966
+ --skill=talking-head-recut \
967
+ -o output.mp4 \
968
+ --fps 30
969
+ ```
970
+
971
+ `freecodego_design_render <dir>` reads `<dir>/index.html` and produces the MP4.
972
+ The canonical composition keeps the visual `<video>` muted and mounts the same
973
+ source as the root `#source-audio` track, so the rendered MP4 preserves the
974
+ talking-head audio without a manual remux. This uses a separate audio track
975
+ rather than `data-has-audio="true"` so its volume and ducking remain independently
976
+ controllable on the timeline.
977
+ The flag `PRODUCER_BROWSER_GPU_MODE=hardware` (or `--browser-gpu`) is
978
+ strongly recommended on macOS — software-only Chrome rendering times out
979
+ on most laptops.
980
+
981
+ For a sanity check before the full render, capture a single frame at a
982
+ specific timestamp:
983
+
984
+ ```bash
985
+ freecodego_design_snapshot public --at 5 # → public/snapshots/frame-00-at-5s.png (a single --at ignores --out)
986
+ ```
987
+
988
+ ### 11. Report Results
989
+
990
+ Tell the user:
991
+
992
+ - Work directory path
993
+ - `storyboard.json` (the card outline you designed)
994
+ - `public/cards/*.html` (one HTML per card)
995
+ - `public/index.html` (the assembled composition)
996
+ - `output.mp4` (the final video)
997
+ - ASR provider used
998
+ - Card count + how you chose them (in 1 sentence)
999
+ - Any missing keys or quality caveats
1000
+
1001
+ **Optional live preview (on request only).** The clip plays unchanged inside `public/index.html` with the overlays on top, so it previews faithfully. **Don't open it during the run.** When the user asks, start a long-lived server **after** render and report the URL:
1002
+
1003
+ ```bash
1004
+ (cd "$WORK_DIR/public" && freecodego_design_preview) # or `freecodego_design_preview` for a shareable link
1005
+ ```
1006
+
1007
+ Do not delete the work directory unless the user asks.