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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/README.i18n.yaml +45 -5
  2. package/README.md +11 -11
  3. package/README.zh.md +11 -11
  4. package/cordis.patch.yml +230 -126
  5. package/dist/assets/design/craft/FUTURE_SECTIONS.md +9 -0
  6. package/dist/assets/design/craft/LICENSE +201 -0
  7. package/dist/assets/design/craft/PROVENANCE.md +77 -0
  8. package/dist/assets/design/craft/README.md +106 -0
  9. package/dist/assets/design/craft/accessibility-baseline.md +201 -0
  10. package/dist/assets/design/craft/animation-discipline.md +154 -0
  11. package/dist/assets/design/craft/anti-ai-slop.md +84 -0
  12. package/dist/assets/design/craft/color.md +88 -0
  13. package/dist/assets/design/craft/form-validation.md +221 -0
  14. package/dist/assets/design/craft/laws-of-ux.md +296 -0
  15. package/dist/assets/design/craft/rtl-and-bidi.md +186 -0
  16. package/dist/assets/design/craft/state-coverage.md +134 -0
  17. package/dist/assets/design/craft/typography-hierarchy-editorial.md +182 -0
  18. package/dist/assets/design/craft/typography-hierarchy.md +165 -0
  19. package/dist/assets/design/craft/typography.md +122 -0
  20. package/dist/assets/design/react-bits/SKILL.md +130 -0
  21. package/dist/assets/design/skills/embedded-captions/CATALOG.md +91 -0
  22. package/dist/assets/design/skills/embedded-captions/SKILL.md +260 -0
  23. package/dist/assets/design/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
  24. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
  25. package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
  26. package/dist/assets/design/skills/embedded-captions/dna/README.md +148 -0
  27. package/dist/assets/design/skills/embedded-captions/dna/chrome.json +68 -0
  28. package/dist/assets/design/skills/embedded-captions/dna/cream.json +69 -0
  29. package/dist/assets/design/skills/embedded-captions/dna/documentary.json +62 -0
  30. package/dist/assets/design/skills/embedded-captions/dna/editorial.json +70 -0
  31. package/dist/assets/design/skills/embedded-captions/dna/glitch.json +82 -0
  32. package/dist/assets/design/skills/embedded-captions/dna/ink.json +65 -0
  33. package/dist/assets/design/skills/embedded-captions/dna/keynote.json +62 -0
  34. package/dist/assets/design/skills/embedded-captions/dna/loud.json +75 -0
  35. package/dist/assets/design/skills/embedded-captions/dna/neon.json +58 -0
  36. package/dist/assets/design/skills/embedded-captions/dna/velocity.json +89 -0
  37. package/dist/assets/design/skills/embedded-captions/modes/cinematic/README.md +48 -0
  38. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
  39. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
  40. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
  41. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
  42. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
  43. package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
  44. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
  45. package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
  46. package/dist/assets/design/skills/embedded-captions/modes/cinematic/engine.html +355 -0
  47. package/dist/assets/design/skills/embedded-captions/modes/standard/_anatomy.md +232 -0
  48. package/dist/assets/design/skills/embedded-captions/modes/standard/_motion.md +192 -0
  49. package/dist/assets/design/skills/embedded-captions/references/aesthetic-principles.md +167 -0
  50. package/dist/assets/design/skills/embedded-captions/references/anti-patterns.md +188 -0
  51. package/dist/assets/design/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
  52. package/dist/assets/design/skills/embedded-captions/references/caption-grouping.md +130 -0
  53. package/dist/assets/design/skills/embedded-captions/references/composition-craft.md +522 -0
  54. package/dist/assets/design/skills/embedded-captions/references/direction-catalog.md +138 -0
  55. package/dist/assets/design/skills/embedded-captions/references/example-renders/champion.html +371 -0
  56. package/dist/assets/design/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
  57. package/dist/assets/design/skills/embedded-captions/references/failure-modes.md +145 -0
  58. package/dist/assets/design/skills/embedded-captions/references/layout-heuristics.md +238 -0
  59. package/dist/assets/design/skills/embedded-captions/references/motion-vocabulary.md +148 -0
  60. package/dist/assets/design/skills/embedded-captions/references/rail.md +68 -0
  61. package/dist/assets/design/skills/embedded-captions/references/reference-bar.md +47 -0
  62. package/dist/assets/design/skills/embedded-captions/references/scene-types.md +94 -0
  63. package/dist/assets/design/skills/embedded-captions/references/typographic-moves.md +266 -0
  64. package/dist/assets/design/skills/embedded-captions/references/typography-presets.md +63 -0
  65. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/theme.json +11 -0
  66. package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/transcript.json +10 -0
  67. package/dist/assets/design/skills/embedded-captions/themes/README.md +243 -0
  68. package/dist/assets/design/skills/embedded-captions/themes/anchor.json +27 -0
  69. package/dist/assets/design/skills/embedded-captions/themes/arcade.json +51 -0
  70. package/dist/assets/design/skills/embedded-captions/themes/aurora.json +41 -0
  71. package/dist/assets/design/skills/embedded-captions/themes/biolume.json +35 -0
  72. package/dist/assets/design/skills/embedded-captions/themes/brush.json +74 -0
  73. package/dist/assets/design/skills/embedded-captions/themes/chalkboard.json +52 -0
  74. package/dist/assets/design/skills/embedded-captions/themes/dossier.json +56 -0
  75. package/dist/assets/design/skills/embedded-captions/themes/graffiti.json +62 -0
  76. package/dist/assets/design/skills/embedded-captions/themes/hologram.json +41 -0
  77. package/dist/assets/design/skills/embedded-captions/themes/inkwater.json +43 -0
  78. package/dist/assets/design/skills/embedded-captions/themes/laser.json +46 -0
  79. package/dist/assets/design/skills/embedded-captions/themes/lastpage.json +33 -0
  80. package/dist/assets/design/skills/embedded-captions/themes/neonsign.json +53 -0
  81. package/dist/assets/design/skills/embedded-captions/themes/ordnance.json +54 -0
  82. package/dist/assets/design/skills/embedded-captions/themes/papercut.json +37 -0
  83. package/dist/assets/design/skills/embedded-captions/themes/popup.json +46 -0
  84. package/dist/assets/design/skills/embedded-captions/themes/ransom.json +62 -0
  85. package/dist/assets/design/skills/embedded-captions/themes/scoreboard.json +54 -0
  86. package/dist/assets/design/skills/embedded-captions/themes/spectrum.json +46 -0
  87. package/dist/assets/design/skills/embedded-captions/themes/stardust.json +29 -0
  88. package/dist/assets/design/skills/embedded-captions/themes/stomp.json +43 -0
  89. package/dist/assets/design/skills/embedded-captions/themes/terminal.json +49 -0
  90. package/dist/assets/design/skills/embedded-captions/themes/thunder.json +44 -0
  91. package/dist/assets/design/skills/embedded-captions/themes/transit.json +44 -0
  92. package/dist/assets/design/skills/embedded-captions/themes/vhs.json +47 -0
  93. package/dist/assets/design/skills/faceless-explainer/SKILL.md +235 -0
  94. package/dist/assets/design/skills/faceless-explainer/references/cut-catalog.md +215 -0
  95. package/dist/assets/design/skills/faceless-explainer/references/motion-language.md +156 -0
  96. package/dist/assets/design/skills/faceless-explainer/references/story-design.md +255 -0
  97. package/dist/assets/design/skills/faceless-explainer/references/visual-design.md +146 -0
  98. package/dist/assets/design/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
  99. package/dist/assets/design/skills/general-video/SKILL.md +164 -0
  100. package/dist/assets/design/skills/general-video/sub-agents/frame-worker.md +34 -0
  101. package/dist/assets/design/skills/hyperframes/SKILL.md +134 -0
  102. package/dist/assets/design/skills/hyperframes/references/brief-contract.md +108 -0
  103. package/dist/assets/design/skills/hyperframes/references/brief-format.md +72 -0
  104. package/dist/assets/design/skills/hyperframes/references/capability-menu.md +47 -0
  105. package/dist/assets/design/skills/hyperframes/references/frame-worker-core.md +80 -0
  106. package/dist/assets/design/skills/hyperframes/references/intent-interview.md +71 -0
  107. package/dist/assets/design/skills/hyperframes/references/pitch-round.md +40 -0
  108. package/dist/assets/design/skills/hyperframes/references/production-loop.md +26 -0
  109. package/dist/assets/design/skills/hyperframes/references/review-loop.md +37 -0
  110. package/dist/assets/design/skills/hyperframes/references/route-briefs.md +11 -0
  111. package/dist/assets/design/skills/hyperframes/references/routes/embedded-captions.md +11 -0
  112. package/dist/assets/design/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
  113. package/dist/assets/design/skills/hyperframes/references/routes/general-video.md +12 -0
  114. package/dist/assets/design/skills/hyperframes/references/routes/motion-graphics.md +11 -0
  115. package/dist/assets/design/skills/hyperframes/references/routes/music-to-video.md +12 -0
  116. package/dist/assets/design/skills/hyperframes/references/routes/pr-to-video.md +28 -0
  117. package/dist/assets/design/skills/hyperframes/references/routes/product-launch-video.md +13 -0
  118. package/dist/assets/design/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
  119. package/dist/assets/design/skills/hyperframes/references/routes/slideshow.md +11 -0
  120. package/dist/assets/design/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
  121. package/dist/assets/design/skills/hyperframes/references/script-format.md +52 -0
  122. package/dist/assets/design/skills/hyperframes/references/skill-lifecycle.md +30 -0
  123. package/dist/assets/design/skills/hyperframes/references/storyboard-format.md +99 -0
  124. package/dist/assets/design/skills/hyperframes/references/subagent-dispatch.md +35 -0
  125. package/dist/assets/design/skills/hyperframes/references/workflow-catalog.md +10 -0
  126. package/dist/assets/design/skills/hyperframes-animation/SKILL.md +86 -0
  127. package/dist/assets/design/skills/hyperframes-animation/adapters/animate-text.md +64 -0
  128. package/dist/assets/design/skills/hyperframes-animation/adapters/animejs.md +130 -0
  129. package/dist/assets/design/skills/hyperframes-animation/adapters/css-animations.md +143 -0
  130. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
  131. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
  132. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
  133. package/dist/assets/design/skills/hyperframes-animation/adapters/gsap.md +105 -0
  134. package/dist/assets/design/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
  135. package/dist/assets/design/skills/hyperframes-animation/adapters/lottie.md +130 -0
  136. package/dist/assets/design/skills/hyperframes-animation/adapters/three.md +145 -0
  137. package/dist/assets/design/skills/hyperframes-animation/adapters/typegpu.md +182 -0
  138. package/dist/assets/design/skills/hyperframes-animation/adapters/waapi.md +101 -0
  139. package/dist/assets/design/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
  140. package/dist/assets/design/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
  141. package/dist/assets/design/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
  142. package/dist/assets/design/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
  143. package/dist/assets/design/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
  144. package/dist/assets/design/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
  145. package/dist/assets/design/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
  146. package/dist/assets/design/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
  147. package/dist/assets/design/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
  148. package/dist/assets/design/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
  149. package/dist/assets/design/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
  150. package/dist/assets/design/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
  151. package/dist/assets/design/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
  152. package/dist/assets/design/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
  153. package/dist/assets/design/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
  154. package/dist/assets/design/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
  155. package/dist/assets/design/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
  156. package/dist/assets/design/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
  157. package/dist/assets/design/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
  158. package/dist/assets/design/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
  159. package/dist/assets/design/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
  160. package/dist/assets/design/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
  161. package/dist/assets/design/skills/hyperframes-animation/blueprints-index.md +202 -0
  162. package/dist/assets/design/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
  163. package/dist/assets/design/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
  164. package/dist/assets/design/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
  165. package/dist/assets/design/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
  166. package/dist/assets/design/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
  167. package/dist/assets/design/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
  168. package/dist/assets/design/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
  169. package/dist/assets/design/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
  170. package/dist/assets/design/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
  171. package/dist/assets/design/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
  172. package/dist/assets/design/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
  173. package/dist/assets/design/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
  174. package/dist/assets/design/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
  175. package/dist/assets/design/skills/hyperframes-animation/references/motion-blur.md +133 -0
  176. package/dist/assets/design/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
  177. package/dist/assets/design/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
  178. package/dist/assets/design/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
  179. package/dist/assets/design/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
  180. package/dist/assets/design/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
  181. package/dist/assets/design/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
  182. package/dist/assets/design/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
  183. package/dist/assets/design/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
  184. package/dist/assets/design/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
  185. package/dist/assets/design/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
  186. package/dist/assets/design/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
  187. package/dist/assets/design/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
  188. package/dist/assets/design/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
  189. package/dist/assets/design/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
  190. package/dist/assets/design/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
  191. package/dist/assets/design/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
  192. package/dist/assets/design/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
  193. package/dist/assets/design/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
  194. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
  195. package/dist/assets/design/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
  196. package/dist/assets/design/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
  197. package/dist/assets/design/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
  198. package/dist/assets/design/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
  199. package/dist/assets/design/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
  200. package/dist/assets/design/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
  201. package/dist/assets/design/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
  202. package/dist/assets/design/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
  203. package/dist/assets/design/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
  204. package/dist/assets/design/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
  205. package/dist/assets/design/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
  206. package/dist/assets/design/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
  207. package/dist/assets/design/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
  208. package/dist/assets/design/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
  209. package/dist/assets/design/skills/hyperframes-animation/rules/particle-burst.md +149 -0
  210. package/dist/assets/design/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
  211. package/dist/assets/design/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
  212. package/dist/assets/design/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
  213. package/dist/assets/design/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
  214. package/dist/assets/design/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
  215. package/dist/assets/design/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
  216. package/dist/assets/design/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
  217. package/dist/assets/design/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
  218. package/dist/assets/design/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
  219. package/dist/assets/design/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
  220. package/dist/assets/design/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
  221. package/dist/assets/design/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
  222. package/dist/assets/design/skills/hyperframes-animation/rules/viewport-change.md +148 -0
  223. package/dist/assets/design/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
  224. package/dist/assets/design/skills/hyperframes-animation/rules-index.md +113 -0
  225. package/dist/assets/design/skills/hyperframes-animation/techniques.md +507 -0
  226. package/dist/assets/design/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
  227. package/dist/assets/design/skills/hyperframes-animation/transitions/catalog.md +127 -0
  228. package/dist/assets/design/skills/hyperframes-animation/transitions/css-3d.md +12 -0
  229. package/dist/assets/design/skills/hyperframes-animation/transitions/css-blur.md +51 -0
  230. package/dist/assets/design/skills/hyperframes-animation/transitions/css-cover.md +43 -0
  231. package/dist/assets/design/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
  232. package/dist/assets/design/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
  233. package/dist/assets/design/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
  234. package/dist/assets/design/skills/hyperframes-animation/transitions/css-grid.md +10 -0
  235. package/dist/assets/design/skills/hyperframes-animation/transitions/css-light.md +49 -0
  236. package/dist/assets/design/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
  237. package/dist/assets/design/skills/hyperframes-animation/transitions/css-other.md +25 -0
  238. package/dist/assets/design/skills/hyperframes-animation/transitions/css-push.md +41 -0
  239. package/dist/assets/design/skills/hyperframes-animation/transitions/css-radial.md +37 -0
  240. package/dist/assets/design/skills/hyperframes-animation/transitions/css-scale.md +24 -0
  241. package/dist/assets/design/skills/hyperframes-animation/transitions/overview.md +153 -0
  242. package/dist/assets/design/skills/hyperframes-audio/SKILL.md +476 -0
  243. package/dist/assets/design/skills/hyperframes-audio/references/attributes.md +138 -0
  244. package/dist/assets/design/skills/hyperframes-audio/references/diagnosis.md +274 -0
  245. package/dist/assets/design/skills/hyperframes-audio/references/fx-registry.md +84 -0
  246. package/dist/assets/design/skills/hyperframes-audio/references/presets.md +216 -0
  247. package/dist/assets/design/skills/hyperframes-core/SKILL.md +97 -0
  248. package/dist/assets/design/skills/hyperframes-core/references/composition-patterns.md +224 -0
  249. package/dist/assets/design/skills/hyperframes-core/references/creator-editing-recipes.md +491 -0
  250. package/dist/assets/design/skills/hyperframes-core/references/data-attributes.md +78 -0
  251. package/dist/assets/design/skills/hyperframes-core/references/determinism-rules.md +53 -0
  252. package/dist/assets/design/skills/hyperframes-core/references/full-screen-motion.md +67 -0
  253. package/dist/assets/design/skills/hyperframes-core/references/minimal-composition.md +69 -0
  254. package/dist/assets/design/skills/hyperframes-core/references/sub-compositions.md +176 -0
  255. package/dist/assets/design/skills/hyperframes-core/references/tailwind.md +104 -0
  256. package/dist/assets/design/skills/hyperframes-core/references/tracks-and-clips.md +87 -0
  257. package/dist/assets/design/skills/hyperframes-core/references/variables-and-media.md +107 -0
  258. package/dist/assets/design/skills/hyperframes-creative/SKILL.md +71 -0
  259. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
  260. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
  261. package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
  262. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
  263. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
  264. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
  265. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
  266. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
  267. package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
  268. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
  269. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
  270. package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
  271. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
  272. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
  273. package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
  274. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
  275. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
  276. package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
  277. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
  278. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
  279. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
  280. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
  281. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
  282. package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
  283. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
  284. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
  285. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
  286. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
  287. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
  288. package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
  289. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
  290. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
  291. package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
  292. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
  293. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
  294. package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
  295. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
  296. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
  297. package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
  298. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
  299. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
  300. package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
  301. package/dist/assets/design/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
  302. package/dist/assets/design/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
  303. package/dist/assets/design/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
  304. package/dist/assets/design/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
  305. package/dist/assets/design/skills/hyperframes-creative/palettes/monochrome.md +14 -0
  306. package/dist/assets/design/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
  307. package/dist/assets/design/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
  308. package/dist/assets/design/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
  309. package/dist/assets/design/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
  310. package/dist/assets/design/skills/hyperframes-creative/references/audio-reactive.md +76 -0
  311. package/dist/assets/design/skills/hyperframes-creative/references/beat-direction.md +164 -0
  312. package/dist/assets/design/skills/hyperframes-creative/references/composition-patterns.md +199 -0
  313. package/dist/assets/design/skills/hyperframes-creative/references/data-in-motion.md +19 -0
  314. package/dist/assets/design/skills/hyperframes-creative/references/design-adherence.md +19 -0
  315. package/dist/assets/design/skills/hyperframes-creative/references/design-picker.md +123 -0
  316. package/dist/assets/design/skills/hyperframes-creative/references/design-spec.md +55 -0
  317. package/dist/assets/design/skills/hyperframes-creative/references/house-style.md +73 -0
  318. package/dist/assets/design/skills/hyperframes-creative/references/motion-principles.md +151 -0
  319. package/dist/assets/design/skills/hyperframes-creative/references/narration.md +92 -0
  320. package/dist/assets/design/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
  321. package/dist/assets/design/skills/hyperframes-creative/references/story-spine.md +45 -0
  322. package/dist/assets/design/skills/hyperframes-creative/references/storyboard-recipe.md +57 -0
  323. package/dist/assets/design/skills/hyperframes-creative/references/typography.md +218 -0
  324. package/dist/assets/design/skills/hyperframes-creative/references/video-composition.md +63 -0
  325. package/dist/assets/design/skills/hyperframes-creative/references/visual-styles.md +457 -0
  326. package/dist/assets/design/skills/hyperframes-creative/templates/design-picker.html +1432 -0
  327. package/dist/assets/design/skills/hyperframes-keyframes/SKILL.md +262 -0
  328. package/dist/assets/design/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
  329. package/dist/assets/design/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
  330. package/dist/assets/design/skills/hyperframes-studio/SKILL.md +75 -0
  331. package/dist/assets/design/skills/motion-graphics/SKILL.md +175 -0
  332. package/dist/assets/design/skills/motion-graphics/agents/builder.md +41 -0
  333. package/dist/assets/design/skills/motion-graphics/agents/director.md +54 -0
  334. package/dist/assets/design/skills/motion-graphics/agents/finalize.md +17 -0
  335. package/dist/assets/design/skills/motion-graphics/catalog-map.md +52 -0
  336. package/dist/assets/design/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
  337. package/dist/assets/design/skills/motion-graphics/categories/charts/module.md +22 -0
  338. package/dist/assets/design/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
  339. package/dist/assets/design/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
  340. package/dist/assets/design/skills/motion-graphics/categories/lower-thirds/module.md +20 -0
  341. package/dist/assets/design/skills/motion-graphics/categories/maps/module.md +61 -0
  342. package/dist/assets/design/skills/motion-graphics/categories/news/module.md +56 -0
  343. package/dist/assets/design/skills/motion-graphics/categories/stat/module.md +21 -0
  344. package/dist/assets/design/skills/motion-graphics/categories/tweet/module.md +16 -0
  345. package/dist/assets/design/skills/motion-graphics/categories/webpage/module.md +30 -0
  346. package/dist/assets/design/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
  347. package/dist/assets/design/skills/motion-graphics/phases/source/guide.md +21 -0
  348. package/dist/assets/design/skills/motion-graphics/references/builder-contract.md +38 -0
  349. package/dist/assets/design/skills/motion-graphics/references/motion-vocabulary.md +47 -0
  350. package/dist/assets/design/skills/motion-graphics/references/shot-plan-ir.md +54 -0
  351. package/dist/assets/design/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
  352. package/dist/assets/design/skills/music-to-video/SKILL.md +207 -0
  353. package/dist/assets/design/skills/music-to-video/references/frame-skeleton.md +100 -0
  354. package/dist/assets/design/skills/music-to-video/references/montage.md +55 -0
  355. package/dist/assets/design/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
  356. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +53 -0
  357. package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +119 -0
  358. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +53 -0
  359. package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +294 -0
  360. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +54 -0
  361. package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +85 -0
  362. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +53 -0
  363. package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +60 -0
  364. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/index.html +53 -0
  365. package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +100 -0
  366. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +53 -0
  367. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +111 -0
  368. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +53 -0
  369. package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +68 -0
  370. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/index.html +54 -0
  371. package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +119 -0
  372. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +53 -0
  373. package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +120 -0
  374. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +55 -0
  375. package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +131 -0
  376. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/index.html +53 -0
  377. package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +103 -0
  378. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +53 -0
  379. package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +102 -0
  380. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/index.html +54 -0
  381. package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +105 -0
  382. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/index.html +53 -0
  383. package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +97 -0
  384. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +54 -0
  385. package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +206 -0
  386. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/index.html +53 -0
  387. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +82 -0
  388. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +53 -0
  389. package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +44 -0
  390. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/index.html +53 -0
  391. package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/scene.html +69 -0
  392. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +53 -0
  393. package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +64 -0
  394. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +53 -0
  395. package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +96 -0
  396. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +53 -0
  397. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +74 -0
  398. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +53 -0
  399. package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +89 -0
  400. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +53 -0
  401. package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +73 -0
  402. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +53 -0
  403. package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +82 -0
  404. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/index.html +53 -0
  405. package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +97 -0
  406. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/index.html +53 -0
  407. package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +106 -0
  408. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +53 -0
  409. package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +86 -0
  410. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +53 -0
  411. package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +130 -0
  412. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/index.html +53 -0
  413. package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +78 -0
  414. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +53 -0
  415. package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +100 -0
  416. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +53 -0
  417. package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +102 -0
  418. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +53 -0
  419. package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +82 -0
  420. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
  421. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +53 -0
  422. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +280 -0
  423. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +54 -0
  424. package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +106 -0
  425. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +53 -0
  426. package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +109 -0
  427. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +53 -0
  428. package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +91 -0
  429. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +53 -0
  430. package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +96 -0
  431. package/dist/assets/design/skills/music-to-video/references/planning.md +104 -0
  432. package/dist/assets/design/skills/music-to-video/references/storyboard-format.md +94 -0
  433. package/dist/assets/design/skills/music-to-video/references/template-catalog.md +106 -0
  434. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
  435. package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
  436. package/dist/assets/design/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
  437. package/dist/assets/design/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
  438. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
  439. package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
  440. package/dist/assets/design/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
  441. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
  442. package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
  443. package/dist/assets/design/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
  444. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
  445. package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
  446. package/dist/assets/design/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
  447. package/dist/assets/design/skills/music-to-video/sub-agents/frame-worker.md +49 -0
  448. package/dist/assets/design/skills/pr-to-video/SKILL.md +271 -0
  449. package/dist/assets/design/skills/pr-to-video/references/code-vocabulary.md +112 -0
  450. package/dist/assets/design/skills/pr-to-video/references/cut-catalog.md +215 -0
  451. package/dist/assets/design/skills/pr-to-video/references/motion-language.md +156 -0
  452. package/dist/assets/design/skills/pr-to-video/references/story-design.md +230 -0
  453. package/dist/assets/design/skills/pr-to-video/references/visual-design.md +164 -0
  454. package/dist/assets/design/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
  455. package/dist/assets/design/skills/product-launch-video/SKILL.md +262 -0
  456. package/dist/assets/design/skills/product-launch-video/references/cut-catalog.md +220 -0
  457. package/dist/assets/design/skills/product-launch-video/references/motion-language.md +156 -0
  458. package/dist/assets/design/skills/product-launch-video/references/story-design.md +508 -0
  459. package/dist/assets/design/skills/product-launch-video/references/visual-design.md +126 -0
  460. package/dist/assets/design/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
  461. package/dist/assets/design/skills/remotion-to-hyperframes/SKILL.md +130 -0
  462. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
  463. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
  464. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html +31 -0
  465. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +46 -0
  466. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
  467. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
  468. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
  469. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
  470. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html +35 -0
  471. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html +35 -0
  472. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html +36 -0
  473. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +75 -0
  474. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
  475. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
  476. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
  477. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
  478. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +52 -0
  479. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +99 -0
  480. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +55 -0
  481. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +70 -0
  482. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
  483. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
  484. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
  485. package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
  486. package/dist/assets/design/skills/remotion-to-hyperframes/references/api-map.md +142 -0
  487. package/dist/assets/design/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
  488. package/dist/assets/design/skills/remotion-to-hyperframes/references/eval.md +140 -0
  489. package/dist/assets/design/skills/remotion-to-hyperframes/references/fonts.md +112 -0
  490. package/dist/assets/design/skills/remotion-to-hyperframes/references/limitations.md +136 -0
  491. package/dist/assets/design/skills/remotion-to-hyperframes/references/lottie.md +119 -0
  492. package/dist/assets/design/skills/remotion-to-hyperframes/references/media.md +149 -0
  493. package/dist/assets/design/skills/remotion-to-hyperframes/references/parameters.md +172 -0
  494. package/dist/assets/design/skills/remotion-to-hyperframes/references/sequencing.md +251 -0
  495. package/dist/assets/design/skills/remotion-to-hyperframes/references/timing.md +165 -0
  496. package/dist/assets/design/skills/remotion-to-hyperframes/references/transitions.md +113 -0
  497. package/dist/assets/design/skills/slideshow/SKILL.md +530 -0
  498. package/dist/assets/design/skills/slideshow/references/standalone-harness.md +1017 -0
  499. package/dist/assets/design/skills/talking-head-recut/NOTICE.md +39 -0
  500. package/dist/assets/design/skills/talking-head-recut/SKILL.md +1007 -0
  501. package/dist/assets/design/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
  502. package/dist/assets/design/skills/talking-head-recut/references/confirm-visual-direction-with-user-do-this-first.md +211 -0
  503. package/dist/assets/design/skills/talking-head-recut/references/frames/clean.html +92 -0
  504. package/dist/assets/design/skills/talking-head-recut/references/frames/hairline.html +171 -0
  505. package/dist/assets/design/skills/talking-head-recut/references/frames/polaroid.html +131 -0
  506. package/dist/assets/design/skills/talking-head-recut/references/layouts/overlay.html +164 -0
  507. package/dist/assets/design/skills/talking-head-recut/references/layouts/pip.html +143 -0
  508. package/dist/assets/design/skills/talking-head-recut/references/layouts/split.html +121 -0
  509. package/dist/assets/design/skills/talking-head-recut/references/layouts/stack.html +109 -0
  510. package/dist/assets/design/skills/talking-head-recut/references/styles/academic.html +172 -0
  511. package/dist/assets/design/skills/talking-head-recut/references/styles/audit.html +170 -0
  512. package/dist/assets/design/skills/talking-head-recut/references/styles/editorial.html +189 -0
  513. package/dist/assets/design/skills/talking-head-recut/references/styles/geom.html +181 -0
  514. package/dist/assets/design/skills/talking-head-recut/references/styles/minimal.html +130 -0
  515. package/dist/assets/design/skills/talking-head-recut/references/styles/spotlight.html +142 -0
  516. package/dist/assets/design/skills/talking-head-recut/references/styles/swiss.html +188 -0
  517. package/dist/assets/design/skills/talking-head-recut/references/styles/terminal.html +196 -0
  518. package/dist/assets/design/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
  519. package/dist/assets/design/skills/talking-head-recut/references/styles/xhs.html +206 -0
  520. package/dist/assets/design/taste/LICENSE +21 -0
  521. package/dist/assets/design/taste/PROVENANCE.md +70 -0
  522. package/dist/assets/design/taste/brandkit/SKILL.md +798 -0
  523. package/dist/assets/design/taste/brutalist-skill/SKILL.md +92 -0
  524. package/dist/assets/design/taste/gpt-tasteskill/SKILL.md +74 -0
  525. package/dist/assets/design/taste/image-to-code-skill/SKILL.md +1228 -0
  526. package/dist/assets/design/taste/imagegen-frontend-mobile/SKILL.md +1465 -0
  527. package/dist/assets/design/taste/imagegen-frontend-web/SKILL.md +987 -0
  528. package/dist/assets/design/taste/minimalist-skill/SKILL.md +85 -0
  529. package/dist/assets/design/taste/output-skill/SKILL.md +49 -0
  530. package/dist/assets/design/taste/redesign-skill/SKILL.md +178 -0
  531. package/dist/assets/design/taste/soft-skill/SKILL.md +98 -0
  532. package/dist/assets/design/taste/stitch-skill/DESIGN.md +121 -0
  533. package/dist/assets/design/taste/stitch-skill/SKILL.md +184 -0
  534. package/dist/assets/design/taste/taste-skill/SKILL.md +1043 -0
  535. package/dist/assets/design/taste/taste-skill/references/4-2-color-calibration.md +24 -0
  536. package/dist/assets/design/taste/taste-skill/references/4-7-layout-discipline-hard-rules-failing-any-of-.md +27 -0
  537. package/dist/assets/design/taste/taste-skill/references/4-8-image-visual-asset-strategy.md +35 -0
  538. package/dist/assets/design/taste/taste-skill/references/4-9-content-density.md +34 -0
  539. package/dist/assets/design/taste/taste-skill/references/9-f-production-test-tells-banned-outright.md +54 -0
  540. package/dist/assets/design/taste/taste-skill-v1/SKILL.md +226 -0
  541. package/dist/assets/engineering/skills-starter/engineering-ui-design/SKILL.md +84 -0
  542. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/SKILL.md +68 -459
  543. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/dispatch-and-review-rules.md +74 -0
  544. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/example-workflow.md +70 -0
  545. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/model-selection.md +40 -0
  546. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/process-diagrams.md +92 -0
  547. package/dist/assets/engineering/skills-superpowers/subagent-driven-development/setup-and-ledger.md +75 -0
  548. package/dist/assets/uiux/LICENSE +21 -0
  549. package/dist/assets/uiux/PROVENANCE.md +110 -0
  550. package/dist/assets/uiux/data/app-interface.csv +33 -0
  551. package/dist/assets/uiux/data/charts.csv +26 -0
  552. package/dist/assets/uiux/data/colors.csv +193 -0
  553. package/dist/assets/uiux/data/icons.csv +106 -0
  554. package/dist/assets/uiux/data/landing.csv +35 -0
  555. package/dist/assets/uiux/data/motion.csv +18 -0
  556. package/dist/assets/uiux/data/products.csv +193 -0
  557. package/dist/assets/uiux/data/react-performance.csv +45 -0
  558. package/dist/assets/uiux/data/stacks/angular.csv +51 -0
  559. package/dist/assets/uiux/data/stacks/astro.csv +54 -0
  560. package/dist/assets/uiux/data/stacks/avalonia.csv +57 -0
  561. package/dist/assets/uiux/data/stacks/flutter.csv +53 -0
  562. package/dist/assets/uiux/data/stacks/html-tailwind.csv +60 -0
  563. package/dist/assets/uiux/data/stacks/javafx.csv +76 -0
  564. package/dist/assets/uiux/data/stacks/jetpack-compose.csv +53 -0
  565. package/dist/assets/uiux/data/stacks/laravel.csv +51 -0
  566. package/dist/assets/uiux/data/stacks/nextjs.csv +62 -0
  567. package/dist/assets/uiux/data/stacks/nuxt-ui.csv +77 -0
  568. package/dist/assets/uiux/data/stacks/nuxtjs.csv +68 -0
  569. package/dist/assets/uiux/data/stacks/react-native.csv +52 -0
  570. package/dist/assets/uiux/data/stacks/react.csv +67 -0
  571. package/dist/assets/uiux/data/stacks/shadcn.csv +69 -0
  572. package/dist/assets/uiux/data/stacks/svelte.csv +56 -0
  573. package/dist/assets/uiux/data/stacks/swiftui.csv +51 -0
  574. package/dist/assets/uiux/data/stacks/threejs.csv +54 -0
  575. package/dist/assets/uiux/data/stacks/uno.csv +60 -0
  576. package/dist/assets/uiux/data/stacks/uwp.csv +56 -0
  577. package/dist/assets/uiux/data/stacks/vue.csv +50 -0
  578. package/dist/assets/uiux/data/stacks/winui.csv +60 -0
  579. package/dist/assets/uiux/data/stacks/wpf.csv +57 -0
  580. package/dist/assets/uiux/data/styles.csv +89 -0
  581. package/dist/assets/uiux/data/typography.csv +75 -0
  582. package/dist/assets/uiux/data/ui-reasoning.csv +193 -0
  583. package/dist/assets/uiux/data/ux-guidelines.csv +120 -0
  584. package/dist/auto-review.js +38 -4
  585. package/dist/bootstrap.js +64299 -55761
  586. package/dist/client.cjs +5227 -3462
  587. package/dist/subagent-claude-code.js +493 -0
  588. package/dist/subagent-codex.js +1068 -0
  589. package/dist/tool-session-query.js +993 -0
  590. package/package.json +81 -74
  591. package/dist/agent-team.js +0 -16235
  592. package/dist/schedule.js +0 -15898
  593. package/dist/tool-agent-team.js +0 -16766
