takomi 2.5.1 → 2.5.4

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 (661) hide show
  1. package/.pi/agents/worker.md +32 -32
  2. package/.pi/extensions/oauth-router/README.md +3 -3
  3. package/.pi/extensions/oauth-router/config.ts +34 -34
  4. package/.pi/extensions/oauth-router/report-ui.ts +205 -205
  5. package/.pi/extensions/oauth-router/scripts/vibe-verify.py +5 -5
  6. package/.pi/extensions/takomi-context-manager/diagnostics.ts +560 -560
  7. package/.pi/extensions/takomi-context-manager/policy-tools.ts +93 -93
  8. package/.pi/extensions/takomi-context-manager/skill-categories.d.ts +11 -11
  9. package/.pi/extensions/takomi-context-manager/skill-tools.ts +208 -208
  10. package/.pi/extensions/takomi-context-manager/tool-renderers.ts +112 -112
  11. package/.pi/extensions/takomi-runtime/gate-provenance.ts +24 -24
  12. package/.pi/extensions/takomi-runtime/model-routing-defaults.ts +262 -262
  13. package/.pi/extensions/takomi-runtime/tool-renderers.ts +234 -234
  14. package/.pi/extensions/takomi-runtime/workflow-catalog.ts +54 -54
  15. package/.pi/extensions/takomi-subagents/async-lifecycle.ts +401 -401
  16. package/.pi/extensions/takomi-subagents/detached-results.ts +940 -940
  17. package/.pi/extensions/takomi-subagents/native-render.ts +253 -250
  18. package/.pi/extensions/takomi-subagents/result-heartbeat.ts +55 -55
  19. package/.pi/extensions/takomi-subagents/subagent-ux.ts +162 -162
  20. package/.pi/extensions/takomi-subagents/tool-runner.ts +25 -0
  21. package/.pi/takomi-profile.json +54 -54
  22. package/README.md +1 -1
  23. package/assets/.agent/skills/embedded-captions/CATALOG.md +93 -93
  24. package/assets/.agent/skills/embedded-captions/SKILL.md +286 -286
  25. package/assets/.agent/skills/embedded-captions/assets/brand/CDPR-fankit-terms.txt +35 -35
  26. package/assets/.agent/skills/embedded-captions/assets/brand/cyberpunk-widths.json +115 -115
  27. package/assets/.agent/skills/embedded-captions/assets/fonts/char-widths.json +2211 -2211
  28. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +241 -241
  29. package/assets/.agent/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +241 -241
  30. package/assets/.agent/skills/embedded-captions/dna/README.md +148 -148
  31. package/assets/.agent/skills/embedded-captions/dna/chrome.json +68 -68
  32. package/assets/.agent/skills/embedded-captions/dna/cream.json +69 -69
  33. package/assets/.agent/skills/embedded-captions/dna/documentary.json +62 -62
  34. package/assets/.agent/skills/embedded-captions/dna/editorial.json +70 -70
  35. package/assets/.agent/skills/embedded-captions/dna/glitch.json +82 -82
  36. package/assets/.agent/skills/embedded-captions/dna/ink.json +65 -65
  37. package/assets/.agent/skills/embedded-captions/dna/keynote.json +62 -62
  38. package/assets/.agent/skills/embedded-captions/dna/loud.json +75 -75
  39. package/assets/.agent/skills/embedded-captions/dna/neon.json +58 -58
  40. package/assets/.agent/skills/embedded-captions/dna/velocity.json +89 -89
  41. package/assets/.agent/skills/embedded-captions/modes/cinematic/README.md +48 -48
  42. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -98
  43. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -188
  44. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -134
  45. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -179
  46. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -81
  47. package/assets/.agent/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -170
  48. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -16
  49. package/assets/.agent/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -226
  50. package/assets/.agent/skills/embedded-captions/modes/cinematic/engine.html +355 -355
  51. package/assets/.agent/skills/embedded-captions/modes/standard/_anatomy.md +233 -233
  52. package/assets/.agent/skills/embedded-captions/modes/standard/_motion.md +192 -192
  53. package/assets/.agent/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -97
  54. package/assets/.agent/skills/embedded-captions/references/aesthetic-principles.md +168 -168
  55. package/assets/.agent/skills/embedded-captions/references/anti-patterns.md +188 -188
  56. package/assets/.agent/skills/embedded-captions/references/bespoke-vs-presets.md +178 -178
  57. package/assets/.agent/skills/embedded-captions/references/caption-grouping.md +130 -130
  58. package/assets/.agent/skills/embedded-captions/references/composition-craft.md +522 -522
  59. package/assets/.agent/skills/embedded-captions/references/direction-catalog.md +138 -138
  60. package/assets/.agent/skills/embedded-captions/references/example-renders/champion.html +371 -371
  61. package/assets/.agent/skills/embedded-captions/references/example-renders/memory-wall.html +334 -334
  62. package/assets/.agent/skills/embedded-captions/references/failure-modes.md +145 -145
  63. package/assets/.agent/skills/embedded-captions/references/layout-heuristics.md +238 -238
  64. package/assets/.agent/skills/embedded-captions/references/motion-vocabulary.md +148 -148
  65. package/assets/.agent/skills/embedded-captions/references/rail.md +68 -68
  66. package/assets/.agent/skills/embedded-captions/references/reference-bar.md +47 -47
  67. package/assets/.agent/skills/embedded-captions/references/scene-types.md +94 -94
  68. package/assets/.agent/skills/embedded-captions/references/test-set.md +66 -66
  69. package/assets/.agent/skills/embedded-captions/references/typographic-moves.md +266 -266
  70. package/assets/.agent/skills/embedded-captions/references/typography-presets.md +63 -63
  71. package/assets/.agent/skills/embedded-captions/scripts/audio-envelope.cjs +95 -95
  72. package/assets/.agent/skills/embedded-captions/scripts/check-occlusion.cjs +250 -250
  73. package/assets/.agent/skills/embedded-captions/scripts/check-overflow.cjs +194 -194
  74. package/assets/.agent/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -233
  75. package/assets/.agent/skills/embedded-captions/scripts/check-timing.cjs +173 -173
  76. package/assets/.agent/skills/embedded-captions/scripts/fill-timings.cjs +124 -124
  77. package/assets/.agent/skills/embedded-captions/scripts/fit-fonts.cjs +158 -158
  78. package/assets/.agent/skills/embedded-captions/scripts/gen-stroke-path.py +46 -46
  79. package/assets/.agent/skills/embedded-captions/scripts/inject-fonts.cjs +169 -169
  80. package/assets/.agent/skills/embedded-captions/scripts/lib-dna.cjs +201 -201
  81. package/assets/.agent/skills/embedded-captions/scripts/make-cinematic.cjs +1205 -1205
  82. package/assets/.agent/skills/embedded-captions/scripts/make-composition.cjs +404 -404
  83. package/assets/.agent/skills/embedded-captions/scripts/make-theme.cjs +8781 -8781
  84. package/assets/.agent/skills/embedded-captions/scripts/matte.cjs +279 -279
  85. package/assets/.agent/skills/embedded-captions/scripts/measure-layout.cjs +293 -293
  86. package/assets/.agent/skills/embedded-captions/scripts/prepare.sh +39 -39
  87. package/assets/.agent/skills/embedded-captions/scripts/preview-frames.cjs +268 -268
  88. package/assets/.agent/skills/embedded-captions/scripts/render-and-composite.sh +469 -469
  89. package/assets/.agent/skills/embedded-captions/scripts/render-theme.sh +34 -34
  90. package/assets/.agent/skills/embedded-captions/scripts/safe-zones.cjs +813 -813
  91. package/assets/.agent/skills/embedded-captions/scripts/transcribe.cjs +332 -332
  92. package/assets/.agent/skills/embedded-captions/themes/PORTING.md +49 -49
  93. package/assets/.agent/skills/embedded-captions/themes/README.md +244 -244
  94. package/assets/.agent/skills/embedded-captions/themes/anchor.json +27 -27
  95. package/assets/.agent/skills/embedded-captions/themes/arcade.json +51 -51
  96. package/assets/.agent/skills/embedded-captions/themes/aurora.json +41 -41
  97. package/assets/.agent/skills/embedded-captions/themes/biolume.json +35 -35
  98. package/assets/.agent/skills/embedded-captions/themes/brush.json +74 -74
  99. package/assets/.agent/skills/embedded-captions/themes/chalkboard.json +52 -52
  100. package/assets/.agent/skills/embedded-captions/themes/dossier.json +56 -56
  101. package/assets/.agent/skills/embedded-captions/themes/graffiti.json +62 -62
  102. package/assets/.agent/skills/embedded-captions/themes/hologram.json +41 -41
  103. package/assets/.agent/skills/embedded-captions/themes/inkwater.json +43 -43
  104. package/assets/.agent/skills/embedded-captions/themes/laser.json +46 -46
  105. package/assets/.agent/skills/embedded-captions/themes/lastpage.json +33 -33
  106. package/assets/.agent/skills/embedded-captions/themes/neonsign.json +53 -53
  107. package/assets/.agent/skills/embedded-captions/themes/nightcity.json +56 -56
  108. package/assets/.agent/skills/embedded-captions/themes/ordnance.json +54 -54
  109. package/assets/.agent/skills/embedded-captions/themes/papercut.json +37 -37
  110. package/assets/.agent/skills/embedded-captions/themes/popup.json +46 -46
  111. package/assets/.agent/skills/embedded-captions/themes/ransom.json +62 -62
  112. package/assets/.agent/skills/embedded-captions/themes/scoreboard.json +54 -54
  113. package/assets/.agent/skills/embedded-captions/themes/spectrum.json +46 -46
  114. package/assets/.agent/skills/embedded-captions/themes/stardust.json +29 -29
  115. package/assets/.agent/skills/embedded-captions/themes/stomp.json +43 -43
  116. package/assets/.agent/skills/embedded-captions/themes/terminal.json +49 -49
  117. package/assets/.agent/skills/embedded-captions/themes/thunder.json +44 -44
  118. package/assets/.agent/skills/embedded-captions/themes/transit.json +44 -44
  119. package/assets/.agent/skills/embedded-captions/themes/vhs.json +47 -47
  120. package/assets/.agent/skills/faceless-explainer/SKILL.md +209 -209
  121. package/assets/.agent/skills/faceless-explainer/references/cut-catalog.md +215 -215
  122. package/assets/.agent/skills/faceless-explainer/references/motion-language.md +156 -156
  123. package/assets/.agent/skills/faceless-explainer/references/story-design.md +248 -248
  124. package/assets/.agent/skills/faceless-explainer/references/visual-design.md +146 -146
  125. package/assets/.agent/skills/faceless-explainer/scripts/assemble-index.mjs +570 -570
  126. package/assets/.agent/skills/faceless-explainer/scripts/audio.mjs +253 -253
  127. package/assets/.agent/skills/faceless-explainer/scripts/build-frame.mjs +536 -536
  128. package/assets/.agent/skills/faceless-explainer/scripts/captions.mjs +508 -508
  129. package/assets/.agent/skills/faceless-explainer/scripts/lib/assets.mjs +55 -55
  130. package/assets/.agent/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -45
  131. package/assets/.agent/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -249
  132. package/assets/.agent/skills/faceless-explainer/scripts/lib/tokens.mjs +204 -204
  133. package/assets/.agent/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -38
  134. package/assets/.agent/skills/faceless-explainer/scripts/lib/transitions.json +71 -71
  135. package/assets/.agent/skills/faceless-explainer/scripts/transitions.mjs +320 -320
  136. package/assets/.agent/skills/faceless-explainer/sub-agents/frame-worker.md +75 -75
  137. package/assets/.agent/skills/figma/SKILL.md +121 -121
  138. package/assets/.agent/skills/general-video/SKILL.md +143 -143
  139. package/assets/.agent/skills/hyperframes/SKILL.md +164 -164
  140. package/assets/.agent/skills/hyperframes-animation/SKILL.md +84 -84
  141. package/assets/.agent/skills/hyperframes-animation/adapters/animate-text.md +64 -64
  142. package/assets/.agent/skills/hyperframes-animation/adapters/animejs.md +114 -114
  143. package/assets/.agent/skills/hyperframes-animation/adapters/css-animations.md +143 -143
  144. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +118 -118
  145. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -96
  146. package/assets/.agent/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +96 -96
  147. package/assets/.agent/skills/hyperframes-animation/adapters/gsap.md +105 -105
  148. package/assets/.agent/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -507
  149. package/assets/.agent/skills/hyperframes-animation/adapters/lottie.md +117 -117
  150. package/assets/.agent/skills/hyperframes-animation/adapters/three.md +131 -131
  151. package/assets/.agent/skills/hyperframes-animation/adapters/typegpu.md +178 -178
  152. package/assets/.agent/skills/hyperframes-animation/adapters/waapi.md +101 -101
  153. package/assets/.agent/skills/hyperframes-animation/blueprints/comparison-split.md +27 -27
  154. package/assets/.agent/skills/hyperframes-animation/blueprints/constellation-hub.md +44 -44
  155. package/assets/.agent/skills/hyperframes-animation/blueprints/cta-morph-press.md +28 -28
  156. package/assets/.agent/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +57 -57
  157. package/assets/.agent/skills/hyperframes-animation/blueprints/dataviz-countup.md +46 -46
  158. package/assets/.agent/skills/hyperframes-animation/blueprints/device-surface-showcase.md +53 -53
  159. package/assets/.agent/skills/hyperframes-animation/blueprints/grid-card-assemble.md +66 -66
  160. package/assets/.agent/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +78 -78
  161. package/assets/.agent/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +69 -69
  162. package/assets/.agent/skills/hyperframes-animation/blueprints/overwhelm-surround.md +28 -28
  163. package/assets/.agent/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -37
  164. package/assets/.agent/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -29
  165. package/assets/.agent/skills/hyperframes-animation/blueprints/titlecard-reveal.md +42 -42
  166. package/assets/.agent/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -51
  167. package/assets/.agent/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -30
  168. package/assets/.agent/skills/hyperframes-animation/blueprints-index.md +146 -146
  169. package/assets/.agent/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -382
  170. package/assets/.agent/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -649
  171. package/assets/.agent/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -520
  172. package/assets/.agent/skills/hyperframes-animation/examples/cta-morph-press.html +468 -468
  173. package/assets/.agent/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -1298
  174. package/assets/.agent/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -759
  175. package/assets/.agent/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -729
  176. package/assets/.agent/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -352
  177. package/assets/.agent/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -779
  178. package/assets/.agent/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -1374
  179. package/assets/.agent/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -861
  180. package/assets/.agent/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -347
  181. package/assets/.agent/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -606
  182. package/assets/.agent/skills/hyperframes-animation/rules/3d-page-scroll.md +227 -227
  183. package/assets/.agent/skills/hyperframes-animation/rules/3d-text-depth-layers.md +297 -297
  184. package/assets/.agent/skills/hyperframes-animation/rules/ai-tracking-box.md +382 -382
  185. package/assets/.agent/skills/hyperframes-animation/rules/ambient-glow-bloom.md +305 -305
  186. package/assets/.agent/skills/hyperframes-animation/rules/asr-keyword-glow.md +286 -286
  187. package/assets/.agent/skills/hyperframes-animation/rules/avatar-cloud-network.md +371 -371
  188. package/assets/.agent/skills/hyperframes-animation/rules/camera-cursor-tracking.md +246 -246
  189. package/assets/.agent/skills/hyperframes-animation/rules/card-morph-anchor.md +267 -267
  190. package/assets/.agent/skills/hyperframes-animation/rules/center-outward-expansion.md +227 -227
  191. package/assets/.agent/skills/hyperframes-animation/rules/context-sensitive-cursor.md +257 -257
  192. package/assets/.agent/skills/hyperframes-animation/rules/coordinate-target-zoom.md +332 -332
  193. package/assets/.agent/skills/hyperframes-animation/rules/counting-dynamic-scale.md +283 -283
  194. package/assets/.agent/skills/hyperframes-animation/rules/css-marker-patterns.md +373 -373
  195. package/assets/.agent/skills/hyperframes-animation/rules/cursor-click-ripple.md +262 -262
  196. package/assets/.agent/skills/hyperframes-animation/rules/depth-of-field-blur.md +313 -313
  197. package/assets/.agent/skills/hyperframes-animation/rules/depth-scatter-assemble.md +303 -303
  198. package/assets/.agent/skills/hyperframes-animation/rules/discrete-text-sequence.md +273 -273
  199. package/assets/.agent/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +307 -307
  200. package/assets/.agent/skills/hyperframes-animation/rules/gsap-effects.md +299 -299
  201. package/assets/.agent/skills/hyperframes-animation/rules/hacker-flip-3d.md +223 -223
  202. package/assets/.agent/skills/hyperframes-animation/rules/kinetic-beat-slam.md +183 -183
  203. package/assets/.agent/skills/hyperframes-animation/rules/motion-blur-streak.md +328 -328
  204. package/assets/.agent/skills/hyperframes-animation/rules/multi-phase-camera.md +273 -273
  205. package/assets/.agent/skills/hyperframes-animation/rules/orbit-3d-entry.md +301 -301
  206. package/assets/.agent/skills/hyperframes-animation/rules/physics-press-reaction.md +350 -350
  207. package/assets/.agent/skills/hyperframes-animation/rules/press-release-spring.md +296 -296
  208. package/assets/.agent/skills/hyperframes-animation/rules/reactive-displacement.md +277 -277
  209. package/assets/.agent/skills/hyperframes-animation/rules/scale-swap-transition.md +298 -298
  210. package/assets/.agent/skills/hyperframes-animation/rules/sine-wave-loop.md +278 -278
  211. package/assets/.agent/skills/hyperframes-animation/rules/split-tilt-cards.md +277 -277
  212. package/assets/.agent/skills/hyperframes-animation/rules/spring-pop-entrance.md +273 -273
  213. package/assets/.agent/skills/hyperframes-animation/rules/stat-bars-and-fills.md +156 -156
  214. package/assets/.agent/skills/hyperframes-animation/rules/svg-icon-enrichment.md +329 -329
  215. package/assets/.agent/skills/hyperframes-animation/rules/svg-path-draw.md +274 -274
  216. package/assets/.agent/skills/hyperframes-animation/rules/vertical-spring-ticker.md +239 -239
  217. package/assets/.agent/skills/hyperframes-animation/rules/viewport-change.md +349 -349
  218. package/assets/.agent/skills/hyperframes-animation/rules-index.md +86 -86
  219. package/assets/.agent/skills/hyperframes-animation/scripts/animation-map.mjs +606 -606
  220. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.mjs +288 -288
  221. package/assets/.agent/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -62
  222. package/assets/.agent/skills/hyperframes-animation/techniques.md +507 -507
  223. package/assets/.agent/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +167 -167
  224. package/assets/.agent/skills/hyperframes-animation/transitions/catalog.md +127 -127
  225. package/assets/.agent/skills/hyperframes-animation/transitions/css-3d.md +12 -12
  226. package/assets/.agent/skills/hyperframes-animation/transitions/css-blur.md +51 -51
  227. package/assets/.agent/skills/hyperframes-animation/transitions/css-cover.md +43 -43
  228. package/assets/.agent/skills/hyperframes-animation/transitions/css-destruction.md +95 -95
  229. package/assets/.agent/skills/hyperframes-animation/transitions/css-dissolve.md +66 -66
  230. package/assets/.agent/skills/hyperframes-animation/transitions/css-distortion.md +45 -45
  231. package/assets/.agent/skills/hyperframes-animation/transitions/css-grid.md +10 -10
  232. package/assets/.agent/skills/hyperframes-animation/transitions/css-light.md +49 -49
  233. package/assets/.agent/skills/hyperframes-animation/transitions/css-mechanical.md +30 -30
  234. package/assets/.agent/skills/hyperframes-animation/transitions/css-other.md +25 -25
  235. package/assets/.agent/skills/hyperframes-animation/transitions/css-push.md +41 -41
  236. package/assets/.agent/skills/hyperframes-animation/transitions/css-radial.md +37 -37
  237. package/assets/.agent/skills/hyperframes-animation/transitions/css-scale.md +24 -24
  238. package/assets/.agent/skills/hyperframes-animation/transitions/overview.md +153 -153
  239. package/assets/.agent/skills/hyperframes-cli/SKILL.md +113 -113
  240. package/assets/.agent/skills/hyperframes-cli/references/doctor-browser.md +45 -45
  241. package/assets/.agent/skills/hyperframes-cli/references/init-and-scaffold.md +51 -51
  242. package/assets/.agent/skills/hyperframes-cli/references/lambda.md +132 -132
  243. package/assets/.agent/skills/hyperframes-cli/references/lint-validate-inspect.md +121 -121
  244. package/assets/.agent/skills/hyperframes-cli/references/preview-render.md +164 -164
  245. package/assets/.agent/skills/hyperframes-cli/references/upgrade-info-misc.md +75 -75
  246. package/assets/.agent/skills/hyperframes-core/SKILL.md +78 -78
  247. package/assets/.agent/skills/hyperframes-core/references/composition-patterns.md +263 -263
  248. package/assets/.agent/skills/hyperframes-core/references/data-attributes.md +70 -70
  249. package/assets/.agent/skills/hyperframes-core/references/determinism-rules.md +68 -68
  250. package/assets/.agent/skills/hyperframes-core/references/full-screen-motion.md +62 -62
  251. package/assets/.agent/skills/hyperframes-core/references/minimal-composition.md +66 -66
  252. package/assets/.agent/skills/hyperframes-core/references/script-format.md +49 -49
  253. package/assets/.agent/skills/hyperframes-core/references/storyboard-format.md +95 -95
  254. package/assets/.agent/skills/hyperframes-core/references/sub-compositions.md +237 -237
  255. package/assets/.agent/skills/hyperframes-core/references/subagent-dispatch.md +41 -41
  256. package/assets/.agent/skills/hyperframes-core/references/tailwind.md +125 -125
  257. package/assets/.agent/skills/hyperframes-core/references/tracks-and-clips.md +76 -76
  258. package/assets/.agent/skills/hyperframes-core/references/variables-and-media.md +90 -90
  259. package/assets/.agent/skills/hyperframes-creative/SKILL.md +70 -70
  260. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -289
  261. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -221
  262. package/assets/.agent/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -1214
  263. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -275
  264. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -224
  265. package/assets/.agent/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -1347
  266. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -307
  267. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -223
  268. package/assets/.agent/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -1372
  269. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -275
  270. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -230
  271. package/assets/.agent/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -1140
  272. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -284
  273. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -225
  274. package/assets/.agent/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -1166
  275. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -284
  276. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -224
  277. package/assets/.agent/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -1465
  278. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -278
  279. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -222
  280. package/assets/.agent/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -1263
  281. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/FRAME.md +277 -277
  282. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/caption-skin.html +224 -224
  283. package/assets/.agent/skills/hyperframes-creative/frame-presets/claude/frame-showcase.html +1439 -1439
  284. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -265
  285. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -238
  286. package/assets/.agent/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -1468
  287. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -314
  288. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -226
  289. package/assets/.agent/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -1268
  290. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -333
  291. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -227
  292. package/assets/.agent/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -1330
  293. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -274
  294. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -230
  295. package/assets/.agent/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -1444
  296. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -265
  297. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -223
  298. package/assets/.agent/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -1273
  299. package/assets/.agent/skills/hyperframes-creative/palettes/bold-energetic.md +14 -14
  300. package/assets/.agent/skills/hyperframes-creative/palettes/clean-corporate.md +14 -14
  301. package/assets/.agent/skills/hyperframes-creative/palettes/dark-premium.md +14 -14
  302. package/assets/.agent/skills/hyperframes-creative/palettes/jewel-rich.md +14 -14
  303. package/assets/.agent/skills/hyperframes-creative/palettes/monochrome.md +14 -14
  304. package/assets/.agent/skills/hyperframes-creative/palettes/nature-earth.md +14 -14
  305. package/assets/.agent/skills/hyperframes-creative/palettes/neon-electric.md +14 -14
  306. package/assets/.agent/skills/hyperframes-creative/palettes/pastel-soft.md +14 -14
  307. package/assets/.agent/skills/hyperframes-creative/palettes/warm-editorial.md +14 -14
  308. package/assets/.agent/skills/hyperframes-creative/references/audio-reactive.md +76 -76
  309. package/assets/.agent/skills/hyperframes-creative/references/beat-direction.md +164 -164
  310. package/assets/.agent/skills/hyperframes-creative/references/composition-patterns.md +199 -199
  311. package/assets/.agent/skills/hyperframes-creative/references/data-in-motion.md +19 -19
  312. package/assets/.agent/skills/hyperframes-creative/references/design-adherence.md +19 -19
  313. package/assets/.agent/skills/hyperframes-creative/references/design-picker.md +123 -123
  314. package/assets/.agent/skills/hyperframes-creative/references/design-spec.md +55 -55
  315. package/assets/.agent/skills/hyperframes-creative/references/house-style.md +73 -73
  316. package/assets/.agent/skills/hyperframes-creative/references/motion-principles.md +150 -150
  317. package/assets/.agent/skills/hyperframes-creative/references/narration.md +92 -92
  318. package/assets/.agent/skills/hyperframes-creative/references/prompt-expansion.md +68 -68
  319. package/assets/.agent/skills/hyperframes-creative/references/typography.md +218 -218
  320. package/assets/.agent/skills/hyperframes-creative/references/video-composition.md +63 -63
  321. package/assets/.agent/skills/hyperframes-creative/references/visual-styles.md +457 -457
  322. package/assets/.agent/skills/hyperframes-creative/scripts/contrast-report.mjs +353 -353
  323. package/assets/.agent/skills/hyperframes-creative/scripts/extract-audio-data.py +188 -188
  324. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.mjs +288 -288
  325. package/assets/.agent/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -62
  326. package/assets/.agent/skills/hyperframes-creative/templates/design-picker.html +1432 -1432
  327. package/assets/.agent/skills/hyperframes-keyframes/SKILL.md +237 -237
  328. package/assets/.agent/skills/hyperframes-keyframes/agents/openai.yaml +4 -4
  329. package/assets/.agent/skills/hyperframes-keyframes/references/keyframe-patterns.md +106 -106
  330. package/assets/.agent/skills/hyperframes-media/SKILL.md +97 -97
  331. package/assets/.agent/skills/hyperframes-media/assets/sfx/CREDITS.md +35 -35
  332. package/assets/.agent/skills/hyperframes-media/assets/sfx/manifest.json +97 -97
  333. package/assets/.agent/skills/hyperframes-media/references/bgm.md +72 -72
  334. package/assets/.agent/skills/hyperframes-media/references/captions/authoring.md +159 -159
  335. package/assets/.agent/skills/hyperframes-media/references/captions/motion.md +87 -87
  336. package/assets/.agent/skills/hyperframes-media/references/captions/transcript-handling.md +97 -97
  337. package/assets/.agent/skills/hyperframes-media/references/remove-background.md +143 -143
  338. package/assets/.agent/skills/hyperframes-media/references/requirements.md +29 -29
  339. package/assets/.agent/skills/hyperframes-media/references/sfx.md +42 -42
  340. package/assets/.agent/skills/hyperframes-media/references/transcribe.md +52 -52
  341. package/assets/.agent/skills/hyperframes-media/references/tts-to-captions.md +24 -24
  342. package/assets/.agent/skills/hyperframes-media/references/tts.md +135 -135
  343. package/assets/.agent/skills/hyperframes-media/scripts/audio.mjs +293 -293
  344. package/assets/.agent/skills/hyperframes-media/scripts/heygen-tts.mjs +121 -121
  345. package/assets/.agent/skills/hyperframes-media/scripts/lib/bgm.mjs +235 -235
  346. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.mjs +14 -14
  347. package/assets/.agent/skills/hyperframes-media/scripts/lib/concurrency.test.mjs +41 -41
  348. package/assets/.agent/skills/hyperframes-media/scripts/lib/heygen.mjs +131 -131
  349. package/assets/.agent/skills/hyperframes-media/scripts/lib/sfx.mjs +128 -128
  350. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.mjs +298 -298
  351. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.spawn.test.mjs +97 -97
  352. package/assets/.agent/skills/hyperframes-media/scripts/lib/tts.test.mjs +66 -66
  353. package/assets/.agent/skills/hyperframes-media/scripts/lyria-recipe.py +128 -128
  354. package/assets/.agent/skills/hyperframes-media/scripts/wait-bgm.mjs +167 -167
  355. package/assets/.agent/skills/hyperframes-registry/SKILL.md +101 -101
  356. package/assets/.agent/skills/hyperframes-registry/examples/add-block.md +51 -51
  357. package/assets/.agent/skills/hyperframes-registry/examples/add-component.md +73 -73
  358. package/assets/.agent/skills/hyperframes-registry/references/contributing.md +166 -166
  359. package/assets/.agent/skills/hyperframes-registry/references/demo-html-pattern.md +54 -54
  360. package/assets/.agent/skills/hyperframes-registry/references/discovery.md +215 -215
  361. package/assets/.agent/skills/hyperframes-registry/references/install-locations.md +45 -45
  362. package/assets/.agent/skills/hyperframes-registry/references/templates.md +417 -417
  363. package/assets/.agent/skills/hyperframes-registry/references/wiring-blocks.md +61 -61
  364. package/assets/.agent/skills/hyperframes-registry/references/wiring-components.md +39 -39
  365. package/assets/.agent/skills/media-use/SKILL.md +124 -124
  366. package/assets/.agent/skills/media-use/scripts/eval.mjs +369 -369
  367. package/assets/.agent/skills/media-use/scripts/lib/adopt.mjs +112 -112
  368. package/assets/.agent/skills/media-use/scripts/lib/bgm-provider.mjs +20 -20
  369. package/assets/.agent/skills/media-use/scripts/lib/brand-provider.mjs +59 -59
  370. package/assets/.agent/skills/media-use/scripts/lib/cache.mjs +114 -114
  371. package/assets/.agent/skills/media-use/scripts/lib/freeze.mjs +26 -26
  372. package/assets/.agent/skills/media-use/scripts/lib/heygen-search.mjs +51 -51
  373. package/assets/.agent/skills/media-use/scripts/lib/image-provider.mjs +44 -44
  374. package/assets/.agent/skills/media-use/scripts/lib/index-gen.mjs +63 -63
  375. package/assets/.agent/skills/media-use/scripts/lib/manifest.mjs +91 -91
  376. package/assets/.agent/skills/media-use/scripts/lib/manifest.test.mjs +293 -293
  377. package/assets/.agent/skills/media-use/scripts/lib/probe.mjs +39 -39
  378. package/assets/.agent/skills/media-use/scripts/lib/probe.test.mjs +31 -31
  379. package/assets/.agent/skills/media-use/scripts/lib/providers.mjs +29 -29
  380. package/assets/.agent/skills/media-use/scripts/lib/sfx-provider.mjs +23 -23
  381. package/assets/.agent/skills/media-use/scripts/resolve.mjs +247 -247
  382. package/assets/.agent/skills/media-use/scripts/resolve.test.mjs +247 -247
  383. package/assets/.agent/skills/motion-graphics/SKILL.md +172 -172
  384. package/assets/.agent/skills/motion-graphics/agents/builder.md +40 -40
  385. package/assets/.agent/skills/motion-graphics/agents/director.md +53 -53
  386. package/assets/.agent/skills/motion-graphics/agents/finalize.md +17 -17
  387. package/assets/.agent/skills/motion-graphics/catalog-map.md +40 -40
  388. package/assets/.agent/skills/motion-graphics/categories/asset-fusion/module.md +37 -37
  389. package/assets/.agent/skills/motion-graphics/categories/charts/module.md +21 -21
  390. package/assets/.agent/skills/motion-graphics/categories/kinetic-type/module.md +19 -19
  391. package/assets/.agent/skills/motion-graphics/categories/logo-reveal/module.md +17 -17
  392. package/assets/.agent/skills/motion-graphics/categories/lower-thirds/module.md +16 -16
  393. package/assets/.agent/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -273
  394. package/assets/.agent/skills/motion-graphics/categories/maps/module.md +61 -61
  395. package/assets/.agent/skills/motion-graphics/categories/news/module.md +56 -56
  396. package/assets/.agent/skills/motion-graphics/categories/stat/module.md +21 -21
  397. package/assets/.agent/skills/motion-graphics/categories/tweet/module.md +16 -16
  398. package/assets/.agent/skills/motion-graphics/categories/webpage/module.md +21 -21
  399. package/assets/.agent/skills/motion-graphics/grounding/PROTOCOL.md +64 -64
  400. package/assets/.agent/skills/motion-graphics/grounding/locate.mjs +227 -227
  401. package/assets/.agent/skills/motion-graphics/phases/source/guide.md +21 -21
  402. package/assets/.agent/skills/motion-graphics/references/builder-contract.md +38 -38
  403. package/assets/.agent/skills/motion-graphics/references/motion-vocabulary.md +43 -43
  404. package/assets/.agent/skills/motion-graphics/references/shot-plan-ir.md +54 -54
  405. package/assets/.agent/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -306
  406. package/assets/.agent/skills/music-to-video/SKILL.md +197 -197
  407. package/assets/.agent/skills/music-to-video/references/frame-skeleton.md +100 -100
  408. package/assets/.agent/skills/music-to-video/references/montage.md +58 -58
  409. package/assets/.agent/skills/music-to-video/references/motion-primitive-catalog.md +75 -75
  410. package/assets/.agent/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +154 -154
  411. package/assets/.agent/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +11 -11
  412. package/assets/.agent/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +326 -326
  413. package/assets/.agent/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +120 -120
  414. package/assets/.agent/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +95 -95
  415. package/assets/.agent/skills/music-to-video/references/motion-primitives/braam-punch/index.html +135 -135
  416. package/assets/.agent/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +146 -146
  417. package/assets/.agent/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +103 -103
  418. package/assets/.agent/skills/music-to-video/references/motion-primitives/counting-punch/index.html +154 -154
  419. package/assets/.agent/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +155 -155
  420. package/assets/.agent/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +166 -166
  421. package/assets/.agent/skills/music-to-video/references/motion-primitives/directional-fill/index.html +133 -133
  422. package/assets/.agent/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +137 -137
  423. package/assets/.agent/skills/music-to-video/references/motion-primitives/electric-arc/index.html +144 -144
  424. package/assets/.agent/skills/music-to-video/references/motion-primitives/flash-cut/index.html +132 -132
  425. package/assets/.agent/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +241 -241
  426. package/assets/.agent/skills/music-to-video/references/motion-primitives/hard-cut/index.html +117 -117
  427. package/assets/.agent/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +79 -79
  428. package/assets/.agent/skills/music-to-video/references/motion-primitives/iris-open/index.html +104 -104
  429. package/assets/.agent/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +92 -92
  430. package/assets/.agent/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +131 -131
  431. package/assets/.agent/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +109 -109
  432. package/assets/.agent/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +124 -124
  433. package/assets/.agent/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +108 -108
  434. package/assets/.agent/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +117 -117
  435. package/assets/.agent/skills/music-to-video/references/motion-primitives/palette-flip/index.html +132 -132
  436. package/assets/.agent/skills/music-to-video/references/motion-primitives/particle-burst/index.html +141 -141
  437. package/assets/.agent/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +121 -121
  438. package/assets/.agent/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +160 -160
  439. package/assets/.agent/skills/music-to-video/references/motion-primitives/screen-shake/index.html +113 -113
  440. package/assets/.agent/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +130 -130
  441. package/assets/.agent/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +137 -137
  442. package/assets/.agent/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +117 -117
  443. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -42
  444. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +313 -313
  445. package/assets/.agent/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +136 -136
  446. package/assets/.agent/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +144 -144
  447. package/assets/.agent/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +122 -122
  448. package/assets/.agent/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +126 -126
  449. package/assets/.agent/skills/music-to-video/references/planning.md +104 -104
  450. package/assets/.agent/skills/music-to-video/references/storyboard-format.md +94 -94
  451. package/assets/.agent/skills/music-to-video/references/template-catalog.md +106 -106
  452. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/index.html +527 -527
  453. package/assets/.agent/skills/music-to-video/references/templates/card-flyby/program.json +13 -13
  454. package/assets/.agent/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -485
  455. package/assets/.agent/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -302
  456. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -610
  457. package/assets/.agent/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -41
  458. package/assets/.agent/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -596
  459. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -589
  460. package/assets/.agent/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -25
  461. package/assets/.agent/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -267
  462. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -594
  463. package/assets/.agent/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -39
  464. package/assets/.agent/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -238
  465. package/assets/.agent/skills/music-to-video/scripts/analyze-beatgrid.py +531 -531
  466. package/assets/.agent/skills/music-to-video/scripts/assemble-index.mjs +218 -218
  467. package/assets/.agent/skills/music-to-video/scripts/lib/storyboard.mjs +249 -249
  468. package/assets/.agent/skills/music-to-video/scripts/stage-assets.mjs +58 -58
  469. package/assets/.agent/skills/music-to-video/scripts/validate-plan.mjs +161 -161
  470. package/assets/.agent/skills/music-to-video/sub-agents/frame-worker.md +75 -75
  471. package/assets/.agent/skills/pr-to-video/SKILL.md +240 -240
  472. package/assets/.agent/skills/pr-to-video/references/code-vocabulary.md +111 -111
  473. package/assets/.agent/skills/pr-to-video/references/cut-catalog.md +215 -215
  474. package/assets/.agent/skills/pr-to-video/references/motion-language.md +156 -156
  475. package/assets/.agent/skills/pr-to-video/references/story-design.md +211 -211
  476. package/assets/.agent/skills/pr-to-video/references/visual-design.md +164 -164
  477. package/assets/.agent/skills/pr-to-video/scripts/assemble-index.mjs +570 -570
  478. package/assets/.agent/skills/pr-to-video/scripts/audio.mjs +253 -253
  479. package/assets/.agent/skills/pr-to-video/scripts/build-frame.mjs +536 -536
  480. package/assets/.agent/skills/pr-to-video/scripts/captions.mjs +508 -508
  481. package/assets/.agent/skills/pr-to-video/scripts/fetch-people-avatars.mjs +157 -157
  482. package/assets/.agent/skills/pr-to-video/scripts/fetch-pr.mjs +164 -164
  483. package/assets/.agent/skills/pr-to-video/scripts/ingest.mjs +539 -539
  484. package/assets/.agent/skills/pr-to-video/scripts/lib/assets.mjs +55 -55
  485. package/assets/.agent/skills/pr-to-video/scripts/lib/dimensions.mjs +45 -45
  486. package/assets/.agent/skills/pr-to-video/scripts/lib/storyboard.mjs +249 -249
  487. package/assets/.agent/skills/pr-to-video/scripts/lib/tokens.mjs +204 -204
  488. package/assets/.agent/skills/pr-to-video/scripts/lib/transition-registry.mjs +38 -38
  489. package/assets/.agent/skills/pr-to-video/scripts/lib/transitions.json +71 -71
  490. package/assets/.agent/skills/pr-to-video/scripts/transitions.mjs +320 -320
  491. package/assets/.agent/skills/pr-to-video/sub-agents/frame-worker.md +95 -95
  492. package/assets/.agent/skills/product-launch-video/SKILL.md +208 -208
  493. package/assets/.agent/skills/product-launch-video/references/cut-catalog.md +220 -220
  494. package/assets/.agent/skills/product-launch-video/references/motion-language.md +156 -156
  495. package/assets/.agent/skills/product-launch-video/references/story-design.md +373 -373
  496. package/assets/.agent/skills/product-launch-video/references/visual-design.md +126 -126
  497. package/assets/.agent/skills/product-launch-video/scripts/assemble-index.mjs +570 -570
  498. package/assets/.agent/skills/product-launch-video/scripts/audio.mjs +253 -253
  499. package/assets/.agent/skills/product-launch-video/scripts/build-frame.mjs +536 -536
  500. package/assets/.agent/skills/product-launch-video/scripts/captions.mjs +508 -508
  501. package/assets/.agent/skills/product-launch-video/scripts/lib/assets.mjs +55 -55
  502. package/assets/.agent/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -45
  503. package/assets/.agent/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -249
  504. package/assets/.agent/skills/product-launch-video/scripts/lib/tokens.mjs +204 -204
  505. package/assets/.agent/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -38
  506. package/assets/.agent/skills/product-launch-video/scripts/lib/transitions.json +71 -71
  507. package/assets/.agent/skills/product-launch-video/scripts/stage-assets.mjs +39 -39
  508. package/assets/.agent/skills/product-launch-video/scripts/transitions.mjs +320 -320
  509. package/assets/.agent/skills/product-launch-video/sub-agents/frame-worker.md +75 -75
  510. package/assets/.agent/skills/remotion/SKILL.md +357 -38
  511. package/assets/.agent/skills/remotion/rules/3d.md +5 -5
  512. package/assets/.agent/skills/remotion/rules/assets/text-animations-word-highlight.tsx +1 -6
  513. package/assets/.agent/skills/remotion/rules/audio-visualization.md +198 -0
  514. package/assets/.agent/skills/remotion/rules/audio.md +1 -4
  515. package/assets/.agent/skills/remotion/rules/calculate-metadata.md +48 -18
  516. package/assets/.agent/skills/remotion/rules/compositions.md +16 -24
  517. package/assets/.agent/skills/remotion/rules/display-captions.md +79 -21
  518. package/assets/.agent/skills/remotion/rules/effects.md +235 -0
  519. package/assets/.agent/skills/remotion/rules/ffmpeg.md +34 -0
  520. package/assets/.agent/skills/remotion/rules/get-audio-duration.md +13 -13
  521. package/assets/.agent/skills/remotion/rules/get-video-dimensions.md +1 -1
  522. package/assets/.agent/skills/remotion/rules/get-video-duration.md +12 -10
  523. package/assets/.agent/skills/remotion/rules/gifs.md +21 -18
  524. package/assets/.agent/skills/remotion/rules/google-fonts.md +72 -0
  525. package/assets/.agent/skills/remotion/rules/html-in-canvas.md +122 -0
  526. package/assets/.agent/skills/remotion/rules/images.md +5 -64
  527. package/assets/.agent/skills/remotion/rules/import-srt-captions.md +9 -7
  528. package/assets/.agent/skills/remotion/rules/light-leaks.md +73 -0
  529. package/assets/.agent/skills/remotion/rules/local-fonts.md +65 -0
  530. package/assets/.agent/skills/remotion/rules/lottie.md +10 -8
  531. package/assets/.agent/skills/remotion/rules/maplibre.md +458 -0
  532. package/assets/.agent/skills/remotion/rules/measuring-dom-nodes.md +0 -1
  533. package/assets/.agent/skills/remotion/rules/measuring-text.md +2 -5
  534. package/assets/.agent/skills/remotion/rules/parameters.md +21 -10
  535. package/assets/.agent/skills/remotion/rules/sequencing.md +35 -9
  536. package/assets/.agent/skills/remotion/rules/sfx.md +51 -0
  537. package/assets/.agent/skills/remotion/rules/silence-detection.md +71 -0
  538. package/assets/.agent/skills/remotion/rules/subtitles.md +36 -0
  539. package/assets/.agent/skills/remotion/rules/tailwind.md +2 -2
  540. package/assets/.agent/skills/remotion/rules/timing.md +89 -106
  541. package/assets/.agent/skills/remotion/rules/transcribe-captions.md +58 -7
  542. package/assets/.agent/skills/remotion/rules/transitions.md +117 -42
  543. package/assets/.agent/skills/remotion/rules/transparent-videos.md +106 -0
  544. package/assets/.agent/skills/remotion/rules/trimming.md +1 -3
  545. package/assets/.agent/skills/remotion/rules/video-layout.md +68 -0
  546. package/assets/.agent/skills/remotion/rules/voiceover.md +99 -0
  547. package/assets/.agent/skills/remotion-real-ui-video/SKILL.md +264 -264
  548. package/assets/.agent/skills/remotion-real-ui-video/references/anti-patterns.md +114 -114
  549. package/assets/.agent/skills/remotion-real-ui-video/references/completion-checklist.md +75 -75
  550. package/assets/.agent/skills/remotion-real-ui-video/references/real-ui-bridge-example.md +93 -93
  551. package/assets/.agent/skills/remotion-to-hyperframes/SKILL.md +127 -127
  552. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -249
  553. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -41
  554. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -26
  555. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -61
  556. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -14
  557. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -13
  558. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -13
  559. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -34
  560. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -4
  561. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -15
  562. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -54
  563. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -29
  564. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -118
  565. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -14
  566. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -13
  567. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -105
  568. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -13
  569. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -4
  570. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -15
  571. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -34
  572. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -85
  573. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -41
  574. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -269
  575. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -15
  576. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -13
  577. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -27
  578. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -37
  579. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -23
  580. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -59
  581. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -47
  582. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -4
  583. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -18
  584. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -34
  585. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -55
  586. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -15
  587. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -51
  588. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -29
  589. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -29
  590. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -39
  591. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -30
  592. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -38
  593. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -36
  594. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -28
  595. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -41
  596. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -85
  597. package/assets/.agent/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -110
  598. package/assets/.agent/skills/remotion-to-hyperframes/references/api-map.md +142 -142
  599. package/assets/.agent/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -115
  600. package/assets/.agent/skills/remotion-to-hyperframes/references/eval.md +140 -140
  601. package/assets/.agent/skills/remotion-to-hyperframes/references/fonts.md +112 -112
  602. package/assets/.agent/skills/remotion-to-hyperframes/references/limitations.md +136 -136
  603. package/assets/.agent/skills/remotion-to-hyperframes/references/lottie.md +121 -121
  604. package/assets/.agent/skills/remotion-to-hyperframes/references/media.md +149 -149
  605. package/assets/.agent/skills/remotion-to-hyperframes/references/parameters.md +167 -167
  606. package/assets/.agent/skills/remotion-to-hyperframes/references/sequencing.md +195 -195
  607. package/assets/.agent/skills/remotion-to-hyperframes/references/timing.md +165 -165
  608. package/assets/.agent/skills/remotion-to-hyperframes/references/transitions.md +114 -114
  609. package/assets/.agent/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -107
  610. package/assets/.agent/skills/remotion-to-hyperframes/scripts/lint_source.py +358 -358
  611. package/assets/.agent/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -103
  612. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -50
  613. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -46
  614. package/assets/.agent/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -90
  615. package/assets/.agent/skills/shared-resend-portfolio/SKILL.md +124 -124
  616. package/assets/.agent/skills/slideshow/SKILL.md +550 -550
  617. package/assets/.agent/skills/slideshow/references/standalone-harness.md +1020 -1020
  618. package/assets/.agent/skills/talking-head-recut/NOTICE.md +39 -39
  619. package/assets/.agent/skills/talking-head-recut/SKILL.md +1191 -1191
  620. package/assets/.agent/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -10
  621. package/assets/.agent/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -145
  622. package/assets/.agent/skills/talking-head-recut/references/frames/clean.html +92 -92
  623. package/assets/.agent/skills/talking-head-recut/references/frames/hairline.html +171 -171
  624. package/assets/.agent/skills/talking-head-recut/references/frames/polaroid.html +131 -131
  625. package/assets/.agent/skills/talking-head-recut/references/layouts/overlay.html +164 -164
  626. package/assets/.agent/skills/talking-head-recut/references/layouts/pip.html +143 -143
  627. package/assets/.agent/skills/talking-head-recut/references/layouts/split.html +121 -121
  628. package/assets/.agent/skills/talking-head-recut/references/layouts/stack.html +109 -109
  629. package/assets/.agent/skills/talking-head-recut/references/styles/academic.html +172 -172
  630. package/assets/.agent/skills/talking-head-recut/references/styles/audit.html +170 -170
  631. package/assets/.agent/skills/talking-head-recut/references/styles/editorial.html +189 -189
  632. package/assets/.agent/skills/talking-head-recut/references/styles/geom.html +181 -181
  633. package/assets/.agent/skills/talking-head-recut/references/styles/minimal.html +130 -130
  634. package/assets/.agent/skills/talking-head-recut/references/styles/spotlight.html +142 -142
  635. package/assets/.agent/skills/talking-head-recut/references/styles/swiss.html +188 -188
  636. package/assets/.agent/skills/talking-head-recut/references/styles/terminal.html +196 -196
  637. package/assets/.agent/skills/talking-head-recut/references/styles/whiteboard.html +170 -170
  638. package/assets/.agent/skills/talking-head-recut/references/styles/xhs.html +206 -206
  639. package/assets/.agent/skills/website-to-video/SKILL.md +145 -145
  640. package/assets/.agent/skills/website-to-video/assets/sfx/CREDITS.md +35 -35
  641. package/assets/.agent/skills/website-to-video/assets/sfx/manifest.json +97 -97
  642. package/assets/.agent/skills/website-to-video/references/beat-builder-guide.md +263 -263
  643. package/assets/.agent/skills/website-to-video/references/capabilities.md +713 -713
  644. package/assets/.agent/skills/website-to-video/references/step-0-capture.md +55 -55
  645. package/assets/.agent/skills/website-to-video/references/step-1-design.md +333 -333
  646. package/assets/.agent/skills/website-to-video/references/step-2-brief.md +178 -178
  647. package/assets/.agent/skills/website-to-video/references/step-3-storyboard.md +572 -572
  648. package/assets/.agent/skills/website-to-video/references/step-4-vo.md +230 -230
  649. package/assets/.agent/skills/website-to-video/references/step-5-build.md +483 -483
  650. package/assets/.agent/skills/website-to-video/references/step-6-validate.md +341 -341
  651. package/assets/.agent/skills/website-to-video/scripts/w2h-verify.mjs +759 -759
  652. package/package.json +5 -4
  653. package/src/pi-takomi-core/workflows.ts +86 -86
  654. package/src/takomi-stats.js +5 -5
  655. package/assets/.agent/skills/remotion/rules/animations.md +0 -29
  656. package/assets/.agent/skills/remotion/rules/assets.md +0 -78
  657. package/assets/.agent/skills/remotion/rules/can-decode.md +0 -75
  658. package/assets/.agent/skills/remotion/rules/charts.md +0 -58
  659. package/assets/.agent/skills/remotion/rules/extract-frames.md +0 -229
  660. package/assets/.agent/skills/remotion/rules/fonts.md +0 -152
  661. package/assets/.agent/skills/remotion/rules/maps.md +0 -403
