@mevdragon/vidfarm-devcli 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/.agents/skills/embedded-captions/CATALOG.md +93 -0
  2. package/.agents/skills/embedded-captions/SKILL.md +286 -0
  3. package/.agents/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -0
  4. package/.agents/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -0
  5. package/.agents/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  6. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  7. package/.agents/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  8. package/.agents/skills/embedded-captions/dna/README.md +148 -0
  9. package/.agents/skills/embedded-captions/dna/chrome.json +68 -0
  10. package/.agents/skills/embedded-captions/dna/cream.json +69 -0
  11. package/.agents/skills/embedded-captions/dna/documentary.json +62 -0
  12. package/.agents/skills/embedded-captions/dna/editorial.json +70 -0
  13. package/.agents/skills/embedded-captions/dna/glitch.json +82 -0
  14. package/.agents/skills/embedded-captions/dna/ink.json +65 -0
  15. package/.agents/skills/embedded-captions/dna/keynote.json +62 -0
  16. package/.agents/skills/embedded-captions/dna/loud.json +75 -0
  17. package/.agents/skills/embedded-captions/dna/neon.json +58 -0
  18. package/.agents/skills/embedded-captions/dna/velocity.json +89 -0
  19. package/.agents/skills/embedded-captions/modes/cinematic/README.md +48 -0
  20. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  21. package/.agents/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  22. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  23. package/.agents/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  24. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  25. package/.agents/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  26. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  27. package/.agents/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  28. package/.agents/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  29. package/.agents/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
  30. package/.agents/skills/embedded-captions/modes/standard/_motion.md +192 -0
  31. package/.agents/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
  32. package/.agents/skills/embedded-captions/references/aesthetic-principles.md +168 -0
  33. package/.agents/skills/embedded-captions/references/anti-patterns.md +188 -0
  34. package/.agents/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  35. package/.agents/skills/embedded-captions/references/caption-grouping.md +130 -0
  36. package/.agents/skills/embedded-captions/references/composition-craft.md +522 -0
  37. package/.agents/skills/embedded-captions/references/direction-catalog.md +138 -0
  38. package/.agents/skills/embedded-captions/references/example-renders/champion.html +371 -0
  39. package/.agents/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  40. package/.agents/skills/embedded-captions/references/failure-modes.md +145 -0
  41. package/.agents/skills/embedded-captions/references/layout-heuristics.md +238 -0
  42. package/.agents/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  43. package/.agents/skills/embedded-captions/references/rail.md +68 -0
  44. package/.agents/skills/embedded-captions/references/reference-bar.md +47 -0
  45. package/.agents/skills/embedded-captions/references/scene-types.md +94 -0
  46. package/.agents/skills/embedded-captions/references/test-set.md +66 -0
  47. package/.agents/skills/embedded-captions/references/typographic-moves.md +266 -0
  48. package/.agents/skills/embedded-captions/references/typography-presets.md +63 -0
  49. package/.agents/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
  50. package/.agents/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
  51. package/.agents/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
  52. package/.agents/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
  53. package/.agents/skills/embedded-captions/scripts/check-timing.cjs +173 -0
  54. package/.agents/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
  55. package/.agents/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
  56. package/.agents/skills/embedded-captions/scripts/gen-stroke-path.py +46 -0
  57. package/.agents/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
  58. package/.agents/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
  59. package/.agents/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -0
  60. package/.agents/skills/embedded-captions/scripts/make-composition.cjs +404 -0
  61. package/.agents/skills/embedded-captions/scripts/make-theme.cjs +8781 -0
  62. package/.agents/skills/embedded-captions/scripts/matte.cjs +294 -0
  63. package/.agents/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
  64. package/.agents/skills/embedded-captions/scripts/prepare.sh +39 -0
  65. package/.agents/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
  66. package/.agents/skills/embedded-captions/scripts/render-and-composite.sh +509 -0
  67. package/.agents/skills/embedded-captions/scripts/render-theme.sh +34 -0
  68. package/.agents/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
  69. package/.agents/skills/embedded-captions/scripts/transcribe.cjs +349 -0
  70. package/.agents/skills/embedded-captions/themes/PORTING.md +49 -0
  71. package/.agents/skills/embedded-captions/themes/README.md +244 -0
  72. package/.agents/skills/embedded-captions/themes/anchor.json +27 -0
  73. package/.agents/skills/embedded-captions/themes/arcade.json +51 -0
  74. package/.agents/skills/embedded-captions/themes/aurora.json +41 -0
  75. package/.agents/skills/embedded-captions/themes/biolume.json +35 -0
  76. package/.agents/skills/embedded-captions/themes/brush.json +74 -0
  77. package/.agents/skills/embedded-captions/themes/chalkboard.json +52 -0
  78. package/.agents/skills/embedded-captions/themes/dossier.json +56 -0
  79. package/.agents/skills/embedded-captions/themes/graffiti.json +62 -0
  80. package/.agents/skills/embedded-captions/themes/hologram.json +41 -0
  81. package/.agents/skills/embedded-captions/themes/inkwater.json +43 -0
  82. package/.agents/skills/embedded-captions/themes/laser.json +46 -0
  83. package/.agents/skills/embedded-captions/themes/lastpage.json +33 -0
  84. package/.agents/skills/embedded-captions/themes/neonsign.json +53 -0
  85. package/.agents/skills/embedded-captions/themes/nightcity.json +56 -0
  86. package/.agents/skills/embedded-captions/themes/ordnance.json +54 -0
  87. package/.agents/skills/embedded-captions/themes/papercut.json +37 -0
  88. package/.agents/skills/embedded-captions/themes/popup.json +46 -0
  89. package/.agents/skills/embedded-captions/themes/ransom.json +62 -0
  90. package/.agents/skills/embedded-captions/themes/scoreboard.json +54 -0
  91. package/.agents/skills/embedded-captions/themes/spectrum.json +46 -0
  92. package/.agents/skills/embedded-captions/themes/stardust.json +29 -0
  93. package/.agents/skills/embedded-captions/themes/stomp.json +43 -0
  94. package/.agents/skills/embedded-captions/themes/terminal.json +49 -0
  95. package/.agents/skills/embedded-captions/themes/thunder.json +44 -0
  96. package/.agents/skills/embedded-captions/themes/transit.json +44 -0
  97. package/.agents/skills/embedded-captions/themes/vhs.json +47 -0
  98. package/.agents/skills/faceless-explainer/SKILL.md +209 -0
  99. package/.agents/skills/faceless-explainer/references/cut-catalog.md +215 -0
  100. package/.agents/skills/faceless-explainer/references/motion-language.md +156 -0
  101. package/.agents/skills/faceless-explainer/references/story-design.md +248 -0
  102. package/.agents/skills/faceless-explainer/references/visual-design.md +146 -0
  103. package/.agents/skills/faceless-explainer/scripts/assemble-index.mjs +570 -0
  104. package/.agents/skills/faceless-explainer/scripts/audio.mjs +260 -0
  105. package/.agents/skills/faceless-explainer/scripts/build-frame.mjs +536 -0
  106. package/.agents/skills/faceless-explainer/scripts/captions.mjs +508 -0
  107. package/.agents/skills/faceless-explainer/scripts/lib/assets.mjs +55 -0
  108. package/.agents/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
  109. package/.agents/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
  110. package/.agents/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -0
  111. package/.agents/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
  112. package/.agents/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
  113. package/.agents/skills/faceless-explainer/scripts/transitions.mjs +320 -0
  114. package/.agents/skills/faceless-explainer/sub-agents/frame-worker.md +75 -0
  115. package/.agents/skills/flockposter/LICENSE +17 -0
  116. package/.agents/skills/flockposter/README.md +72 -0
  117. package/.agents/skills/flockposter/SKILL.md +562 -0
  118. package/.agents/skills/flockposter/examples/cli-instagram-reel.sh +21 -0
  119. package/.agents/skills/flockposter/examples/cli-multi-platform.json +69 -0
  120. package/.agents/skills/flockposter/examples/cli-tiktok-upload-only.sh +22 -0
  121. package/.agents/skills/flockposter/examples/cli-x-thread.sh +17 -0
  122. package/.agents/skills/flockposter/examples/cli-youtube-short.sh +21 -0
  123. package/.agents/skills/flockposter/examples/public-api-instagram-reel.json +28 -0
  124. package/.agents/skills/general-video/SKILL.md +143 -0
  125. package/.agents/skills/hyperframes/SKILL.md +160 -0
  126. package/.agents/skills/hyperframes-animation/SKILL.md +84 -0
  127. package/.agents/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/.agents/skills/hyperframes-animation/adapters/animejs.md +114 -0
  129. package/.agents/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/.agents/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -0
  131. package/.agents/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/.agents/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -0
  133. package/.agents/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/.agents/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/.agents/skills/hyperframes-animation/adapters/lottie.md +117 -0
  136. package/.agents/skills/hyperframes-animation/adapters/three.md +131 -0
  137. package/.agents/skills/hyperframes-animation/adapters/typegpu.md +178 -0
  138. package/.agents/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/.agents/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  140. package/.agents/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -0
  141. package/.agents/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -0
  142. package/.agents/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -0
  143. package/.agents/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -0
  144. package/.agents/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -0
  145. package/.agents/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -0
  146. package/.agents/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -0
  147. package/.agents/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -0
  148. package/.agents/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -0
  149. package/.agents/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  150. package/.agents/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  151. package/.agents/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -0
  152. package/.agents/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  153. package/.agents/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  154. package/.agents/skills/hyperframes-animation/blueprints-index.md +146 -0
  155. package/.agents/skills/hyperframes-animation/examples/assets/avatars/02.avif +0 -0
  156. package/.agents/skills/hyperframes-animation/examples/assets/brands/github.avif +0 -0
  157. package/.agents/skills/hyperframes-animation/examples/assets/brands/nvidia.avif +0 -0
  158. package/.agents/skills/hyperframes-animation/examples/assets/brands/visa.avif +0 -0
  159. package/.agents/skills/hyperframes-animation/examples/assets/brands/zoominfo.avif +0 -0
  160. package/.agents/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  161. package/.agents/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  162. package/.agents/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  163. package/.agents/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  164. package/.agents/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  165. package/.agents/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  166. package/.agents/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  167. package/.agents/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  168. package/.agents/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  169. package/.agents/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  170. package/.agents/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  171. package/.agents/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  172. package/.agents/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  173. package/.agents/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -0
  174. package/.agents/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -0
  175. package/.agents/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -0
  176. package/.agents/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -0
  177. package/.agents/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -0
  178. package/.agents/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -0
  179. package/.agents/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -0
  180. package/.agents/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -0
  181. package/.agents/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -0
  182. package/.agents/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -0
  183. package/.agents/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -0
  184. package/.agents/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -0
  185. package/.agents/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -0
  186. package/.agents/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -0
  187. package/.agents/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -0
  188. package/.agents/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -0
  189. package/.agents/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -0
  190. package/.agents/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -0
  191. package/.agents/skills/hyperframes-animation/rules/gsap-effects.md +299 -0
  192. package/.agents/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -0
  193. package/.agents/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -0
  194. package/.agents/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -0
  195. package/.agents/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -0
  196. package/.agents/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -0
  197. package/.agents/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -0
  198. package/.agents/skills/hyperframes-animation/rules/press-release-spring.md +296 -0
  199. package/.agents/skills/hyperframes-animation/rules/reactive-displacement.md +277 -0
  200. package/.agents/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -0
  201. package/.agents/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -0
  202. package/.agents/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -0
  203. package/.agents/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -0
  204. package/.agents/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -0
  205. package/.agents/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -0
  206. package/.agents/skills/hyperframes-animation/rules/svg-path-draw.md +274 -0
  207. package/.agents/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -0
  208. package/.agents/skills/hyperframes-animation/rules/viewport-change.md +349 -0
  209. package/.agents/skills/hyperframes-animation/rules-index.md +86 -0
  210. package/.agents/skills/hyperframes-animation/scripts/animation-map.mjs +606 -0
  211. package/.agents/skills/hyperframes-animation/scripts/package-loader.mjs +288 -0
  212. package/.agents/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
  213. package/.agents/skills/hyperframes-animation/techniques.md +507 -0
  214. package/.agents/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -0
  215. package/.agents/skills/hyperframes-animation/transitions/catalog.md +127 -0
  216. package/.agents/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  217. package/.agents/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  218. package/.agents/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  219. package/.agents/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  220. package/.agents/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  221. package/.agents/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  222. package/.agents/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  223. package/.agents/skills/hyperframes-animation/transitions/css-light.md +49 -0
  224. package/.agents/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  225. package/.agents/skills/hyperframes-animation/transitions/css-other.md +25 -0
  226. package/.agents/skills/hyperframes-animation/transitions/css-push.md +41 -0
  227. package/.agents/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  228. package/.agents/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  229. package/.agents/skills/hyperframes-animation/transitions/overview.md +153 -0
  230. package/.agents/skills/hyperframes-cli/SKILL.md +113 -0
  231. package/.agents/skills/hyperframes-cli/references/doctor-browser.md +45 -0
  232. package/.agents/skills/hyperframes-cli/references/init-and-scaffold.md +55 -0
  233. package/.agents/skills/hyperframes-cli/references/lambda.md +132 -0
  234. package/.agents/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -0
  235. package/.agents/skills/hyperframes-cli/references/preview-render.md +149 -0
  236. package/.agents/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -0
  237. package/.agents/skills/hyperframes-core/SKILL.md +78 -0
  238. package/.agents/skills/hyperframes-core/references/composition-patterns.md +263 -0
  239. package/.agents/skills/hyperframes-core/references/data-attributes.md +70 -0
  240. package/.agents/skills/hyperframes-core/references/determinism-rules.md +68 -0
  241. package/.agents/skills/hyperframes-core/references/full-screen-motion.md +62 -0
  242. package/.agents/skills/hyperframes-core/references/minimal-composition.md +66 -0
  243. package/.agents/skills/hyperframes-core/references/script-format.md +49 -0
  244. package/.agents/skills/hyperframes-core/references/storyboard-format.md +95 -0
  245. package/.agents/skills/hyperframes-core/references/sub-compositions.md +237 -0
  246. package/.agents/skills/hyperframes-core/references/subagent-dispatch.md +41 -0
  247. package/.agents/skills/hyperframes-core/references/tailwind.md +125 -0
  248. package/.agents/skills/hyperframes-core/references/tracks-and-clips.md +76 -0
  249. package/.agents/skills/hyperframes-core/references/variables-and-media.md +90 -0
  250. package/.agents/skills/hyperframes-creative/SKILL.md +70 -0
  251. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  252. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  253. package/.agents/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  254. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  255. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  256. package/.agents/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  257. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  258. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  259. package/.agents/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  260. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  261. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  262. package/.agents/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  263. package/.agents/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  264. package/.agents/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  265. package/.agents/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  266. package/.agents/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  267. package/.agents/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  268. package/.agents/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  269. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  270. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  271. package/.agents/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  272. package/.agents/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -0
  273. package/.agents/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -0
  274. package/.agents/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -0
  275. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  276. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  277. package/.agents/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  278. package/.agents/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  279. package/.agents/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  280. package/.agents/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  281. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  282. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  283. package/.agents/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  284. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  285. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  286. package/.agents/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  287. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  288. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  289. package/.agents/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  290. package/.agents/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  291. package/.agents/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  292. package/.agents/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  293. package/.agents/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  294. package/.agents/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  295. package/.agents/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  296. package/.agents/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  297. package/.agents/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  298. package/.agents/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  299. package/.agents/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  300. package/.agents/skills/hyperframes-creative/references/beat-direction.md +164 -0
  301. package/.agents/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  302. package/.agents/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  303. package/.agents/skills/hyperframes-creative/references/design-adherence.md +19 -0
  304. package/.agents/skills/hyperframes-creative/references/design-picker.md +123 -0
  305. package/.agents/skills/hyperframes-creative/references/design-spec.md +55 -0
  306. package/.agents/skills/hyperframes-creative/references/house-style.md +73 -0
  307. package/.agents/skills/hyperframes-creative/references/motion-principles.md +150 -0
  308. package/.agents/skills/hyperframes-creative/references/narration.md +92 -0
  309. package/.agents/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  310. package/.agents/skills/hyperframes-creative/references/typography.md +218 -0
  311. package/.agents/skills/hyperframes-creative/references/video-composition.md +63 -0
  312. package/.agents/skills/hyperframes-creative/references/visual-styles.md +457 -0
  313. package/.agents/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -0
  314. package/.agents/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -0
  315. package/.agents/skills/hyperframes-creative/scripts/package-loader.mjs +288 -0
  316. package/.agents/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
  317. package/.agents/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  318. package/.agents/skills/hyperframes-keyframes/SKILL.md +237 -0
  319. package/.agents/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  320. package/.agents/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -0
  321. package/.agents/skills/motion-graphics/SKILL.md +172 -0
  322. package/.agents/skills/motion-graphics/agents/builder.md +40 -0
  323. package/.agents/skills/motion-graphics/agents/director.md +53 -0
  324. package/.agents/skills/motion-graphics/agents/finalize.md +17 -0
  325. package/.agents/skills/motion-graphics/catalog-map.md +40 -0
  326. package/.agents/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  327. package/.agents/skills/motion-graphics/categories/charts/module.md +21 -0
  328. package/.agents/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  329. package/.agents/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  330. package/.agents/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
  331. package/.agents/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
  332. package/.agents/skills/motion-graphics/categories/maps/module.md +61 -0
  333. package/.agents/skills/motion-graphics/categories/news/module.md +56 -0
  334. package/.agents/skills/motion-graphics/categories/stat/module.md +21 -0
  335. package/.agents/skills/motion-graphics/categories/tweet/module.md +16 -0
  336. package/.agents/skills/motion-graphics/categories/webpage/module.md +21 -0
  337. package/.agents/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  338. package/.agents/skills/motion-graphics/grounding/locate.mjs +227 -0
  339. package/.agents/skills/motion-graphics/phases/source/guide.md +21 -0
  340. package/.agents/skills/motion-graphics/references/builder-contract.md +38 -0
  341. package/.agents/skills/motion-graphics/references/motion-vocabulary.md +43 -0
  342. package/.agents/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  343. package/.agents/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  344. package/.agents/skills/product-launch-video/SKILL.md +208 -0
  345. package/.agents/skills/product-launch-video/references/cut-catalog.md +220 -0
  346. package/.agents/skills/product-launch-video/references/motion-language.md +156 -0
  347. package/.agents/skills/product-launch-video/references/story-design.md +373 -0
  348. package/.agents/skills/product-launch-video/references/visual-design.md +126 -0
  349. package/.agents/skills/product-launch-video/scripts/assemble-index.mjs +570 -0
  350. package/.agents/skills/product-launch-video/scripts/audio.mjs +260 -0
  351. package/.agents/skills/product-launch-video/scripts/build-frame.mjs +536 -0
  352. package/.agents/skills/product-launch-video/scripts/captions.mjs +508 -0
  353. package/.agents/skills/product-launch-video/scripts/lib/assets.mjs +55 -0
  354. package/.agents/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
  355. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
  356. package/.agents/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
  357. package/.agents/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
  358. package/.agents/skills/product-launch-video/scripts/lib/tokens.mjs +204 -0
  359. package/.agents/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
  360. package/.agents/skills/product-launch-video/scripts/lib/transitions.json +71 -0
  361. package/.agents/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
  362. package/.agents/skills/product-launch-video/scripts/transitions.mjs +327 -0
  363. package/.agents/skills/product-launch-video/sub-agents/frame-worker.md +75 -0
  364. package/.agents/skills/slideshow/SKILL.md +550 -0
  365. package/.agents/skills/slideshow/references/standalone-harness.md +1020 -0
  366. package/.agents/skills/talking-head-recut/NOTICE.md +39 -0
  367. package/.agents/skills/talking-head-recut/SKILL.md +1195 -0
  368. package/.agents/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
  369. package/.agents/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  370. package/.agents/skills/talking-head-recut/references/frames/clean.html +92 -0
  371. package/.agents/skills/talking-head-recut/references/frames/hairline.html +171 -0
  372. package/.agents/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  373. package/.agents/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  374. package/.agents/skills/talking-head-recut/references/layouts/pip.html +143 -0
  375. package/.agents/skills/talking-head-recut/references/layouts/split.html +121 -0
  376. package/.agents/skills/talking-head-recut/references/layouts/stack.html +109 -0
  377. package/.agents/skills/talking-head-recut/references/styles/academic.html +172 -0
  378. package/.agents/skills/talking-head-recut/references/styles/audit.html +170 -0
  379. package/.agents/skills/talking-head-recut/references/styles/editorial.html +189 -0
  380. package/.agents/skills/talking-head-recut/references/styles/geom.html +181 -0
  381. package/.agents/skills/talking-head-recut/references/styles/minimal.html +130 -0
  382. package/.agents/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  383. package/.agents/skills/talking-head-recut/references/styles/swiss.html +188 -0
  384. package/.agents/skills/talking-head-recut/references/styles/terminal.html +196 -0
  385. package/.agents/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  386. package/.agents/skills/talking-head-recut/references/styles/xhs.html +206 -0
  387. package/.agents/skills/vidfarm-media/SKILL.md +85 -0
  388. package/.agents/skills/vidfarm-media/references/tts.md +54 -0
  389. package/.agents/skills/vidfarm-media/scripts/audio.mjs +628 -0
  390. package/.agents/skills/vidfarm-media/scripts/wait-bgm.mjs +31 -0
  391. package/.agents/skills/website-to-video/SKILL.md +145 -0
  392. package/.agents/skills/website-to-video/assets/sfx/CREDITS.md +35 -0
  393. package/.agents/skills/website-to-video/assets/sfx/manifest.json +97 -0
  394. package/.agents/skills/website-to-video/references/beat-builder-guide.md +263 -0
  395. package/.agents/skills/website-to-video/references/capabilities.md +713 -0
  396. package/.agents/skills/website-to-video/references/step-0-capture.md +55 -0
  397. package/.agents/skills/website-to-video/references/step-1-design.md +333 -0
  398. package/.agents/skills/website-to-video/references/step-2-brief.md +178 -0
  399. package/.agents/skills/website-to-video/references/step-3-storyboard.md +572 -0
  400. package/.agents/skills/website-to-video/references/step-4-vo.md +225 -0
  401. package/.agents/skills/website-to-video/references/step-5-build.md +483 -0
  402. package/.agents/skills/website-to-video/references/step-6-validate.md +341 -0
  403. package/.agents/skills/website-to-video/scripts/w2h-verify.mjs +759 -0
  404. package/SKILL.director.md +60 -4
  405. package/SKILL.platform.md +7 -2
  406. package/demo/dist/app.css +1 -1
  407. package/demo/dist/app.js +485 -86
  408. package/dist/src/account-pages-legacy.js +9 -14
  409. package/dist/src/app.js +659 -159
  410. package/dist/src/cli.js +618 -17
  411. package/dist/src/composition-runtime.js +286 -6
  412. package/dist/src/devcli/composition-edit.js +176 -8
  413. package/dist/src/devcli/doctor.js +192 -0
  414. package/dist/src/devcli/hyperframes-cli.js +118 -0
  415. package/dist/src/devcli/skills.js +476 -0
  416. package/dist/src/devcli/stills.js +249 -0
  417. package/dist/src/devcli/transitions.js +205 -0
  418. package/dist/src/editor-chat.js +260 -4
  419. package/dist/src/frontend/template-editor-chat.js +6 -5
  420. package/dist/src/homepage.js +2 -48
  421. package/dist/src/hyperframes/composition.js +188 -7
  422. package/dist/src/services/composition-lint.js +199 -0
  423. package/dist/src/services/hyperframes.js +127 -28
  424. package/dist/src/services/serverless-records.js +7 -0
  425. package/dist/src/template-editor-shell.js +87 -48
  426. package/package.json +2 -1
  427. package/public/assets/page-runtime-client-app.js +31 -31
