dsh-hyperframes 0.1.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.en.md +34 -5
- package/README.md +34 -8
- package/lib/index.d.ts +11 -1
- package/lib/index.js +57 -3
- package/package.json +63 -64
- package/skills/embedded-captions/CATALOG.md +91 -0
- package/skills/embedded-captions/SKILL.md +258 -0
- package/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/skills/embedded-captions/dna/README.md +148 -0
- package/skills/embedded-captions/dna/chrome.json +68 -0
- package/skills/embedded-captions/dna/cream.json +69 -0
- package/skills/embedded-captions/dna/documentary.json +62 -0
- package/skills/embedded-captions/dna/editorial.json +70 -0
- package/skills/embedded-captions/dna/glitch.json +82 -0
- package/skills/embedded-captions/dna/ink.json +65 -0
- package/skills/embedded-captions/dna/keynote.json +62 -0
- package/skills/embedded-captions/dna/loud.json +75 -0
- package/skills/embedded-captions/dna/neon.json +58 -0
- package/skills/embedded-captions/dna/velocity.json +89 -0
- package/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
- package/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
- package/skills/embedded-captions/modes/standard/fonts/files/anton-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/audiowide-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bangers-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/caveat-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/caveat-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/creepster-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-italic.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-italic.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-800-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-900-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/monoton-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/permanent-marker-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/press-start-2p-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/saira-stencil-one-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/sora-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/sora-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/special-elite-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/teko-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/teko-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/vt323-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/fonts.css +401 -0
- package/skills/embedded-captions/references/aesthetic-principles.md +168 -0
- package/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/skills/embedded-captions/references/composition-craft.md +522 -0
- package/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/skills/embedded-captions/references/failure-modes.md +145 -0
- package/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/skills/embedded-captions/references/rail.md +68 -0
- package/skills/embedded-captions/references/reference-bar.md +47 -0
- package/skills/embedded-captions/references/scene-types.md +94 -0
- package/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/skills/embedded-captions/references/typography-presets.md +63 -0
- package/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
- package/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
- package/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
- package/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
- package/skills/embedded-captions/scripts/check-timing.cjs +173 -0
- package/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
- package/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
- package/skills/embedded-captions/scripts/gen-stroke-path.py +57 -0
- package/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
- package/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
- package/skills/embedded-captions/scripts/make-cinematic.cjs +1206 -0
- package/skills/embedded-captions/scripts/make-composition.cjs +405 -0
- package/skills/embedded-captions/scripts/make-theme.cjs +8585 -0
- package/skills/embedded-captions/scripts/matte.cjs +280 -0
- package/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
- package/skills/embedded-captions/scripts/prepare.sh +39 -0
- package/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
- package/skills/embedded-captions/scripts/render-and-composite.sh +469 -0
- package/skills/embedded-captions/scripts/render-theme.sh +34 -0
- package/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
- package/skills/embedded-captions/scripts/transcribe.cjs +332 -0
- package/skills/embedded-captions/themes/README.md +243 -0
- package/skills/embedded-captions/themes/anchor.json +27 -0
- package/skills/embedded-captions/themes/arcade.json +51 -0
- package/skills/embedded-captions/themes/aurora.json +41 -0
- package/skills/embedded-captions/themes/biolume.json +35 -0
- package/skills/embedded-captions/themes/brush.json +74 -0
- package/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/skills/embedded-captions/themes/dossier.json +56 -0
- package/skills/embedded-captions/themes/graffiti.json +62 -0
- package/skills/embedded-captions/themes/hologram.json +41 -0
- package/skills/embedded-captions/themes/inkwater.json +43 -0
- package/skills/embedded-captions/themes/laser.json +46 -0
- package/skills/embedded-captions/themes/lastpage.json +33 -0
- package/skills/embedded-captions/themes/neonsign.json +53 -0
- package/skills/embedded-captions/themes/ordnance.json +54 -0
- package/skills/embedded-captions/themes/papercut.json +37 -0
- package/skills/embedded-captions/themes/popup.json +46 -0
- package/skills/embedded-captions/themes/ransom.json +62 -0
- package/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/skills/embedded-captions/themes/spectrum.json +46 -0
- package/skills/embedded-captions/themes/stardust.json +29 -0
- package/skills/embedded-captions/themes/stomp.json +43 -0
- package/skills/embedded-captions/themes/terminal.json +49 -0
- package/skills/embedded-captions/themes/thunder.json +44 -0
- package/skills/embedded-captions/themes/transit.json +44 -0
- package/skills/embedded-captions/themes/vhs.json +47 -0
- package/skills/faceless-explainer/SKILL.md +233 -0
- package/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/skills/faceless-explainer/references/motion-language.md +156 -0
- package/skills/faceless-explainer/references/story-design.md +255 -0
- package/skills/faceless-explainer/references/visual-design.md +146 -0
- package/skills/faceless-explainer/scripts/assemble-index.mjs +623 -0
- package/skills/faceless-explainer/scripts/assemble-index.test.mjs +72 -0
- package/skills/faceless-explainer/scripts/audio.mjs +291 -0
- package/skills/faceless-explainer/scripts/audio.test.mjs +176 -0
- package/skills/faceless-explainer/scripts/build-frame.mjs +551 -0
- package/skills/faceless-explainer/scripts/captions.mjs +521 -0
- package/skills/faceless-explainer/scripts/captions.test.mjs +219 -0
- package/skills/faceless-explainer/scripts/frame-packets.mjs +27 -0
- package/skills/faceless-explainer/scripts/frame-packets.test.mjs +66 -0
- package/skills/faceless-explainer/scripts/lib/assets.mjs +56 -0
- package/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
- package/skills/faceless-explainer/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
- package/skills/faceless-explainer/scripts/lib/tokens.mjs +211 -0
- package/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
- package/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
- package/skills/faceless-explainer/scripts/transitions.mjs +383 -0
- package/skills/faceless-explainer/scripts/transitions.test.mjs +68 -0
- package/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
- package/skills/figma/SKILL.md +132 -0
- package/skills/figma/scripts/verify-motion.mjs +153 -0
- package/skills/general-video/SKILL.md +165 -0
- package/skills/general-video/scripts/frame-packets.mjs +38 -0
- package/skills/general-video/scripts/frame-packets.test.mjs +80 -0
- package/skills/general-video/sub-agents/frame-worker.md +34 -0
- package/skills/hyperframes/SKILL.md +98 -337
- package/skills/hyperframes/references/capability-menu.md +47 -0
- package/skills/hyperframes/references/intent-interview.md +71 -0
- package/skills/hyperframes/references/pitch-round.md +40 -0
- package/skills/hyperframes/references/route-briefs.md +11 -0
- package/skills/hyperframes/references/routes/embedded-captions.md +11 -0
- package/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
- package/skills/hyperframes/references/routes/general-video.md +12 -0
- package/skills/hyperframes/references/routes/motion-graphics.md +11 -0
- package/skills/hyperframes/references/routes/music-to-video.md +12 -0
- package/skills/hyperframes/references/routes/pr-to-video.md +28 -0
- package/skills/hyperframes/references/routes/product-launch-video.md +13 -0
- package/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
- package/skills/hyperframes/references/routes/slideshow.md +11 -0
- package/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
- package/skills/hyperframes/references/skill-lifecycle.md +33 -0
- package/skills/hyperframes/references/workflow-catalog.md +10 -0
- package/skills/hyperframes-animation/SKILL.md +84 -0
- package/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/skills/hyperframes-animation/adapters/animejs.md +130 -0
- package/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
- package/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
- package/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/skills/hyperframes-animation/adapters/lottie.md +117 -0
- package/skills/hyperframes-animation/adapters/three.md +131 -0
- package/skills/hyperframes-animation/adapters/typegpu.md +182 -0
- package/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
- package/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
- package/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
- package/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
- package/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
- package/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
- package/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
- package/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
- package/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
- package/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
- package/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
- package/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
- package/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
- package/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
- package/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
- package/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
- package/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
- package/skills/hyperframes-animation/blueprints-index.md +202 -0
- package/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
- package/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
- package/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
- package/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
- package/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
- package/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
- package/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
- package/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
- package/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
- package/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
- package/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
- package/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
- package/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
- package/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
- package/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
- package/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
- package/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
- package/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
- package/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
- package/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
- package/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
- package/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
- package/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
- package/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
- package/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
- package/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
- package/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
- package/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
- package/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
- package/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
- package/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
- package/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
- package/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
- package/skills/hyperframes-animation/rules/particle-burst.md +149 -0
- package/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
- package/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
- package/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
- package/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
- package/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
- package/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
- package/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
- package/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
- package/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
- package/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
- package/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
- package/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
- package/skills/hyperframes-animation/rules/viewport-change.md +148 -0
- package/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
- package/skills/hyperframes-animation/rules-index.md +113 -0
- package/skills/hyperframes-animation/scripts/animation-map-sampling.mjs +40 -0
- package/skills/hyperframes-animation/scripts/animation-map-sampling.test.mjs +48 -0
- package/skills/{hyperframes → hyperframes-animation}/scripts/animation-map.mjs +116 -53
- package/skills/hyperframes-animation/scripts/animation-map.test.mjs +444 -0
- package/skills/hyperframes-animation/scripts/package-loader.mjs +384 -0
- package/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
- package/skills/{website-to-hyperframes/references → hyperframes-animation}/techniques.md +146 -26
- package/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
- package/skills/{hyperframes/references → hyperframes-animation}/transitions/catalog.md +26 -16
- package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-destruction.md +1 -1
- package/skills/{hyperframes/references/transitions.md → hyperframes-animation/transitions/overview.md} +44 -3
- package/skills/hyperframes-audio/SKILL.md +470 -0
- package/skills/hyperframes-audio/references/attributes.md +138 -0
- package/skills/hyperframes-audio/references/diagnosis.md +276 -0
- package/skills/hyperframes-audio/references/fx-registry.md +84 -0
- package/skills/hyperframes-audio/references/presets.md +216 -0
- package/skills/hyperframes-audio/scripts/carve.mjs +569 -0
- package/skills/hyperframes-audio/scripts/carve.test.mjs +239 -0
- package/skills/hyperframes-cli/SKILL.md +121 -103
- package/skills/hyperframes-cli/references/beats.md +19 -0
- package/skills/hyperframes-cli/references/cloud.md +163 -0
- package/skills/hyperframes-cli/references/cloudrun.md +62 -0
- package/skills/hyperframes-cli/references/compare-and-batch.md +105 -0
- package/skills/hyperframes-cli/references/doctor-browser.md +57 -0
- package/skills/hyperframes-cli/references/init-and-scaffold.md +72 -0
- package/skills/hyperframes-cli/references/lambda.md +185 -0
- package/skills/hyperframes-cli/references/lint-validate-inspect.md +132 -0
- package/skills/hyperframes-cli/references/preview-render.md +190 -0
- package/skills/hyperframes-cli/references/upgrade-info-misc.md +77 -0
- package/skills/hyperframes-core/SKILL.md +94 -0
- package/skills/hyperframes-core/references/brief-contract.md +108 -0
- package/skills/hyperframes-core/references/brief-format.md +72 -0
- package/skills/hyperframes-core/references/composition-patterns.md +263 -0
- package/skills/hyperframes-core/references/creator-editing-recipes.md +367 -0
- package/skills/hyperframes-core/references/data-attributes.md +78 -0
- package/skills/hyperframes-core/references/determinism-rules.md +70 -0
- package/skills/hyperframes-core/references/frame-worker-core.md +80 -0
- package/skills/hyperframes-core/references/full-screen-motion.md +76 -0
- package/skills/hyperframes-core/references/minimal-composition.md +69 -0
- package/skills/hyperframes-core/references/production-loop.md +26 -0
- package/skills/hyperframes-core/references/review-loop.md +41 -0
- package/skills/hyperframes-core/references/script-format.md +52 -0
- package/skills/hyperframes-core/references/storyboard-format.md +130 -0
- package/skills/hyperframes-core/references/sub-compositions.md +239 -0
- package/skills/hyperframes-core/references/subagent-dispatch.md +35 -0
- package/skills/hyperframes-core/references/tailwind.md +123 -0
- package/skills/hyperframes-core/references/tracks-and-clips.md +91 -0
- package/skills/hyperframes-core/references/variables-and-media.md +107 -0
- package/skills/hyperframes-core/scripts/lib/frame-packets-core.mjs +212 -0
- package/skills/hyperframes-creative/SKILL.md +71 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/EBGaramond-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/EBGaramond-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/Inter-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/Inter-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/JetBrainsMono-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/JetBrainsMono-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
- package/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/skills/{hyperframes → hyperframes-creative}/references/audio-reactive.md +1 -1
- package/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/skills/{hyperframes → hyperframes-creative/references}/data-in-motion.md +1 -1
- package/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/skills/{hyperframes → hyperframes-creative/references}/house-style.md +4 -2
- package/skills/hyperframes-creative/references/motion-principles.md +151 -0
- package/skills/{website-to-hyperframes/references/step-3-script.md → hyperframes-creative/references/narration.md} +5 -9
- package/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/skills/hyperframes-creative/references/story-spine.md +43 -0
- package/skills/{hyperframes → hyperframes-creative}/references/typography.md +45 -2
- package/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/skills/hyperframes-creative/scripts/contrast-report.mjs +538 -0
- package/skills/{gsap → hyperframes-creative}/scripts/extract-audio-data.py +13 -2
- package/skills/hyperframes-creative/scripts/package-loader.mjs +384 -0
- package/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
- package/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/skills/hyperframes-keyframes/SKILL.md +262 -0
- package/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
- package/skills/hyperframes-registry/SKILL.md +55 -16
- package/skills/hyperframes-registry/references/component-quality-bar.md +250 -0
- package/skills/hyperframes-registry/references/contributing.md +174 -0
- package/skills/hyperframes-registry/references/discovery.md +191 -13
- package/skills/hyperframes-registry/references/placeholder-material.md +149 -0
- package/skills/hyperframes-registry/references/templates.md +417 -0
- package/skills/hyperframes-registry/references/wiring-blocks.md +1 -31
- package/skills/hyperframes-registry/references/wiring-components.md +1 -39
- package/skills/media-use/SKILL.md +96 -0
- package/skills/media-use/audio/assets/sfx/CREDITS.md +35 -0
- package/skills/media-use/audio/assets/sfx/chime.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/click-soft.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/click.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/error.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-1.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-2.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-3.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/impact-bass-1.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/impact-bass-2.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/key-press.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/manifest.json +97 -0
- package/skills/media-use/audio/assets/sfx/notification.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/ping.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/pop.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/riser.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/sparkle.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/typing.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh-cinematic.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh-short.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh.mp3 +0 -0
- package/skills/media-use/audio/references/bgm.md +74 -0
- package/skills/media-use/audio/references/captions/authoring.md +159 -0
- package/skills/{hyperframes/references/dynamic-techniques.md → media-use/audio/references/captions/motion.md} +8 -11
- package/skills/{hyperframes/references/transcript-guide.md → media-use/audio/references/captions/transcript-handling.md} +5 -59
- package/skills/media-use/audio/references/remove-background.md +143 -0
- package/skills/media-use/audio/references/requirements.md +29 -0
- package/skills/media-use/audio/references/sfx.md +42 -0
- package/skills/media-use/audio/references/transcribe.md +52 -0
- package/skills/media-use/audio/references/tts-to-captions.md +26 -0
- package/skills/media-use/audio/references/tts.md +165 -0
- package/skills/media-use/audio/scripts/audio.mjs +293 -0
- package/skills/media-use/audio/scripts/audio.test.mjs +49 -0
- package/skills/media-use/audio/scripts/heygen-tts.mjs +121 -0
- package/skills/media-use/audio/scripts/lib/bgm.mjs +257 -0
- package/skills/media-use/audio/scripts/lib/bgm.test.mjs +30 -0
- package/skills/media-use/audio/scripts/lib/concurrency.mjs +14 -0
- package/skills/media-use/audio/scripts/lib/concurrency.test.mjs +41 -0
- package/skills/media-use/audio/scripts/lib/heygen.mjs +155 -0
- package/skills/media-use/audio/scripts/lib/heygen.test.mjs +103 -0
- package/skills/media-use/audio/scripts/lib/python.mjs +63 -0
- package/skills/media-use/audio/scripts/lib/python.test.mjs +68 -0
- package/skills/media-use/audio/scripts/lib/sfx.mjs +143 -0
- package/skills/media-use/audio/scripts/lib/sfx.test.mjs +69 -0
- package/skills/media-use/audio/scripts/lib/tts.mjs +378 -0
- package/skills/media-use/audio/scripts/lib/tts.spawn.test.mjs +158 -0
- package/skills/media-use/audio/scripts/lib/tts.test.mjs +157 -0
- package/skills/media-use/audio/scripts/lyria-recipe.py +136 -0
- package/skills/media-use/audio/scripts/wait-bgm.mjs +167 -0
- package/skills/media-use/luts/README.md +28 -0
- package/skills/media-use/luts/index.json +57 -0
- package/skills/media-use/references/audio.md +19 -0
- package/skills/media-use/references/grading.md +160 -0
- package/skills/media-use/references/media-treatment-recipes.md +929 -0
- package/skills/media-use/references/media-treatments.md +202 -0
- package/skills/media-use/references/memory.md +36 -0
- package/skills/media-use/references/meta.md +61 -0
- package/skills/media-use/references/operations.md +325 -0
- package/skills/media-use/references/resolve.md +139 -0
- package/skills/media-use/references/setup-providers.md +80 -0
- package/skills/media-use/references/telemetry-dashboard.md +49 -0
- package/skills/media-use/scripts/audio-duck.mjs +121 -0
- package/skills/media-use/scripts/dither.mjs +328 -0
- package/skills/media-use/scripts/dither.test.mjs +176 -0
- package/skills/media-use/scripts/eval.mjs +369 -0
- package/skills/media-use/scripts/lib/adopt.mjs +128 -0
- package/skills/media-use/scripts/lib/adopt.test.mjs +95 -0
- package/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
- package/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
- package/skills/media-use/scripts/lib/bundled-sfx-provider.mjs +108 -0
- package/skills/media-use/scripts/lib/bundled-sfx-provider.test.mjs +85 -0
- package/skills/media-use/scripts/lib/cache.mjs +150 -0
- package/skills/media-use/scripts/lib/candidates.mjs +91 -0
- package/skills/media-use/scripts/lib/candidates.test.mjs +155 -0
- package/skills/media-use/scripts/lib/codex-provider.mjs +161 -0
- package/skills/media-use/scripts/lib/codex-provider.test.mjs +34 -0
- package/skills/media-use/scripts/lib/coverage.test.mjs +117 -0
- package/skills/media-use/scripts/lib/cube-build.mjs +181 -0
- package/skills/media-use/scripts/lib/cube-build.test.mjs +80 -0
- package/skills/media-use/scripts/lib/cube-validate.mjs +198 -0
- package/skills/media-use/scripts/lib/cube-validate.test.mjs +125 -0
- package/skills/media-use/scripts/lib/cutlist.mjs +184 -0
- package/skills/media-use/scripts/lib/cutlist.test.mjs +148 -0
- package/skills/media-use/scripts/lib/duck.mjs +89 -0
- package/skills/media-use/scripts/lib/duck.test.mjs +118 -0
- package/skills/media-use/scripts/lib/error-diffusion.mjs +230 -0
- package/skills/media-use/scripts/lib/error-diffusion.test.mjs +102 -0
- package/skills/media-use/scripts/lib/freeze.mjs +70 -0
- package/skills/media-use/scripts/lib/freeze.test.mjs +46 -0
- package/skills/media-use/scripts/lib/grade-analyzer.mjs +264 -0
- package/skills/media-use/scripts/lib/grade-analyzer.test.mjs +285 -0
- package/skills/media-use/scripts/lib/heygen-cli.mjs +191 -0
- package/skills/media-use/scripts/lib/heygen-cli.test.mjs +301 -0
- package/skills/media-use/scripts/lib/heygen-search.mjs +45 -0
- package/skills/media-use/scripts/lib/heygen-search.test.mjs +49 -0
- package/skills/media-use/scripts/lib/heygen-video-provider.mjs +127 -0
- package/skills/media-use/scripts/lib/heygen-video-provider.test.mjs +344 -0
- package/skills/media-use/scripts/lib/image-provider.mjs +44 -0
- package/skills/media-use/scripts/lib/index-gen.mjs +63 -0
- package/skills/media-use/scripts/lib/local-models.mjs +318 -0
- package/skills/media-use/scripts/lib/local-models.test.mjs +220 -0
- package/skills/media-use/scripts/lib/local-run.mjs +78 -0
- package/skills/media-use/scripts/lib/local-run.test.mjs +121 -0
- package/skills/media-use/scripts/lib/logo-provider.mjs +222 -0
- package/skills/media-use/scripts/lib/logo-provider.test.mjs +137 -0
- package/skills/media-use/scripts/lib/ltx-video-provider.mjs +94 -0
- package/skills/media-use/scripts/lib/ltx-video-provider.test.mjs +316 -0
- package/skills/media-use/scripts/lib/lut-preset-provider.mjs +266 -0
- package/skills/media-use/scripts/lib/lut-preset-provider.test.mjs +176 -0
- package/skills/media-use/scripts/lib/manifest.mjs +229 -0
- package/skills/media-use/scripts/lib/manifest.test.mjs +388 -0
- package/skills/media-use/scripts/lib/match.mjs +47 -0
- package/skills/media-use/scripts/lib/mflux-provider.mjs +128 -0
- package/skills/media-use/scripts/lib/mflux-provider.test.mjs +174 -0
- package/skills/media-use/scripts/lib/misses.mjs +49 -0
- package/skills/media-use/scripts/lib/misses.test.mjs +78 -0
- package/skills/media-use/scripts/lib/npx-sync.mjs +31 -0
- package/skills/media-use/scripts/lib/npx-sync.test.mjs +50 -0
- package/skills/media-use/scripts/lib/parakeet-words.mjs +27 -0
- package/skills/media-use/scripts/lib/parakeet-words.test.mjs +44 -0
- package/skills/media-use/scripts/lib/prefs-store.mjs +180 -0
- package/skills/media-use/scripts/lib/prefs-store.test.mjs +189 -0
- package/skills/media-use/scripts/lib/probe.mjs +39 -0
- package/skills/media-use/scripts/lib/probe.test.mjs +31 -0
- package/skills/media-use/scripts/lib/providers.mjs +5 -0
- package/skills/media-use/scripts/lib/recipe-store.mjs +367 -0
- package/skills/media-use/scripts/lib/recipe-store.test.mjs +367 -0
- package/skills/media-use/scripts/lib/registry.mjs +218 -0
- package/skills/media-use/scripts/lib/registry.test.mjs +261 -0
- package/skills/media-use/scripts/lib/search.mjs +24 -0
- package/skills/media-use/scripts/lib/search.test.mjs +32 -0
- package/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
- package/skills/media-use/scripts/lib/specs.mjs +132 -0
- package/skills/media-use/scripts/lib/specs.test.mjs +157 -0
- package/skills/media-use/scripts/lib/stats.mjs +117 -0
- package/skills/media-use/scripts/lib/stats.test.mjs +165 -0
- package/skills/media-use/scripts/lib/telemetry.mjs +222 -0
- package/skills/media-use/scripts/lib/telemetry.test.mjs +373 -0
- package/skills/media-use/scripts/lib/tts-local-provider.mjs +92 -0
- package/skills/media-use/scripts/lib/tts-local-provider.test.mjs +72 -0
- package/skills/media-use/scripts/lib/usage.mjs +57 -0
- package/skills/media-use/scripts/lib/usage.test.mjs +54 -0
- package/skills/media-use/scripts/lib/voice-provider.mjs +57 -0
- package/skills/media-use/scripts/lib/voice-provider.test.mjs +46 -0
- package/skills/media-use/scripts/lib/words.mjs +18 -0
- package/skills/media-use/scripts/prefs.mjs +70 -0
- package/skills/media-use/scripts/recipe.mjs +103 -0
- package/skills/media-use/scripts/resolve.mjs +1271 -0
- package/skills/media-use/scripts/resolve.test.mjs +1120 -0
- package/skills/media-use/scripts/transcribe.mjs +180 -0
- package/skills/media-use/scripts/transcript-cut.mjs +239 -0
- package/skills/motion-graphics/SKILL.md +176 -0
- package/skills/motion-graphics/agents/builder.md +40 -0
- package/skills/motion-graphics/agents/director.md +53 -0
- package/skills/motion-graphics/agents/finalize.md +17 -0
- package/skills/motion-graphics/catalog-map.md +40 -0
- package/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/skills/motion-graphics/categories/charts/module.md +21 -0
- package/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
- package/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
- package/skills/motion-graphics/categories/maps/module.md +61 -0
- package/skills/motion-graphics/categories/news/module.md +56 -0
- package/skills/motion-graphics/categories/stat/module.md +21 -0
- package/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/skills/motion-graphics/categories/webpage/module.md +30 -0
- package/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/skills/motion-graphics/grounding/locate.mjs +228 -0
- package/skills/motion-graphics/phases/source/guide.md +21 -0
- package/skills/motion-graphics/references/builder-contract.md +38 -0
- package/skills/motion-graphics/references/motion-vocabulary.md +43 -0
- package/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/skills/music-to-video/SKILL.md +208 -0
- package/skills/music-to-video/references/frame-skeleton.md +100 -0
- package/skills/music-to-video/references/montage.md +58 -0
- package/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
- package/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +154 -0
- package/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +11 -0
- package/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +326 -0
- package/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +120 -0
- package/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +95 -0
- package/skills/music-to-video/references/motion-primitives/braam-punch/index.html +135 -0
- package/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +146 -0
- package/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +103 -0
- package/skills/music-to-video/references/motion-primitives/counting-punch/index.html +154 -0
- package/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +155 -0
- package/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +166 -0
- package/skills/music-to-video/references/motion-primitives/directional-fill/index.html +133 -0
- package/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +137 -0
- package/skills/music-to-video/references/motion-primitives/electric-arc/index.html +144 -0
- package/skills/music-to-video/references/motion-primitives/flash-cut/index.html +132 -0
- package/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +241 -0
- package/skills/music-to-video/references/motion-primitives/hard-cut/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +79 -0
- package/skills/music-to-video/references/motion-primitives/iris-open/index.html +104 -0
- package/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +98 -0
- package/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +131 -0
- package/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +109 -0
- package/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +124 -0
- package/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +108 -0
- package/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/palette-flip/index.html +132 -0
- package/skills/music-to-video/references/motion-primitives/particle-burst/index.html +141 -0
- package/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +121 -0
- package/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +160 -0
- package/skills/music-to-video/references/motion-primitives/screen-shake/index.html +113 -0
- package/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +130 -0
- package/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +137 -0
- package/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +313 -0
- package/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +136 -0
- package/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +144 -0
- package/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +122 -0
- package/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +126 -0
- package/skills/music-to-video/references/planning.md +104 -0
- package/skills/music-to-video/references/storyboard-format.md +94 -0
- package/skills/music-to-video/references/template-catalog.md +106 -0
- package/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
- package/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
- package/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/asphalt-031.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bark-014.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/brick.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-075-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-101.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-102.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-104.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/carpet.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-034.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-042-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-046.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-047-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/diamond-plate-009.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-080.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-083.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-001.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-004.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-005.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-037.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-054.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-068.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-080.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-103.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-104.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/lava.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/leather-037.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-012.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-016.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-032.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-038.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-041-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-046-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-048-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-049-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-055-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-061-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/onyx.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/painted-plaster-017.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-138.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-150.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/plaster-001.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-007.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-008-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-009-c.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-013-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-058.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-063.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow-015.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/tiles-138.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/travertine-009.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-049.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-051.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-058.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-066.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-092.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-094.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-051.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-064.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-070.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
- package/skills/music-to-video/references/templates/logo-split-lockup-pulse/assets/fredoka-700.woff2 +0 -0
- package/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
- package/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
- package/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
- package/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
- package/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
- package/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
- package/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
- package/skills/music-to-video/scripts/analyze-beatgrid.py +542 -0
- package/skills/music-to-video/scripts/assemble-index.mjs +220 -0
- package/skills/music-to-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/music-to-video/scripts/stage-assets.mjs +58 -0
- package/skills/music-to-video/scripts/validate-plan.mjs +161 -0
- package/skills/music-to-video/sub-agents/frame-worker.md +49 -0
- package/skills/pr-to-video/SKILL.md +269 -0
- package/skills/pr-to-video/references/code-vocabulary.md +111 -0
- package/skills/pr-to-video/references/cut-catalog.md +215 -0
- package/skills/pr-to-video/references/motion-language.md +156 -0
- package/skills/pr-to-video/references/story-design.md +230 -0
- package/skills/pr-to-video/references/visual-design.md +164 -0
- package/skills/pr-to-video/scripts/assemble-index.mjs +629 -0
- package/skills/pr-to-video/scripts/assemble-index.test.mjs +75 -0
- package/skills/pr-to-video/scripts/audio.mjs +291 -0
- package/skills/pr-to-video/scripts/build-frame.mjs +586 -0
- package/skills/pr-to-video/scripts/captions.mjs +521 -0
- package/skills/pr-to-video/scripts/captions.test.mjs +219 -0
- package/skills/pr-to-video/scripts/fetch-people-avatars.mjs +157 -0
- package/skills/pr-to-video/scripts/fetch-pr.mjs +234 -0
- package/skills/pr-to-video/scripts/frame-contract.test.mjs +209 -0
- package/skills/pr-to-video/scripts/frame-packets.mjs +62 -0
- package/skills/pr-to-video/scripts/ingest.mjs +561 -0
- package/skills/pr-to-video/scripts/lib/assets.mjs +56 -0
- package/skills/pr-to-video/scripts/lib/dimensions.mjs +45 -0
- package/skills/pr-to-video/scripts/lib/frame-contract.mjs +54 -0
- package/skills/pr-to-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/pr-to-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/pr-to-video/scripts/lib/tokens.mjs +211 -0
- package/skills/pr-to-video/scripts/lib/transition-registry.mjs +38 -0
- package/skills/pr-to-video/scripts/lib/transitions.json +71 -0
- package/skills/pr-to-video/scripts/preflight.mjs +51 -0
- package/skills/pr-to-video/scripts/project-dir.mjs +92 -0
- package/skills/pr-to-video/scripts/transitions.mjs +381 -0
- package/skills/pr-to-video/scripts/workflow-guardrails.test.mjs +198 -0
- package/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
- package/skills/product-launch-video/SKILL.md +260 -0
- package/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/skills/product-launch-video/references/motion-language.md +156 -0
- package/skills/product-launch-video/references/story-design.md +508 -0
- package/skills/product-launch-video/references/visual-design.md +126 -0
- package/skills/product-launch-video/scripts/assemble-index.mjs +771 -0
- package/skills/product-launch-video/scripts/assemble-index.test.mjs +72 -0
- package/skills/product-launch-video/scripts/audio.mjs +291 -0
- package/skills/product-launch-video/scripts/audio.test.mjs +218 -0
- package/skills/product-launch-video/scripts/build-frame.mjs +549 -0
- package/skills/product-launch-video/scripts/captions.mjs +521 -0
- package/skills/product-launch-video/scripts/captions.test.mjs +219 -0
- package/skills/product-launch-video/scripts/capture-skill-guardrails.test.mjs +39 -0
- package/skills/product-launch-video/scripts/frame-packets.mjs +27 -0
- package/skills/product-launch-video/scripts/frame-packets.test.mjs +144 -0
- package/skills/product-launch-video/scripts/lib/assets.mjs +56 -0
- package/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
- package/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/product-launch-video/scripts/lib/tokens.mjs +218 -0
- package/skills/product-launch-video/scripts/lib/tokens.test.mjs +57 -0
- package/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
- package/skills/product-launch-video/scripts/lib/transitions.json +71 -0
- package/skills/product-launch-video/scripts/media-contract.test.mjs +200 -0
- package/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
- package/skills/product-launch-video/scripts/stage-assets.test.mjs +52 -0
- package/skills/product-launch-video/scripts/transitions.mjs +381 -0
- package/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
- package/skills/remotion-to-hyperframes/SKILL.md +129 -0
- package/skills/remotion-to-hyperframes/assets/.gitkeep +0 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -0
- package/skills/remotion-to-hyperframes/references/api-map.md +142 -0
- package/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
- package/skills/remotion-to-hyperframes/references/eval.md +140 -0
- package/skills/remotion-to-hyperframes/references/fonts.md +112 -0
- package/skills/remotion-to-hyperframes/references/limitations.md +136 -0
- package/skills/remotion-to-hyperframes/references/lottie.md +121 -0
- package/skills/remotion-to-hyperframes/references/media.md +149 -0
- package/skills/remotion-to-hyperframes/references/parameters.md +167 -0
- package/skills/remotion-to-hyperframes/references/sequencing.md +198 -0
- package/skills/remotion-to-hyperframes/references/timing.md +165 -0
- package/skills/remotion-to-hyperframes/references/transitions.md +114 -0
- package/skills/remotion-to-hyperframes/scripts/.gitkeep +0 -0
- package/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -0
- package/skills/remotion-to-hyperframes/scripts/lint_source.py +370 -0
- package/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -0
- package/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -0
- package/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -0
- package/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -0
- package/skills/slideshow/SKILL.md +529 -0
- package/skills/slideshow/references/standalone-harness.md +1020 -0
- package/skills/talking-head-recut/NOTICE.md +39 -0
- package/skills/talking-head-recut/SKILL.md +1211 -0
- package/skills/talking-head-recut/assets/fonts/Caveat-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Caveat-700-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Inter-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Inter-700-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/LXGWWenKaiTC-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Virgil.woff2 +0 -0
- package/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
- package/skills/talking-head-recut/media-contract.test.mjs +35 -0
- package/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/skills/gsap/SKILL.md +0 -213
- package/skills/gsap/references/effects.md +0 -297
- package/skills/hyperframes/patterns.md +0 -118
- package/skills/hyperframes/references/captions.md +0 -132
- package/skills/hyperframes/references/css-patterns.md +0 -373
- package/skills/hyperframes/references/motion-principles.md +0 -69
- package/skills/hyperframes/references/tts.md +0 -75
- package/skills/hyperframes/scripts/contrast-report.mjs +0 -335
- package/skills/hyperframes/visual-styles.md +0 -211
- package/skills/website-to-hyperframes/SKILL.md +0 -125
- package/skills/website-to-hyperframes/references/step-1-capture.md +0 -74
- package/skills/website-to-hyperframes/references/step-2-design.md +0 -178
- package/skills/website-to-hyperframes/references/step-4-storyboard.md +0 -246
- package/skills/website-to-hyperframes/references/step-5-vo.md +0 -42
- package/skills/website-to-hyperframes/references/step-6-build.md +0 -229
- package/skills/website-to-hyperframes/references/step-7-validate.md +0 -114
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-3d.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-blur.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-cover.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-dissolve.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-distortion.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-grid.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-light.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-mechanical.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-other.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-push.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-radial.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-scale.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/bold-energetic.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/clean-corporate.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/dark-premium.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/jewel-rich.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/monochrome.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/nature-earth.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/neon-electric.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/pastel-soft.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/warm-editorial.md +0 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
# Diagnosing audio you cannot hear
|
|
2
|
+
|
|
3
|
+
The symptom table in `SKILL.md` starts from "it sounds boomy". That presumes
|
|
4
|
+
somebody already listened and said so. Handed a file and "fix this", you have
|
|
5
|
+
no such sentence — and you cannot listen. This is how to get one.
|
|
6
|
+
|
|
7
|
+
It is worth being blunt about the difficulty first, because the failure mode is
|
|
8
|
+
not "no answer", it is **a confident wrong answer**:
|
|
9
|
+
|
|
10
|
+
> **The absolute spectrum of a single unknown voice cannot be diagnosed.**
|
|
11
|
+
|
|
12
|
+
Every voice has peaks and dips of exactly the size an injected filter has.
|
|
13
|
+
Formants are ±10 dB. A speaker's fundamental sits anywhere from 85 to 255 Hz.
|
|
14
|
+
Sentences decline 5–6 dB from start to end as a matter of ordinary prosody. Look
|
|
15
|
+
at one spectrum on its own and you will find "defects" in all of it, and the
|
|
16
|
+
ones you find will be the speaker.
|
|
17
|
+
|
|
18
|
+
So diagnosis is always **comparison**. The whole method is choosing the right
|
|
19
|
+
thing to compare against.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Compare against something inside the same file
|
|
24
|
+
|
|
25
|
+
Ranked by how much they can tell you. Prefer the highest one available.
|
|
26
|
+
|
|
27
|
+
### 1. The clean original, if it exists
|
|
28
|
+
|
|
29
|
+
If the undamaged take is on disk, this is the whole job — measure both, subtract,
|
|
30
|
+
and the difference _is_ the defect. Nothing below is as good. Look for it before
|
|
31
|
+
anything else.
|
|
32
|
+
|
|
33
|
+
### 2. The pauses
|
|
34
|
+
|
|
35
|
+
The strongest reference that lives inside a single file. Speech stops; whatever
|
|
36
|
+
is still there in the gap is not the voice.
|
|
37
|
+
|
|
38
|
+
**What it answers: "was something added?"**
|
|
39
|
+
|
|
40
|
+
Anything audible in the pauses is additive — hum, rumble, hiss, room tone. It was
|
|
41
|
+
laid on top, so it can be subtracted, and this is a reliable positive finding.
|
|
42
|
+
|
|
43
|
+
**What it does NOT answer: "was something filtered?"** — and getting this
|
|
44
|
+
backwards is how the method produces a confident wrong answer.
|
|
45
|
+
|
|
46
|
+
A filter multiplies. Applied to a file whose gaps already sit at the
|
|
47
|
+
quantisation floor, it leaves them at the quantisation floor: near-silence times
|
|
48
|
+
anything is still near-silence. So the pause carries no trace of it. Measured on
|
|
49
|
+
one take with a −9 dB shelf above 2.5 kHz applied to the whole file:
|
|
50
|
+
|
|
51
|
+
| | 1 kHz | 5 kHz | tilt |
|
|
52
|
+
| ----------------- | ----- | ----- | --------- |
|
|
53
|
+
| pause, undamaged | −91.0 | −91.0 | +0.0 |
|
|
54
|
+
| pause, shelved | −91.0 | −91.0 | **+0.0** |
|
|
55
|
+
| speech, undamaged | −34.7 | −42.8 | −8.1 |
|
|
56
|
+
| speech, shelved | −35.4 | −48.5 | **−13.1** |
|
|
57
|
+
|
|
58
|
+
The defect is a clear 5 dB in the speech and **exactly zero** in the pause.
|
|
59
|
+
|
|
60
|
+
So: **never use a null result from the pause spectrum to rule out EQ.** A run
|
|
61
|
+
that did exactly that — measured the pause, found it smooth, and concluded
|
|
62
|
+
"static EQ of any type or Q is ruled out" — went on to treat an inaudible
|
|
63
|
+
−72 dBFS rumble as the defect and shipped a high-pass for a file whose actual
|
|
64
|
+
problem was that it had no top end.
|
|
65
|
+
|
|
66
|
+
The pause spectrum _is_ a transfer function only when the gaps carry a real
|
|
67
|
+
recorded noise floor that passed through the same filter. A room-tone bed does;
|
|
68
|
+
a digitally clean take does not. Check which you have before trusting it: if the
|
|
69
|
+
gaps are within a few dB of the quantisation floor, this reference can find
|
|
70
|
+
additive content and nothing else.
|
|
71
|
+
|
|
72
|
+
### 3. The speech's own tilt, for a suspected filter
|
|
73
|
+
|
|
74
|
+
When the pause cannot see a filter (above), the only thing left carrying it is
|
|
75
|
+
the speech. Read the tilt across a few 1/3-octave bands rather than any single
|
|
76
|
+
one — `1k / 3.2k / 5k / 7k` is enough to see a shelf:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
for f in 1000 3200 5000 7000; do third voice.wav $f; done
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Speech falls away steadily above about 1 kHz, so a downward slope is expected;
|
|
83
|
+
what you are looking for is a slope that keeps steepening, or a step. In the
|
|
84
|
+
table above, −8.1 dB from 1 k to 5 k is an ordinary voice and −13.1 dB is the
|
|
85
|
+
same voice with 9 dB taken off the top.
|
|
86
|
+
|
|
87
|
+
**This is a candidate, not a verdict.** Where the ordinary slope ends and a
|
|
88
|
+
defect begins is speaker-dependent, and you have no baseline for this speaker.
|
|
89
|
+
Say what you measured and what it would mean, and let somebody hear it.
|
|
90
|
+
|
|
91
|
+
### 4. The file against itself over time
|
|
92
|
+
|
|
93
|
+
For anything level-related, compare each passage to the track's own median rather
|
|
94
|
+
than to a target. That is what `levellingResult` does, and it is why an already
|
|
95
|
+
even track comes back untouched.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## Do not compare against a different voice
|
|
100
|
+
|
|
101
|
+
Both wrong answers in the evaluation that produced this page came from an
|
|
102
|
+
external reference, and both were argued rigorously from bad ground:
|
|
103
|
+
|
|
104
|
+
- **A published average spectrum** (LTASS and friends). One run concluded
|
|
105
|
+
"+10 dB above 7 kHz, split-half stable, gating-independent" on a file whose
|
|
106
|
+
actual defect was +6.6 dB at 200 Hz. Its supporting claim — 10 kHz sitting
|
|
107
|
+
6.2 dB above 6.3 kHz — measured 0.6 dB on re-check, and measured the same in
|
|
108
|
+
the clean original. Published curves are mixed-sex, mixed-corpus, and
|
|
109
|
+
mixed-microphone; the gap between them and any one speaker is larger than most
|
|
110
|
+
defects.
|
|
111
|
+
- **A synthesised control voice** (`say`, a TTS take, another narrator). One run
|
|
112
|
+
generated a control this way, found the spectrum "normal", and missed a −6.9 dB
|
|
113
|
+
shelf. Two speakers differ by more than 7 dB across the top octaves as a matter
|
|
114
|
+
of course, so a cross-voice comparison cannot resolve a defect that size.
|
|
115
|
+
|
|
116
|
+
If neither the original nor usable pauses exist — continuous speech, or gaps that
|
|
117
|
+
are digital silence and so carry no channel — then a static tonal defect is
|
|
118
|
+
**genuinely under-determined**.
|
|
119
|
+
|
|
120
|
+
Report that. It is a finding, not a failure to find one, and it is the correct
|
|
121
|
+
answer rather than the fallback when the better methods are unavailable. Give
|
|
122
|
+
the author the two or three readings that fit and ask which they hear; they can
|
|
123
|
+
listen, and that one sentence from them collapses the whole problem.
|
|
124
|
+
|
|
125
|
+
**This is the point where a capable agent goes wrong.** Told a thing is
|
|
126
|
+
under-determined, the instinct is to invent a cleverer measurement and escape
|
|
127
|
+
it — and something will always be found, because a single voice's spectrum is
|
|
128
|
+
full of peaks and valleys that survive any amount of statistical rigour. An
|
|
129
|
+
elaborate novel method reaching a confident conclusion, on a file where the two
|
|
130
|
+
reliable references were both unavailable, is the _signature_ of this failure,
|
|
131
|
+
not evidence against it. If you notice yourself building one, stop and report
|
|
132
|
+
the ambiguity instead.
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Recipes
|
|
137
|
+
|
|
138
|
+
### Compare loudness from the bytes the listener actually hears
|
|
139
|
+
|
|
140
|
+
Do not call two clips equally loud because their Studio faders, waveform peaks,
|
|
141
|
+
or cached asset metadata match. Those are controls and proxies, not a loudness
|
|
142
|
+
measurement. Resolve the exact URLs used by preview/render, download or inspect
|
|
143
|
+
those exact served bytes, and measure each decoded stream with FFmpeg's
|
|
144
|
+
`ebur128` filter. Compare the integrated LUFS values.
|
|
145
|
+
|
|
146
|
+
For a target loudness, the required move is:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
gain_db = target_lufs - measured_lufs
|
|
150
|
+
linear_gain = 10 ** (gain_db / 20)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
When both clips are local authored `<audio>` elements with stable ids, use the
|
|
154
|
+
CLI instead of transcribing that arithmetic by hand:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
npx hyperframes normalize-audio --reference target-audio --target user-audio
|
|
158
|
+
npx hyperframes normalize-audio --reference target-audio --target user-audio --write
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The first command is a dry run. The second writes only the target's
|
|
162
|
+
`data-volume`, after accounting for both existing gains and refusing a boost
|
|
163
|
+
that would clip or exceed Studio's ceiling. Always choose the reference from the
|
|
164
|
+
author's stated intent; the command does not guess which clip should define the
|
|
165
|
+
mix.
|
|
166
|
+
|
|
167
|
+
Studio's clip-gain fader uses `0 dB` / linear gain `1` at its physical midpoint
|
|
168
|
+
and provides up to `+12 dB` on the upper half. After changing gain, measure the
|
|
169
|
+
served preview/render bytes again. If a listener still hears a mismatch, trust
|
|
170
|
+
the report and first verify the asset URL and bytes are current; do not explain
|
|
171
|
+
it away with matching peaks or a stale proxy measurement.
|
|
172
|
+
|
|
173
|
+
All verified with ffmpeg 8.1.1. `-hide_banner` keeps the output readable;
|
|
174
|
+
`volumedetect` prints to stderr, so do not silence it with `-v error`.
|
|
175
|
+
|
|
176
|
+
### Band energy, in proportional bands
|
|
177
|
+
|
|
178
|
+
**Use proportional bandwidths or the numbers lie.** A fixed 2000 Hz-wide band at
|
|
179
|
+
10 kHz collects more energy than a 1200 Hz-wide band at 6.3 kHz for no reason but
|
|
180
|
+
its width, which manufactures a high-frequency excess that is not there. One
|
|
181
|
+
third of an octave is `f × 0.2316`.
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
third() {
|
|
185
|
+
w=$(python3 -c "print(round($2*0.2316))")
|
|
186
|
+
ffmpeg -hide_banner -i "$1" -af "bandpass=f=$2:width_type=h:w=$w,volumedetect" \
|
|
187
|
+
-f null - 2>&1 | grep -m1 mean_volume
|
|
188
|
+
}
|
|
189
|
+
third voice.wav 200 # weight / boom
|
|
190
|
+
third voice.wav 3200 # presence / harshness
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Read them as a shape across 100 / 200 / 400 / 1k / 3.2k / 7k, and read the shape
|
|
194
|
+
against a reference from the list above — never on its own.
|
|
195
|
+
|
|
196
|
+
### The noise floor, and what is in it
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
ffmpeg -hide_banner -i voice.wav -af astats=metadata=1 -f null - 2>&1 | grep -i 'noise floor'
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
`-inf` means digital silence in the gaps: no additive noise, so rumble, hiss and
|
|
203
|
+
room tone are all ruled out in one command. A real number is the level of
|
|
204
|
+
whatever is sitting under the voice. To see its _shape_, cut a pause out with
|
|
205
|
+
`-ss`/`-t` and run the band recipe on that slice alone.
|
|
206
|
+
|
|
207
|
+
### Level over time
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
ffmpeg -hide_banner -i voice.wav -af ebur128=framelog=quiet -f null - 2>&1 | tail -6
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
LRA under ~3 LU is even. Then window it, because LRA hides a single sagging
|
|
214
|
+
passage:
|
|
215
|
+
|
|
216
|
+
```bash
|
|
217
|
+
for s in 0 1.2 2.4 3.6 4.8 6.0; do
|
|
218
|
+
ffmpeg -hide_banner -ss $s -t 1.2 -i voice.wav -af volumedetect -f null - 2>&1 |
|
|
219
|
+
grep -m1 mean_volume
|
|
220
|
+
done
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**A 4–6 dB spread across windows is normal speech**, not a defect — sentences
|
|
224
|
+
decline as they end. Injected unevenness looks like 12 dB or more. Levelling a
|
|
225
|
+
track that only has declination flattens the prosody and is heard as robotic.
|
|
226
|
+
|
|
227
|
+
### Pitch, before blaming the low end
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
ffmpeg -hide_banner -i voice.wav -af "lowpass=f=400,astats=metadata=1" -f null - 2>&1 | grep -i 'peak level'
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
A voice has no energy below its own fundamental, so a "missing" 100 Hz on a
|
|
234
|
+
speaker whose F0 is 210 Hz is the speaker, not a rolloff.
|
|
235
|
+
|
|
236
|
+
The same fact runs the other way, and that direction is the trap: **a boost near
|
|
237
|
+
the fundamental is indistinguishable from that voice being naturally chesty.**
|
|
238
|
+
Both look like energy at F0, because both are.
|
|
239
|
+
|
|
240
|
+
So the rule is symmetric, and the dangerous half is the second one:
|
|
241
|
+
|
|
242
|
+
- Do not call a peak at F0 a defect on its own evidence.
|
|
243
|
+
- **Do not dismiss one either.** "The peak is at 200 Hz, F0 is 185 Hz, therefore
|
|
244
|
+
it is the fundamental" is not a diagnosis — it is the same observation
|
|
245
|
+
restated, and it discards the one candidate most likely to be real. Boominess
|
|
246
|
+
_is_ excess energy at the bottom of a voice; that is what the word means.
|
|
247
|
+
|
|
248
|
+
What you can do is measure how much, against the same file's midrange:
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
third voice.wav 200 # or the nearest 1/3-octave band to F0
|
|
252
|
+
third voice.wav 1000
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
In an ordinary take these land within a couple of dB of each other. A low band
|
|
256
|
+
sitting **more than about 4 dB above the 1 kHz band** is a strong boom or mud
|
|
257
|
+
candidate. Measured across one voice damaged several ways: undamaged +0.9,
|
|
258
|
+
harsh +0.6, dull +2.0; boomy +6.7, muddy +5.8. Treat the figure as indicative
|
|
259
|
+
rather than a threshold — it is one speaker — but the separation is wide, and a
|
|
260
|
+
reading up at +6 is worth raising even when you cannot explain it.
|
|
261
|
+
|
|
262
|
+
It still cannot tell you whether a filter did that or the speaker did, so report
|
|
263
|
+
it as a candidate. That is the whole answer here: measure it, name it, hand the
|
|
264
|
+
choice to somebody who can hear it.
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
## Then, and only then, the symptom table
|
|
269
|
+
|
|
270
|
+
Measurement gives you the band and the kind. `SKILL.md`'s table and
|
|
271
|
+
`presets.md`'s fuller one turn that into a fix. Going the other way round —
|
|
272
|
+
picking a plausible fix and finding evidence for it — is how both wrong answers
|
|
273
|
+
in the evaluation happened, and both were long, careful and confident.
|
|
274
|
+
|
|
275
|
+
One habit that catches it: before applying anything, state what you would expect
|
|
276
|
+
to measure **if you are wrong**, and check that too.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Effect registry
|
|
2
|
+
|
|
3
|
+
Every effect, its parameters and the usable range of each. Values outside a range
|
|
4
|
+
are clamped on read, so anything that parses is safe to realise. **AUTO** marks a
|
|
5
|
+
parameter an automation lane can drive; anything unmarked cannot move over time
|
|
6
|
+
(see the note at the bottom).
|
|
7
|
+
|
|
8
|
+
Generated from `HF_AUDIO_FX` in `@hyperframes/core/audio-fx`, which is the source
|
|
9
|
+
of truth — if this table and the code disagree, the code is right.
|
|
10
|
+
|
|
11
|
+
## Filter — which frequencies a track may occupy
|
|
12
|
+
|
|
13
|
+
| Effect | Parameter |
|
|
14
|
+
| ----------- | ----------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `highpass` | `frequency` 20–20000 Hz (300, log) **AUTO** · `q` 0.1–20 (0.707, log) **AUTO** · `poles` `1`\|`2` (2) |
|
|
16
|
+
| `lowpass` | `frequency` 100–20000 Hz (8000, log) **AUTO** · `q` 0.1–20 (0.707, log) **AUTO** · `poles` `1`\|`2` (2) |
|
|
17
|
+
| `peaking` | `frequency` 20–20000 Hz (1000, log) **AUTO** · `gain` −40–40 dB (0) **AUTO** · `q` 0.1–20 (1, log) **AUTO** |
|
|
18
|
+
| `lowshelf` | `frequency` 20–2000 Hz (200, log) **AUTO** · `gain` −40–40 dB (0) **AUTO** |
|
|
19
|
+
| `highshelf` | `frequency` 500–20000 Hz (4000, log) **AUTO** · `gain` −40–40 dB (0) **AUTO** |
|
|
20
|
+
|
|
21
|
+
`q` is bandwidth — higher is narrower. `poles` is the slope: `2` is the usual
|
|
22
|
+
biquad (12 dB/oct), `1` is gentler (6 dB/oct). Shelving filters have no `q`: the
|
|
23
|
+
Web Audio spec leaves it unused for them, so a control would have moved nothing.
|
|
24
|
+
|
|
25
|
+
## Dynamics — how level behaves over time
|
|
26
|
+
|
|
27
|
+
| Effect | Parameter |
|
|
28
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
29
|
+
| `gain` | `gain` −60–12 dB (0) **AUTO** |
|
|
30
|
+
| `compressor` | `threshold` −60–0 dB (−24) · `ratio` 1–20 (4) · `attack` 0.01–2000 ms (20, log) · `release` 0.01–9000 ms (250, log) · `knee` 1–8 (2.83) · `makeup` 0–36 dB (0) · `mix` 0–1 (1) |
|
|
31
|
+
| `limiter` | `limit` −24–0 dB (−1) · `attack` 0.1–80 ms (5) · `release` 1–8000 ms (50, log) · `level_out` −24–24 dB (0) |
|
|
32
|
+
| `gate` | `threshold` −80–0 dB (−35) · `range` −80–0 dB (−24) · `ratio` 1–20 (10) · `attack` 0.01–9000 ms (1, log) · `release` 0.01–9000 ms (100, log) · `knee` 1–8 (2.83) |
|
|
33
|
+
|
|
34
|
+
Cuts on `gain` go to −60 dB, boosts stop at +12: it is a level stage for making
|
|
35
|
+
room, and a chain that could add 40 dB would clip long before that was useful.
|
|
36
|
+
`knee` of 1 is a hard corner, higher eases into it. `mix` below 1 blends the dry
|
|
37
|
+
signal back in (parallel compression). `range` is how far down the gate pulls
|
|
38
|
+
when closed — a gate that pulls all the way to silence sounds like a switch.
|
|
39
|
+
|
|
40
|
+
## Nonlinear — changes the waveform's shape
|
|
41
|
+
|
|
42
|
+
| Effect | Parameter |
|
|
43
|
+
| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
44
|
+
| `saturate` | `type` `tanh`\|`atan`\|`cubic`\|`exp`\|`alg`\|`quintic`\|`sin`\|`erf`\|`hard` (tanh) · `threshold` −40–0 dB (−6) · `output` −24–24 dB (0) **AUTO** · `oversample` 1–8× (4) |
|
|
45
|
+
| `bitcrush` | `bits` 1–32 (8) · `samples` 1–250× (1) · `mix` 0–1 (1) |
|
|
46
|
+
|
|
47
|
+
`tanh` is the gentlest curve and `hard` is outright clipping. Higher `oversample`
|
|
48
|
+
costs more CPU and keeps aliasing down. `samples` repeats each sample N times — a
|
|
49
|
+
crude downsample, which is where the lo-fi character comes from.
|
|
50
|
+
|
|
51
|
+
## Time — space and width
|
|
52
|
+
|
|
53
|
+
| Effect | Parameter |
|
|
54
|
+
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
55
|
+
| `delay` | `time` 1–5000 ms (250, log) **AUTO** · `feedback` 0.01–0.95 (0.35) **AUTO** · `mix` 0–1 (0.4) **AUTO** |
|
|
56
|
+
| `reverb` | `size` 0.05–1 (0.7) · `damping` 0–1 (0.5) · `wet` 0–1 (0.35) **AUTO** · `dry` 0–1 (0.7) **AUTO** |
|
|
57
|
+
| `chorus` | `delay` 1–100 ms (7) **AUTO** · `depth` 0–10 ms (2) **AUTO** · `speed` 0.01–10 Hz (1) **AUTO** · `mix` 0–1 (0.5) **AUTO** |
|
|
58
|
+
| `phaser` | `in_gain` 0–1 (0.4) **AUTO** · `out_gain` 0–2 (0.74) **AUTO** · `delay` 0.1–5 ms (3) · `decay` 0–0.99 (0.4) · `speed` 0.1–2 Hz (0.5) **AUTO** · `type` `0`\|`1` (0) |
|
|
59
|
+
|
|
60
|
+
Reverb convolves a _generated_ impulse, and both preview and render generate the
|
|
61
|
+
same one — so a room is reproducible without shipping an impulse file. Higher
|
|
62
|
+
`damping` rolls the top off the tail faster, which is what makes a large room
|
|
63
|
+
sound like a soft one. `feedback` near the top of its range is a very long tail;
|
|
64
|
+
it is bounded below 1 because at 1 it never decays.
|
|
65
|
+
|
|
66
|
+
## Why some parameters cannot be automated
|
|
67
|
+
|
|
68
|
+
Automation is handed to the audio thread once, as native `AudioParam` ramps and
|
|
69
|
+
curves, which is what keeps it sample-accurate and identical between preview and
|
|
70
|
+
render. A parameter can therefore only be automated if an `AudioParam` backs it.
|
|
71
|
+
Three kinds do not:
|
|
72
|
+
|
|
73
|
+
- **worklet processor options** — `compressor`, `limiter`, `gate` and `bitcrush`
|
|
74
|
+
are AudioWorklets configured wholesale, so **none of their parameters are
|
|
75
|
+
automatable at all**.
|
|
76
|
+
- **a WaveShaper curve** — `saturate`'s `type`, `threshold` and `oversample`
|
|
77
|
+
rebuild the curve; only its `output` stage is a real param.
|
|
78
|
+
- **a convolution impulse** — `reverb`'s `size` and `damping` regenerate the
|
|
79
|
+
impulse; `wet`/`dry` are gain stages and automate fine.
|
|
80
|
+
|
|
81
|
+
To make one of those behave differently over time, automate a `gain` stage
|
|
82
|
+
around it instead: a lane on a `gain` before a compressor changes how hard the
|
|
83
|
+
compressor is driven, which is most of what automating its threshold would have
|
|
84
|
+
done.
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
# Presets, jobs and one-knob profiles
|
|
2
|
+
|
|
3
|
+
Everything here is a shortcut to a chain you could have built by hand. A preset
|
|
4
|
+
writes ordinary nodes tagged with `fromPreset`, a job writes one ordinary node
|
|
5
|
+
with a name, and a profile is one control over several parameters of one effect.
|
|
6
|
+
Nothing is opaque: open any of them and you find effects from
|
|
7
|
+
[`fx-registry.md`](./fx-registry.md) with their parameters showing.
|
|
8
|
+
|
|
9
|
+
Reach for one when it names the problem you actually have. Build by hand when
|
|
10
|
+
none of them does — a preset applied because it was nearby is worse than three
|
|
11
|
+
deliberate nodes.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Diagnose first: what to listen for, and what fixes it
|
|
16
|
+
|
|
17
|
+
Work from the symptom, not from the effect list. Most bad audio is one or two of
|
|
18
|
+
these, and the fix is usually a job rather than a whole preset.
|
|
19
|
+
|
|
20
|
+
| It sounds like | Where it lives | Reach for |
|
|
21
|
+
| --------------------------------------------- | -------------- | ------------------------------------------------------------ |
|
|
22
|
+
| Hum, rumble, traffic, footsteps, handling | 20–80 Hz | `rumble-cut` preset, or a `highpass` at 80 Hz |
|
|
23
|
+
| Boomy, chesty, too close to the mic | 80–250 Hz | **Tame Boominess** job (200 Hz, −4 dB) |
|
|
24
|
+
| Muffled, like it is behind cardboard | 250–600 Hz | **Reduce Mud** job (250 Hz, −3 dB) |
|
|
25
|
+
| Boxy, like a small room | ~400 Hz | **Reduce Boxiness** job (400 Hz, −3 dB) |
|
|
26
|
+
| Words hard to make out, sits behind the music | 2–5 kHz | **Add Clarity** job (3 kHz, +2.5 dB), or carve the bed |
|
|
27
|
+
| Harsh, brittle, tiring over a whole listen | 3–5 kHz | **Soften Harshness** job (3.2 kHz, −3 dB) |
|
|
28
|
+
| Sibilant — `s` sounds spitting | 5–10 kHz | Nothing shipped does this properly; see "Not covered" below |
|
|
29
|
+
| Dull, closed-in, lifeless | 10–20 kHz | `highshelf` lift, or `voice-broadcast` which includes one |
|
|
30
|
+
| Some words much louder than others | not a band | **Evenness** profile on a `compressor`, or `levellingResult` |
|
|
31
|
+
| Room tone audible between sentences | not a band | `room-gate` preset (**Tightness** profile) |
|
|
32
|
+
| Peaks clipping or spiking | not a band | `limiter` last in the chain — every voice preset ends in one |
|
|
33
|
+
| Voice and music fighting each other | 1–3 kHz mostly | **Voiceover carve**, not an EQ on either track |
|
|
34
|
+
| Dry, stuck to the speaker, recorded nowhere | not a band | `room-tight` or `room-natural` |
|
|
35
|
+
|
|
36
|
+
**The band vocabulary** these map onto — the same names the rack shows:
|
|
37
|
+
|
|
38
|
+
| Range | Name | What lives there |
|
|
39
|
+
| -------------- | -------- | ---------------------------- |
|
|
40
|
+
| 20–80 Hz | Rumble | traffic, footsteps, handling |
|
|
41
|
+
| 80–250 Hz | Weight | chest, body, warmth |
|
|
42
|
+
| 250–600 Hz | Mud | boxy, muffled, cardboard |
|
|
43
|
+
| 600–2000 Hz | Middle | the body of a voice |
|
|
44
|
+
| 2000–5000 Hz | Presence | consonants, intelligibility |
|
|
45
|
+
| 5000–10000 Hz | Edge | sibilance, harshness |
|
|
46
|
+
| 10000–20000 Hz | Air | sparkle, openness |
|
|
47
|
+
|
|
48
|
+
### Order of operations
|
|
49
|
+
|
|
50
|
+
Diagnose in this order, because each step changes what the next one hears:
|
|
51
|
+
|
|
52
|
+
1. **Subtract before you add.** Cut rumble and mud first. A voice that sounds
|
|
53
|
+
dull often has too much low-mid, not too little top — lifting the top of a
|
|
54
|
+
muddy voice makes it muddy _and_ harsh.
|
|
55
|
+
2. **Level after you filter.** A compressor reacts to whatever is loudest, and
|
|
56
|
+
a rumble it can no longer see is a rumble it stops chasing.
|
|
57
|
+
3. **Relationships after level.** Carve a bed against a voice once the voice
|
|
58
|
+
itself is settled, or the analysis measures a problem you are about to fix.
|
|
59
|
+
4. **Character, then ceiling.** Saturation and space go late; a `limiter` goes
|
|
60
|
+
last, where it can actually act as a ceiling. Anything after it is not
|
|
61
|
+
bounded by it.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Presets
|
|
66
|
+
|
|
67
|
+
Four families, listed in full below. Apply one and it **appends** — stacking a character preset
|
|
68
|
+
onto an already-cleaned voice is a real thing to want. Re-applying one that is
|
|
69
|
+
already present replaces its own nodes in place, because position in the chain
|
|
70
|
+
is signal order.
|
|
71
|
+
|
|
72
|
+
### Voice — make a real voice sound like its better self
|
|
73
|
+
|
|
74
|
+
| Preset | Answers | Chain |
|
|
75
|
+
| ----------------- | ------------------------------- | --------------------------------------------------------------------------------------------------- |
|
|
76
|
+
| `voice-clean` | "My voice sounds amateur" | Remove Rumble → Reduce Mud → Even Out Loudness → Add Clarity → Peak Ceiling |
|
|
77
|
+
| `voice-broadcast` | "I want it to sound like radio" | Remove Rumble → Reduce Boxiness → Even Out Loudness → Add Clarity → Add Air → Warmth → Peak Ceiling |
|
|
78
|
+
| `voice-warm` | "I want it intimate and close" | Remove Rumble → Add Weight → Even Out Loudness → Add Clarity → Peak Ceiling |
|
|
79
|
+
|
|
80
|
+
`voice-clean` is the default answer to "fix this voiceover". The other two are
|
|
81
|
+
the same idea pushed in one direction: broadcast is denser and more forward,
|
|
82
|
+
warm has body added rather than cut.
|
|
83
|
+
|
|
84
|
+
### Repair — one problem, one node
|
|
85
|
+
|
|
86
|
+
| Preset | Answers | Does |
|
|
87
|
+
| ------------ | --------------------------------------- | --------------------------------------------------------------------------- |
|
|
88
|
+
| `rumble-cut` | "There's a hum or thump underneath" | High-pass under the voice |
|
|
89
|
+
| `room-gate` | "I can hear the room between sentences" | Closes the pauses. **Does not remove noise** — room tone under speech stays |
|
|
90
|
+
| `boom-tame` | "My voice sounds boomy" | Cuts the chestiness of a too-close mic |
|
|
91
|
+
| `harsh-tame` | "It's harsh and tiring to listen to" | Rounds a brittle upper-mid, broad and always-on |
|
|
92
|
+
|
|
93
|
+
### Character — deliberate, not corrective
|
|
94
|
+
|
|
95
|
+
`telephone`, `radio-am`, `megaphone`, `lofi-tape`, `pa-system` (Tannoy),
|
|
96
|
+
`intercom`, `doofus-worble`.
|
|
97
|
+
|
|
98
|
+
These are costumes. Each is a band restriction plus a resonance plus its own kind
|
|
99
|
+
of dirt, and they are tuned to be distinguishable from one another — measured on
|
|
100
|
+
a log sweep, no two sit closer than the signal itself. Do not stack two.
|
|
101
|
+
|
|
102
|
+
### Space — put it somewhere
|
|
103
|
+
|
|
104
|
+
`room-tight` (presence without wash), `room-natural` (recorded somewhere rather
|
|
105
|
+
than nowhere), `hall` (far back and big), `slap-echo` (one quick repeat),
|
|
106
|
+
`dub-throw` (repeats trailing well behind).
|
|
107
|
+
|
|
108
|
+
Use these on whatever should sit _behind_ something else, and keep the wet amount
|
|
109
|
+
lower than sounds right in isolation — a tail occupies the room a voice needs.
|
|
110
|
+
|
|
111
|
+
### The whole preset as one control
|
|
112
|
+
|
|
113
|
+
A preset's nodes are wrapped in a wet/dry blend, so `presetAmount` (0..1) fades
|
|
114
|
+
the entire thing in or out, and `fx.preset.<id>` is an automation target that
|
|
115
|
+
ramps it over time. This is the only way to automate a preset as a unit: its
|
|
116
|
+
nodes share no common parameter, and worklet effects (compressor, limiter, gate,
|
|
117
|
+
bitcrush) expose no automatable parameters at all.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## Jobs — the range IS the module
|
|
122
|
+
|
|
123
|
+
Five named peaking filters with the frequency already chosen. Picking the job is
|
|
124
|
+
picking the range, which is what makes a single "how much" knob honest.
|
|
125
|
+
|
|
126
|
+
| Job | Symptom | Sets |
|
|
127
|
+
| ---------------- | ------------------------------------ | --------------------- |
|
|
128
|
+
| Tame Boominess | Too much chest — it booms | 200 Hz, −4 dB, Q 1.4 |
|
|
129
|
+
| Reduce Mud | Muffled, like it is behind cardboard | 250 Hz, −3 dB, Q 1.2 |
|
|
130
|
+
| Reduce Boxiness | Sounds like a small room, or a box | 400 Hz, −3 dB, Q 1.4 |
|
|
131
|
+
| Add Clarity | Words are hard to make out | 3 kHz, +2.5 dB, Q 1 |
|
|
132
|
+
| Soften Harshness | Harsh and tiring to listen to | 3.2 kHz, −3 dB, Q 1.6 |
|
|
133
|
+
|
|
134
|
+
Each is an ordinary `peaking` node underneath — the frequency is a starting
|
|
135
|
+
point, not a cage. Prefer a job to a bare `peaking` when one matches: it arrives
|
|
136
|
+
already aimed, and the rack names it for the work rather than the mechanism.
|
|
137
|
+
|
|
138
|
+
Writing one by hand, **carry the name in `label`** — `{"type":"peaking","id":"n2",
|
|
139
|
+
"label":"Reduce Mud","params":{"frequency":250,"gain":-3,"q":1.2}}`. The
|
|
140
|
+
parameters alone are not the job. A chain with three unlabelled `peaking` nodes
|
|
141
|
+
shows the author three identical rows, which is the exact problem jobs exist to
|
|
142
|
+
dissolve.
|
|
143
|
+
|
|
144
|
+
**Every job also ships inside a preset, at identical settings** — that is where
|
|
145
|
+
the five came from. `boom-tame` _is_ Tame Boominess; `harsh-tame` _is_ Soften
|
|
146
|
+
Harshness; `voice-clean` contains Reduce Mud and Add Clarity; `voice-broadcast`
|
|
147
|
+
contains Reduce Boxiness. So check what a preset already contains before adding
|
|
148
|
+
a job on top of it, or the cut lands twice — `voice-clean` plus a Reduce Mud job
|
|
149
|
+
is −6 dB at 250 Hz where −3 was meant. The rack shows the contained nodes by
|
|
150
|
+
name once the preset is expanded, which is the fastest way to see it.
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## One-knob profiles
|
|
155
|
+
|
|
156
|
+
Five effects have no single parameter that can honestly be their face — a
|
|
157
|
+
compressor's threshold means nothing without its ratio. They get a derived
|
|
158
|
+
control instead, 0..1, which sets several parameters together.
|
|
159
|
+
|
|
160
|
+
| Effect | Knob | 0 → 1 | Sets |
|
|
161
|
+
| ------------ | --------- | ------------------------------------------ | ----------------------------------------- |
|
|
162
|
+
| `compressor` | Evenness | Barely touched → Very even, quite squashed | threshold, ratio, attack, release, makeup |
|
|
163
|
+
| `gate` | Tightness | Only true silence → Cuts quiet words too | threshold, range, release |
|
|
164
|
+
| `saturate` | Warmth | Just a sheen → Openly distorted | threshold, output |
|
|
165
|
+
| `reverb` | Space | A small tight room → A big open hall | size, wet, dry |
|
|
166
|
+
| `bitcrush` | Crush | Slightly gritty → Destroyed | bits, samples, mix |
|
|
167
|
+
|
|
168
|
+
**Evenness, Warmth and Space are level-matched** — the make-up gain, the output
|
|
169
|
+
trim and the dry leg move with the drive, so turning the knob up does not also
|
|
170
|
+
turn the track up or down. Those figures were solved by measurement, not chosen:
|
|
171
|
+
the compressor originally left a track 2.5 dB _quieter_ at full evenness, and
|
|
172
|
+
saturation's trim ran the wrong way entirely.
|
|
173
|
+
|
|
174
|
+
Tightness and Crush are not level-matched, because neither has a trim to move —
|
|
175
|
+
a gate only removes, and Crush's `mix` is the effect itself rather than a
|
|
176
|
+
make-up.
|
|
177
|
+
|
|
178
|
+
The chain stores the mechanism values, not the knob position; the knob is read
|
|
179
|
+
back by inverting the curve. So hand-editing a parameter under a profile is
|
|
180
|
+
allowed and will simply move the knob.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Measuring scripts, not presets
|
|
185
|
+
|
|
186
|
+
Two things measure the audio before they act, so they cannot be a fixed chain:
|
|
187
|
+
|
|
188
|
+
- **Voiceover carve** — analyses the voice and cuts the bed in the bands the
|
|
189
|
+
voice occupies. The answer to "the music is fighting the voice". See the
|
|
190
|
+
carve section in `SKILL.md`.
|
|
191
|
+
- **Even Out Levels** (`levellingResult`) — measures the track's own speaking
|
|
192
|
+
windows and writes a gain envelope. Its target is the 80th percentile of that
|
|
193
|
+
track, not an absolute level, so an already-even track is left alone. Use it
|
|
194
|
+
over a compressor when the problem is passages drifting over a whole take
|
|
195
|
+
rather than word-to-word dynamics.
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Not covered by anything shipped
|
|
200
|
+
|
|
201
|
+
Name the gap rather than reaching for the nearest preset and calling it the
|
|
202
|
+
thing — but then **ship the honest fallback anyway**, with its cost stated. An
|
|
203
|
+
author who asked for a fix and got only an explanation has been told something
|
|
204
|
+
true and handed nothing. Say what it is, say what it costs, apply it.
|
|
205
|
+
|
|
206
|
+
- **De-essing.** `harsh-tame` is a broad always-on cut centred a band too low,
|
|
207
|
+
not a de-esser. A real one needs a detector faster than the analysis hop
|
|
208
|
+
available here. _Fallback:_ a narrow `peaking` cut in the Edge band — sweep
|
|
209
|
+
5–9 kHz to find where this voice actually spits, Q 3–4, −3 to −5 dB. It is
|
|
210
|
+
always on, so it costs a little air on every word; that trade is usually worth
|
|
211
|
+
it and is the author's to reject.
|
|
212
|
+
- **Tone matching** one track to another. _Fallback:_ the Tone EQ by hand, which
|
|
213
|
+
is predictable in a way a match curve derived from two takes would not be.
|
|
214
|
+
- **Noise removal.** `room-gate` closes the gaps; the noise under speech is
|
|
215
|
+
untouched. There is no fallback for hiss beneath the words — a source with
|
|
216
|
+
audible hiss needs a better source, and saying so is the whole answer.
|