@@ -1,286 +1,286 @@
1
- ---
2
- name: embedded-captions
3
- description: 'Add captions to a talking-head video. ONE catalog (CATALOG.md) of 32 visual identities behind two engines: column-flow (captions composited INTO the scene — matte occlusion + mix-blend; cream/ink/editorial/keynote/documentary/loud/neon/glitch/chrome/velocity) and themed constitutions (anchor/ordnance/terminal/neonsign/stardust/stomp/scoreboard/transit/vhs/arcade/dossier/laser/thunder/hologram/biolume/aurora/spectrum/papercut/popup/chalkboard/graffiti/brush/inkwater/ransom/lastpage/nightcity — e.g. a glyph-decode climax, a neon sign WRITTEN stroke by stroke, or the quiet `anchor` rail default). Route by identity, never by mode. Trigger on "captions/subtitles", "embed/cinematic captions", "VFX captions", "炸/特效/酷炫字幕", a named identity, or top-tier motion-graphics asks. Embedding every word is wrong for most talking-head content — `anchor` is the verbatim default. Pipeline: transcription → hyperframes remove-background matting → HTML render → ffmpeg overlay. Requires hyperframes and a single-subject clip.'
4
- metadata:
5
- tags: captions, embedded-captions, occlusion, matting, talking-head, rembg-matting, whisper, ffmpeg, cinematic
6
- ---
7
-
8
- # Embedded Captions
9
-
10
- **One catalog, picked up front** ([CATALOG.md](CATALOG.md) — 17 identities; the three engines behind it are backend detail). **Standard** (default) builds a clean verbatim **rail** (lower-third subtitle carrying most text) + an **embed** climax composited _into_ the scene behind the subject at the peak. **Cinematic** is pure embed — no rail, every caption composited behind the subject (hero typography, accumulation, occlusion as the effect). **Theme** is a complete themed constitution — body paradigm × hero setpiece × front fx × plate reaction, composed from registries ([themes/README.md](themes/README.md)): `ordnance` `terminal` `neonsign` `stardust` `stomp`. Most explainer / voiceover is **Standard**; **embed is the scarce, earned peak** — embedding every word is the common mistake; Theme is for VFX-grade asks ("炸", "特效", "像 AE 做的").
11
-
12
- ---
13
-
14
- ## Operational flow (TL;DR)
15
-
16
- The craft prose below is long; the **pipeline itself is short** — and everything
17
- deterministic is computed or compiled, never hand-written:
18
-
19
- 1. **Decision gate** (refuse bad clips) → **pick ONE identity from [CATALOG.md](CATALOG.md)** (17 identities; engine/compiler derived by lookup — never surface a mode/category question)
20
- 2. `hyperframes init` (skip it if the project dir already exists with the video inside — `matte.cjs`/`transcribe.cjs` adopt any video in the dir as source.mp4) → **`bash scripts/prepare.sh <project>`** (matte ∥ transcribe ∥ audio-envelope in parallel, then safe-zones v2 with scene palette/optics/lighting — one command, nothing forgotten)
21
- 3. **author a small JSON of creative choices** (read `safe-zones.json` first):
22
- Cinematic → `plan.json` → `fill-timings.cjs` → `fit-fonts.cjs` → `make-composition.cjs`;
23
- Theme → `theme.json` → `make-theme.cjs` (rail/panel/poem/takeover paradigms; `anchor` is the quiet rail default)
24
- 4. **Visual QA**: `node scripts/preview-frames.cjs <project>` → faithful composite previews in ~2s/frame (no render). Check § Visual QA before paying for a render.
25
- 5. `render-and-composite.sh` → gates (timing / occlusion+hero / overflow / hand-off) → `final.mp4`
26
-
27
- Load-bearing rules people miss:
28
-
29
- - **rail (default) + embed (promotion).** `drop` (filler, not shown) / `rail` (verbatim lower-third subtitle, in front, carries most text) / `embed` (a peak word composited behind the subject). **Standard mode does both**, embedding only the peak(s). See **§ Caption model**.
30
- - **The video is delivered UNTOUCHED (Standard/Cinematic; **Theme mode's PLATE budget is the one sanctioned exception** — register-gated reaction beats (charge-dim, punch, shake, grain) defined per theme DNA and applied AFTER the matte composite so subject+text+plate move as one frame)** — captions are the only thing added; the matte just lets the subject occlude the embed track. Never grade/recolor/scanline the footage.
31
- - Two rulebooks: **rail → [references/rail.md](references/rail.md)** (thin), **embed craft → [references/composition-craft.md](references/composition-craft.md)** (rich, embed-only). Skim by need.
32
-
33
- ---
34
-
35
- ## Caption model — rail + embed
36
-
37
- Every spoken phrase is one of three things:
38
-
39
- | | What | How it's shown |
40
- | --------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
- | **drop** | filler — um/uh, stutters, self-corrections | not shown |
42
- | **rail** | the default — ordinary spoken content (verbatim) | clean lower-third subtitle, **in front**, readable. A punch word can get an inline `emphasis` highlight (accent colour / active-word pop) — it stays on the rail. |
43
- | **embed** | a promoted peak — the headline beat | one big word composited **behind the subject** (matte occlusion), designed entrance + exit |
44
-
45
- **The rail carries most of the text; embed is the scarce, earned peak.** Scarcity is **per beat/block, not per clip**: ≤1 hero per block (thought), never two co-visible, ≥ a beat of air between hero windows (the compiler warns under 0.6s). A short clip → usually 1–2; a long explainer → ~one per section. Among multiple heroes, the **largest authored one is the APEX** (it alone gets the full lockup embed + width-fit raise); smaller ones are **MINOR peaks** that ride their column as oversized emphasis lines (fg, damped motion) — not every beat needs the matte showcase, which is exactly what keeps the apex an event. Embedding every word is still the common mistake.
46
-
47
- Rail-surface identities build exactly this (rail = `rail.html`, embed = the climax in `index.html`). Column-flow identities drop the rail and make everything embed-style — recommend them only for mood-over-verbatim asks, never for explainer / voiceover where the words must read (CATALOG.md encodes this per identity).
48
-
49
- ---
50
-
51
- ## Step 0 — pick ONE identity from the CATALOG
52
-
53
- **One front-end, three engines behind.** The user picks an IDENTITY from
54
- [CATALOG.md](CATALOG.md) (17 entries: 12 classic + 5 themed); the engine,
55
- compiler and authoring file are derived by lookup from the catalog row.
56
- **Never surface "Standard vs Cinematic vs Theme" as a question** — those are
57
- backend names (a product has one UX even with several engines). The catalog
58
- encodes everything routing needs: reading surface, voice, recommend-for, scene
59
- needs, adjacency notes for the genuinely-close pairs (loud↔ordnance,
60
- neon↔neonsign, cream↔stardust).
61
-
62
- Procedure: probe the clip → shortlist 2–3 identities from the catalog →
63
- recommend ONE with a one-line why → **the user picks** → author that identity's
64
- file. Identities are engine-locked (no cross combos; opening one is a
65
- validation event — see dna/README.md).
66
-
67
- **Always present your recommendation and let the user pick before you author.** Don't silently default.
68
-
69
- (The full identity table lives in [CATALOG.md](CATALOG.md) — single source of truth for routing. The engine docs below describe each backend's authoring contract.)
70
-
71
- **Recommendation heuristic**: use the "Shortlisting heuristics" in [CATALOG.md](CATALOG.md) — they are identity-level (e.g. "炸" shortlists ordnance/stomp/terminal/loud and picks by WHAT should explode), never category-level. Unsure → `anchor`.
72
-
73
- - **Cinematic** → write `plan.json` for a locked template, compiled by `make-composition.cjs`.
74
- - **Theme** → read [themes/README.md](themes/README.md), author `theme.json`, run `scripts/render-theme.sh` (compiles + renders + plate reaction → **final_fx.mp4**).
75
-
76
- ---
77
-
78
- ## Decision gate — RUN FIRST
79
-
80
- Probe the video and classify the scene before either mode.
81
-
82
- ```bash
83
- ffprobe <video.mp4> # specs
84
- ffmpeg -ss <t> -i <video.mp4> -vframes 1 sample.png # at 20/50/80%
85
- ```
86
-
87
- Read the samples. Refuse if:
88
-
89
- - Multiple speakers / hard cuts (split & render each shot, or refuse)
90
- - No human subject (this skill is for talking-head)
91
- - Under 3 seconds, **no speech**, or face never clearly visible — `transcribe.cjs` warns when audio is near-silent (Whisper hallucinates words like "Thank you." over silence); **heed it and refuse** rather than caption fabricated words
92
- - **Source already has burned-in captions / subtitles / heavy text graphics** — adding a second caption system conflicts and the footage ships untouched (no covering/inpainting). Burned text often appears only mid-clip: sample a **1fps contact sheet** (`ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png`), don't trust 3 spot frames.
93
- - **Transcript is garbage** — non-native/heavy-accent speech can transcribe into confident gibberish. Sanity-read `transcript.json` before authoring; if it doesn't parse as language, try `WHISPER_MODEL=medium` once, else refuse (a verbatim rail of fabricated words is worse than no captions).
94
- - Busy handheld with fast motion (matte flickers)
95
-
96
- ### Pre-flight probes (cost nothing, prevent the worst failures)
97
-
98
- 1. **Shot-cut probe.** Sample frames at 20%, 50%, 80%. If a different subject/scene appears, **trim the clip** before the cut.
99
- 2. **Letterbox / pillarbox probe.** Black bars on the first frame? Compute safe content rect and constrain caption placement inside it.
100
- 3. **Luminance probe.** Sample the caption region's average luminance — `under 60` → light text reads as-is, `60-180` → add the glyph scrim, `180+` → opaque text + scrim (never bare light text). **Cinematic templates are cream+`screen` and LOCKED** — use this probe to _pick a fitting identity_ (bright scenes → `ink`, or the opaque-rail `anchor` theme), never to recolour one.
101
- 4. **Identity recommendation by tone (you recommend; the user picks — see Step 0 + CATALOG.md).** explainer / interview / must-read words → rail/panel-surface identities; poetic / social / "cinematic" → column-flow identities by register; "炸 / 特效 / VFX" / named worlds → themed identities. When unsure → `anchor` (words read, scene safe) — but present a shortlist and let the user choose.
102
-
103
- ---
104
-
105
- ## Pipeline — 5 steps
106
-
107
- ```
108
- 1. hyperframes init <project> --non-interactive --video <video.mp4>
109
- 2. bash scripts/prepare.sh <project> # matte ∥ transcribe (parallel) → safe-zones. One command.
110
- # → frames_fg/ transcript.json safe-zones.json
111
- 3. [AGENT STEP — the only creative step] author a small JSON; see below by mode
112
- Cinematic: author plan.json → node scripts/fill-timings.cjs → fit-fonts.cjs → make-composition.cjs
113
- Theme: author theme.json → bash scripts/render-theme.sh <project> (compiles + renders + plate fx)
114
- 4. node scripts/preview-frames.cjs <project> # ~2s/frame composite previews → § Visual QA (BEFORE the render)
115
- 5. bash scripts/render-and-composite.sh <project> # gates → final.mp4 + history/ snapshot
116
- (Theme mode: SKIP steps 3b/5 — render-theme.sh already runs compile + render-and-composite
117
- + _postfx.sh; the deliverable is final_fx.mp4, final.mp4 is pre-plate-reaction)
118
- ```
119
-
120
- Step 1's `init` checks the installed skills against the latest on GitHub and updates the global set if any are out of date.
121
-
122
- Step 3 differs by mode:
123
-
124
- ### Step 3 — Cinematic mode (pure embed)
125
-
126
- 1. **Read `safe-zones.json` first.** Narration planes go in **`zones.hugLeft`/`hugRight`** — clean strips ABUTTING the silhouette (text far from the body reads as floating, not embedded; far corners are the fallback, not the default). The hero defaults to `heroAnchor`/`heroBands.best` (centered ON the subject, ~30–55% occluded). `recommendation:"fg"` moves NARRATION in front for legibility; **the hero stays embedded whenever `heroBands.feasible`** — hero-fg is the last resort.
127
- 2. **The DNA is the identity you picked in Step 0** (CATALOG.md) — do not re-open the choice here. Sanity-check it against the scene (bright hero band luma > 150 wants `ink`; full pick guidance lives in the catalog, covering all ten incl. neon / glitch / chrome / velocity). State your pick + why; the user decides. The DNA locks type/palette/blend/motion + hero three-act; safe-zones v2 (`palette`/`optics`/`lighting`) parameterizes it to THIS scene automatically.
128
- 3. **Author `<project>/cinematic.json`** — `"dna": "<name>"` + thought-BLOCKS, not raw groups: each block = lines of words (grouped 2–5 at clause boundaries) + the plane it stacks in + per-line `css` (size/weight/style only — no positions) + at most ONE line marked `"hero": true` (the promoted word; `"text"` for display form). Schema: `scripts/make-cinematic.cjs` header.
129
- 4. **Compile**: `node scripts/make-cinematic.cjs <project>` — lowers blocks → plan.json → index.html. Generated for you: transcript-sequenced timings, accumulate-within-block, page-flip-between-blocks, **the hero LOCKUP** (a hero block's pre-context, HERO and post-context stack as ONE bonded composition centered on the subject — reading order top→bottom = spoken order by construction; context floats in FRONT while the hero embeds BEHIND = the depth sandwich; a mass rule keeps the hero dominating its context), apex/minor hero split, **reading order by construction**, fg fallback per safe-zones. Then the gates run as usual. _(Hand-authoring plan.json directly remains possible for designs blocks can't express — then run `fill-timings.cjs` + `fit-fonts.cjs` + `make-composition.cjs` yourself.)_
130
-
131
- ### Step 3 — Theme mode (themed constitution)
132
-
133
- **Read [themes/README.md](themes/README.md) FIRST** — paradigm/setpiece registries, linkages, hard rules, and the exact `theme.json` schema.
134
-
135
- 1. **Pick a theme DNA** by content register (each `themes/<name>.json` has `voice` + `when`). State your pick + why; the user decides.
136
- 2. **Author `<project>/theme.json`** — `dna`, `lines` (verbatim, transcript order; 1–5 words each — for `takeover` each line is one CARD), `minors` (emphasis words), `hero:{match}` (the climax word/phrase; leave it OUT of `lines` for embed setpieces, keep it IN for inline setpieces and panel+redact).
137
- 3. **Render**: `bash scripts/render-theme.sh <project>` — compiles (verbatim-completeness gate at compile time), renders both layers, composites, applies the plate reaction → `final_fx.mp4`. Use `preview-frames.cjs` between compile and render for Visual QA.
138
-
139
- ---
140
-
141
- ## Visual QA — preview BEFORE you render
142
-
143
- `node scripts/preview-frames.cjs <project> [t…]` composites **faithful preview frames in ~2s each**
144
- (caption layers screenshotted at seek-time + real video frame + matte occlusion + rail overlay = what
145
- the final composite will look like at that moment). Default samples = each group/climax window.
146
- A full render costs minutes — never use it to _discover_ layout problems.
147
-
148
- Check the previews (`<project>/preview/sheet.png`) against this list — these are the failures the
149
- geometric gates **cannot** catch:
150
-
151
- 1. **Washout** — light text over a bright region (window/sign/sky): unreadable → move the plane or change DNA/mode (bright scene → `ink`).
152
- 2. **Text-on-text** — captions over the scene's own text/graphics, or two caption groups colliding.
153
- 3. **Reading order** — on-screen vertical order must match spoken order; the hero must not sit below later words.
154
- 4. **Hero presence** — the climax should be BIG and visibly behind the subject (~30–55% occluded), not a floating label in a margin.
155
- 5. **Balance** — one coherent column/band, not scattered fragments; margins breathing; nothing clipped.
156
-
157
- Then the **5 positive checks** in [references/reference-bar.md](references/reference-bar.md)
158
- (poster test · timid test · one-glance hierarchy · scene handshake · dead-air audit) — the
159
- failure list keeps a render from being broken; the positive list is what makes it _designed_.
160
- Ship when both pass.
161
-
162
- **Fresh-eyes review (recommended for anything user-facing):** you have confirmation bias about your
163
- own layout. If you can spawn a subagent, give it ONLY the preview sheet + this checklist and ask for
164
- PASS/FIX verdicts per frame ("review these caption previews against the 5-point checklist; answer
165
- PASS or the specific fix per frame"). Apply fixes in plan.json / theme.json, recompile, re-preview —
166
- each loop costs seconds. Render once, when the previews pass.
167
-
168
- ---
169
-
170
- ## The DNA registry — ten visual languages (replaces the template catalog)
171
-
172
- Both modes draw from **[dna/](dna/README.md)** — six art-directed visual languages that
173
- **parameterize per scene** (accent sampled from the footage, contact shadow along the
174
- measured light direction, depth-match blur, RMS-coupled hero amplitude):
175
-
176
- | DNA | Register | Scene fit | Voice |
177
- | --------------- | -------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------- |
178
- | **cream** | premium-warm | dark/mid warm scenes | Inter + warm cream + screen; glowing emergence hero (successor of cinematic-cream) |
179
- | **ink** | premium | **bright scenes (luma > 150)** | near-black multiply — type printed ON the wall; the bright-scene answer |
180
- | **editorial** | editorial-luxe | introspective / fashion / poetic | Bodoni Moda, lowercase-italic hero — magazine elegance |
181
- | **keynote** | tech-premium | product / launch | opaque white Inter 800, dead-center stillness |
182
- | **documentary** | formal | interview / serious | burn-in reveals, no hero — gravitas IS the style |
183
- | **loud** | loud | hype / sport / social | Anton + scene-sampled accent, single-unit slam + ripple; body ANNOUNCES in front (`bodyLayer: fg`) |
184
- | **neon** | loud-cyber | cyberpunk / nightlife / tech-noir (dark scenes) | electric-cyan signage, ignition flicker, the hero powers ON like a sign |
185
- | **glitch** | loud-cyber | digital / hacker / AI | RGB-split echoes snap together on landing; machine-percussive timing |
186
- | **chrome** | loud-luxe | Y2K / fashion-tech / music | liquid-metal gradient hero + one sheen sweep during the hold |
187
- | **velocity** | loud-sport | sport / auto / fitness | every word arrives along its motion vector (streak+skew), hero passes with speed trails |
188
-
189
- Pick by `safe-zones.json` (`heroAnchor.bandLuma`, `palette.temperature`) × content
190
- register — [dna/README.md](dna/README.md) has the decision rule. Authoring:
191
- `cinematic.json` takes `"dna": "<name>"`.
192
-
193
- The engine generates the **hero three-act** from the DNA (no authoring needed):
194
- co-visible captions dim (setup) → per-letter entrance with amplitude ∝ spoken loudness
195
- (impact) → breathe + glow until exit (afterglow).
196
-
197
- (Legacy: `plan.template:"cinematic-cream"` maps to `dna:"cream"` automatically.
198
- The retired 54-template library lives outside the skill at
199
- `~/Downloads/embedded-captions-archive/standard-templates-54/`; `_motion.md` remains
200
- in-skill as the motion-verb reference catalog.)
201
-
202
- ---
203
-
204
- ## Aesthetic decision — tone × shot × platform (input to the catalog shortlist, NOT a second router)
205
-
206
- Classify the clip on 3 axes and feed the result into CATALOG.md's shortlisting — this section never picks a mode/engine by itself:
207
-
208
- **Tone** (what feel does the content have?)
209
-
210
- - documentary | conversational | energetic | poetic | keynote | investigative | music-video
211
-
212
- **Shot** (what's the framing?)
213
-
214
- - close-up (head + shoulders) | mid-shot (torso+) | wide (full body+) | cut-montage (mixed shots)
215
-
216
- **Platform** (where will it play?)
217
-
218
- - 9:16 portrait (TikTok/IG/Shorts) | 16:9 landscape (YouTube/web) | 1:1 square | broadcast export
219
-
220
- Cross-reference in [references/direction-catalog.md § Classification matrix](references/direction-catalog.md) for direction language — then return to [CATALOG.md](CATALOG.md) to shortlist identities (this matrix informs the shortlist; the catalog is the only routing surface).
221
-
222
- ## Composition craft (embed track) — read before embedding
223
-
224
- The full **embed-track** playbook lives in **[references/composition-craft.md](references/composition-craft.md)**:
225
- transcript role-annotation, phrase grouping, planes & clean-zone anchoring, zone coherence,
226
- climax pop & readability, edge-breathing, the occlusion 3-step judgement, and
227
- accumulation/persistence. It governs how a _promoted_ phrase sits INTO the scene — read it
228
- before authoring any embed (Cinematic `plan.json` or Standard `index.html`). The default **rail**
229
- track has its own, much simpler spec → **[references/rail.md](references/rail.md)**.
230
-
231
- ---
232
-
233
- ## Shared knowledge
234
-
235
- | Doc | What |
236
- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
237
- | [references/rail.md](references/rail.md) | **The rail track** — standard lower-third subtitle spec (the default; carries most text). |
238
- | [references/composition-craft.md](references/composition-craft.md) | **The embed-track playbook** — grouping, planes, climax pop, occlusion judgement, accumulation/persistence. Read before embedding. |
239
- | [dna/README.md](dna/README.md) | **The DNA registry** — six scene-parameterized visual languages; how to pick. |
240
- | [references/reference-bar.md](references/reference-bar.md) | **The taste bar** — per-register world-class references + the 5 positive checks. |
241
- | [references/aesthetic-principles.md](references/aesthetic-principles.md) | **The 18 rules.** Beat Veed AI on taste. Read first. |
242
- | [references/motion-vocabulary.md](references/motion-vocabulary.md) | 10 named motion primitives + tone→timing lookup |
243
- | [references/direction-catalog.md](references/direction-catalog.md) | 10 ship-ready aesthetics + tone×shot×platform matrix |
244
- | [references/anti-patterns.md](references/anti-patterns.md) | Bugs already locked out (CoreML, letter-spacing reflow, etc.) |
245
- | [references/scene-types.md](references/scene-types.md) | When a wall surface is usable (4 conditions) |
246
- | [references/layout-heuristics.md](references/layout-heuristics.md) | Plane positioning, clean-zone selection, crown 3 conditions, pillarbox math |
247
- | [references/typography-presets.md](references/typography-presets.md) | Font-size × column-width matrix (starting points) |
248
- | [references/caption-grouping.md](references/caption-grouping.md) | Word → group rules (pauses, sentence boundaries) |
249
- | [references/failure-modes.md](references/failure-modes.md) | Long tail of dev gotchas |
250
- | [references/bespoke-vs-presets.md](references/bespoke-vs-presets.md) | Why presets fail sometimes; clone-and-tweak pattern |
251
-
252
- **Read the aesthetic principles and direction catalog FIRST.** Everything else is implementation detail.
253
-
254
- ---
255
-
256
- ## Non-negotiables
257
-
258
- - **Face must never be 100%-covered continuously** — every 0.3s window, face bbox ≥30% uncovered.
259
- - **WCAG contrast** — final render lints; fix palette if it fails.
260
- - **Deterministic** — no `Math.random()`, no `Date.now()`, no `repeat:-1`.
261
- - **Never grade/recolor the video.** The footage ships untouched — captions are the only addition. No full-frame scanlines / duotone / darken / vignette over the a-roll. Cyberpunk/CRT texture belongs _inside_ a caption element, not over the whole frame.
262
- - **Rail-first for talking-head / explainer.** Don't embed the whole transcript — most text is the rail; embed only peaks. Embedding everything is the default mistake.
263
- - **Embed is scarce + spaced.** ≤1 embed per sentence/beat, never two adjacent or co-visible, ≥ a beat apart, at most one `apex`. climax = per-beat peak, **not** "the single payoff of the entire clip."
264
- - **Matte = the PERSON (hyperframes `remove-background`, u2net_human_seg, Apache-2.0).** Human segmentation by intent, but not surgically: thin offset furniture (mic boom arms) is usually excluded — captions render over it, behind the person — while large salient objects NEAR the subject (a telescope, a desk rig) can still leak into the matte and occlude captions. Objects HELD by the subject (products, phones) may drop out intermittently, letting captions pass in front. NEVER assume: sample `frames_fg/` at 2-3 timestamps before placing the hero, and prefer hero positions clear of any leaked furniture (`heroAnchor` can be skewed by leaks — cross-check against frames_bg).
265
- - **safe-zones is PROP-BLIND — eyeball every band you use.** Zones/heroBands score _subject_ occlusion + luma only: a mic, telescope, or screen sitting inside a "clean" zone is invisible to them (and a prop leaking INTO the matte skews `heroAnchor.centerXPct` off the person). Before authoring, extract ONE frame of each band you intend to use; if a prop lives there, measure its bbox and move/shrink the plane. Two real cases shipped clean only because the agent did exactly this. (Auto prop-saliency is a known gap; zones' `peakLuma` only catches _moving_ bright objects.)
266
- - **Captions stay on-frame.** Cinematic mode hard-gates frame-overflow; Standard mode runs `check-overflow.cjs` as a WARNING (intentional bleed is the only exception — read the warning).
267
- - **Each caption ≥ 0.5s on screen** — shorter = unreadable.
268
- - **Word timings must match transcript.json within 80ms** — a caption firing 500ms off-beat destroys the scene illusion. Cinematic runs `check-timing.cjs --strict` before rendering (via render-and-composite.sh); THEME mode enforces the same timings at compile time instead (make-theme's sequential transcript matcher + verbatim completeness gate — drift is a compile error). Never pack multiple transcript words into one entry (e.g. `"FUTURE OF"` or an `IT` + line-break + `ALL` stack with one start/end) — the second word inherits the first's timestamp and fires early. Split them into separate word entries with their own timings, even if you want them on the same visual line (use CSS `white-space` / natural wrap instead of `<br>`). Creative substitutions where caption text ≠ transcript (e.g. `"15%"` replacing `"fifteen percent"`) are supported — register them in `CREATIVE_SUBS` inside `check-timing.cjs`.
269
- - **Group windows must envelop their words** — `group.in ≤ min(word.start)` and `group.out ≥ max(word.end)` for every group. If `group.in` is later than a word's start, the word is silently delayed until the container mounts (we've shipped 800ms lag bugs from this). The validator enforces this.
270
- - **No two caption groups may overlap in both time AND screen region** — overlapping-in-time captions create text-on-text pileups. Options: (a) **spatial separation** — place each group in a non-overlapping vertical band so they can coexist (memory-wall cascade style); (b) **handoff** — set the earlier group's `out` ≤ the next group's `in` so only one is on screen; (c) **deliberate layered typography** — add `"allow_overlap": true` on one of the groups to silence the validator. The validator estimates each group's vertical bbox from its CSS and flags collisions. Pick (a) by default — it's what makes cinematic-cream feel like a poem accumulating, not a subtitle track replacing itself.
271
- - **Screen-blend fails on bright backgrounds (>180 luminance).** **Cinematic** templates are cream + `screen` and that DNA is **locked** (the plan can't recolour them) → on a bright backdrop they wash out, so pick `ink` (letterpress built FOR bright surfaces) or the `anchor` theme (opaque rail surface) rather than overriding a look.
272
- - **Don't animate `letter-spacing` or `filter:blur` on word entrance** — inline-block reflow causes line-jumps.
273
- - **CoreML banned for matting** — the onnxruntime CoreML EP's mixed-precision partitioning corrupted face alpha (observed with the previous RVM engine; don't re-try it). Matting is CPU-only (~2 fps @1080p ≈ 2-3 min per 10s clip; budget for it on long clips).
274
-
275
- ---
276
-
277
- ## Dependencies
278
-
279
- - **hyperframes**, built (`packages/cli/dist/cli.js`). Scripts auto-resolve the checkout: `HYPERFRAMES_ROOT` env → repo root if this skill ships _inside_ hyperframes → `~/Downloads/hyperframes`. Build with `bun install && bun run build`.
280
- - **Node-first; two Python touchpoints via `uvx` (no manual installs):** transcription runs WhisperX through `uvx` (word-level timings; falls back per SKILL §transcription), and Theme's `drawon` setpiece shells `python3 scripts/gen-stroke-path.py` at compile time. Everything else runs on the toolchain hyperframes already ships: matting via the hyperframes CLI's **`remove-background`** (u2net_human_seg; weights auto-download once, ~168 MB, to `~/.cache/hyperframes/`), image/alpha math via **`sharp`**, layout/occlusion/overflow via **`puppeteer`**, plus **`ffmpeg`**. The scripts auto-resolve these from the hyperframes checkout — nothing extra to install.
281
- - **Transcription = WhisperX via `uvx`** (word-level timings + alignment; no manual install — `transcribe.cjs` drives `uvx whisperx`). Falls back to an existing word-level `transcript.json` if present.
282
- - **Source video** — `matte.cjs` / `transcribe.cjs` auto-resolve `source.mp4` (or glob the clip / read `hyperframes.json`), so `hyperframes init --video X.mp4` needs no manual rename.
283
- - **fps** — `matte.cjs` extracts at the source's native rate and records `matte.fps`; `render-and-composite.sh` uses that so the matte stays frame-aligned.
284
- - Matting weights are NOT bundled: `matte.cjs` shells the hyperframes CLI's `remove-background`, which downloads u2net_human_seg (~168 MB, Apache-2.0) once to `~/.cache/hyperframes/background-removal/models/`. First prepare on a fresh machine needs network for that one download.
285
-
286
- If a hard dependency is missing, STOP and ask the user — don't silently skip steps.
1
+ ---
2
+ name: embedded-captions
3
+ description: 'Add captions to a talking-head video. ONE catalog (CATALOG.md) of 32 visual identities behind two engines: column-flow (captions composited INTO the scene — matte occlusion + mix-blend; cream/ink/editorial/keynote/documentary/loud/neon/glitch/chrome/velocity) and themed constitutions (anchor/ordnance/terminal/neonsign/stardust/stomp/scoreboard/transit/vhs/arcade/dossier/laser/thunder/hologram/biolume/aurora/spectrum/papercut/popup/chalkboard/graffiti/brush/inkwater/ransom/lastpage/nightcity — e.g. a glyph-decode climax, a neon sign WRITTEN stroke by stroke, or the quiet `anchor` rail default). Route by identity, never by mode. Trigger on "captions/subtitles", "embed/cinematic captions", "VFX captions", "炸/特效/酷炫字幕", a named identity, or top-tier motion-graphics asks. Embedding every word is wrong for most talking-head content — `anchor` is the verbatim default. Pipeline: transcription → hyperframes remove-background matting → HTML render → ffmpeg overlay. Requires hyperframes and a single-subject clip.'
4
+ metadata:
5
+ tags: captions, embedded-captions, occlusion, matting, talking-head, rembg-matting, whisper, ffmpeg, cinematic
6
+ ---
7
+
8
+ # Embedded Captions
9
+
10
+ **One catalog, picked up front** ([CATALOG.md](CATALOG.md) — 17 identities; the three engines behind it are backend detail). **Standard** (default) builds a clean verbatim **rail** (lower-third subtitle carrying most text) + an **embed** climax composited _into_ the scene behind the subject at the peak. **Cinematic** is pure embed — no rail, every caption composited behind the subject (hero typography, accumulation, occlusion as the effect). **Theme** is a complete themed constitution — body paradigm × hero setpiece × front fx × plate reaction, composed from registries ([themes/README.md](themes/README.md)): `ordnance` `terminal` `neonsign` `stardust` `stomp`. Most explainer / voiceover is **Standard**; **embed is the scarce, earned peak** — embedding every word is the common mistake; Theme is for VFX-grade asks ("炸", "特效", "像 AE 做的").
11
+
12
+ ---
13
+
14
+ ## Operational flow (TL;DR)
15
+
16
+ The craft prose below is long; the **pipeline itself is short** — and everything
17
+ deterministic is computed or compiled, never hand-written:
18
+
19
+ 1. **Decision gate** (refuse bad clips) → **pick ONE identity from [CATALOG.md](CATALOG.md)** (17 identities; engine/compiler derived by lookup — never surface a mode/category question)
20
+ 2. `hyperframes init` (skip it if the project dir already exists with the video inside — `matte.cjs`/`transcribe.cjs` adopt any video in the dir as source.mp4) → **`bash scripts/prepare.sh <project>`** (matte ∥ transcribe ∥ audio-envelope in parallel, then safe-zones v2 with scene palette/optics/lighting — one command, nothing forgotten)
21
+ 3. **author a small JSON of creative choices** (read `safe-zones.json` first):
22
+ Cinematic → `plan.json` → `fill-timings.cjs` → `fit-fonts.cjs` → `make-composition.cjs`;
23
+ Theme → `theme.json` → `make-theme.cjs` (rail/panel/poem/takeover paradigms; `anchor` is the quiet rail default)
24
+ 4. **Visual QA**: `node scripts/preview-frames.cjs <project>` → faithful composite previews in ~2s/frame (no render). Check § Visual QA before paying for a render.
25
+ 5. `render-and-composite.sh` → gates (timing / occlusion+hero / overflow / hand-off) → `final.mp4`
26
+
27
+ Load-bearing rules people miss:
28
+
29
+ - **rail (default) + embed (promotion).** `drop` (filler, not shown) / `rail` (verbatim lower-third subtitle, in front, carries most text) / `embed` (a peak word composited behind the subject). **Standard mode does both**, embedding only the peak(s). See **§ Caption model**.
30
+ - **The video is delivered UNTOUCHED (Standard/Cinematic; **Theme mode's PLATE budget is the one sanctioned exception** — register-gated reaction beats (charge-dim, punch, shake, grain) defined per theme DNA and applied AFTER the matte composite so subject+text+plate move as one frame)** — captions are the only thing added; the matte just lets the subject occlude the embed track. Never grade/recolor/scanline the footage.
31
+ - Two rulebooks: **rail → [references/rail.md](references/rail.md)** (thin), **embed craft → [references/composition-craft.md](references/composition-craft.md)** (rich, embed-only). Skim by need.
32
+
33
+ ---
34
+
35
+ ## Caption model — rail + embed
36
+
37
+ Every spoken phrase is one of three things:
38
+
39
+ | | What | How it's shown |
40
+ | --------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | **drop** | filler — um/uh, stutters, self-corrections | not shown |
42
+ | **rail** | the default — ordinary spoken content (verbatim) | clean lower-third subtitle, **in front**, readable. A punch word can get an inline `emphasis` highlight (accent colour / active-word pop) — it stays on the rail. |
43
+ | **embed** | a promoted peak — the headline beat | one big word composited **behind the subject** (matte occlusion), designed entrance + exit |
44
+
45
+ **The rail carries most of the text; embed is the scarce, earned peak.** Scarcity is **per beat/block, not per clip**: ≤1 hero per block (thought), never two co-visible, ≥ a beat of air between hero windows (the compiler warns under 0.6s). A short clip → usually 1–2; a long explainer → ~one per section. Among multiple heroes, the **largest authored one is the APEX** (it alone gets the full lockup embed + width-fit raise); smaller ones are **MINOR peaks** that ride their column as oversized emphasis lines (fg, damped motion) — not every beat needs the matte showcase, which is exactly what keeps the apex an event. Embedding every word is still the common mistake.
46
+
47
+ Rail-surface identities build exactly this (rail = `rail.html`, embed = the climax in `index.html`). Column-flow identities drop the rail and make everything embed-style — recommend them only for mood-over-verbatim asks, never for explainer / voiceover where the words must read (CATALOG.md encodes this per identity).
48
+
49
+ ---
50
+
51
+ ## Step 0 — pick ONE identity from the CATALOG
52
+
53
+ **One front-end, three engines behind.** The user picks an IDENTITY from
54
+ [CATALOG.md](CATALOG.md) (17 entries: 12 classic + 5 themed); the engine,
55
+ compiler and authoring file are derived by lookup from the catalog row.
56
+ **Never surface "Standard vs Cinematic vs Theme" as a question** — those are
57
+ backend names (a product has one UX even with several engines). The catalog
58
+ encodes everything routing needs: reading surface, voice, recommend-for, scene
59
+ needs, adjacency notes for the genuinely-close pairs (loud↔ordnance,
60
+ neon↔neonsign, cream↔stardust).
61
+
62
+ Procedure: probe the clip → shortlist 2–3 identities from the catalog →
63
+ recommend ONE with a one-line why → **the user picks** → author that identity's
64
+ file. Identities are engine-locked (no cross combos; opening one is a
65
+ validation event — see dna/README.md).
66
+
67
+ **Always present your recommendation and let the user pick before you author.** Don't silently default.
68
+
69
+ (The full identity table lives in [CATALOG.md](CATALOG.md) — single source of truth for routing. The engine docs below describe each backend's authoring contract.)
70
+
71
+ **Recommendation heuristic**: use the "Shortlisting heuristics" in [CATALOG.md](CATALOG.md) — they are identity-level (e.g. "炸" shortlists ordnance/stomp/terminal/loud and picks by WHAT should explode), never category-level. Unsure → `anchor`.
72
+
73
+ - **Cinematic** → write `plan.json` for a locked template, compiled by `make-composition.cjs`.
74
+ - **Theme** → read [themes/README.md](themes/README.md), author `theme.json`, run `scripts/render-theme.sh` (compiles + renders + plate reaction → **final_fx.mp4**).
75
+
76
+ ---
77
+
78
+ ## Decision gate — RUN FIRST
79
+
80
+ Probe the video and classify the scene before either mode.
81
+
82
+ ```bash
83
+ ffprobe <video.mp4> # specs
84
+ ffmpeg -ss <t> -i <video.mp4> -vframes 1 sample.png # at 20/50/80%
85
+ ```
86
+
87
+ Read the samples. Refuse if:
88
+
89
+ - Multiple speakers / hard cuts (split & render each shot, or refuse)
90
+ - No human subject (this skill is for talking-head)
91
+ - Under 3 seconds, **no speech**, or face never clearly visible — `transcribe.cjs` warns when audio is near-silent (Whisper hallucinates words like "Thank you." over silence); **heed it and refuse** rather than caption fabricated words
92
+ - **Source already has burned-in captions / subtitles / heavy text graphics** — adding a second caption system conflicts and the footage ships untouched (no covering/inpainting). Burned text often appears only mid-clip: sample a **1fps contact sheet** (`ffmpeg -i in.mp4 -vf "fps=1,scale=160:-1,tile=10x5" sheet.png`), don't trust 3 spot frames.
93
+ - **Transcript is garbage** — non-native/heavy-accent speech can transcribe into confident gibberish. Sanity-read `transcript.json` before authoring; if it doesn't parse as language, try `WHISPER_MODEL=medium` once, else refuse (a verbatim rail of fabricated words is worse than no captions).
94
+ - Busy handheld with fast motion (matte flickers)
95
+
96
+ ### Pre-flight probes (cost nothing, prevent the worst failures)
97
+
98
+ 1. **Shot-cut probe.** Sample frames at 20%, 50%, 80%. If a different subject/scene appears, **trim the clip** before the cut.
99
+ 2. **Letterbox / pillarbox probe.** Black bars on the first frame? Compute safe content rect and constrain caption placement inside it.
100
+ 3. **Luminance probe.** Sample the caption region's average luminance — `under 60` → light text reads as-is, `60-180` → add the glyph scrim, `180+` → opaque text + scrim (never bare light text). **Cinematic templates are cream+`screen` and LOCKED** — use this probe to _pick a fitting identity_ (bright scenes → `ink`, or the opaque-rail `anchor` theme), never to recolour one.
101
+ 4. **Identity recommendation by tone (you recommend; the user picks — see Step 0 + CATALOG.md).** explainer / interview / must-read words → rail/panel-surface identities; poetic / social / "cinematic" → column-flow identities by register; "炸 / 特效 / VFX" / named worlds → themed identities. When unsure → `anchor` (words read, scene safe) — but present a shortlist and let the user choose.
102
+
103
+ ---
104
+
105
+ ## Pipeline — 5 steps
106
+
107
+ ```
108
+ 1. hyperframes init <project> --non-interactive --video <video.mp4>
109
+ 2. bash scripts/prepare.sh <project> # matte ∥ transcribe (parallel) → safe-zones. One command.
110
+ # → frames_fg/ transcript.json safe-zones.json
111
+ 3. [AGENT STEP — the only creative step] author a small JSON; see below by mode
112
+ Cinematic: author plan.json → node scripts/fill-timings.cjs → fit-fonts.cjs → make-composition.cjs
113
+ Theme: author theme.json → bash scripts/render-theme.sh <project> (compiles + renders + plate fx)
114
+ 4. node scripts/preview-frames.cjs <project> # ~2s/frame composite previews → § Visual QA (BEFORE the render)
115
+ 5. bash scripts/render-and-composite.sh <project> # gates → final.mp4 + history/ snapshot
116
+ (Theme mode: SKIP steps 3b/5 — render-theme.sh already runs compile + render-and-composite
117
+ + _postfx.sh; the deliverable is final_fx.mp4, final.mp4 is pre-plate-reaction)
118
+ ```
119
+
120
+ Step 1's `init` checks the installed skills against the latest on GitHub and updates the global set if any are out of date.
121
+
122
+ Step 3 differs by mode:
123
+
124
+ ### Step 3 — Cinematic mode (pure embed)
125
+
126
+ 1. **Read `safe-zones.json` first.** Narration planes go in **`zones.hugLeft`/`hugRight`** — clean strips ABUTTING the silhouette (text far from the body reads as floating, not embedded; far corners are the fallback, not the default). The hero defaults to `heroAnchor`/`heroBands.best` (centered ON the subject, ~30–55% occluded). `recommendation:"fg"` moves NARRATION in front for legibility; **the hero stays embedded whenever `heroBands.feasible`** — hero-fg is the last resort.
127
+ 2. **The DNA is the identity you picked in Step 0** (CATALOG.md) — do not re-open the choice here. Sanity-check it against the scene (bright hero band luma > 150 wants `ink`; full pick guidance lives in the catalog, covering all ten incl. neon / glitch / chrome / velocity). State your pick + why; the user decides. The DNA locks type/palette/blend/motion + hero three-act; safe-zones v2 (`palette`/`optics`/`lighting`) parameterizes it to THIS scene automatically.
128
+ 3. **Author `<project>/cinematic.json`** — `"dna": "<name>"` + thought-BLOCKS, not raw groups: each block = lines of words (grouped 2–5 at clause boundaries) + the plane it stacks in + per-line `css` (size/weight/style only — no positions) + at most ONE line marked `"hero": true` (the promoted word; `"text"` for display form). Schema: `scripts/make-cinematic.cjs` header.
129
+ 4. **Compile**: `node scripts/make-cinematic.cjs <project>` — lowers blocks → plan.json → index.html. Generated for you: transcript-sequenced timings, accumulate-within-block, page-flip-between-blocks, **the hero LOCKUP** (a hero block's pre-context, HERO and post-context stack as ONE bonded composition centered on the subject — reading order top→bottom = spoken order by construction; context floats in FRONT while the hero embeds BEHIND = the depth sandwich; a mass rule keeps the hero dominating its context), apex/minor hero split, **reading order by construction**, fg fallback per safe-zones. Then the gates run as usual. _(Hand-authoring plan.json directly remains possible for designs blocks can't express — then run `fill-timings.cjs` + `fit-fonts.cjs` + `make-composition.cjs` yourself.)_
130
+
131
+ ### Step 3 — Theme mode (themed constitution)
132
+
133
+ **Read [themes/README.md](themes/README.md) FIRST** — paradigm/setpiece registries, linkages, hard rules, and the exact `theme.json` schema.
134
+
135
+ 1. **Pick a theme DNA** by content register (each `themes/<name>.json` has `voice` + `when`). State your pick + why; the user decides.
136
+ 2. **Author `<project>/theme.json`** — `dna`, `lines` (verbatim, transcript order; 1–5 words each — for `takeover` each line is one CARD), `minors` (emphasis words), `hero:{match}` (the climax word/phrase; leave it OUT of `lines` for embed setpieces, keep it IN for inline setpieces and panel+redact).
137
+ 3. **Render**: `bash scripts/render-theme.sh <project>` — compiles (verbatim-completeness gate at compile time), renders both layers, composites, applies the plate reaction → `final_fx.mp4`. Use `preview-frames.cjs` between compile and render for Visual QA.
138
+
139
+ ---
140
+
141
+ ## Visual QA — preview BEFORE you render
142
+
143
+ `node scripts/preview-frames.cjs <project> [t…]` composites **faithful preview frames in ~2s each**
144
+ (caption layers screenshotted at seek-time + real video frame + matte occlusion + rail overlay = what
145
+ the final composite will look like at that moment). Default samples = each group/climax window.
146
+ A full render costs minutes — never use it to _discover_ layout problems.
147
+
148
+ Check the previews (`<project>/preview/sheet.png`) against this list — these are the failures the
149
+ geometric gates **cannot** catch:
150
+
151
+ 1. **Washout** — light text over a bright region (window/sign/sky): unreadable → move the plane or change DNA/mode (bright scene → `ink`).
152
+ 2. **Text-on-text** — captions over the scene's own text/graphics, or two caption groups colliding.
153
+ 3. **Reading order** — on-screen vertical order must match spoken order; the hero must not sit below later words.
154
+ 4. **Hero presence** — the climax should be BIG and visibly behind the subject (~30–55% occluded), not a floating label in a margin.
155
+ 5. **Balance** — one coherent column/band, not scattered fragments; margins breathing; nothing clipped.
156
+
157
+ Then the **5 positive checks** in [references/reference-bar.md](references/reference-bar.md)
158
+ (poster test · timid test · one-glance hierarchy · scene handshake · dead-air audit) — the
159
+ failure list keeps a render from being broken; the positive list is what makes it _designed_.
160
+ Ship when both pass.
161
+
162
+ **Fresh-eyes review (recommended for anything user-facing):** you have confirmation bias about your
163
+ own layout. If you can spawn a subagent, give it ONLY the preview sheet + this checklist and ask for
164
+ PASS/FIX verdicts per frame ("review these caption previews against the 5-point checklist; answer
165
+ PASS or the specific fix per frame"). Apply fixes in plan.json / theme.json, recompile, re-preview —
166
+ each loop costs seconds. Render once, when the previews pass.
167
+
168
+ ---
169
+
170
+ ## The DNA registry — ten visual languages (replaces the template catalog)
171
+
172
+ Both modes draw from **[dna/](dna/README.md)** — six art-directed visual languages that
173
+ **parameterize per scene** (accent sampled from the footage, contact shadow along the
174
+ measured light direction, depth-match blur, RMS-coupled hero amplitude):
175
+
176
+ | DNA | Register | Scene fit | Voice |
177
+ | --------------- | -------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------- |
178
+ | **cream** | premium-warm | dark/mid warm scenes | Inter + warm cream + screen; glowing emergence hero (successor of cinematic-cream) |
179
+ | **ink** | premium | **bright scenes (luma > 150)** | near-black multiply — type printed ON the wall; the bright-scene answer |
180
+ | **editorial** | editorial-luxe | introspective / fashion / poetic | Bodoni Moda, lowercase-italic hero — magazine elegance |
181
+ | **keynote** | tech-premium | product / launch | opaque white Inter 800, dead-center stillness |
182
+ | **documentary** | formal | interview / serious | burn-in reveals, no hero — gravitas IS the style |
183
+ | **loud** | loud | hype / sport / social | Anton + scene-sampled accent, single-unit slam + ripple; body ANNOUNCES in front (`bodyLayer: fg`) |
184
+ | **neon** | loud-cyber | cyberpunk / nightlife / tech-noir (dark scenes) | electric-cyan signage, ignition flicker, the hero powers ON like a sign |
185
+ | **glitch** | loud-cyber | digital / hacker / AI | RGB-split echoes snap together on landing; machine-percussive timing |
186
+ | **chrome** | loud-luxe | Y2K / fashion-tech / music | liquid-metal gradient hero + one sheen sweep during the hold |
187
+ | **velocity** | loud-sport | sport / auto / fitness | every word arrives along its motion vector (streak+skew), hero passes with speed trails |
188
+
189
+ Pick by `safe-zones.json` (`heroAnchor.bandLuma`, `palette.temperature`) × content
190
+ register — [dna/README.md](dna/README.md) has the decision rule. Authoring:
191
+ `cinematic.json` takes `"dna": "<name>"`.
192
+
193
+ The engine generates the **hero three-act** from the DNA (no authoring needed):
194
+ co-visible captions dim (setup) → per-letter entrance with amplitude ∝ spoken loudness
195
+ (impact) → breathe + glow until exit (afterglow).
196
+
197
+ (Legacy: `plan.template:"cinematic-cream"` maps to `dna:"cream"` automatically.
198
+ The retired 54-template library lives outside the skill at
199
+ `~/Downloads/embedded-captions-archive/standard-templates-54/`; `_motion.md` remains
200
+ in-skill as the motion-verb reference catalog.)
201
+
202
+ ---
203
+
204
+ ## Aesthetic decision — tone × shot × platform (input to the catalog shortlist, NOT a second router)
205
+
206
+ Classify the clip on 3 axes and feed the result into CATALOG.md's shortlisting — this section never picks a mode/engine by itself:
207
+
208
+ **Tone** (what feel does the content have?)
209
+
210
+ - documentary | conversational | energetic | poetic | keynote | investigative | music-video
211
+
212
+ **Shot** (what's the framing?)
213
+
214
+ - close-up (head + shoulders) | mid-shot (torso+) | wide (full body+) | cut-montage (mixed shots)
215
+
216
+ **Platform** (where will it play?)
217
+
218
+ - 9:16 portrait (TikTok/IG/Shorts) | 16:9 landscape (YouTube/web) | 1:1 square | broadcast export
219
+
220
+ Cross-reference in [references/direction-catalog.md § Classification matrix](references/direction-catalog.md) for direction language — then return to [CATALOG.md](CATALOG.md) to shortlist identities (this matrix informs the shortlist; the catalog is the only routing surface).
221
+
222
+ ## Composition craft (embed track) — read before embedding
223
+
224
+ The full **embed-track** playbook lives in **[references/composition-craft.md](references/composition-craft.md)**:
225
+ transcript role-annotation, phrase grouping, planes & clean-zone anchoring, zone coherence,
226
+ climax pop & readability, edge-breathing, the occlusion 3-step judgement, and
227
+ accumulation/persistence. It governs how a _promoted_ phrase sits INTO the scene — read it
228
+ before authoring any embed (Cinematic `plan.json` or Standard `index.html`). The default **rail**
229
+ track has its own, much simpler spec → **[references/rail.md](references/rail.md)**.
230
+
231
+ ---
232
+
233
+ ## Shared knowledge
234
+
235
+ | Doc | What |
236
+ | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
237
+ | [references/rail.md](references/rail.md) | **The rail track** — standard lower-third subtitle spec (the default; carries most text). |
238
+ | [references/composition-craft.md](references/composition-craft.md) | **The embed-track playbook** — grouping, planes, climax pop, occlusion judgement, accumulation/persistence. Read before embedding. |
239
+ | [dna/README.md](dna/README.md) | **The DNA registry** — six scene-parameterized visual languages; how to pick. |
240
+ | [references/reference-bar.md](references/reference-bar.md) | **The taste bar** — per-register world-class references + the 5 positive checks. |
241
+ | [references/aesthetic-principles.md](references/aesthetic-principles.md) | **The 18 rules.** Beat Veed AI on taste. Read first. |
242
+ | [references/motion-vocabulary.md](references/motion-vocabulary.md) | 10 named motion primitives + tone→timing lookup |
243
+ | [references/direction-catalog.md](references/direction-catalog.md) | 10 ship-ready aesthetics + tone×shot×platform matrix |
244
+ | [references/anti-patterns.md](references/anti-patterns.md) | Bugs already locked out (CoreML, letter-spacing reflow, etc.) |
245
+ | [references/scene-types.md](references/scene-types.md) | When a wall surface is usable (4 conditions) |
246
+ | [references/layout-heuristics.md](references/layout-heuristics.md) | Plane positioning, clean-zone selection, crown 3 conditions, pillarbox math |
247
+ | [references/typography-presets.md](references/typography-presets.md) | Font-size × column-width matrix (starting points) |
248
+ | [references/caption-grouping.md](references/caption-grouping.md) | Word → group rules (pauses, sentence boundaries) |
249
+ | [references/failure-modes.md](references/failure-modes.md) | Long tail of dev gotchas |
250
+ | [references/bespoke-vs-presets.md](references/bespoke-vs-presets.md) | Why presets fail sometimes; clone-and-tweak pattern |
251
+
252
+ **Read the aesthetic principles and direction catalog FIRST.** Everything else is implementation detail.
253
+
254
+ ---
255
+
256
+ ## Non-negotiables
257
+
258
+ - **Face must never be 100%-covered continuously** — every 0.3s window, face bbox ≥30% uncovered.
259
+ - **WCAG contrast** — final render lints; fix palette if it fails.
260
+ - **Deterministic** — no `Math.random()`, no `Date.now()`, no `repeat:-1`.
261
+ - **Never grade/recolor the video.** The footage ships untouched — captions are the only addition. No full-frame scanlines / duotone / darken / vignette over the a-roll. Cyberpunk/CRT texture belongs _inside_ a caption element, not over the whole frame.
262
+ - **Rail-first for talking-head / explainer.** Don't embed the whole transcript — most text is the rail; embed only peaks. Embedding everything is the default mistake.
263
+ - **Embed is scarce + spaced.** ≤1 embed per sentence/beat, never two adjacent or co-visible, ≥ a beat apart, at most one `apex`. climax = per-beat peak, **not** "the single payoff of the entire clip."
264
+ - **Matte = the PERSON (hyperframes `remove-background`, u2net_human_seg, Apache-2.0).** Human segmentation by intent, but not surgically: thin offset furniture (mic boom arms) is usually excluded — captions render over it, behind the person — while large salient objects NEAR the subject (a telescope, a desk rig) can still leak into the matte and occlude captions. Objects HELD by the subject (products, phones) may drop out intermittently, letting captions pass in front. NEVER assume: sample `frames_fg/` at 2-3 timestamps before placing the hero, and prefer hero positions clear of any leaked furniture (`heroAnchor` can be skewed by leaks — cross-check against frames_bg).
265
+ - **safe-zones is PROP-BLIND — eyeball every band you use.** Zones/heroBands score _subject_ occlusion + luma only: a mic, telescope, or screen sitting inside a "clean" zone is invisible to them (and a prop leaking INTO the matte skews `heroAnchor.centerXPct` off the person). Before authoring, extract ONE frame of each band you intend to use; if a prop lives there, measure its bbox and move/shrink the plane. Two real cases shipped clean only because the agent did exactly this. (Auto prop-saliency is a known gap; zones' `peakLuma` only catches _moving_ bright objects.)
266
+ - **Captions stay on-frame.** Cinematic mode hard-gates frame-overflow; Standard mode runs `check-overflow.cjs` as a WARNING (intentional bleed is the only exception — read the warning).
267
+ - **Each caption ≥ 0.5s on screen** — shorter = unreadable.
268
+ - **Word timings must match transcript.json within 80ms** — a caption firing 500ms off-beat destroys the scene illusion. Cinematic runs `check-timing.cjs --strict` before rendering (via render-and-composite.sh); THEME mode enforces the same timings at compile time instead (make-theme's sequential transcript matcher + verbatim completeness gate — drift is a compile error). Never pack multiple transcript words into one entry (e.g. `"FUTURE OF"` or an `IT` + line-break + `ALL` stack with one start/end) — the second word inherits the first's timestamp and fires early. Split them into separate word entries with their own timings, even if you want them on the same visual line (use CSS `white-space` / natural wrap instead of `<br>`). Creative substitutions where caption text ≠ transcript (e.g. `"15%"` replacing `"fifteen percent"`) are supported — register them in `CREATIVE_SUBS` inside `check-timing.cjs`.
269
+ - **Group windows must envelop their words** — `group.in ≤ min(word.start)` and `group.out ≥ max(word.end)` for every group. If `group.in` is later than a word's start, the word is silently delayed until the container mounts (we've shipped 800ms lag bugs from this). The validator enforces this.
270
+ - **No two caption groups may overlap in both time AND screen region** — overlapping-in-time captions create text-on-text pileups. Options: (a) **spatial separation** — place each group in a non-overlapping vertical band so they can coexist (memory-wall cascade style); (b) **handoff** — set the earlier group's `out` ≤ the next group's `in` so only one is on screen; (c) **deliberate layered typography** — add `"allow_overlap": true` on one of the groups to silence the validator. The validator estimates each group's vertical bbox from its CSS and flags collisions. Pick (a) by default — it's what makes cinematic-cream feel like a poem accumulating, not a subtitle track replacing itself.
271
+ - **Screen-blend fails on bright backgrounds (>180 luminance).** **Cinematic** templates are cream + `screen` and that DNA is **locked** (the plan can't recolour them) → on a bright backdrop they wash out, so pick `ink` (letterpress built FOR bright surfaces) or the `anchor` theme (opaque rail surface) rather than overriding a look.
272
+ - **Don't animate `letter-spacing` or `filter:blur` on word entrance** — inline-block reflow causes line-jumps.
273
+ - **CoreML banned for matting** — the onnxruntime CoreML EP's mixed-precision partitioning corrupted face alpha (observed with the previous RVM engine; don't re-try it). Matting is CPU-only (~2 fps @1080p ≈ 2-3 min per 10s clip; budget for it on long clips).
274
+
275
+ ---
276
+
277
+ ## Dependencies
278
+
279
+ - **hyperframes**, built (`packages/cli/dist/cli.js`). Scripts auto-resolve the checkout: `HYPERFRAMES_ROOT` env → repo root if this skill ships _inside_ hyperframes → `~/Downloads/hyperframes`. Build with `bun install && bun run build`.
280
+ - **Node-first; two Python touchpoints via `uvx` (no manual installs):** transcription runs WhisperX through `uvx` (word-level timings; falls back per SKILL §transcription), and Theme's `drawon` setpiece shells `python3 scripts/gen-stroke-path.py` at compile time. Everything else runs on the toolchain hyperframes already ships: matting via the hyperframes CLI's **`remove-background`** (u2net_human_seg; weights auto-download once, ~168 MB, to `~/.cache/hyperframes/`), image/alpha math via **`sharp`**, layout/occlusion/overflow via **`puppeteer`**, plus **`ffmpeg`**. The scripts auto-resolve these from the hyperframes checkout — nothing extra to install.
281
+ - **Transcription = WhisperX via `uvx`** (word-level timings + alignment; no manual install — `transcribe.cjs` drives `uvx whisperx`). Falls back to an existing word-level `transcript.json` if present.
282
+ - **Source video** — `matte.cjs` / `transcribe.cjs` auto-resolve `source.mp4` (or glob the clip / read `hyperframes.json`), so `hyperframes init --video X.mp4` needs no manual rename.
283
+ - **fps** — `matte.cjs` extracts at the source's native rate and records `matte.fps`; `render-and-composite.sh` uses that so the matte stays frame-aligned.
284
+ - Matting weights are NOT bundled: `matte.cjs` shells the hyperframes CLI's `remove-background`, which downloads u2net_human_seg (~168 MB, Apache-2.0) once to `~/.cache/hyperframes/background-removal/models/`. First prepare on a fresh machine needs network for that one download.
285
+
286
+ If a hard dependency is missing, STOP and ask the user — don't silently skip steps.