@@ -0,0 +1,98 @@
1
+ # Template: champion
2
+
3
+ **Look:** podcast / interview, upper-side column with intro→phrase→emph
4
+ beats building toward a center-stage CROWN that crosses the subject's body.
5
+ "Wimbledon Champion" energy.
6
+
7
+ **Visual identity (LOCKED):**
8
+
9
+ - 5 typography slots: intro / phrase / emph / dream / crown
10
+ - `mix-blend-mode: screen` over warm bone color (#fff5df)
11
+ - Deep text-shadow + brightness boost
12
+ - Single-caption-swap layout (caps stack at one point in the column)
13
+ - Center-stage crown crosses the subject for cinematic occlusion
14
+
15
+ ## When to apply
16
+
17
+ ✅ **Good fit:**
18
+
19
+ - Podcast / interview style with a single seated subject
20
+ - Cluttered backdrop (bookshelf, props, dark) — screen blend reads through
21
+ - Subject roughly centered with clear clean zones on one or both sides
22
+ - Speech has a clear payoff line that can become a "crown" (1-3 short words)
23
+ - 16:9 landscape, 1920×1080 ideal
24
+
25
+ ❌ **Wrong fit:**
26
+
27
+ - Bright/sky/window backdrop (screen blend washes out)
28
+ - Subject heavily off-center such that there's no clean column zone
29
+ - Speech has no clear climax line
30
+ - Portrait 9:16 → use `portrait-header` template instead
31
+
32
+ ## Layout decisions agent makes
33
+
34
+ | Field | What | Example (1920×1080) |
35
+ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
36
+ | `plane.top/left/width/height` | Where the side column sits. Pick the side opposite the subject's gaze (looking room) and hug the cleanest backdrop zone. | `{top: 40, left: 40, width: 720, height: 420}` |
37
+ | `plane.rotateY` | Slight perspective into the wall. Positive for left column (recedes right), negative for right column. Keep small (3-7°). | `4` |
38
+ | `crown_top` | Y position of the crown. Should fall on the subject's chest/neck so the body occludes the middle letters. | `420` |
39
+ | `font_scale` | Multiplier on locked sizes. | `1.0` for 1920×1080 |
40
+ | `crown_enabled` | Whether to render a crown. Skip if the speech has no clean payoff line, or if the subject is too far off-center for a center crown to land. | `true` |
41
+
42
+ ### Crown placement rules
43
+
44
+ Before enabling the crown, verify all 3 conditions:
45
+
46
+ 1. Subject body center within ±10% of frame horizontal center
47
+ 2. Clean zones ≥15% of frame width on each side of subject
48
+ 3. Crown text width (uppercase 140px × ~chars) > subject body width + 400px
49
+
50
+ If any fails: disable the crown OR use a smaller font + place it in the
51
+ larger clean zone instead of center. See `references/layout-heuristics.md`.
52
+
53
+ ## Slot assignment
54
+
55
+ | Slot | Use for |
56
+ | ------ | ---------------------------------------------------------- |
57
+ | intro | Filler / discourse markers ("you know,", "for me,", "so…") |
58
+ | phrase | Main statement clauses |
59
+ | emph | Key achievement / superlative line |
60
+ | dream | Aspirational lines, past-tense reflection |
61
+ | crown | The single climax line — center-stage payoff |
62
+
63
+ Aim for ≤3 slots per video (excluding crown). Don't use all 4 in a 12s clip.
64
+
65
+ ## Plan.json shape
66
+
67
+ ```json
68
+ {
69
+ "mode": "template",
70
+ "template": "champion",
71
+ "duration": 12.08, "fps": 24, "width": 1920, "height": 1080,
72
+ "plane": {
73
+ "top": 40, "left": 40, "width": 720, "height": 420,
74
+ "rotateY": 4
75
+ },
76
+ "crown_top": 420,
77
+ "font_scale": 1.0,
78
+ "groups": [
79
+ { "id": "cg-0", "slot": "intro", "tone": "soft",
80
+ "in": 0.10, "out": 1.45, "words": [...] },
81
+ { "id": "cg-1", "slot": "phrase", "tone": "soft",
82
+ "in": 1.55, "out": 4.20, "words": [...] },
83
+ { "id": "cg-2", "slot": "emph", "tone": "present",
84
+ "in": 6.50, "out": 8.30, "words": [...] }
85
+ ],
86
+ "crown_group": {
87
+ "id": "cg-crown", "tone": "present",
88
+ "in": 10.85, "out": 12.08,
89
+ "words": [
90
+ {"text": "Wimbledon", "start": 10.94, "end": 11.28},
91
+ {"text": "Champion", "start": 11.38, "end": 11.84}
92
+ ]
93
+ }
94
+ }
95
+ ```
96
+
97
+ `crown_group` always uses the crown slot — no need to specify `slot`.
98
+ Set `crown_group: null` to disable.
@@ -0,0 +1,188 @@
1
+ <!doctype html>
2
+ <!--
3
+ TEMPLATE: champion
4
+ STYLE LOCKED. LAYOUT OPEN.
5
+
6
+ Look: podcast / interview, upper-left column with intro→phrase→emph
7
+ beats, big center-stage CROWN crossing the subject for the payoff.
8
+
9
+ Locked:
10
+ - 5 typography slots: intro / phrase / emph / dream / crown
11
+ - mix-blend-mode: screen, color #fff5df, deep text-shadow
12
+ - Single-caption-swap layout (caps absolute-positioned in left-plane)
13
+ - GSAP soft/present per-word reveal
14
+
15
+ Open via plan.json:
16
+ - left-plane geometry + perspective
17
+ - crown_plane top
18
+ - --font-scale
19
+ - GROUPS array + slot per group
20
+ - whether crown is enabled (crown_group)
21
+ -->
22
+ <html lang="en">
23
+ <head>
24
+ <meta charset="UTF-8" />
25
+ <meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
26
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
27
+ <style>
28
+ :root { --font-scale: {{FONT_SCALE}}; }
29
+
30
+ * { margin: 0; padding: 0; box-sizing: border-box; }
31
+ html, body {
32
+ margin: 0;
33
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
34
+ overflow: hidden;
35
+ background: #000;
36
+ font-family: "Inter", system-ui, sans-serif;
37
+ }
38
+ #a-roll { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
39
+
40
+ #stage {
41
+ position: absolute;
42
+ top: 0; left: 0;
43
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
44
+ perspective: 2400px;
45
+ perspective-origin: 25% 50%;
46
+ pointer-events: none;
47
+ z-index: 2;
48
+ }
49
+
50
+ /* LAYOUT */
51
+ .left-plane {
52
+ position: absolute;
53
+ top: {{PLANE_TOP}}px;
54
+ left: {{PLANE_LEFT}}px;
55
+ width: {{PLANE_WIDTH}}px;
56
+ height: {{PLANE_HEIGHT}}px;
57
+ transform-style: preserve-3d;
58
+ transform: rotateY({{ROTATE_Y}}deg);
59
+ transform-origin: left center;
60
+ padding: 24px 36px;
61
+ }
62
+ .left-plane .cap {
63
+ position: absolute;
64
+ top: 24px;
65
+ right: 36px;
66
+ max-width: calc({{PLANE_WIDTH}}px - 72px);
67
+ }
68
+ .crown-plane {
69
+ position: absolute;
70
+ top: {{CROWN_TOP}}px;
71
+ left: {{CROWN_LEFT}}px;
72
+ right: {{CROWN_RIGHT}}px;
73
+ text-align: {{CROWN_ALIGN}};
74
+ pointer-events: none;
75
+ }
76
+ .crown-plane .cap-crown {
77
+ font-size: calc(140px * var(--font-scale) * {{CROWN_SCALE}});
78
+ }
79
+
80
+ /* STYLE (locked) */
81
+ .cap {
82
+ display: block;
83
+ position: relative;
84
+ line-height: 1.02;
85
+ opacity: 0;
86
+ mix-blend-mode: {{BLEND_MODE}};
87
+ color: {{CAP_COLOR}};
88
+ text-shadow: {{TEXT_SHADOW}};
89
+ filter: {{TEXT_FILTER}};
90
+ will-change: transform, opacity;
91
+ }
92
+ .cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
93
+
94
+ .cap-intro { font-size: calc(52px * var(--font-scale));
95
+ font-weight: 500; font-style: italic;
96
+ letter-spacing: -0.005em; }
97
+ .cap-phrase { font-size: calc(60px * var(--font-scale));
98
+ font-weight: 600;
99
+ letter-spacing: -0.015em; }
100
+ .cap-emph { font-size: calc(70px * var(--font-scale));
101
+ font-weight: 800;
102
+ letter-spacing: -0.025em; }
103
+ .cap-dream { font-size: calc(64px * var(--font-scale));
104
+ font-weight: 700; font-style: italic;
105
+ letter-spacing: -0.015em; }
106
+ .cap-crown { font-size: calc(140px * var(--font-scale));
107
+ font-weight: 900;
108
+ letter-spacing: -0.035em; text-transform: uppercase;
109
+ line-height: 1.0; }
110
+ </style>
111
+ </head>
112
+ <body>
113
+ <div
114
+ id="root"
115
+ data-composition-id="main"
116
+ data-start="0"
117
+ data-duration="{{DURATION}}"
118
+ data-width="{{WIDTH}}"
119
+ data-height="{{HEIGHT}}"
120
+ >
121
+ <video
122
+ id="a-roll"
123
+ src="source.mp4"
124
+ muted
125
+ playsinline
126
+ data-duration="{{DURATION}}"
127
+ data-track-index="0"
128
+ style="z-index: 1"
129
+ ></video>
130
+
131
+ <div id="stage">
132
+ <div class="left-plane">{{GROUPS_HTML}}</div>
133
+ <div class="crown-plane">{{CROWN_HTML}}</div>
134
+ </div>
135
+
136
+ <audio
137
+ id="a-roll-audio"
138
+ src="source.mp4"
139
+ data-start="0"
140
+ data-duration="{{DURATION}}"
141
+ data-track-index="3"
142
+ data-volume="1"
143
+ ></audio>
144
+ </div>
145
+
146
+ <script>
147
+ window.__timelines = window.__timelines || {};
148
+ const tl = gsap.timeline({ paused: true });
149
+ const DUR = {{DURATION}};
150
+ const GROUPS = {{GROUPS_JSON}};
151
+ const CROWN = {{CROWN_JSON}};
152
+
153
+ function animateGroup(g) {
154
+ var sel = "#" + g.id;
155
+ var isSoft = g.tone === "soft";
156
+ tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
157
+
158
+ g.words.forEach(function (w, i) {
159
+ var wsel = sel + " .w[data-i='" + i + "']";
160
+ if (isSoft) {
161
+ tl.fromTo(wsel,
162
+ { opacity: 0, y: 8 },
163
+ { opacity: 1, y: 0, duration: 0.42, ease: "power2.out", overwrite: "auto" },
164
+ w.start);
165
+ } else {
166
+ tl.fromTo(wsel,
167
+ { opacity: 0, y: 6, scale: 1.04 },
168
+ { opacity: 1, y: 0, scale: 1.0, duration: 0.22,
169
+ ease: "power3.out", overwrite: "auto", transformOrigin: "50% 50%" },
170
+ w.start);
171
+ }
172
+ });
173
+
174
+ if (g.out < DUR) {
175
+ tl.to(sel, { opacity: 0, duration: 0.45, ease: "power2.in", overwrite: "auto" },
176
+ g.out - 0.45);
177
+ }
178
+ tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
179
+ }
180
+
181
+ GROUPS.forEach(animateGroup);
182
+ if (CROWN) animateGroup(CROWN);
183
+
184
+ tl.seek(0);
185
+ window.__timelines["main"] = tl;
186
+ </script>
187
+ </body>
188
+ </html>
@@ -0,0 +1,134 @@
1
+ # Template: memory-wall
2
+
3
+ **Look:** introspective monologue, italic poem stacking on a back wall,
4
+ right-aligned cascade for the climax. Sam Harris / Pico Iyer territory.
5
+
6
+ **Visual identity (LOCKED — do not change):**
7
+
8
+ - 4-slot typography arc: italic 600 → italic 500 hanging-indent → upright
9
+ 700 pivot → uppercase 900 climax
10
+ - `mix-blend-mode: screen` over warm-bone color (#fff4dc)
11
+ - soft text-shadow + brightness boost
12
+ - Per-word fade with subtle Y-drift (soft tone) or pop+scale (present tone)
13
+
14
+ ## When to apply
15
+
16
+ ✅ **Good fit:**
17
+
18
+ - Talking-head with a flat back wall (acoustic foam, plain plaster, soft
19
+ bookshelf) on one side
20
+ - Single subject, fixed or near-fixed camera
21
+ - Voice-over feel: introspective, narrative, "I was thinking…"
22
+ - Mid-tone or dark backdrop (luminance < 180)
23
+
24
+ ❌ **Wrong fit:**
25
+
26
+ - Bright window/sky backdrop → screen blend blows out
27
+ - Cluttered backdrop with text/graphics → conflicts with caption text
28
+ - Energetic / vlog / TikTok style → wrong vibe
29
+ - Multiple speakers / hard cuts → caption arc breaks
30
+
31
+ ## What agent decides per scene
32
+
33
+ | Field | What | Example |
34
+ | ------------------------------ | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------ |
35
+ | `plane.top/right/width/height` | Where the wall plane sits in frame. Plane should HUG the side of the wall, not float over the subject. | `{top: 90, right: 30, width: 720, height: 520}` for 1280×720 |
36
+ | `plane.rotateY` | Match the wall's perspective angle. Negative for right-side wall (text recedes left), positive for left-side wall. | `-13` for a right-side wall at slight angle |
37
+ | `plane.rotateX` | Tiny vertical tilt if wall is angled up/down. Usually 0-2 deg. | `1` |
38
+ | `font_scale` | Multiplier on the locked cap-N base sizes. Tune for frame height. | `1.0` for 1280×720, `~1.5` for 1920×1080, `~0.7` for 720p portrait |
39
+ | `groups[].slot` | Which of the 4 typography slots this group uses (1/2/3/4). Drives the arc. | See below |
40
+ | `groups[].tone` | "soft" or "present" — drives motion curve | `"soft"` for opening lines, `"present"` for pivot+climax |
41
+
42
+ ## Slot assignment rules
43
+
44
+ Aim for ONE arc across the video: `1 → 2 → 3 → 4`. Don't repeat slots if you
45
+ can avoid it; don't skip slots without reason.
46
+
47
+ | Slot | Use for |
48
+ | ---- | ---------------------------------------------------------------------------------------------------------------------------------------- |
49
+ | 1 | The opener. The "I was thinking" line. Italic, soft entry. |
50
+ | 2 | The dreamy continuation / modifier. Smaller italic, hanging-indent — feels like the second half of a sentence with some staggered drift. |
51
+ | 3 | The pivot. Upright (no italic), the syntactic turn. ("but suddenly", "and then…") |
52
+ | 4 | The climax. Big uppercase 900. The payoff line. Aim for ≤4 short words so the right-aligned cascade naturally wraps to 2-3 lines. |
53
+
54
+ If the script is longer than 4 groups, repeat slot 1 or 2 for additional
55
+ soft lines, but reserve slot 4 for the SINGLE climax.
56
+
57
+ ## Plan.json shape
58
+
59
+ ```json
60
+ {
61
+ "mode": "template",
62
+ "template": "memory-wall",
63
+ "duration": 8.04,
64
+ "fps": 24,
65
+ "width": 1280,
66
+ "height": 720,
67
+ "plane": {
68
+ "top": 90,
69
+ "right": 30,
70
+ "width": 720,
71
+ "height": 520,
72
+ "rotateY": -13,
73
+ "rotateX": 1
74
+ },
75
+ "font_scale": 1.0,
76
+ "groups": [
77
+ {
78
+ "id": "cg-0",
79
+ "slot": 1,
80
+ "tone": "soft",
81
+ "in": 0.2,
82
+ "out": 4.85,
83
+ "words": [
84
+ { "text": "Some", "start": 0.24, "end": 0.44 },
85
+ { "text": "memories", "start": 0.48, "end": 0.82 },
86
+ { "text": "feel", "start": 0.92, "end": 1.14 },
87
+ { "text": "soft", "start": 1.2, "end": 1.64 }
88
+ ]
89
+ },
90
+ {
91
+ "id": "cg-1",
92
+ "slot": 2,
93
+ "tone": "soft",
94
+ "in": 2.55,
95
+ "out": 4.85,
96
+ "words": [
97
+ { "text": "like", "start": 2.66, "end": 2.78 },
98
+ { "text": "old", "start": 2.86, "end": 3.02 },
99
+ { "text": "film", "start": 3.16, "end": 3.46 }
100
+ ]
101
+ },
102
+ {
103
+ "id": "cg-2",
104
+ "slot": 3,
105
+ "tone": "present",
106
+ "in": 4.9,
107
+ "out": 8.04,
108
+ "words": [
109
+ { "text": "but", "start": 5.04, "end": 5.18 },
110
+ { "text": "suddenly", "start": 5.24, "end": 5.76 }
111
+ ]
112
+ },
113
+ {
114
+ "id": "cg-3",
115
+ "slot": 4,
116
+ "tone": "present",
117
+ "in": 6.7,
118
+ "out": 8.04,
119
+ "words": [
120
+ { "text": "everything", "start": 6.82, "end": 7.14 },
121
+ { "text": "is", "start": 7.18, "end": 7.28 },
122
+ { "text": "sharp", "start": 7.32, "end": 7.52 },
123
+ { "text": "again", "start": 7.58, "end": 7.92 }
124
+ ]
125
+ }
126
+ ]
127
+ }
128
+ ```
129
+
130
+ ## Don't fight the template
131
+
132
+ If the user wants different typography, different blend, or different motion:
133
+ **use Standard mode** (`../../standard/`). Don't try to override the locked CSS — the
134
+ template's visual consistency is the whole point.
@@ -0,0 +1,179 @@
1
+ <!doctype html>
2
+ <!--
3
+ TEMPLATE: memory-wall
4
+ STYLE LOCKED. LAYOUT OPEN.
5
+
6
+ Locked (do not edit — overriding breaks visual consistency):
7
+ - cap-1/2/3/4 typography (weights, italic, letter-spacing, padding-right)
8
+ - mix-blend-mode: screen
9
+ - color, text-shadow, filter
10
+ - GSAP motion: container fade-in via tl.set, per-word opacity+y reveal,
11
+ group fade-out 0.45s before g.out
12
+
13
+ Open (agent fills via plan.json):
14
+ - {{PLANE_TOP}} {{PLANE_RIGHT}} {{PLANE_WIDTH}} {{PLANE_HEIGHT}}
15
+ - {{ROTATE_Y}} {{ROTATE_X}} (perspective angle on the wall)
16
+ - --font-scale CSS var (multiplies all cap-N sizes — agent tunes for frame)
17
+ - GROUPS array (transcript groups, slot assignment 1/2/3/4, in/out/words)
18
+
19
+ Style typography is keyed to "slots", semantic positions in the arc:
20
+ cap-1: opener (italic, soft entry)
21
+ cap-2: continuation (smaller italic, hanging indent — ragged poem feel)
22
+ cap-3: pivot (upright, no italic, syntactic turn)
23
+ cap-4: climax (UPPERCASE 900, the payoff line)
24
+ -->
25
+ <html lang="en">
26
+ <head>
27
+ <meta charset="UTF-8" />
28
+ <meta name="viewport" content="width={{WIDTH}}, height={{HEIGHT}}" />
29
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
30
+ <style>
31
+ :root { --font-scale: {{FONT_SCALE}}; }
32
+
33
+ * { margin: 0; padding: 0; box-sizing: border-box; }
34
+ html, body {
35
+ margin: 0;
36
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
37
+ overflow: hidden;
38
+ background: #000;
39
+ font-family: "Inter", system-ui, sans-serif;
40
+ }
41
+
42
+ #a-roll {
43
+ position: absolute; inset: 0;
44
+ width: 100%; height: 100%;
45
+ object-fit: cover;
46
+ }
47
+
48
+ #stage {
49
+ position: absolute;
50
+ top: 0; left: 0;
51
+ width: {{WIDTH}}px; height: {{HEIGHT}}px;
52
+ perspective: 1400px;
53
+ perspective-origin: 30% 40%;
54
+ pointer-events: none;
55
+ z-index: 2;
56
+ }
57
+
58
+ /* LAYOUT (agent-tunable via plan.json) */
59
+ .wall-plane {
60
+ position: absolute;
61
+ top: {{PLANE_TOP}}px;
62
+ right: {{PLANE_RIGHT}}px;
63
+ width: {{PLANE_WIDTH}}px;
64
+ height: {{PLANE_HEIGHT}}px;
65
+ transform-style: preserve-3d;
66
+ transform: rotateY({{ROTATE_Y}}deg) rotateX({{ROTATE_X}}deg);
67
+ transform-origin: right center;
68
+ padding: 24px 32px;
69
+ display: flex;
70
+ flex-direction: column;
71
+ justify-content: center;
72
+ align-items: flex-end;
73
+ text-align: right;
74
+ gap: 14px;
75
+ }
76
+
77
+ /* STYLE (locked) */
78
+ .cap {
79
+ display: block;
80
+ position: relative;
81
+ line-height: 1.05;
82
+ opacity: 0;
83
+ mix-blend-mode: {{BLEND_MODE}};
84
+ color: {{CAP_COLOR}};
85
+ text-shadow: {{TEXT_SHADOW}};
86
+ filter: {{TEXT_FILTER}};
87
+ will-change: transform, opacity;
88
+ }
89
+ .cap .w { display: inline-block; opacity: 0; will-change: opacity, transform; }
90
+
91
+ .cap-1 { font-size: calc(78px * var(--font-scale));
92
+ font-weight: 600; font-style: italic;
93
+ letter-spacing: -0.01em; }
94
+ .cap-2 { font-size: calc(66px * var(--font-scale));
95
+ font-weight: 500; font-style: italic;
96
+ letter-spacing: -0.005em;
97
+ padding-right: calc(44px * var(--font-scale)); }
98
+ .cap-3 { font-size: calc(72px * var(--font-scale));
99
+ font-weight: 700;
100
+ letter-spacing: -0.015em; }
101
+ .cap-4 { font-size: calc(90px * var(--font-scale));
102
+ font-weight: 900;
103
+ letter-spacing: -0.03em;
104
+ text-transform: uppercase;
105
+ line-height: 1.0; }
106
+ </style>
107
+ </head>
108
+ <body>
109
+ <div
110
+ id="root"
111
+ data-composition-id="main"
112
+ data-start="0"
113
+ data-duration="{{DURATION}}"
114
+ data-width="{{WIDTH}}"
115
+ data-height="{{HEIGHT}}"
116
+ >
117
+ <video
118
+ id="a-roll"
119
+ src="source.mp4"
120
+ muted
121
+ playsinline
122
+ data-duration="{{DURATION}}"
123
+ data-track-index="0"
124
+ style="z-index: 1"
125
+ ></video>
126
+
127
+ <div id="stage">
128
+ <div class="wall-plane">{{GROUPS_HTML}}</div>
129
+ </div>
130
+
131
+ <audio
132
+ id="a-roll-audio"
133
+ src="source.mp4"
134
+ data-start="0"
135
+ data-duration="{{DURATION}}"
136
+ data-track-index="3"
137
+ data-volume="1"
138
+ ></audio>
139
+ </div>
140
+
141
+ <script>
142
+ window.__timelines = window.__timelines || {};
143
+ const tl = gsap.timeline({ paused: true });
144
+ const DUR = {{DURATION}};
145
+ const GROUPS = {{GROUPS_JSON}};
146
+
147
+ GROUPS.forEach(function (g) {
148
+ var sel = "#" + g.id;
149
+ var isSoft = g.tone === "soft";
150
+ tl.set(sel, { opacity: 1, y: 0 }, Math.max(0, g.in - 0.01));
151
+
152
+ g.words.forEach(function (w, i) {
153
+ var wsel = sel + " .w[data-i='" + i + "']";
154
+ if (isSoft) {
155
+ tl.fromTo(wsel,
156
+ { opacity: 0, y: 8 },
157
+ { opacity: 1, y: 0, duration: 0.45, ease: "power2.out", overwrite: "auto" },
158
+ w.start);
159
+ } else {
160
+ tl.fromTo(wsel,
161
+ { opacity: 0, y: 6, scale: 1.04 },
162
+ { opacity: 1, y: 0, scale: 1.0, duration: 0.22,
163
+ ease: "power3.out", overwrite: "auto", transformOrigin: "100% 50%" },
164
+ w.start);
165
+ }
166
+ });
167
+
168
+ if (g.out < DUR) {
169
+ tl.to(sel, { opacity: 0, duration: 0.5, ease: "power2.in", overwrite: "auto" },
170
+ g.out - 0.5);
171
+ }
172
+ tl.set(sel, { opacity: 0, visibility: "hidden" }, g.out);
173
+ });
174
+
175
+ tl.seek(0);
176
+ window.__timelines["main"] = tl;
177
+ </script>
178
+ </body>
179
+ </html>
@@ -0,0 +1,81 @@
1
+ # Template: portrait-header
2
+
3
+ **Look:** 9:16 portrait talking-head with captions on a horizontal strip
4
+ across the top of the frame, above the subject's head. Optional crown at
5
+ the bottom for shots that include the subject's waist or below.
6
+
7
+ **Visual identity (LOCKED):**
8
+
9
+ - 5 typography slots: intro / phrase / emph / dream / crown (centered)
10
+ - `mix-blend-mode: screen` over warm bone color (#fff5df)
11
+ - Single-caption swap (caps stack at one position in the header strip)
12
+ - Per-word fade with subtle Y-drift (soft) or pop+scale (present)
13
+
14
+ ## When to apply
15
+
16
+ ✅ **Good fit:**
17
+
18
+ - 9:16 portrait video (1080×1920 typical)
19
+ - Single subject filling the center of the frame
20
+ - Clean band visible above the head
21
+ - Speech is relatively dense (many short phrases) — crown only for the
22
+ one true climax
23
+
24
+ ❌ **Wrong fit:**
25
+
26
+ - Subject's head crops to the very top of frame (no header band exists)
27
+ - 16:9 landscape → use `champion` or `memory-wall` instead
28
+ - Multiple speakers / cuts
29
+
30
+ ## Layout decisions
31
+
32
+ | Field | What | Example (1080×1920) |
33
+ | --------------- | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
34
+ | `header.top` | Y of the header strip. Should sit above the subject's head with ~30px breathing room. | `30` if hair top is around y=200 |
35
+ | `header.height` | Height of the strip. Bigger for longer captions / 2-line wraps. | `280` |
36
+ | `crown_top` | Y of the crown line (bottom of frame). Skip if no waist visible. | `1620` for a near-full-body shot |
37
+ | `crown_enabled` | Whether to render a bottom crown. Skip if subject body fills the lower half completely (matte will block crown anyway). | `false` for tight head-and-shoulders |
38
+ | `font_scale` | Scale multiplier on locked sizes. | `1.0` for 1080×1920 |
39
+
40
+ ## Slot assignment
41
+
42
+ Same arc as champion: intro / phrase / emph / dream / crown.
43
+
44
+ For portrait-header specifically, header band is narrow (one strip), so:
45
+
46
+ - Most groups fit on 1-2 lines
47
+ - Don't use crown if it'd be hidden by the body matte (Pausch-style portraits
48
+ often need to skip crown entirely and promote the climax to `emph` in the
49
+ header instead)
50
+
51
+ ## Plan.json shape
52
+
53
+ ```json
54
+ {
55
+ "mode": "template",
56
+ "template": "portrait-header",
57
+ "duration": 25.3, "fps": 24, "width": 1080, "height": 1920,
58
+ "header": { "top": 30, "height": 280 },
59
+ "crown_top": 1620,
60
+ "font_scale": 1.0,
61
+ "groups": [
62
+ { "id": "cg-0", "slot": "intro", "tone": "soft",
63
+ "in": 0.10, "out": 3.20, "words": [...] },
64
+ { "id": "cg-1", "slot": "phrase", "tone": "soft",
65
+ "in": 3.55, "out": 5.80, "words": [...] },
66
+ { "id": "cg-2", "slot": "emph", "tone": "present",
67
+ "in": 17.85, "out": 22.10,
68
+ "words": [
69
+ {"text": "Time", "start": 17.94, "end": 18.26},
70
+ {"text": "is", "start": 18.38, "end": 18.54},
71
+ {"text": "all", "start": 18.66, "end": 18.80},
72
+ {"text": "we", "start": 18.92, "end": 19.02},
73
+ {"text": "have", "start": 19.12, "end": 19.38}
74
+ ]}
75
+ ],
76
+ "crown_group": null
77
+ }
78
+ ```
79
+
80
+ Set `crown_group: null` if you've checked that a crown would be blocked by
81
+ the subject body or the shot composition.