@@ -0,0 +1,153 @@
1
+ # Scene Transitions
2
+
3
+ A transition tells the viewer how two scenes relate. A crossfade says "this continues." A push slide says "next point." A blur crossfade says "drift with me." Choose transitions that match what the content is doing emotionally, not just technically.
4
+
5
+ ## Contents
6
+
7
+ - Animation rules for multi-scene compositions
8
+ - Energy and mood transition selection
9
+ - Narrative position
10
+ - Blur intensity
11
+ - Presets
12
+ - Implementation
13
+ - CSS vs shader guidance
14
+ - Shader-compatible CSS rules
15
+ - Visual pattern warnings
16
+
17
+ ## Animation Rules for Multi-Scene Compositions
18
+
19
+ These are non-negotiable for every multi-scene composition:
20
+
21
+ 1. **Every composition uses transitions.** No exceptions. Scenes without transitions feel like jump cuts.
22
+ 2. **Every scene uses entrance animations.** Elements animate IN — opacity, position, scale, etc. No scene should pop fully-formed onto screen. Use `gsap.fromTo()` (not `gsap.from()`) so the start state is explicit: `from()` animates _to_ current CSS, so pairing it with CSS `opacity: 0` is a 0→0 noop and the element never appears (see `/hyperframes-core` → sub-compositions).
23
+ 3. **Exit animations are BANNED** except on the final scene. Do NOT use `gsap.to()` to animate elements out before a transition fires. The transition IS the exit. Outgoing scene content must be fully visible when the transition starts — the transition handles the visual handoff.
24
+ 4. **Final scene exception:** The last scene MAY fade elements out (e.g., fade to black at the end of the composition). This is the only scene where exit animations are allowed.
25
+
26
+ ```js
27
+ // FAIL BANNED — fading the outgoing scene out, then the next scene just runs its entrance.
28
+ // This is a jump cut with a dip, not a transition.
29
+ tl.to("#s1", { opacity: 0, duration: 0.4 }, 4.0);
30
+ tl.from("#s2 .headline", { y: 40, opacity: 0 }, 4.4);
31
+
32
+ // PASS CORRECT — outgoing and incoming animate AT THE SAME TIME T; the motion IS the handoff.
33
+ const T = 4.0;
34
+ tl.to("#s1", { yPercent: -100, filter: "blur(8px)", duration: 0.5, ease: "power3.in" }, T);
35
+ tl.fromTo("#s2", { yPercent: 100 }, { yPercent: 0, duration: 0.5, ease: "power3.out" }, T);
36
+ ```
37
+
38
+ > **You are NOT done after this file.** This overview gives you _which_ transition and _when_. Before writing any transition you MUST open **`catalog.md`** in this directory for the GSAP code and the hard rule every transition follows — _position new scene → animate outgoing → swap → animate incoming → clean up overlays_ — plus the per-category `css-*.md` files for specifics. Authoring transitions from this overview alone is how you end up shipping the FAIL pattern above.
39
+
40
+ ## Energy → Primary Transition
41
+
42
+ | Energy | CSS Primary | Shader Primary | Accent | Duration | Easing |
43
+ | ---------------------------------------- | ---------------------------- | ------------------------------------ | ------------------------------ | --------- | ---------------------- |
44
+ | **Calm** (wellness, brand story, luxury) | Blur crossfade, focus pull | Cross-warp morph, thermal distortion | Light leak, circle iris | 0.5-0.8s | `sine.inOut`, `power1` |
45
+ | **Medium** (corporate, SaaS, explainer) | Push slide, staggered blocks | Whip pan, cinematic zoom | Squeeze, vertical push | 0.3-0.5s | `power2`, `power3` |
46
+ | **High** (promos, sports, music, launch) | Zoom through, overexposure | Ridged burn, glitch, chromatic split | Staggered blocks, gravity drop | 0.15-0.3s | `power4`, `expo` |
47
+
48
+ Pick ONE primary (60-70% of scene changes) + 1-2 accents. Never use a different transition for every scene.
49
+
50
+ ## Mood → Transition Type
51
+
52
+ Think about what the transition _communicates_, not just what it looks like.
53
+
54
+ | Mood | Transitions | Why it works |
55
+ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------- |
56
+ | **Warm / inviting** | Light leak, blur crossfade, focus pull, film burn · **Shader:** thermal distortion, light leak, cross-warp morph | Soft edges, warm color washes. Nothing sharp or mechanical. |
57
+ | **Cold / clinical** | Squeeze, zoom out, blinds, shutter, grid dissolve · **Shader:** gravitational lens | Content transforms mechanically — compressed, shrunk, sliced, gridded. |
58
+ | **Editorial / magazine** | Push slide, vertical push, diagonal split, shutter · **Shader:** whip pan | Like turning a page or slicing a layout. Clean directional movement. |
59
+ | **Tech / futuristic** | Grid dissolve, staggered blocks, blinds, chromatic aberration · **Shader:** glitch, chromatic split | Grid dissolve is the core "data" transition. Shader glitch adds posterization + scan lines. |
60
+ | **Tense / edgy** | Glitch, VHS, chromatic aberration, ripple · **Shader:** ridged burn, glitch, domain warp | Instability, distortion, digital breakdown. Ridged burn adds sharp lightning-crack edges. |
61
+ | **Playful / fun** | Elastic push, 3D flip, circle iris, morph circle, clock wipe · **Shader:** ripple waves, swirl vortex | Overshoot, bounce, rotation, expansion. Swirl vortex adds organic spiral distortion. |
62
+ | **Dramatic / cinematic** | Zoom through, zoom out, gravity drop, overexposure, color dip to black · **Shader:** cinematic zoom, gravitational lens, domain warp | Scale, weight, light extremes. Shader transitions add per-pixel depth. |
63
+ | **Premium / luxury** | Focus pull, blur crossfade, color dip to black · **Shader:** cross-warp morph, thermal distortion | Restraint. Cross-warp morph flows both scenes into each other organically. |
64
+ | **Retro / analog** | Film burn, light leak, VHS, clock wipe · **Shader:** light leak | Organic imperfection. Warm color bleeds, scan line displacement. |
65
+
66
+ ## Narrative Position
67
+
68
+ | Position | Use | Why |
69
+ | -------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------- |
70
+ | **Opening** | Your most distinctive transition. Match the mood. 0.4-0.6s | Sets the visual language for the entire piece. |
71
+ | **Between related points** | Your primary transition. Consistent. 0.3s | Don't distract — the content is continuing. |
72
+ | **Topic change** | Something different from your primary. Staggered blocks, shutter, squeeze. | Signals "new section" — the viewer's brain resets. |
73
+ | **Climax / hero reveal** | Your boldest accent. Fastest or most dramatic. | This is the payoff — spend your best transition here. |
74
+ | **Wind-down** | Return to gentle. Blur crossfade, crossfade. 0.5-0.7s | Let the viewer exhale after the climax. |
75
+ | **Outro** | Slowest, simplest. Crossfade, color dip to black. 0.6-1.0s | Closure. Don't introduce new energy at the end. |
76
+
77
+ ## Blur Intensity by Energy
78
+
79
+ | Energy | Blur | Duration | Hold at peak |
80
+ | ---------- | ------- | -------- | ------------ |
81
+ | **Calm** | 20-30px | 0.8-1.2s | 0.3-0.5s |
82
+ | **Medium** | 8-15px | 0.4-0.6s | 0.1-0.2s |
83
+ | **High** | 3-6px | 0.2-0.3s | 0s |
84
+
85
+ ## Presets
86
+
87
+ | Preset | Duration | Easing |
88
+ | ---------- | -------- | ----------------- |
89
+ | `snappy` | 0.2s | `power4.inOut` |
90
+ | `smooth` | 0.4s | `power2.inOut` |
91
+ | `gentle` | 0.6s | `sine.inOut` |
92
+ | `dramatic` | 0.5s | `power3.in` → out |
93
+ | `instant` | 0.15s | `expo.inOut` |
94
+ | `luxe` | 0.7s | `power1.inOut` |
95
+
96
+ ## Implementation
97
+
98
+ Read `catalog.md` in this directory for GSAP code and hard rules for every transition type, and the `css-*.md` files for per-category implementation details.
99
+
100
+ | Category | CSS | Shader (WebGL) |
101
+ | ----------- | -------------------------------------------------------------- | ------------------------------------------------------------------------- |
102
+ | Push/slide | Push slide, vertical push, elastic push, squeeze | Whip pan |
103
+ | Scale/zoom | Zoom through, zoom out, gravity drop, 3D flip | Cinematic zoom, gravitational lens |
104
+ | Reveal/mask | Circle iris, diamond iris, diagonal split, clock wipe, shutter | SDF iris |
105
+ | Dissolve | Crossfade, blur crossfade, focus pull, color dip | Cross-warp morph, domain warp |
106
+ | Cover | Staggered blocks, horizontal blinds, vertical blinds | — |
107
+ | Light | Light leak, overexposure burn, film burn | Light leak (shader), thermal distortion |
108
+ | Distortion | Glitch, chromatic aberration, ripple, VHS tape | Glitch (shader), chromatic split, ridged burn, ripple waves, swirl vortex |
109
+ | Pattern | Grid dissolve, morph circle | — |
110
+
111
+ ## Transitions That Don't Work in CSS
112
+
113
+ Avoid: star iris, tilt-shift, lens flare, hinge/door. See catalog.md for why.
114
+
115
+ ## CSS vs Shader
116
+
117
+ CSS transitions animate scene containers with opacity, transforms, clip-path, and filters. Shader transitions composite both scene textures per-pixel on a WebGL canvas — they can warp, dissolve, and morph in ways CSS cannot.
118
+
119
+ **Both are first-class options.** Shaders are provided by the `@hyperframes/shader-transitions` package — import from the package instead of writing raw GLSL. CSS transitions are simpler to set up. Choose based on the effect you want, not based on which is easier.
120
+
121
+ **Mixing is supported.** You can have some transitions use WebGL shaders and others use a CSS crossfade in the same composition. Omit the `shader` field on any `TransitionConfig` entry to get a smooth opacity crossfade instead of a WebGL effect:
122
+
123
+ ```js
124
+ var tl = HyperShader.init({
125
+ bgColor: "#000",
126
+ accentColor: "#6366f1",
127
+ scenes: ["s1", "s2", "s3", "s4"],
128
+ transitions: [
129
+ { time: 4.0, shader: "sdf-iris", duration: 0.7 }, // WebGL shader
130
+ { time: 8.5, duration: 0.8 }, // no shader → CSS crossfade
131
+ { time: 13.0, shader: "domain-warp", duration: 0.6 }, // WebGL shader
132
+ ],
133
+ });
134
+ ```
135
+
136
+ HyperShader manages all scene visibility regardless of transition type. Let it create the timeline (don't pass `timeline:` into `init()`) and add your beat animations to the returned `tl` after the call.
137
+
138
+ ## Shader-Compatible CSS Rules
139
+
140
+ Shader transitions capture DOM scenes to WebGL textures via html2canvas. The canvas 2D rendering pipeline doesn't match CSS exactly. Follow these rules to avoid visible artifacts at transition boundaries:
141
+
142
+ 1. **No `transparent` keyword in gradients.** Canvas interpolates `transparent` as `rgba(0,0,0,0)` (black at zero alpha), creating dark fringes. Always use the target color at zero alpha: `rgba(200,117,51,0)` not `transparent`.
143
+ 2. **No gradient backgrounds on elements thinner than 4px.** Canvas can't match CSS gradient rendering on 1-2px elements. Use solid `background-color` on thin accent lines.
144
+ 3. **No CSS variables (`var()`) on elements visible during capture.** html2canvas doesn't reliably resolve custom properties. Use literal color values in inline styles.
145
+ 4. **Mark uncapturable decorative elements with `data-no-capture`.** The capture function skips these. They're present on the live DOM but absent from the shader texture. Use for elements that can't follow the rules above.
146
+ 5. **No gradient opacity below 0.15.** Gradient elements below 10% opacity render differently in canvas vs CSS. Increase to 0.15+ or use a solid color at equivalent brightness.
147
+ 6. **Every `.scene` div must have explicit `background-color`, AND pass the same color as `bgColor` in the `init()` config.** The package captures scene elements via html2canvas. Both the CSS `background-color` on `.scene` and the `bgColor` config must match. Without either, the texture renders as black.
148
+
149
+ These rules only apply to shader transition compositions. CSS-only compositions have no restrictions.
150
+
151
+ ## Visual Pattern Warning
152
+
153
+ Avoid transitions that create visible repeating geometric patterns — grids of tiles, hexagonal cells, uniform dot arrays, evenly-spaced blob circles. These look cheap and artificial regardless of the math behind them. Organic noise (FBM, domain warping) is good because it's irregular. Geometric repetition is bad because the eye instantly sees the grid.
@@ -0,0 +1,476 @@
1
+ ---
2
+ name: hyperframes-audio
3
+ description: >
4
+ Use when audio already placed in a HyperFrames composition needs to be mixed:
5
+ fade-in/fade-out, crossfade, track gain or volume, volume automation, ducking,
6
+ a music bed that fights a voiceover (voiceover carve), effects on a track
7
+ (EQ, compressor, limiter, gate, saturation, delay, reverb, chorus, phaser,
8
+ bitcrush), automation envelopes drawn on a track's volume or any effect
9
+ parameter, or one submix bus carrying a chain, a fader and an automation clock
10
+ for several tracks at once (`<hf-audio-group>`).
11
+ Don't use for sourcing or generating audio — finding BGM, SFX, or making a
12
+ voiceover is `/media-use`. Don't use for clip timing or track layout, which is
13
+ `/hyperframes-core`.
14
+ ---
15
+
16
+ # HyperFrames Audio
17
+
18
+ A mix is a set of relationships, not a stack of processors. Two tracks that each
19
+ sound right alone can be unlistenable together, and the fix is almost never "turn
20
+ one down" — it is finding what they are fighting over and giving it to whichever
21
+ one needs it. Every tool here exists to express one of those relationships.
22
+
23
+ Effects live on the element as `data-fx-chain`, and preview and render run the
24
+ same Web Audio graph — the studio in a live context, the engine in an offline one
25
+ inside the browser it already drives. There is one implementation of each effect,
26
+ so what you hear while scrubbing is what gets written. You never tune twice.
27
+
28
+ Clip timing remains `/hyperframes-core`: audio/video trims and source ranges use
29
+ `data-start`, `data-duration`, and `data-media-start`, and crossfades overlap
30
+ clips on different tracks. This skill owns placed-track fade-in/fade-out,
31
+ crossfade envelopes, track gain/track volume, volume and effect automation,
32
+ ducking/voiceover carve, and the effect chain. `/media-use` owns sourcing,
33
+ generation, and preprocessing.
34
+
35
+ Constant `data-playback-rate` (`0.1..10`) is render-safe for picture and
36
+ pitch-preserved sound when matching audio/video elements use the same timing,
37
+ source offset, and rate. A speed ramp is a `rate` lane in `data-automation`
38
+ (see `docs/reference/speed-ramps`); it wins over the constant and keeps pitch
39
+ in preview and render. HyperFrames does not
40
+ provide automatic waveform sync or drift correction.
41
+ For copyable cut/crossfade/retime recipes, use `/hyperframes-core` → `references/creator-editing-recipes.md`.
42
+
43
+ Three attributes carry everything, on the audio/video element itself — or, for
44
+ the first two, on an `<hf-audio-group>` bus (see "One bus for many tracks"):
45
+
46
+ | Attribute | Holds |
47
+ | ----------------- | --------------------------------------------------------- |
48
+ | `data-fx-chain` | the effects, in signal order |
49
+ | `data-automation` | envelopes on this track's volume or its effect parameters |
50
+ | `data-fx-carve` | the carve's own settings, so it can be re-derived |
51
+
52
+ The shipped effect families are gain, EQ (highpass, lowpass, peaking, shelves),
53
+ compressor, limiter, gate, saturate, delay, reverb, chorus, phaser, and bitcrush.
54
+
55
+ Exact JSON for each, and the rules a lane must satisfy: `references/attributes.md`.
56
+ Every effect with its parameters, ranges and units: `references/fx-registry.md`.
57
+ How to work out what is wrong with a file you cannot hear:
58
+ `references/diagnosis.md`.
59
+ **Presets, named jobs and one-knob profiles, plus a symptom-to-fix table:
60
+ `references/presets.md`** — read that before hand-building a chain, because one
61
+ of the presets or named jobs usually already names the problem.
62
+
63
+ ## How it fits together
64
+
65
+ Two authoring surfaces write those attributes; two runtimes read them through the
66
+ same builders. That shared middle is why preview predicts the render.
67
+
68
+ ```mermaid
69
+ flowchart TB
70
+ voice["voice track<br/>media file"]
71
+ bed["music bed<br/>media file"]
72
+
73
+ subgraph AUTHOR["Authoring — the only things that write attributes"]
74
+ panel["Studio<br/>Voiceover carve control"]
75
+ script["scripts/carve.mjs<br/>detects the pair, dynamic by default"]
76
+ analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
77
+ panel --> analysis
78
+ script --> analysis
79
+ end
80
+
81
+ voice --> analysis
82
+ bed --> analysis
83
+
84
+ subgraph ATTRS["Written onto the bed element"]
85
+ carveAttr["data-fx-carve<br/>source · strength · dynamic"]
86
+ chainAttr["data-fx-chain<br/>peaking xN + gain, tagged fromCarve"]
87
+ autoAttr["data-automation<br/>a lane per carved parameter"]
88
+ end
89
+
90
+ analysis --> carveAttr
91
+ analysis --> chainAttr
92
+ analysis --> autoAttr
93
+
94
+ subgraph SHARED["One implementation, read by both"]
95
+ build["audioFxGraph.ts · buildFxChain"]
96
+ sched["audioFxAutomation.ts · scheduleChainAutomation"]
97
+ end
98
+
99
+ chainAttr --> build
100
+ autoAttr --> sched
101
+
102
+ build --> preview["Preview<br/>live AudioContext<br/>attachElementFxChain"]
103
+ sched --> preview
104
+ build --> render["Render<br/>OfflineAudioContext in the headless browser<br/>applyAudioFxChain"]
105
+ sched --> render
106
+
107
+ preview --> heard["what you hear while scrubbing"]
108
+ render --> wav["processed WAV<br/>+ chainTailSeconds so the mix lets the tail through"]
109
+ wav --> mix["engine · audioMixer<br/>volume lane baked into the PCM here, not in the graph"]
110
+ mix --> out["the rendered mix"]
111
+
112
+ edit["editing the attribute mid-playback"] -.->|MutationObserver| preview
113
+ ```
114
+
115
+ The carve's own settings are never read at playback — the chain and lanes it
116
+ produced are what play. `data-fx-carve` exists so strength can be changed on an
117
+ existing carve instead of guessed back out of the filters.
118
+
119
+ Inside a carved bed the signal runs through the dips first, then the level match,
120
+ then anything you built yourself — which is why a limiter you add still acts as
121
+ the last ceiling:
122
+
123
+ ```mermaid
124
+ flowchart LR
125
+ src["decoded bed"] --> p1["peaking<br/>400 Hz"]
126
+ p1 --> p2["peaking<br/>1 kHz"]
127
+ p2 --> p3["peaking<br/>1.6 kHz"]
128
+ p3 --> g["gain<br/>level match"]
129
+ g --> hand["your own effects<br/>e.g. limiter"]
130
+ hand --> dest["track gain, then out"]
131
+
132
+ l1["lane fx.n1.gain"] -.->|"envelope of the voice's<br/>level in that band"| p1
133
+ l4["lane fx.n4.gain"] -.->|"how far the bed<br/>ducks overall"| g
134
+ ```
135
+
136
+ A static carve is the same graph with fixed values and no lanes at all.
137
+
138
+ ## First, work out what is wrong
139
+
140
+ The table below starts from "it sounds boomy" — which presumes somebody already
141
+ listened and said so. Handed a file and "fix this", you have no such sentence
142
+ and you cannot listen, so you have to measure. One rule governs all of it:
143
+
144
+ > **The absolute spectrum of a single unknown voice cannot be diagnosed.**
145
+ > Formants are ±10 dB, fundamentals run 85–255 Hz, and sentences decline 5–6 dB
146
+ > as they end. Every one of those reads as a defect on its own, and every one of
147
+ > them is the speaker.
148
+
149
+ So compare, and compare against something **inside the same file**: the clean
150
+ original if it exists, otherwise the pauses — whatever is audible in a gap is
151
+ additive, and the gap's spectrum is the channel rather than the voice. Comparing
152
+ against a published average spectrum or a synthesised control voice does not
153
+ work: two speakers differ by more than most defects, and both wrong answers in
154
+ the evaluation behind this guidance came from exactly that.
155
+
156
+ When there is no original and no usable silence, a static tonal defect is
157
+ genuinely under-determined. Say so and offer the readings that fit, rather than
158
+ picking one and building a chain on it.
159
+
160
+ Commands, traps and worked recipes: **`references/diagnosis.md`**. Read it
161
+ before diagnosing a file nobody has described.
162
+
163
+ ## Start from the symptom
164
+
165
+ Once you know the band and the kind, name what is wrong with the audio. Most bad audio is
166
+ one or two of these, and each has a shipped answer:
167
+
168
+ | It sounds like | Reach for |
169
+ | ---------------------------------- | -------------------------------------------------- |
170
+ | Hum or thump underneath | `rumble-cut`, or a `highpass` at 80 Hz |
171
+ | Boomy, chesty | **Tame Boominess** job (200 Hz) |
172
+ | Muffled, behind cardboard | **Reduce Mud** job (250 Hz) |
173
+ | Words hard to make out | **Add Clarity** job (3 kHz), or carve the bed |
174
+ | Harsh and tiring | **Soften Harshness** job (3.2 kHz) |
175
+ | Some words much louder than others | **Evenness** on a compressor, or Even Out Levels |
176
+ | Room tone between sentences | `room-gate` |
177
+ | Voice and music fighting | **Voiceover carve** — not an EQ on either |
178
+ | Dry, recorded nowhere | `room-tight` or `room-natural` |
179
+ | Just "amateur" | `voice-clean`, which is four of the above in order |
180
+
181
+ Full catalogue, what each preset contains, the band vocabulary, and what is
182
+ deliberately NOT covered (de-essing, noise removal, tone match):
183
+ `references/presets.md`.
184
+
185
+ Subtract before you add, level after you filter, relationships after level,
186
+ character and ceiling last. Each step changes what the next one hears — a
187
+ compressor set before a high-pass spends its time chasing rumble.
188
+
189
+ ## Reach for a family by the problem, not the name
190
+
191
+ **Filters** (`highpass`, `lowpass`, `peaking`, `lowshelf`, `highshelf`) decide
192
+ which frequencies a track is allowed to occupy. This is the first tool for two
193
+ sources colliding, because collisions happen in bands: a bed and a voice both
194
+ want 1–3 kHz, and taking that from the bed costs the bed far less than turning
195
+ the whole thing down costs the mix. A high-pass on a voice is the standard fix
196
+ for rumble; a low-pass darkens or muffles deliberately.
197
+
198
+ **Dynamics** (`gain`, `compressor`, `limiter`, `gate`) decide how a track's level
199
+ behaves over time. Compression narrows the distance between loud and quiet so the
200
+ quiet parts can come up. A limiter is a ceiling — it does not shape anything, it
201
+ guarantees nothing gets past. A gate removes what is below a threshold, which is
202
+ how you silence room tone between phrases. `gain` is a plain level stage, and it
203
+ is what an automation lane rides when a track has to move out of the way.
204
+
205
+ **Nonlinear** (`saturate`, `bitcrush`) changes the waveform's shape, which adds
206
+ harmonics that were not there. Reach for it when a track needs character or
207
+ grit rather than correction — and remember it is generative: it makes a thin
208
+ source denser, not cleaner.
209
+
210
+ **Time** (`delay`, `reverb`, `chorus`, `phaser`) puts a track in a space or gives
211
+ it width. These are the ones that most easily wreck a mix, because a tail or a
212
+ detuned copy occupies the same room a voice needs. Use them on the thing that
213
+ should sit _behind_ something else, and keep the wet amount lower than sounds
214
+ right in isolation.
215
+
216
+ The chain is serial: each effect processes what the one before it produced. So
217
+ corrective filtering goes early, character in the middle, and a limiter last
218
+ where it can actually act as a ceiling.
219
+
220
+ ## Voiceover carve
221
+
222
+ **The problem it solves.** A music bed under a voice makes the voice hard to
223
+ follow. The reflex is to duck the whole bed, which works and costs the bed all of
224
+ its presence — the music goes limp for the entire voiceover. But the voice does
225
+ not need the whole spectrum. It needs the few bands it actually occupies. Carve
226
+ takes only those, and the bed keeps its low end and its top, so it is still music
227
+ while the voice is still intelligible.
228
+
229
+ **It is a relationship, not an effect.** The settings live on the _bed_ — the
230
+ track that gets processed — and they name the voices to listen to, exactly as a
231
+ sidechain compressor does: you select the track that gets quieter and pick what
232
+ makes it quieter. **Never put a carve on a voice track.** A voice carved against
233
+ itself is a bug, not a subtle mix choice.
234
+
235
+ **Every voice, not one of them.** `sources` is a list, because a bed usually runs
236
+ under a whole sequence — a narrator, an interview answer, a second presenter. They
237
+ are summed onto the bed's own clock before anything is measured (`mixCarveSources`),
238
+ so one analysis covers all of them: the bands come from all the speech there is, and
239
+ the envelopes rise wherever any of it is happening. Voices that never play while the
240
+ bed does are left out; they cannot mask it.
241
+
242
+ **A carve against more than one clip id is wrong. Group the clips and carve
243
+ against the group.** This is an invariant, not a tip. Naming clips one by one has
244
+ to be exhaustively right and stays right only until the next edit — a fourth
245
+ narration clip added later plays outside the carve's awareness, and the bed
246
+ fails to duck under it silently. Naming the group instead resolves membership at
247
+ analysis time, so a clip added to the group later is covered without touching
248
+ `sources` at all:
249
+
250
+ ```html
251
+ <!-- group the narration, then carve the bed against the group -->
252
+ <audio id="vo-intro" data-audio-group="voiceover" …></audio>
253
+ <audio id="vo-middle" data-audio-group="voiceover" …></audio>
254
+ <audio id="vo-outro" data-audio-group="voiceover" …></audio>
255
+
256
+ <audio id="music" data-fx-carve='{"enabled":true,"sources":["voiceover"],"strength":0.8}' …></audio>
257
+ ```
258
+
259
+ A `sources` list naming two or more plain clip ids instead of a group is caught
260
+ by the `audio_carve_ungrouped_sources` lint rule — it still works, but it is the
261
+ version that silently rots when a clip is added.
262
+
263
+ **Keep the carve group a voice group: no bed, no SFX, no music.** A group id in
264
+ `sources` resolves to every _current_ member on _every_ analysis, so the group
265
+ you name is the group you get later — not the tracks that were measured when it
266
+ was written. Two ways that bites:
267
+
268
+ - **The bed in its own source group.** It is handed to itself as a voice and
269
+ carved against its own content — the "never carve a track against itself" rule
270
+ arriving one re-analysis later.
271
+ - **An SFX or music clip in the voice group.** It enters the sidechain on the
272
+ next analysis and the bed starts ducking under a whoosh, even though the run
273
+ that wrote the attribute never measured it.
274
+
275
+ Both are invisible at the moment the carve is written: the analysis sums the
276
+ voices it detected and never round-trips through group resolution, so the first
277
+ pass is genuinely correct and only the next one is wrong. So give each role its
278
+ own group — `music` for the bed, `voiceover` for the narration, `sfx` for the
279
+ hits — and keep the group named in `sources` holding nothing but voices.
280
+
281
+ `carve.mjs` refuses to write the group form when it sees either case, records
282
+ clip ids, and says on stderr which member blocked it. The
283
+ `audio_carve_ungrouped_sources` rule then points at the arrangement instead of
284
+ the CLI quietly persisting a wider carve than it measured.
285
+
286
+ A voice that this run left out is **not** one of these cases and does not block
287
+ the group form: `carve.mjs` only analyses voices that overlap the bed, and
288
+ picking up a clip that plays later without an edit to `sources` is the whole
289
+ reason to name the group.
290
+
291
+ ### One bus for many tracks
292
+
293
+ Membership alone is enough to carve against, as above — but add an
294
+ `<hf-audio-group>` element with that id and the group becomes a real submix bus:
295
+ one chain, one fader, one automation clock for every member.
296
+
297
+ ```html
298
+ <hf-audio-group
299
+ id="voiceover"
300
+ data-label="Voiceover"
301
+ data-volume="0.9"
302
+ data-fx-chain='{"version":1,"nodes":[
303
+ {"type":"compressor","id":"g1","params":{"threshold":-18,"ratio":3}},
304
+ {"type":"peaking","id":"g2","params":{"frequency":3000,"gain":2,"q":1}}]}'
305
+ ></hf-audio-group>
306
+
307
+ <audio id="vo-intro" data-audio-group="voiceover" …></audio>
308
+ <audio id="vo-middle" data-audio-group="voiceover" …></audio>
309
+ ```
310
+
311
+ **Reach for the bus when the same treatment belongs on several tracks.** Four
312
+ narration clips that each want the same compressor is four chains to keep in
313
+ step, and they drift the moment one is edited; on the bus it is one chain, and
314
+ the compressor sees the whole voice rather than each clip in isolation — which is
315
+ the point, since a compressor cannot ride a sequence it only hears a third of.
316
+ Per-clip chains remain right for what is genuinely per-clip: one noisy take that
317
+ needs its own de-esser.
318
+
319
+ | On the bus | Does |
320
+ | ----------------- | ----------------------------------------- |
321
+ | `data-fx-chain` | one chain over the summed members |
322
+ | `data-automation` | envelopes on the bus, in COMPOSITION time |
323
+ | `data-volume` | one fader for every member (default 1) |
324
+ | `data-label` | the display name; falls back to the id |
325
+ | `data-hidden` | drops every member from the mix |
326
+
327
+ **Group automation is composition time, not clip time.** A bus has no
328
+ `data-start` — members are already at their composition positions when they
329
+ reach it — so `t: 0` in a group lane is the start of the composition, not of any
330
+ clip. A lane on a clip is clip-local; the same numbers mean different instants on
331
+ the two, which is the one thing to get right when moving an envelope from a clip
332
+ up onto its bus.
333
+
334
+ **A carve stays on the clip.** `data-fx-carve` is not a group attribute. The bed
335
+ being carved is a single track, and it is that track which carries
336
+ `data-fx-carve` — pointed AT a group, per the rule above. Group and carve meet in
337
+ `sources`, not on one element. A carve written onto a bus is half an effect
338
+ applied twice: the level half measures the bed's own audio, which a bus has none
339
+ of, so only the filters survive — and a bus and its members are one signal path,
340
+ so the bed then runs through the bus's filters AND its own. The
341
+ `audio_group_carve_attr` lint rule catches it.
342
+
343
+ **One clip is not a bus.** A group exists to give several tracks one chain, one
344
+ fader and one clock. Wrapping a single clip in a bus buys nothing the clip's own
345
+ `data-fx-chain` does not already do, and it doubles the places a later edit has
346
+ to land. The one reason to do it anyway: a bus's automation clock is composition
347
+ time, so a single-member bus is how a lane on that clip gets composition-time
348
+ timing.
349
+
350
+ **One knob.** `strength` is 0..1 and derives everything: how deep to cut, how
351
+ many bands, how wide, how far to favour intelligibility over raw voice energy,
352
+ how far the level may drop, how far under the voice to aim. Those six move
353
+ together in any real mix — a gentle carve is a shallow cut in few bands with
354
+ little ducking, a hard one is deeper in more bands with more — so they are one
355
+ relationship written once, in `carveProfile`. `carve.mjs` defaults to `0.8` —
356
+ six bands from 250 Hz to 2.5 kHz cut about 7 dB each and 15 dB at 1.6 kHz, with
357
+ 19 dB of level room — because a bed under narration has to get out of the way
358
+ first and be music second; `0.25` (a 6 dB dip in three bands, 6 dB of room) kept
359
+ the bed present but still let it fight the voice, and was judged too weak in
360
+ practice. At `0.5` the dip reaches 10 dB, which is where a carve starts being
361
+ heard as an effect rather than as room for the voice. Drop the strength when the
362
+ bed is the point and the voice is sparse. `0` is spectral only — one band, no
363
+ level match at all.
364
+
365
+ **Carve by default — required whenever music plays under a voice.** A bed
366
+ under any voice track (narration, avatar speech, interview, voiceover) gets a
367
+ carve as part of finishing the mix, not as a polish step to get to if there is
368
+ time. Place both tracks, run the command below (default strength `0.8`; add
369
+ `--bed` / `--voice` when detection picks wrong), confirm the written
370
+ `data-fx-carve`, `data-fx-chain` and `data-automation` with `freecodego_design_lint`,
371
+ and only then render. A volume duck on its own is not a finished mix: it leaves
372
+ the voice and the bed fighting in the 1–3 kHz band and costs the bed all of its
373
+ presence for the whole voiceover. Skip the carve only when there is no voice for
374
+ the music to sit under — a music video, a title card, a montage cut to the track.
375
+
376
+ **It always follows the voice.** There is no static mode: a fixed depth thins the
377
+ bed through every pause, and once you have heard both there is no reason to want it.
378
+ Every value becomes an envelope of the speech's own level — silence leaves the bed
379
+ alone, a loud passage pushes the carve to full depth — written as ordinary automation,
380
+ which is why the lanes show up in the timeline and can be edited afterwards.
381
+
382
+ **Level matching is part of it.** Spectral carving cannot fix a bed that is
383
+ simply louder than the voice. So the carve also measures how far over the voice
384
+ the bed sits and writes a `gain` stage: held at one value for a static carve,
385
+ driven by an envelope for a dynamic one. That envelope releases slowly on
386
+ purpose — music that snaps back to full the instant a word ends sounds like a
387
+ machine doing it.
388
+
389
+ **Running it.** In Studio the carve is one module at the top of a track's effect
390
+ rack — voice, strength, dynamic, and the analysis it produced, in one card. It is
391
+ there whenever another track could be the voice, and a bed with exactly **one**
392
+ candidate above it is carved by default, dynamically, at the default strength:
393
+ that is what a bed under narration wants, and the module is where you change or
394
+ switch it off. Several candidates leaves the picker waiting rather than guessing.
395
+ Headless —
396
+ which is the path when you are authoring a composition rather than editing one:
397
+
398
+ ```bash
399
+ node <SKILL_DIR>/scripts/carve.mjs --comp index.html
400
+ ```
401
+
402
+ That is the whole command. It finds the voice and the bed itself, carves
403
+ dynamically at the default strength, and prints what it decided:
404
+
405
+ ```
406
+ bed music-bed (name looks like music)
407
+ voice narration (only track left)
408
+ carve strength 0.8 dynamic
409
+ bands 250Hz -7.4dB q2.06, 400Hz -7.4dB q2.06, 630Hz -7.4dB q2.06, 1000Hz -7.4dB q2.06, 1600Hz -14.8dB q2.06, 2500Hz -7.4dB q2.06
410
+ level 273-point envelope, floor -19.2 dB
411
+ ```
412
+
413
+ Name the tracks with `--bed` / `--voice` (repeatable) when the automatic choice is
414
+ wrong, `--strength` to push it, `--dry-run` to see that report and write nothing.
415
+
416
+ **How it picks the tracks.** Names first, because that is what you already told it
417
+ and the answer is explainable — `classifyAudioName` in core, the same classifier
418
+ Studio's own picker uses, so the two cannot disagree. A track whose id or filename
419
+ looks like music (`music`, `bgm`, `bed`, `score`…) is the bed; everything else that
420
+ plays over it and is not SFX-shaped is a voice. Audio elements are preferred: video
421
+ counts only when no audio track is left to be the voice, or every B-roll clip in the
422
+ composition would read as somebody talking. **It refuses when it cannot tell which
423
+ track is the bed** rather than carving the wrong one — typing one id is cheap.
424
+
425
+ Same analysis functions as the panel, so the result is identical. Needs `ffmpeg`
426
+ on PATH and `@hyperframes/core` installed in the project (`npm i -D
427
+ @hyperframes/core`) — the CLI inlines core rather than shipping it, so it cannot
428
+ be borrowed from there.
429
+
430
+ **What it writes** is an ordinary chain of peaking filters plus a gain stage,
431
+ tagged `fromCarve`. That tagging is the whole trick: a re-run replaces the
432
+ previous carve and leaves every effect you built by hand — and every lane you
433
+ drew by hand — exactly where it was. So re-carving at a new strength is safe and
434
+ repeatable, and `data-fx-carve` exists so the settings can be read back rather
435
+ than guessed from the filters.
436
+
437
+ ## Automation
438
+
439
+ A lane is a set of breakpoints on one parameter: `{t, v}` in clip-local seconds
440
+ and the parameter's own units. Targets are `volume` for the track's level, or
441
+ `fx.<nodeId>.<param>` for an effect's knob.
442
+
443
+ **Only some parameters can be automated, and a lane on the others is silently
444
+ inert.** A knob is automatable when a Web Audio `AudioParam` backs it. The four
445
+ worklet-based effects — `compressor`, `limiter`, `gate`, `bitcrush` — expose
446
+ none at all, so no lane on any of their parameters will ever move: to make a
447
+ compressor's behaviour change over time, automate a `gain` stage before it
448
+ instead. `references/fx-registry.md` marks every parameter.
449
+
450
+ ## Verify
451
+
452
+ Almost no static gate covers the mix. The linter reads `data-automation` for
453
+ exactly one conflict — `audio_volume_double_automation`, a volume lane on a track
454
+ that also has a GSAP tween on `volume`, where the lane wins and the tween is
455
+ ignored — plus `audio_volume_tween_overrides_gain`, an authored `data-volume`
456
+ on a track whose `volume` is tweened, where the tween's values are absolute and
457
+ replace that gain instead of scaling it. Nothing validates the
458
+ chain or the effect lanes at all. What
459
+ enforces those is the render: a chain it cannot parse fails the whole mix rather
460
+ than quietly writing the dry signal, because a mix that sounds plausible and is
461
+ wrong is worse than a refusal. Preview is the opposite by design: an unreadable
462
+ chain plays dry so the composition stays workable.
463
+
464
+ A lane pointing at a node the chain does not have is pruned on read, not an
465
+ error — so a typo'd `nodeId` costs you the envelope silently. Read the ids back
466
+ out of the chain rather than assuming what was minted.
467
+
468
+ Effects with a tail (`reverb`, `delay`) make the rendered track **longer** than
469
+ its source, and the mix is told how much by the chain. So a bed with reverb no
470
+ longer ends exactly at its `data-duration`; that is expected, not a bug.
471
+
472
+ Beyond that, a mix is verified by rendering and listening. For a carve: the voice
473
+ should be legible without the bed sounding hollowed, and with `dynamic` the bed
474
+ should come back up between phrases rather than staying flat. If the bed sounds
475
+ notched rather than simply quieter under the voice, the strength is too high —
476
+ that is the one failure mode with an obvious sound.