dsh-hyperframes 0.9.1 → 0.9.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -1
- package/README.en.md +3 -1
- package/README.md +3 -1
- package/docs/USAGE.en.md +2 -2
- package/docs/USAGE.md +2 -2
- package/lib/client.js +84 -67
- package/lib/index.js +1 -1
- package/lib/media-templates.d.ts +3 -3
- package/lib/media-templates.js +1 -1
- package/package.json +4 -3
- package/plugin.json +5 -0
- package/skills/NOTICE.md +3 -0
- package/skills/UPSTREAM-LICENSE.txt +190 -0
- package/skills/UPSTREAM.json +355 -0
- package/skills/embedded-captions/SKILL.md +4 -277
- package/skills/faceless-explainer/SKILL.md +4 -231
- package/skills/figma/SKILL.md +34 -113
- package/skills/general-video/SKILL.md +4 -161
- package/skills/hyperframes/SKILL.md +52 -115
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/biennale-yellow/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blockframe/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blue-professional/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/bold-poster/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/broadside/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/capsule/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cartesian/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cobalt-grid/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/FRAME.md +2 -2
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/coral/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/creative-mode/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/daisy-days/caption-skin.html +7 -8
- package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/editorial-forest/caption-skin.html +7 -8
- package/skills/hyperframes/references/captions.md +46 -0
- package/skills/hyperframes/references/film.md +48 -0
- package/skills/hyperframes/references/format.md +158 -0
- package/skills/hyperframes/references/look.md +69 -0
- package/skills/hyperframes/references/motion.md +95 -0
- package/skills/hyperframes/references/overlays.md +39 -0
- package/skills/hyperframes/references/plugin-installation.md +3 -3
- package/skills/hyperframes/references/review.md +51 -0
- package/skills/hyperframes/references/runtimes.md +69 -0
- package/skills/hyperframes/references/skill-lifecycle.md +28 -14
- package/skills/hyperframes/references/sound.md +43 -0
- package/skills/hyperframes/references/spec.md +76 -0
- package/skills/hyperframes/references/story.md +103 -0
- package/skills/hyperframes/references/storyboard-format.md +30 -22
- package/skills/hyperframes/references/storyboard.md +36 -0
- package/skills/hyperframes/references/types/3d.md +25 -0
- package/skills/hyperframes/references/types/character.md +20 -0
- package/skills/hyperframes/references/types/data.md +19 -0
- package/skills/hyperframes/references/types/explainer.md +34 -0
- package/skills/hyperframes/references/types/launch.md +41 -0
- package/skills/hyperframes/references/types/music.md +24 -0
- package/skills/hyperframes/references/types/vertical.md +23 -0
- package/skills/{motion-graphics/categories/maps → hyperframes/scripts}/bake-basemap.mjs +71 -20
- package/skills/hyperframes/scripts/lib/main-module.mjs +13 -0
- package/skills/hyperframes/scripts/lib/main-module.test.mjs +46 -0
- package/skills/{motion-graphics/grounding → hyperframes/scripts}/locate.mjs +1 -1
- package/skills/hyperframes/scripts/plugin-cli.mjs +4 -3
- package/skills/hyperframes/scripts/plugin-cli.test.mjs +5 -1
- package/skills/hyperframes-animation/SKILL.md +4 -82
- package/skills/hyperframes-audio/SKILL.md +4 -472
- package/skills/hyperframes-cli/SKILL.md +76 -158
- package/skills/hyperframes-cli/references/beats.md +3 -7
- package/skills/hyperframes-cli/references/cloud.md +4 -4
- package/skills/hyperframes-cli/references/cloudrun.md +2 -2
- package/skills/hyperframes-cli/references/conventions.md +17 -0
- package/skills/hyperframes-cli/references/doctor-browser.md +24 -1
- package/skills/hyperframes-cli/references/feedback.md +14 -0
- package/skills/hyperframes-cli/references/init-and-scaffold.md +13 -8
- package/skills/hyperframes-cli/references/lambda.md +6 -2
- package/skills/hyperframes-cli/references/lint-validate-inspect.md +34 -11
- package/skills/hyperframes-cli/references/preview-render.md +13 -4
- package/skills/hyperframes-cli/references/upgrade-info-misc.md +8 -0
- package/skills/hyperframes-core/SKILL.md +4 -94
- package/skills/hyperframes-creative/SKILL.md +4 -67
- package/skills/hyperframes-keyframes/SKILL.md +4 -258
- package/skills/hyperframes-registry/SKILL.md +37 -128
- package/skills/hyperframes-registry/references/discovery.md +2 -2
- package/skills/hyperframes-registry/references/search.md +67 -0
- package/skills/hyperframes-studio/SKILL.md +4 -71
- package/skills/media-use/SKILL.md +50 -88
- package/skills/media-use/audio/references/bgm.md +4 -2
- package/skills/media-use/audio/references/captions/authoring.md +1 -2
- package/skills/media-use/audio/references/captions/motion.md +5 -5
- package/skills/media-use/audio/references/requirements.md +7 -7
- package/skills/media-use/audio/references/sfx.md +20 -14
- package/skills/media-use/audio/references/transcribe.md +2 -2
- package/skills/media-use/audio/references/tts.md +26 -12
- package/skills/media-use/audio/scripts/audio.mjs +25 -17
- package/skills/media-use/audio/scripts/audio.test.mjs +121 -4
- package/skills/{hyperframes-audio → media-use/audio}/scripts/carve.mjs +2 -14
- package/skills/media-use/audio/scripts/gemini-pipeline.test.mjs +20 -2
- package/skills/media-use/audio/scripts/heygen-tts.mjs +3 -2
- package/skills/media-use/audio/scripts/heygen-tts.test.mjs +38 -0
- package/skills/media-use/audio/scripts/heygen-voice.mjs +98 -0
- package/skills/media-use/audio/scripts/heygen-voice.test.mjs +233 -0
- package/skills/media-use/audio/scripts/lib/bgm.mjs +8 -4
- package/skills/media-use/audio/scripts/lib/bgm.test.mjs +45 -1
- package/skills/media-use/audio/scripts/lib/heygen.mjs +100 -16
- package/skills/media-use/audio/scripts/lib/heygen.test.mjs +205 -16
- package/skills/media-use/audio/scripts/lib/main-module.mjs +13 -0
- package/skills/media-use/audio/scripts/lib/media-record.mjs +118 -0
- package/skills/media-use/audio/scripts/lib/media-record.test.mjs +224 -0
- package/skills/media-use/audio/scripts/lib/openverse.mjs +134 -0
- package/skills/media-use/audio/scripts/lib/python.mjs +19 -5
- package/skills/media-use/audio/scripts/lib/python.test.mjs +69 -1
- package/skills/media-use/audio/scripts/lib/sfx.mjs +141 -88
- package/skills/media-use/audio/scripts/lib/sfx.test.mjs +270 -8
- package/skills/media-use/audio/scripts/lib/tts.cleanup.test.mjs +175 -0
- package/skills/media-use/audio/scripts/lib/tts.mjs +28 -24
- package/skills/media-use/audio/scripts/lib/tts.test.mjs +74 -1
- package/skills/media-use/audio/scripts/wait-bgm.mjs +4 -0
- package/skills/media-use/audio/scripts/wait-bgm.test.mjs +44 -1
- package/skills/media-use/references/audio.md +2 -2
- package/skills/media-use/references/grading.md +5 -4
- package/skills/media-use/references/local.md +24 -0
- package/skills/media-use/references/media-treatments.md +5 -1
- package/skills/media-use/references/memory.md +10 -5
- package/skills/media-use/references/meta.md +17 -17
- package/skills/media-use/references/mixing.md +72 -0
- package/skills/media-use/references/operations.md +10 -8
- package/skills/media-use/references/resolve.md +1 -1
- package/skills/media-use/references/setup-providers.md +31 -17
- package/skills/media-use/scripts/compatibility.test.mjs +1 -56
- package/skills/media-use/scripts/lib/cutlist.mjs +9 -2
- package/skills/media-use/scripts/lib/duck.mjs +20 -3
- package/skills/media-use/scripts/lib/index-gen.mjs +2 -2
- package/skills/media-use/scripts/lib/manifest.mjs +85 -32
- package/skills/media-use/scripts/lib/prefs-store.mjs +47 -29
- package/skills/media-use/scripts/lib/recipe-store.mjs +7 -3
- package/skills/media-use/scripts/lib/telemetry.mjs +4 -1
- package/skills/media-use/scripts/lib/telemetry.test.mjs +73 -0
- package/skills/media-use/scripts/lib/words.mjs +1 -1
- package/skills/media-use/scripts/prefs.mjs +2 -3
- package/skills/media-use/scripts/recipe.mjs +1 -3
- package/skills/media-use/scripts/transcript-cut.mjs +23 -4
- package/skills/media-use/scripts/transcript-cut.test.mjs +224 -0
- package/skills/motion-graphics/SKILL.md +4 -172
- package/skills/music-to-video/SKILL.md +4 -204
- package/skills/pr-to-video/SKILL.md +4 -267
- package/skills/product-launch-video/SKILL.md +4 -258
- package/skills/remotion-to-hyperframes/SKILL.md +32 -115
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +3 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +3 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +8 -7
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +3 -3
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +6 -2
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +3 -4
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +2 -2
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +3 -0
- package/skills/remotion-to-hyperframes/references/api-map.md +41 -29
- package/skills/remotion-to-hyperframes/references/limitations.md +3 -3
- package/skills/remotion-to-hyperframes/references/lottie.md +21 -8
- package/skills/remotion-to-hyperframes/references/media.md +23 -6
- package/skills/remotion-to-hyperframes/references/timing.md +20 -8
- package/skills/remotion-to-hyperframes/scripts/tests/boxSizing.test.mjs +21 -0
- package/skills/slideshow/SKILL.md +42 -512
- package/skills/slideshow/references/standalone-harness.md +1 -1
- package/skills/talking-head-recut/SKILL.md +4 -1214
- package/skills/embedded-captions/CATALOG.md +0 -91
- package/skills/embedded-captions/assets/fonts/char-widths.json +0 -2211
- package/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +0 -242
- package/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +0 -242
- package/skills/embedded-captions/dna/README.md +0 -148
- package/skills/embedded-captions/dna/chrome.json +0 -68
- package/skills/embedded-captions/dna/cream.json +0 -69
- package/skills/embedded-captions/dna/documentary.json +0 -62
- package/skills/embedded-captions/dna/editorial.json +0 -70
- package/skills/embedded-captions/dna/glitch.json +0 -82
- package/skills/embedded-captions/dna/ink.json +0 -65
- package/skills/embedded-captions/dna/keynote.json +0 -62
- package/skills/embedded-captions/dna/loud.json +0 -75
- package/skills/embedded-captions/dna/neon.json +0 -58
- package/skills/embedded-captions/dna/velocity.json +0 -89
- package/skills/embedded-captions/modes/cinematic/README.md +0 -48
- package/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +0 -98
- package/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +0 -188
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +0 -134
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +0 -179
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +0 -81
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +0 -170
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +0 -16
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +0 -226
- package/skills/embedded-captions/modes/cinematic/engine.html +0 -355
- package/skills/embedded-captions/modes/standard/_anatomy.md +0 -233
- package/skills/embedded-captions/modes/standard/_motion.md +0 -192
- package/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +0 -97
- 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 +0 -401
- package/skills/embedded-captions/references/aesthetic-principles.md +0 -167
- package/skills/embedded-captions/references/anti-patterns.md +0 -188
- package/skills/embedded-captions/references/bespoke-vs-presets.md +0 -178
- package/skills/embedded-captions/references/caption-grouping.md +0 -130
- package/skills/embedded-captions/references/composition-craft.md +0 -522
- package/skills/embedded-captions/references/direction-catalog.md +0 -138
- package/skills/embedded-captions/references/example-renders/champion.html +0 -371
- package/skills/embedded-captions/references/example-renders/memory-wall.html +0 -334
- package/skills/embedded-captions/references/failure-modes.md +0 -145
- package/skills/embedded-captions/references/layout-heuristics.md +0 -238
- package/skills/embedded-captions/references/motion-vocabulary.md +0 -148
- package/skills/embedded-captions/references/rail.md +0 -68
- package/skills/embedded-captions/references/reference-bar.md +0 -47
- package/skills/embedded-captions/references/scene-types.md +0 -94
- package/skills/embedded-captions/references/typographic-moves.md +0 -266
- package/skills/embedded-captions/references/typography-presets.md +0 -63
- package/skills/embedded-captions/scripts/audio-envelope.cjs +0 -95
- package/skills/embedded-captions/scripts/check-occlusion.cjs +0 -253
- package/skills/embedded-captions/scripts/check-overflow.cjs +0 -195
- package/skills/embedded-captions/scripts/check-rail-climax.cjs +0 -237
- package/skills/embedded-captions/scripts/check-timing.cjs +0 -173
- package/skills/embedded-captions/scripts/fill-timings.cjs +0 -124
- package/skills/embedded-captions/scripts/fit-fonts.cjs +0 -158
- package/skills/embedded-captions/scripts/fixtures/heroless/theme.json +0 -11
- package/skills/embedded-captions/scripts/gen-stroke-path.py +0 -57
- package/skills/embedded-captions/scripts/hf-cli.cjs +0 -33
- package/skills/embedded-captions/scripts/inject-fonts.cjs +0 -169
- package/skills/embedded-captions/scripts/lib-dna.cjs +0 -201
- package/skills/embedded-captions/scripts/make-cinematic.cjs +0 -1206
- package/skills/embedded-captions/scripts/make-composition.cjs +0 -405
- package/skills/embedded-captions/scripts/make-theme.cjs +0 -8623
- package/skills/embedded-captions/scripts/make-theme.test.mjs +0 -131
- package/skills/embedded-captions/scripts/matte.cjs +0 -268
- package/skills/embedded-captions/scripts/measure-layout.cjs +0 -294
- package/skills/embedded-captions/scripts/prepare.sh +0 -39
- package/skills/embedded-captions/scripts/preview-frames.cjs +0 -296
- package/skills/embedded-captions/scripts/preview-frames.test.mjs +0 -24
- package/skills/embedded-captions/scripts/render-and-composite.sh +0 -425
- package/skills/embedded-captions/scripts/render-theme.sh +0 -34
- package/skills/embedded-captions/scripts/safe-zones.cjs +0 -816
- package/skills/embedded-captions/scripts/transcribe.cjs +0 -323
- package/skills/embedded-captions/scripts/transcribe.test.mjs +0 -41
- package/skills/embedded-captions/themes/README.md +0 -243
- package/skills/embedded-captions/themes/anchor.json +0 -27
- package/skills/embedded-captions/themes/arcade.json +0 -51
- package/skills/embedded-captions/themes/aurora.json +0 -41
- package/skills/embedded-captions/themes/biolume.json +0 -35
- package/skills/embedded-captions/themes/brush.json +0 -74
- package/skills/embedded-captions/themes/chalkboard.json +0 -52
- package/skills/embedded-captions/themes/dossier.json +0 -56
- package/skills/embedded-captions/themes/graffiti.json +0 -62
- package/skills/embedded-captions/themes/hologram.json +0 -41
- package/skills/embedded-captions/themes/inkwater.json +0 -43
- package/skills/embedded-captions/themes/laser.json +0 -46
- package/skills/embedded-captions/themes/lastpage.json +0 -33
- package/skills/embedded-captions/themes/neonsign.json +0 -53
- package/skills/embedded-captions/themes/ordnance.json +0 -54
- package/skills/embedded-captions/themes/papercut.json +0 -37
- package/skills/embedded-captions/themes/popup.json +0 -46
- package/skills/embedded-captions/themes/ransom.json +0 -62
- package/skills/embedded-captions/themes/scoreboard.json +0 -54
- package/skills/embedded-captions/themes/spectrum.json +0 -46
- package/skills/embedded-captions/themes/stardust.json +0 -29
- package/skills/embedded-captions/themes/stomp.json +0 -43
- package/skills/embedded-captions/themes/terminal.json +0 -49
- package/skills/embedded-captions/themes/thunder.json +0 -44
- package/skills/embedded-captions/themes/transit.json +0 -44
- package/skills/embedded-captions/themes/vhs.json +0 -47
- package/skills/faceless-explainer/references/cut-catalog.md +0 -215
- package/skills/faceless-explainer/references/motion-language.md +0 -156
- package/skills/faceless-explainer/references/story-design.md +0 -255
- package/skills/faceless-explainer/references/visual-design.md +0 -146
- package/skills/faceless-explainer/scripts/assemble-index.mjs +0 -625
- package/skills/faceless-explainer/scripts/assemble-index.test.mjs +0 -127
- package/skills/faceless-explainer/scripts/audio.mjs +0 -293
- package/skills/faceless-explainer/scripts/audio.test.mjs +0 -176
- package/skills/faceless-explainer/scripts/build-frame.mjs +0 -554
- package/skills/faceless-explainer/scripts/captions.mjs +0 -524
- package/skills/faceless-explainer/scripts/captions.test.mjs +0 -219
- package/skills/faceless-explainer/scripts/frame-packets.mjs +0 -27
- package/skills/faceless-explainer/scripts/frame-packets.test.mjs +0 -66
- package/skills/faceless-explainer/scripts/lib/assets.mjs +0 -56
- package/skills/faceless-explainer/scripts/lib/bgm-volume.mjs +0 -4
- package/skills/faceless-explainer/scripts/lib/captured-fonts.mjs +0 -58
- package/skills/faceless-explainer/scripts/lib/dimensions.mjs +0 -45
- package/skills/faceless-explainer/scripts/lib/frame-packets-core.mjs +0 -194
- package/skills/faceless-explainer/scripts/lib/pad-frame-duration.mjs +0 -36
- package/skills/faceless-explainer/scripts/lib/storyboard.mjs +0 -249
- package/skills/faceless-explainer/scripts/lib/tokens.mjs +0 -211
- package/skills/faceless-explainer/scripts/lib/transition-registry.mjs +0 -38
- package/skills/faceless-explainer/scripts/lib/transitions.json +0 -71
- package/skills/faceless-explainer/scripts/transitions.mjs +0 -384
- package/skills/faceless-explainer/scripts/transitions.test.mjs +0 -70
- package/skills/faceless-explainer/sub-agents/frame-worker.md +0 -12
- package/skills/general-video/scripts/frame-packets.mjs +0 -38
- package/skills/general-video/scripts/frame-packets.test.mjs +0 -80
- package/skills/general-video/scripts/lib/frame-packets-core.mjs +0 -194
- package/skills/general-video/sub-agents/frame-worker.md +0 -34
- package/skills/hyperframes/references/brief-contract.md +0 -108
- package/skills/hyperframes/references/brief-format.md +0 -72
- package/skills/hyperframes/references/capability-menu.md +0 -47
- package/skills/hyperframes/references/frame-worker-core.md +0 -80
- package/skills/hyperframes/references/intent-interview.md +0 -71
- package/skills/hyperframes/references/pitch-round.md +0 -40
- package/skills/hyperframes/references/production-loop.md +0 -26
- package/skills/hyperframes/references/review-loop.md +0 -37
- package/skills/hyperframes/references/route-briefs.md +0 -11
- package/skills/hyperframes/references/routes/embedded-captions.md +0 -11
- package/skills/hyperframes/references/routes/faceless-explainer.md +0 -12
- package/skills/hyperframes/references/routes/general-video.md +0 -12
- package/skills/hyperframes/references/routes/motion-graphics.md +0 -11
- package/skills/hyperframes/references/routes/music-to-video.md +0 -12
- package/skills/hyperframes/references/routes/pr-to-video.md +0 -28
- package/skills/hyperframes/references/routes/product-launch-video.md +0 -13
- package/skills/hyperframes/references/routes/remotion-to-hyperframes.md +0 -9
- package/skills/hyperframes/references/routes/slideshow.md +0 -11
- package/skills/hyperframes/references/routes/talking-head-recut.md +0 -11
- package/skills/hyperframes/references/script-format.md +0 -52
- package/skills/hyperframes/references/subagent-dispatch.md +0 -35
- package/skills/hyperframes/references/workflow-catalog.md +0 -10
- package/skills/hyperframes/scripts/lib/frame-packets-core.mjs +0 -194
- package/skills/hyperframes-animation/adapters/animate-text.md +0 -64
- package/skills/hyperframes-animation/adapters/animejs.md +0 -130
- package/skills/hyperframes-animation/adapters/css-animations.md +0 -143
- package/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +0 -199
- package/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +0 -96
- package/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +0 -129
- package/skills/hyperframes-animation/adapters/gsap.md +0 -105
- package/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +0 -507
- package/skills/hyperframes-animation/adapters/lottie.md +0 -130
- package/skills/hyperframes-animation/adapters/three.md +0 -145
- package/skills/hyperframes-animation/adapters/typegpu.md +0 -182
- package/skills/hyperframes-animation/adapters/waapi.md +0 -101
- package/skills/hyperframes-animation/blueprints/agent-progress-theater.md +0 -76
- package/skills/hyperframes-animation/blueprints/camera-journey.md +0 -61
- package/skills/hyperframes-animation/blueprints/comparison-split.md +0 -27
- package/skills/hyperframes-animation/blueprints/constellation-hub.md +0 -63
- package/skills/hyperframes-animation/blueprints/cta-morph-press.md +0 -63
- package/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +0 -89
- package/skills/hyperframes-animation/blueprints/dataviz-countup.md +0 -59
- package/skills/hyperframes-animation/blueprints/device-surface-showcase.md +0 -68
- package/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +0 -46
- package/skills/hyperframes-animation/blueprints/grid-card-assemble.md +0 -81
- package/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +0 -133
- package/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +0 -121
- package/skills/hyperframes-animation/blueprints/overwhelm-surround.md +0 -58
- package/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +0 -73
- package/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +0 -85
- package/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +0 -37
- package/skills/hyperframes-animation/blueprints/ticker-takeover.md +0 -29
- package/skills/hyperframes-animation/blueprints/titlecard-reveal.md +0 -80
- package/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +0 -45
- package/skills/hyperframes-animation/blueprints/typewriter-reveal.md +0 -51
- package/skills/hyperframes-animation/blueprints/video-text-pivot.md +0 -30
- package/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +0 -68
- package/skills/hyperframes-animation/blueprints-index.md +0 -202
- package/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +0 -382
- package/skills/hyperframes-animation/examples/comparison-split-cards.html +0 -649
- package/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +0 -520
- package/skills/hyperframes-animation/examples/cta-morph-press.html +0 -468
- package/skills/hyperframes-animation/examples/cta-orbit-collapse.html +0 -1298
- package/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +0 -759
- package/skills/hyperframes-animation/examples/hook-counter-burst.html +0 -729
- package/skills/hyperframes-animation/examples/messaging-multi-phrase.html +0 -352
- package/skills/hyperframes-animation/examples/metric-video-text-pivot.html +0 -779
- package/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +0 -1374
- package/skills/hyperframes-animation/examples/proof-logo-chain.html +0 -861
- package/skills/hyperframes-animation/examples/takeover-ticker-displace.html +0 -347
- package/skills/hyperframes-animation/examples/workflow-approve-press.html +0 -606
- package/skills/hyperframes-animation/references/motion-blur.md +0 -133
- package/skills/hyperframes-animation/rules/3d-camera-flight.md +0 -180
- package/skills/hyperframes-animation/rules/3d-page-scroll.md +0 -135
- package/skills/hyperframes-animation/rules/3d-text-depth-layers.md +0 -128
- package/skills/hyperframes-animation/rules/ai-tracking-box.md +0 -139
- package/skills/hyperframes-animation/rules/ambient-glow-bloom.md +0 -133
- package/skills/hyperframes-animation/rules/anchored-layout-expand.md +0 -148
- package/skills/hyperframes-animation/rules/asr-keyword-glow.md +0 -128
- package/skills/hyperframes-animation/rules/avatar-cloud-network.md +0 -145
- package/skills/hyperframes-animation/rules/camera-cursor-tracking.md +0 -133
- package/skills/hyperframes-animation/rules/card-morph-anchor.md +0 -134
- package/skills/hyperframes-animation/rules/center-outward-expansion.md +0 -88
- package/skills/hyperframes-animation/rules/chart-scrub-readout.md +0 -151
- package/skills/hyperframes-animation/rules/chromatic-glitch.md +0 -150
- package/skills/hyperframes-animation/rules/context-sensitive-cursor.md +0 -140
- package/skills/hyperframes-animation/rules/control-target-sync.md +0 -131
- package/skills/hyperframes-animation/rules/coordinate-target-zoom.md +0 -138
- package/skills/hyperframes-animation/rules/counting-dynamic-scale.md +0 -115
- package/skills/hyperframes-animation/rules/css-marker-patterns.md +0 -208
- package/skills/hyperframes-animation/rules/cursor-click-ripple.md +0 -104
- package/skills/hyperframes-animation/rules/cursor-drag.md +0 -141
- package/skills/hyperframes-animation/rules/depth-of-field-blur.md +0 -112
- package/skills/hyperframes-animation/rules/depth-scatter-assemble.md +0 -139
- package/skills/hyperframes-animation/rules/discrete-text-sequence.md +0 -146
- package/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +0 -149
- package/skills/hyperframes-animation/rules/gradient-text-sweep.md +0 -136
- package/skills/hyperframes-animation/rules/gsap-effects.md +0 -196
- package/skills/hyperframes-animation/rules/hacker-flip-3d.md +0 -123
- package/skills/hyperframes-animation/rules/kinetic-beat-slam.md +0 -137
- package/skills/hyperframes-animation/rules/motion-blur-streak.md +0 -130
- package/skills/hyperframes-animation/rules/multi-cursor-choreography.md +0 -133
- package/skills/hyperframes-animation/rules/multi-phase-camera.md +0 -129
- package/skills/hyperframes-animation/rules/nudge-curve.md +0 -47
- package/skills/hyperframes-animation/rules/orbit-3d-entry.md +0 -148
- package/skills/hyperframes-animation/rules/particle-burst.md +0 -149
- package/skills/hyperframes-animation/rules/physics-press-reaction.md +0 -101
- package/skills/hyperframes-animation/rules/press-release-spring.md +0 -108
- package/skills/hyperframes-animation/rules/reactive-displacement.md +0 -92
- package/skills/hyperframes-animation/rules/scale-swap-transition.md +0 -88
- package/skills/hyperframes-animation/rules/sine-wave-loop.md +0 -85
- package/skills/hyperframes-animation/rules/split-tilt-cards.md +0 -123
- package/skills/hyperframes-animation/rules/spring-pop-entrance.md +0 -107
- package/skills/hyperframes-animation/rules/stat-bars-and-fills.md +0 -145
- package/skills/hyperframes-animation/rules/svg-icon-enrichment.md +0 -141
- package/skills/hyperframes-animation/rules/svg-path-draw.md +0 -122
- package/skills/hyperframes-animation/rules/theme-crossfade-morph.md +0 -126
- package/skills/hyperframes-animation/rules/vertical-spring-ticker.md +0 -104
- package/skills/hyperframes-animation/rules/viewport-change.md +0 -148
- package/skills/hyperframes-animation/rules/waterfall-entry.md +0 -81
- package/skills/hyperframes-animation/rules-index.md +0 -113
- package/skills/hyperframes-animation/scripts/animation-map-sampling.mjs +0 -40
- package/skills/hyperframes-animation/scripts/animation-map-sampling.test.mjs +0 -48
- package/skills/hyperframes-animation/scripts/animation-map.mjs +0 -659
- package/skills/hyperframes-animation/scripts/animation-map.test.mjs +0 -444
- package/skills/hyperframes-animation/scripts/package-loader.mjs +0 -415
- package/skills/hyperframes-animation/scripts/package-loader.test.mjs +0 -114
- package/skills/hyperframes-animation/techniques.md +0 -507
- package/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +0 -168
- package/skills/hyperframes-animation/transitions/catalog.md +0 -127
- package/skills/hyperframes-animation/transitions/css-3d.md +0 -12
- package/skills/hyperframes-animation/transitions/css-blur.md +0 -51
- package/skills/hyperframes-animation/transitions/css-cover.md +0 -43
- package/skills/hyperframes-animation/transitions/css-destruction.md +0 -95
- package/skills/hyperframes-animation/transitions/css-dissolve.md +0 -66
- package/skills/hyperframes-animation/transitions/css-distortion.md +0 -45
- package/skills/hyperframes-animation/transitions/css-grid.md +0 -10
- package/skills/hyperframes-animation/transitions/css-light.md +0 -49
- package/skills/hyperframes-animation/transitions/css-mechanical.md +0 -30
- package/skills/hyperframes-animation/transitions/css-other.md +0 -25
- package/skills/hyperframes-animation/transitions/css-push.md +0 -41
- package/skills/hyperframes-animation/transitions/css-radial.md +0 -37
- package/skills/hyperframes-animation/transitions/css-scale.md +0 -24
- package/skills/hyperframes-animation/transitions/overview.md +0 -153
- package/skills/hyperframes-audio/references/attributes.md +0 -138
- package/skills/hyperframes-audio/references/diagnosis.md +0 -276
- package/skills/hyperframes-audio/references/fx-registry.md +0 -84
- package/skills/hyperframes-audio/references/presets.md +0 -216
- package/skills/hyperframes-core/references/composition-patterns.md +0 -224
- package/skills/hyperframes-core/references/creator-editing-recipes.md +0 -491
- package/skills/hyperframes-core/references/data-attributes.md +0 -78
- package/skills/hyperframes-core/references/determinism-rules.md +0 -53
- package/skills/hyperframes-core/references/full-screen-motion.md +0 -67
- package/skills/hyperframes-core/references/minimal-composition.md +0 -69
- package/skills/hyperframes-core/references/sub-compositions.md +0 -176
- package/skills/hyperframes-core/references/tailwind.md +0 -104
- package/skills/hyperframes-core/references/tracks-and-clips.md +0 -87
- package/skills/hyperframes-core/references/variables-and-media.md +0 -107
- package/skills/hyperframes-creative/palettes/bold-energetic.md +0 -14
- package/skills/hyperframes-creative/palettes/clean-corporate.md +0 -14
- package/skills/hyperframes-creative/palettes/dark-premium.md +0 -14
- package/skills/hyperframes-creative/palettes/jewel-rich.md +0 -14
- package/skills/hyperframes-creative/palettes/monochrome.md +0 -14
- package/skills/hyperframes-creative/palettes/nature-earth.md +0 -14
- package/skills/hyperframes-creative/palettes/neon-electric.md +0 -14
- package/skills/hyperframes-creative/palettes/pastel-soft.md +0 -14
- package/skills/hyperframes-creative/palettes/warm-editorial.md +0 -14
- package/skills/hyperframes-creative/references/audio-reactive.md +0 -76
- package/skills/hyperframes-creative/references/beat-direction.md +0 -164
- package/skills/hyperframes-creative/references/composition-patterns.md +0 -199
- package/skills/hyperframes-creative/references/data-in-motion.md +0 -19
- package/skills/hyperframes-creative/references/design-adherence.md +0 -19
- package/skills/hyperframes-creative/references/design-picker.md +0 -123
- package/skills/hyperframes-creative/references/design-spec.md +0 -55
- package/skills/hyperframes-creative/references/house-style.md +0 -73
- package/skills/hyperframes-creative/references/motion-principles.md +0 -151
- package/skills/hyperframes-creative/references/narration.md +0 -92
- package/skills/hyperframes-creative/references/prompt-expansion.md +0 -68
- package/skills/hyperframes-creative/references/story-spine.md +0 -45
- package/skills/hyperframes-creative/references/storyboard-recipe.md +0 -57
- package/skills/hyperframes-creative/references/typography.md +0 -218
- package/skills/hyperframes-creative/references/video-composition.md +0 -63
- package/skills/hyperframes-creative/references/visual-styles.md +0 -457
- package/skills/hyperframes-creative/scripts/contrast-report.mjs +0 -538
- package/skills/hyperframes-creative/scripts/package-loader.mjs +0 -415
- package/skills/hyperframes-creative/scripts/package-loader.test.mjs +0 -114
- package/skills/hyperframes-creative/templates/design-picker.html +0 -1432
- package/skills/hyperframes-keyframes/agents/openai.yaml +0 -4
- package/skills/hyperframes-keyframes/references/keyframe-patterns.md +0 -108
- package/skills/motion-graphics/agents/builder.md +0 -41
- package/skills/motion-graphics/agents/director.md +0 -54
- package/skills/motion-graphics/agents/finalize.md +0 -17
- package/skills/motion-graphics/catalog-map.md +0 -52
- package/skills/motion-graphics/categories/asset-fusion/module.md +0 -37
- package/skills/motion-graphics/categories/charts/module.md +0 -22
- package/skills/motion-graphics/categories/kinetic-type/module.md +0 -19
- package/skills/motion-graphics/categories/logo-reveal/module.md +0 -17
- package/skills/motion-graphics/categories/lower-thirds/module.md +0 -20
- package/skills/motion-graphics/categories/maps/module.md +0 -61
- package/skills/motion-graphics/categories/news/module.md +0 -56
- package/skills/motion-graphics/categories/stat/module.md +0 -21
- package/skills/motion-graphics/categories/tweet/module.md +0 -16
- package/skills/motion-graphics/categories/webpage/module.md +0 -30
- package/skills/motion-graphics/grounding/PROTOCOL.md +0 -64
- package/skills/motion-graphics/phases/source/guide.md +0 -21
- package/skills/motion-graphics/references/builder-contract.md +0 -38
- package/skills/motion-graphics/references/motion-vocabulary.md +0 -47
- package/skills/motion-graphics/references/shot-plan-ir.md +0 -54
- package/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +0 -306
- package/skills/music-to-video/references/frame-skeleton.md +0 -100
- package/skills/music-to-video/references/montage.md +0 -55
- package/skills/music-to-video/references/motion-primitive-catalog.md +0 -75
- package/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +0 -119
- package/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +0 -11
- package/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +0 -294
- package/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +0 -54
- package/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +0 -85
- package/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +0 -60
- package/skills/music-to-video/references/motion-primitives/braam-punch/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +0 -100
- package/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +0 -111
- package/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +0 -68
- package/skills/music-to-video/references/motion-primitives/counting-punch/index.html +0 -54
- package/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +0 -119
- package/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +0 -120
- package/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +0 -55
- package/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +0 -131
- package/skills/music-to-video/references/motion-primitives/directional-fill/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +0 -103
- package/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +0 -102
- package/skills/music-to-video/references/motion-primitives/electric-arc/index.html +0 -54
- package/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +0 -105
- package/skills/music-to-video/references/motion-primitives/flash-cut/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +0 -97
- package/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +0 -54
- package/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +0 -206
- package/skills/music-to-video/references/motion-primitives/hard-cut/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +0 -82
- package/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +0 -44
- package/skills/music-to-video/references/motion-primitives/iris-open/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/iris-open/scene.html +0 -69
- package/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +0 -64
- package/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +0 -96
- package/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +0 -74
- package/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +0 -89
- package/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +0 -73
- package/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +0 -82
- package/skills/music-to-video/references/motion-primitives/palette-flip/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +0 -97
- package/skills/music-to-video/references/motion-primitives/particle-burst/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +0 -106
- package/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +0 -86
- package/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +0 -130
- package/skills/music-to-video/references/motion-primitives/screen-shake/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +0 -78
- package/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +0 -100
- package/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +0 -102
- package/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +0 -82
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +0 -42
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +0 -280
- package/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +0 -54
- package/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +0 -106
- package/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +0 -109
- package/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +0 -91
- package/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +0 -53
- package/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +0 -96
- package/skills/music-to-video/references/planning.md +0 -104
- package/skills/music-to-video/references/storyboard-format.md +0 -94
- package/skills/music-to-video/references/template-catalog.md +0 -106
- package/skills/music-to-video/references/templates/card-flyby/index.html +0 -527
- package/skills/music-to-video/references/templates/card-flyby/program.json +0 -13
- package/skills/music-to-video/references/templates/held-message-living-field/index.html +0 -485
- 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 +0 -302
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +0 -610
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +0 -41
- 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 +0 -596
- package/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +0 -589
- package/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +0 -25
- package/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +0 -267
- package/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +0 -594
- package/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +0 -39
- package/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +0 -238
- package/skills/music-to-video/scripts/analyze-beatgrid.py +0 -542
- package/skills/music-to-video/scripts/assemble-index.mjs +0 -220
- package/skills/music-to-video/scripts/lib/storyboard.mjs +0 -249
- package/skills/music-to-video/scripts/stage-assets.mjs +0 -58
- package/skills/music-to-video/scripts/validate-plan.mjs +0 -161
- package/skills/music-to-video/sub-agents/frame-worker.md +0 -49
- package/skills/pr-to-video/references/code-vocabulary.md +0 -113
- package/skills/pr-to-video/references/cut-catalog.md +0 -215
- package/skills/pr-to-video/references/motion-language.md +0 -156
- package/skills/pr-to-video/references/story-design.md +0 -230
- package/skills/pr-to-video/references/visual-design.md +0 -164
- package/skills/pr-to-video/scripts/assemble-index.mjs +0 -631
- package/skills/pr-to-video/scripts/assemble-index.test.mjs +0 -130
- package/skills/pr-to-video/scripts/audio.mjs +0 -293
- package/skills/pr-to-video/scripts/build-frame.mjs +0 -589
- package/skills/pr-to-video/scripts/captions.mjs +0 -524
- package/skills/pr-to-video/scripts/captions.test.mjs +0 -260
- package/skills/pr-to-video/scripts/fetch-people-avatars.mjs +0 -157
- package/skills/pr-to-video/scripts/fetch-pr.mjs +0 -234
- package/skills/pr-to-video/scripts/frame-contract.test.mjs +0 -209
- package/skills/pr-to-video/scripts/frame-packets.mjs +0 -62
- package/skills/pr-to-video/scripts/ingest.mjs +0 -561
- package/skills/pr-to-video/scripts/lib/assets.mjs +0 -56
- package/skills/pr-to-video/scripts/lib/bgm-volume.mjs +0 -4
- package/skills/pr-to-video/scripts/lib/captured-fonts.mjs +0 -58
- package/skills/pr-to-video/scripts/lib/dimensions.mjs +0 -45
- package/skills/pr-to-video/scripts/lib/frame-contract.mjs +0 -54
- package/skills/pr-to-video/scripts/lib/frame-packets-core.mjs +0 -194
- package/skills/pr-to-video/scripts/lib/pad-frame-duration.mjs +0 -36
- package/skills/pr-to-video/scripts/lib/storyboard.mjs +0 -249
- package/skills/pr-to-video/scripts/lib/tokens.mjs +0 -211
- package/skills/pr-to-video/scripts/lib/transition-registry.mjs +0 -38
- package/skills/pr-to-video/scripts/lib/transitions.json +0 -71
- package/skills/pr-to-video/scripts/preflight.mjs +0 -51
- package/skills/pr-to-video/scripts/project-dir.mjs +0 -92
- package/skills/pr-to-video/scripts/transitions.mjs +0 -383
- package/skills/pr-to-video/scripts/workflow-guardrails.test.mjs +0 -198
- package/skills/pr-to-video/sub-agents/frame-worker.md +0 -38
- package/skills/product-launch-video/references/cut-catalog.md +0 -220
- package/skills/product-launch-video/references/motion-language.md +0 -156
- package/skills/product-launch-video/references/story-design.md +0 -508
- package/skills/product-launch-video/references/visual-design.md +0 -126
- package/skills/product-launch-video/scripts/assemble-index.mjs +0 -773
- package/skills/product-launch-video/scripts/assemble-index.test.mjs +0 -127
- package/skills/product-launch-video/scripts/audio.mjs +0 -293
- package/skills/product-launch-video/scripts/audio.test.mjs +0 -234
- package/skills/product-launch-video/scripts/build-frame-subsets.test.mjs +0 -152
- package/skills/product-launch-video/scripts/build-frame.mjs +0 -552
- package/skills/product-launch-video/scripts/captions.mjs +0 -524
- package/skills/product-launch-video/scripts/captions.test.mjs +0 -219
- package/skills/product-launch-video/scripts/capture-skill-guardrails.test.mjs +0 -39
- package/skills/product-launch-video/scripts/frame-packets.mjs +0 -27
- package/skills/product-launch-video/scripts/frame-packets.test.mjs +0 -144
- package/skills/product-launch-video/scripts/lib/assets.mjs +0 -56
- package/skills/product-launch-video/scripts/lib/bgm-volume.mjs +0 -4
- package/skills/product-launch-video/scripts/lib/captured-fonts.mjs +0 -58
- package/skills/product-launch-video/scripts/lib/dimensions.mjs +0 -45
- package/skills/product-launch-video/scripts/lib/frame-packets-core.mjs +0 -194
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +0 -36
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +0 -76
- package/skills/product-launch-video/scripts/lib/storyboard.mjs +0 -249
- package/skills/product-launch-video/scripts/lib/tokens.mjs +0 -218
- package/skills/product-launch-video/scripts/lib/tokens.test.mjs +0 -57
- package/skills/product-launch-video/scripts/lib/transition-registry.mjs +0 -38
- package/skills/product-launch-video/scripts/lib/transitions.json +0 -71
- package/skills/product-launch-video/scripts/media-contract.test.mjs +0 -200
- package/skills/product-launch-video/scripts/stage-assets.mjs +0 -39
- package/skills/product-launch-video/scripts/stage-assets.test.mjs +0 -52
- package/skills/product-launch-video/scripts/transitions.mjs +0 -383
- package/skills/product-launch-video/scripts/transitions.test.mjs +0 -68
- package/skills/product-launch-video/sub-agents/frame-worker.md +0 -21
- package/skills/talking-head-recut/NOTICE.md +0 -39
- 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 +0 -10
- package/skills/talking-head-recut/media-contract.test.mjs +0 -35
- package/skills/talking-head-recut/references/DESIGN_INDEX.md +0 -145
- package/skills/talking-head-recut/references/frames/clean.html +0 -92
- package/skills/talking-head-recut/references/frames/hairline.html +0 -171
- package/skills/talking-head-recut/references/frames/polaroid.html +0 -131
- package/skills/talking-head-recut/references/layouts/overlay.html +0 -164
- package/skills/talking-head-recut/references/layouts/pip.html +0 -143
- package/skills/talking-head-recut/references/layouts/split.html +0 -121
- package/skills/talking-head-recut/references/layouts/stack.html +0 -109
- package/skills/talking-head-recut/references/styles/academic.html +0 -172
- package/skills/talking-head-recut/references/styles/audit.html +0 -170
- package/skills/talking-head-recut/references/styles/editorial.html +0 -189
- package/skills/talking-head-recut/references/styles/geom.html +0 -181
- package/skills/talking-head-recut/references/styles/minimal.html +0 -130
- package/skills/talking-head-recut/references/styles/spotlight.html +0 -142
- package/skills/talking-head-recut/references/styles/swiss.html +0 -188
- package/skills/talking-head-recut/references/styles/terminal.html +0 -196
- package/skills/talking-head-recut/references/styles/whiteboard.html +0 -170
- package/skills/talking-head-recut/references/styles/xhs.html +0 -206
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/biennale-yellow/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/biennale-yellow/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blockframe/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blockframe/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blue-professional/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/blue-professional/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/bold-poster/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/bold-poster/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/broadside/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/broadside/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/capsule/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/capsule/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cartesian/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cartesian/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cobalt-grid/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/cobalt-grid/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/EBGaramond-400.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/EBGaramond-700.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/Inter-400.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/Inter-700.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/JetBrainsMono-400.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/JetBrainsMono-700.woff2 +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/OFL-inter.txt +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/code-editorial/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/coral/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/coral/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/creative-mode/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/creative-mode/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/daisy-days/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/daisy-days/frame-showcase.html +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/editorial-forest/FRAME.md +0 -0
- /package/skills/{hyperframes-creative → hyperframes/assets}/frame-presets/editorial-forest/frame-showcase.html +0 -0
- /package/skills/{hyperframes-audio → media-use/audio}/scripts/carve.test.mjs +0 -0
- /package/skills/{hyperframes-creative → media-use/audio}/scripts/extract-audio-data.py +0 -0
|
@@ -1,132 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: remotion-to-hyperframes
|
|
3
|
-
description:
|
|
3
|
+
description: Bring existing video code or footage into HyperFrames and verify it frame by frame against the original - Remotion first, also Motion Canvas, Lottie, Three.js, p5.js, canvas or plain HTML/CSS animation, or renders from Manim, After Effects or Blender. Use to port, convert, migrate or reuse work made with another tool.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin.
|
|
6
|
+
**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](../hyperframes/references/plugin-installation.md) when this skill is inside a HyperFrames plugin.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
# Import into HyperFrames
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
HyperFrames is the container: its tracks, sub-compositions and variables are editable in Studio whatever runs inside a clip. Bring each part in at the highest level it supports and record which level you used.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
| Level | For | How | Editable in Studio afterwards |
|
|
13
|
+
| --- | --- | --- | --- |
|
|
14
|
+
| Native | code that can become HTML + GSAP: most Remotion, HTML/CSS/GSAP animation, simple Motion Canvas | translate it, then verify frame by frame | every element; variables, catalog, presets apply |
|
|
15
|
+
| Hosted | code that can draw any requested frame in a browser: canvas, p5.js, Three.js, Lottie, WebGL, other JS animation | keep the code and drive it from HyperFrames time | timing, position, exposed parameters |
|
|
16
|
+
| Media | anything that outputs video or frames: Manim, After Effects, Blender, PIL, moviepy | render to a file and use it as a clip | cut, place, layer; not the pixels inside |
|
|
13
17
|
|
|
14
|
-
|
|
18
|
+
Code that depends on wall-clock time, live physics or the network can only come in as media.
|
|
15
19
|
|
|
16
|
-
|
|
20
|
+
## Native: translate, then verify
|
|
17
21
|
|
|
18
|
-
|
|
22
|
+
1. For Remotion, run `python3 <SKILL_DIR>/scripts/lint_source.py <source dir>` first. Blockers (`useState`, `useReducer`, `useEffect` with dependencies, async `calculateMetadata`, React UI kits such as MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI) don't translate: host them or refactor them out, never approximate (`references/escape-hatch.md`). Warnings (`@remotion/lambda` config, `delayRender`, `useMemo`, custom hooks) are dropped and noted.
|
|
23
|
+
2. Translate to the `/hyperframes` contract: one sub-composition per scene, times in seconds (`frame / fps`), asset paths root-relative. Each Remotion API's equivalent is in `references/api-map.md`. Put Remotion's render-page rule `* { box-sizing: border-box; }` once in the root `index.html` `<style>`: without it every bordered or padded element grows by its border and padding.
|
|
24
|
+
3. Keep it editable: the source's props become `data-composition-variables` bound with `data-var-text`, `data-var-src` or `var(--id)`; each `Sequence` becomes a timed clip or a sub-composition; a reused component becomes one sub-composition mounted several times with `data-variable-values`.
|
|
25
|
+
4. Compare frame by frame: `npx hyperframes snapshot --at <t,…> --against <original.mp4>` saves the original's frame at each time next to yours. Sample every scene and both sides of every cut; look for one late or recoloured element, not only the overall picture. For a scored check, `scripts/render_diff.sh <original.mp4> <hf.mp4> <out>` gives SSIM per frame and `scripts/frame_strip.sh` shows which frames diverged (thresholds per complexity tier in `references/eval.md`). Render the Remotion side with `Config.setVideoImageFormat("png")` and `Config.setColorSpace("bt709")`, or the diff measures the encoders (about 0.05 SSIM).
|
|
26
|
+
5. Write what didn't translate cleanly (dropped volume ramps, approximated presentations, substituted fonts) to `TRANSLATION_NOTES.md`.
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
| Remotion | Read |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| `Composition`, `defaultProps`, `schema`, `calculateMetadata` | `references/parameters.md` |
|
|
31
|
+
| `Sequence`, `Series`, `Loop`, `AbsoluteFill`, `Freeze` | `references/sequencing.md` |
|
|
32
|
+
| `useCurrentFrame`, `interpolate`, `spring`, `Easing`, `interpolateColors` | `references/timing.md` |
|
|
33
|
+
| `Audio`, `Video`, `Img`, `IFrame`, `staticFile`, `delayRender` | `references/media.md` |
|
|
34
|
+
| `TransitionSeries`, `@remotion/transitions` | `references/transitions.md` |
|
|
35
|
+
| `@remotion/lottie` | `references/lottie.md` |
|
|
36
|
+
| `@remotion/google-fonts`, `Font.loadFont`, `@font-face` | `references/fonts.md` |
|
|
37
|
+
| What can't be ported | `references/limitations.md` |
|
|
21
38
|
|
|
22
|
-
|
|
39
|
+
Before hand-building a named visual the source used, search `npx hyperframes catalog --query "<the visual, in English>" --json`: it ranks the whole registry with nothing installed.
|
|
23
40
|
|
|
24
|
-
|
|
25
|
-
- "convert this Remotion code to HyperFrames"
|
|
26
|
-
- "migrate from Remotion"
|
|
27
|
-
- "translate this Remotion comp"
|
|
28
|
-
- "rewrite this as HyperFrames HTML"
|
|
41
|
+
## Hosted
|
|
29
42
|
|
|
30
|
-
|
|
43
|
+
Keep the code and let HyperFrames own the clock: it draws the frame for the time it is given. The seek protocol and the built-in adapters for Lottie, Three.js, anime.js, WAAPI and CSS animations are in `../hyperframes/references/runtimes.md`. No `requestAnimationFrame` loop or timer as the time source, seeded randomness only, and `data-duration` on the root when nothing else defines the length.
|
|
31
44
|
|
|
32
|
-
|
|
33
|
-
- (b) The user mentions Remotion in passing without asking for migration.
|
|
34
|
-
- (c) The user shares Remotion code as reference material rather than asking for a translation.
|
|
35
|
-
- (d) The user asks for "the same video as my Remotion one" without explicitly asking to migrate the source — treat that as a fresh HyperFrames build.
|
|
45
|
+
## Media
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
`<video class="clip" data-has-audio="true" src="assets/x.mp4" ...>`, or `muted` when it is silent. Nothing else is needed.
|
|
38
48
|
|
|
39
|
-
|
|
40
|
-
- **Non-Remotion sources.** An After Effects project (`.aep`), a Framer Motion / plain-React / CSS animation, or any other tool's source is not a Remotion composition — there is no Remotion source to translate. Re-create it natively via `/general-video`, or decline if HyperFrames can't represent it.
|
|
41
|
-
|
|
42
|
-
When in doubt, default to authoring a native HyperFrames composition with `/general-video` (the general HyperFrames authoring flow) instead.
|
|
43
|
-
|
|
44
|
-
## Workflow
|
|
45
|
-
|
|
46
|
-
### Step 1: Lint the source
|
|
47
|
-
|
|
48
|
-
Run [`scripts/lint_source.py`](scripts/lint_source.py) over the Remotion source directory. The lint detects patterns that can't translate cleanly:
|
|
49
|
-
|
|
50
|
-
- **Blockers** (refuse + recommend interop): `useState`, `useReducer`, `useEffect`/`useLayoutEffect` with non-empty deps, async `calculateMetadata`, third-party React UI libraries (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI).
|
|
51
|
-
- **Warnings** (translate after dropping the construct): `@remotion/lambda` config, `delayRender`, `useCallback`, `useMemo`, custom hooks.
|
|
52
|
-
- **Info** (translate with note): `staticFile`, `interpolateColors`.
|
|
53
|
-
|
|
54
|
-
If any blocker fires, **stop**. Read [`references/escape-hatch.md`](references/escape-hatch.md) and surface the recommendation message. Warnings don't stop translation — drop the offending construct in step 3 and note the gap in `TRANSLATION_NOTES.md`. `@remotion/lambda` config is the canonical warning case: the skill drops the import + `renderMediaOnLambda(...)` calls but translates the rest of the composition.
|
|
55
|
-
|
|
56
|
-
### Step 2: Plan the translation
|
|
57
|
-
|
|
58
|
-
Read [`references/api-map.md`](references/api-map.md) — the index of every Remotion API and its HF equivalent or per-topic reference. Identify which topic references you'll need based on what the source uses:
|
|
59
|
-
|
|
60
|
-
| Source contains | Load reference |
|
|
61
|
-
| ------------------------------------------------------------------------- | --------------------------------------------- |
|
|
62
|
-
| `Composition`, `defaultProps`, `schema`, `calculateMetadata` | [`parameters.md`](references/parameters.md) |
|
|
63
|
-
| `Sequence`, `Series`, `Loop`, `AbsoluteFill`, `Freeze` | [`sequencing.md`](references/sequencing.md) |
|
|
64
|
-
| `useCurrentFrame`, `interpolate`, `spring`, `Easing`, `interpolateColors` | [`timing.md`](references/timing.md) |
|
|
65
|
-
| `Audio`, `Video`, `Img`, `IFrame`, `staticFile`, `delayRender` | [`media.md`](references/media.md) |
|
|
66
|
-
| `TransitionSeries`, `@remotion/transitions` | [`transitions.md`](references/transitions.md) |
|
|
67
|
-
| `@remotion/lottie` | [`lottie.md`](references/lottie.md) |
|
|
68
|
-
| `@remotion/google-fonts/<Family>`, `Font.loadFont`, `@font-face` | [`fonts.md`](references/fonts.md) |
|
|
69
|
-
|
|
70
|
-
Don't load all of them — load only what the specific source needs.
|
|
71
|
-
|
|
72
|
-
**Search the live catalog for any visual effect the table does not map.** When the source paints a look with no HF API equivalent — a scanline/CRT overlay, a glitch or chromatic-aberration pass, a shader wipe, a film-grain treatment — run `npx hyperframes catalog --query "<the effect, in plain English>" --json` before hand-writing it in GSAP. The search needs **nothing installed**: no project, no prior `add`, no account. It ranks the whole hosted registry (~400 blocks and components) from any directory, and `transitions.md` already takes this route for `clockWipe()` / `iris()` via `npx hyperframes add sdf-iris`. A real component is closer to the source than a hand-approximation, so it usually raises the SSIM rather than lowering it — but the render diff in Step 4 is still the arbiter. Hand-write the effect when a search returns nothing that fits, and record the substitution in `TRANSLATION_NOTES.md` either way.
|
|
73
|
-
|
|
74
|
-
### Step 3: Generate the HF composition
|
|
75
|
-
|
|
76
|
-
Emit `index.html` with:
|
|
77
|
-
|
|
78
|
-
- Root `<div id="stage">` carrying the composition's `data-composition-id`, `data-start="0"`, `data-duration` (in seconds), `data-fps`, `data-width`, `data-height`, plus one `data-*` per scalar prop.
|
|
79
|
-
- One host `<div>` per scene with `data-composition-src="compositions/<scene>.html"` and `data-start` / `data-duration` / `data-track-index`. The root holds no nested layout.
|
|
80
|
-
- One `compositions/<scene>.html` per scene (a `<template>` sub-composition): its inline `<style>` for layout (CSS sets the `from` state of every animated property), its markup, and one paused `gsap.timeline({paused: true})` in the scene's local time. Every Remotion `useCurrentFrame()` derivation becomes a tween on that timeline at the offset within the scene.
|
|
81
|
-
- `window.__timelines["<scene-id>"] = tl;` in each scene file, and `window.__timelines["<composition-id>"]` for the root's own (possibly empty) timeline.
|
|
82
|
-
|
|
83
|
-
Custom React subcomponents inline as repeated HTML using the prop interface as the template (see [`parameters.md`](references/parameters.md) for the per-instance `data-*` pattern).
|
|
84
|
-
|
|
85
|
-
### Step 4: Validate
|
|
86
|
-
|
|
87
|
-
Run the eval harness — [`references/eval.md`](references/eval.md) for the full guide. Quick path:
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
# Render Remotion baseline (after npm install in the fixture)
|
|
91
|
-
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4
|
|
92
|
-
|
|
93
|
-
# Render HF translation
|
|
94
|
-
cd ../hf-src && npx hyperframes render --skill=remotion-to-hyperframes --output ../hf.mp4
|
|
95
|
-
|
|
96
|
-
# SSIM diff
|
|
97
|
-
../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Threshold: ~0.02 below `p05` of the source's complexity tier (see `eval.md`'s validated thresholds table). If the diff fails, run [`scripts/frame_strip.sh`](scripts/frame_strip.sh) to see _which_ frames diverged, then re-read the relevant timing/sequencing/media reference.
|
|
101
|
-
|
|
102
|
-
**Critical**: both renders must use matching pixel format. Set `Config.setVideoImageFormat("png")` + `Config.setColorSpace("bt709")` in the Remotion source's `remotion.config.ts` — otherwise the diff measures encoder differences (~0.05 SSIM hit), not translation fidelity.
|
|
103
|
-
|
|
104
|
-
### Step 5: Document gaps
|
|
105
|
-
|
|
106
|
-
Anything that didn't translate cleanly (volume ramps dropped, custom presentations approximated, fonts substituted) gets a `TRANSLATION_NOTES.md` written next to the HF output. See [`references/limitations.md`](references/limitations.md) for the format.
|
|
107
|
-
|
|
108
|
-
## What this skill explicitly does NOT do
|
|
109
|
-
|
|
110
|
-
- **Translate React state machines.** Compositions that drive animation via `useState` + `useEffect` are not deterministic frame-capture targets in HyperFrames' seek-driven model. Recommend the runtime interop pattern.
|
|
111
|
-
- **Run Remotion's render pipeline alongside HyperFrames.** That's the runtime interop pattern from [PR #214](https://github.com/heygen-com/hyperframes/pull/214) — a separate solution for compositions that fail this skill's lint.
|
|
112
|
-
|
|
113
|
-
(`@remotion/lambda` is _not_ a blocker — Lambda config is deployment, not animation. The skill drops it as a warning and translates the rest. See [`references/escape-hatch.md`](references/escape-hatch.md).)
|
|
114
|
-
|
|
115
|
-
## How to grade your own translation
|
|
116
|
-
|
|
117
|
-
Run the test corpus orchestrator:
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
./assets/test-corpus/run.sh
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
It runs T1, T2, T3 (render + diff) and T4 (lint validation), prints a per-tier pass/fail table, and emits an aggregate JSON report. Use this to verify the skill is working end-to-end on a clean checkout — and as a regression check after editing any reference.
|
|
124
|
-
|
|
125
|
-
Validated baseline (as of 2026-04-27):
|
|
126
|
-
|
|
127
|
-
| Tier | Composition shape | Mean SSIM | Threshold |
|
|
128
|
-
| ---- | ------------------------------------------- | --------- | --------- |
|
|
129
|
-
| T1 | single-element fade-in | 0.974 | 0.95 |
|
|
130
|
-
| T2 | multi-scene + spring + audio + image | 0.985 | 0.95 |
|
|
131
|
-
| T3 | data-driven, custom subcomponents, count-up | 0.953 | 0.90 |
|
|
132
|
-
| T4 | escape-hatch (8 lint cases) | 8/8 pass | n/a |
|
|
49
|
+
In the final message, list each imported part with its level, what a person can change in Studio, and how the frame-by-frame comparison came out.
|
|
@@ -44,10 +44,10 @@ value from `useCurrentFrame()` + a manual `1 - (1 - t)^3` ease.
|
|
|
44
44
|
exactly — costs ~0.03 mean SSIM per spring instance.
|
|
45
45
|
|
|
46
46
|
2. **Count-up easing**: `AnimatedNumber` uses `1 - (1 - t)^3` (cubic ease-out)
|
|
47
|
-
manually computed in the component. GSAP's `
|
|
48
|
-
|
|
49
|
-
in both renderers;
|
|
50
|
-
|
|
47
|
+
manually computed in the component. GSAP's `power2.out` matches that cubic curve
|
|
48
|
+
exactly (`power3.out` is quartic). Compare the rounded integers at matching
|
|
49
|
+
frame times in both renderers; matching final values alone does not validate
|
|
50
|
+
the easing curve.
|
|
51
51
|
|
|
52
52
|
3. **Font rendering**: same caveat as T1/T2. System Helvetica/Arial fallback
|
|
53
53
|
produces minor anti-aliasing differences between renderers. Affects the
|
|
@@ -55,8 +55,9 @@ value from `useCurrentFrame()` + a manual `1 - (1 - t)^3` ease.
|
|
|
55
55
|
|
|
56
56
|
A mean SSIM below 0.90 in T3 indicates a _structural_ mismatch (wrong scene
|
|
57
57
|
durations, wrong stagger timing, missing prop wiring), not approximation
|
|
58
|
-
drift. That's the failure signal we care about. The
|
|
59
|
-
Remotion @ 4.0 with PNG/BT.709 output
|
|
58
|
+
drift. That's the failure signal we care about. The September 18 measurement
|
|
59
|
+
against Remotion @ 4.0 with PNG/BT.709 output was 0.953 for the quartic
|
|
60
|
+
translation; it does not measure the corrected cubic count-up.
|
|
60
61
|
|
|
61
62
|
## Translation walk-through (skill cheat sheet)
|
|
62
63
|
|
|
@@ -65,7 +66,7 @@ Remotion @ 4.0 with PNG/BT.709 output is 0.953.
|
|
|
65
66
|
| `<Composition schema={z.object({...})} defaultProps={...} />` | data-\* attributes on root `#stage` div |
|
|
66
67
|
| nested array prop (`stats[]`) | repeated HTML markup with per-instance `data-*` attrs |
|
|
67
68
|
| custom React subcomponent | inline repeated HTML using the component's prop interface as the template |
|
|
68
|
-
| `<AnimatedNumber from={0} to={value} dur={45} />` (cubic ease-out count-up) | tween on `{ v: 0 }` object with `onUpdate` rewriting `textContent`, ease `
|
|
69
|
+
| `<AnimatedNumber from={0} to={value} dur={45} />` (cubic ease-out count-up) | tween on `{ v: 0 }` object with `onUpdate` rewriting `textContent`, ease `power2.out` |
|
|
69
70
|
| `spring({damping:12, stiffness:100})` | `back.out(1.4)` over ~0.7 s |
|
|
70
71
|
| `spring({damping:14, stiffness:90})` | `back.out(1.2)` over ~0.7 s |
|
|
71
72
|
| `delayInFrames={i * 12}` (per-instance) | GSAP timeline offset `(i * 0.4)` s |
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"measured_p95_ssim": 0.978,
|
|
16
16
|
"measured_at": "2026-09-18",
|
|
17
17
|
"measured_against": "remotion@4.0 (PNG output, BT.709) vs hyperframes@0.7.71 (sub-composition fixtures)",
|
|
18
|
-
"notes": "
|
|
18
|
+
"notes": "The September 18 SSIM measurements describe the quartic power3.out translation. The count-up fixture uses power2.out to match the cubic 1-(1-t)^3 curve exactly; those historical scores do not measure the corrected curve. Check rounded counts at matching frame times in addition to SSIM."
|
|
19
19
|
},
|
|
20
20
|
"remotion_apis_exercised": [
|
|
21
21
|
"Composition with z.object schema and typed defaultProps",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"translation_notes": [
|
|
33
33
|
"Zod schema + defaultProps → data-* attributes on the root #stage div. The skill emits one data attribute per scalar prop; nested arrays (stats[]) get materialized as repeated HTML markup with per-instance data attributes (data-stat-index, data-stat-value, --card-color).",
|
|
34
34
|
"Custom React subcomponents inline as repeated HTML divs. The component prop interface becomes the repeated markup template. This is lossy for components with internal state — fine here because StatCard, AnimatedNumber, UnderlinedText all derive from props alone.",
|
|
35
|
-
"AnimatedNumber's frame-driven count-up → a GSAP tween on a { v: 0 } counter object with onUpdate rewriting textContent. GSAP's
|
|
35
|
+
"AnimatedNumber's frame-driven count-up → a GSAP tween on a { v: 0 } counter object with onUpdate rewriting textContent. GSAP's power2.out is cubic easeOut, matching the Remotion 1-(1-t)^3 manual ease.",
|
|
36
36
|
"Two different springs in this composition: damping:12 → back.out(1.4) (snappy), damping:14 → back.out(1.2) (calmer). The 1.4 vs 1.2 overshoot ratio approximates the damping difference.",
|
|
37
37
|
"Per-instance stagger via delayInFrames prop translates to a GSAP timeline offset of (i * 0.4)s.",
|
|
38
|
-
"Threshold 0.90
|
|
38
|
+
"Threshold 0.90 allows spring → back.out approximation (two different configs) and font/AA differences on body text. The cubic count-up curve matches exactly; evaluate rounded counts at matching frame times separately from SSIM."
|
|
39
39
|
],
|
|
40
40
|
"rationale": "Threshold 0.90 sits ~0.04 below measured p05 (0.938). The wider gap vs T1/T2 reflects T3's bigger approximation budget (2 spring instances + count-up timing + font fallback on multiple text sizes). Mean SSIM below 0.90 = structural mismatch (wrong durations, wrong stagger, missing prop wiring), not approximation drift."
|
|
41
41
|
}
|
|
@@ -16,7 +16,6 @@
|
|
|
16
16
|
font-size: 160px;
|
|
17
17
|
font-weight: 900;
|
|
18
18
|
letter-spacing: 0.05em;
|
|
19
|
-
transform: scale(0);
|
|
20
19
|
}
|
|
21
20
|
.scene-1 .subtitle {
|
|
22
21
|
font-size: 36px;
|
|
@@ -36,7 +35,12 @@
|
|
|
36
35
|
const scene = document.querySelector(".scene-1");
|
|
37
36
|
tl.set(scene, { opacity: 1 }, 0);
|
|
38
37
|
// spring({damping:12, stiffness:100, mass:1}) -> back.out(1.4) ~0.7s
|
|
39
|
-
tl.
|
|
38
|
+
tl.fromTo(
|
|
39
|
+
scene.querySelector(".title"),
|
|
40
|
+
{ scale: 0 },
|
|
41
|
+
{ scale: 1, duration: 0.7, ease: "back.out(1.4)" },
|
|
42
|
+
0,
|
|
43
|
+
);
|
|
40
44
|
// interpolate(frame, [20,40], [0,1]) -> 0.667s..1.333s linear
|
|
41
45
|
tl.fromTo(
|
|
42
46
|
scene.querySelector(".subtitle"),
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
justify-content: center;
|
|
24
24
|
align-items: center;
|
|
25
25
|
opacity: 0;
|
|
26
|
-
transform: scale(0);
|
|
27
26
|
}
|
|
28
27
|
.stat-card .number {
|
|
29
28
|
font-size: 72px;
|
|
@@ -74,16 +73,16 @@
|
|
|
74
73
|
const value = Number(card.dataset.statValue);
|
|
75
74
|
const numberEl = card.querySelector(".number");
|
|
76
75
|
// spring({damping:14, stiffness:90, mass:1}) -> back.out(1.2) ~0.7s; opacity 0..0.4s linear
|
|
77
|
-
tl.
|
|
76
|
+
tl.fromTo(card, { scale: 0 }, { scale: 1, duration: 0.7, ease: "back.out(1.2)" }, start);
|
|
78
77
|
tl.to(card, { opacity: 1, duration: 0.4, ease: "none" }, start);
|
|
79
|
-
// AnimatedNumber: easeOutCubic over 45 frames (1.5s) is GSAP
|
|
78
|
+
// AnimatedNumber: easeOutCubic over 45 frames (1.5s) is GSAP power2.out on a counter.
|
|
80
79
|
const counter = { v: 0 };
|
|
81
80
|
tl.to(
|
|
82
81
|
counter,
|
|
83
82
|
{
|
|
84
83
|
v: value,
|
|
85
84
|
duration: 1.5,
|
|
86
|
-
ease: "
|
|
85
|
+
ease: "power2.out",
|
|
87
86
|
onUpdate: () => {
|
|
88
87
|
numberEl.textContent = Math.round(counter.v).toLocaleString();
|
|
89
88
|
},
|
|
@@ -26,7 +26,6 @@
|
|
|
26
26
|
height: 6px;
|
|
27
27
|
background: #fbbf24;
|
|
28
28
|
border-radius: 3px;
|
|
29
|
-
transform: scaleX(0);
|
|
30
29
|
transform-origin: left center;
|
|
31
30
|
}
|
|
32
31
|
</style>
|
|
@@ -43,8 +42,9 @@
|
|
|
43
42
|
tl.set(scene, { opacity: 1 }, 0);
|
|
44
43
|
tl.to(scene.querySelector(".outro-wrap"), { opacity: 1, duration: 0.4, ease: "none" }, 0);
|
|
45
44
|
// interpolate(frame, [10,40], [0,1]) for the underline -> starts 0.333s, 1s long
|
|
46
|
-
tl.
|
|
45
|
+
tl.fromTo(
|
|
47
46
|
scene.querySelector(".outro-underline"),
|
|
47
|
+
{ scaleX: 0 },
|
|
48
48
|
{ scaleX: 1, duration: 1.0, ease: "none" },
|
|
49
49
|
0.333,
|
|
50
50
|
);
|
|
@@ -13,15 +13,27 @@ details (timing, transitions, etc.).
|
|
|
13
13
|
|
|
14
14
|
## Composition root
|
|
15
15
|
|
|
16
|
-
| Remotion
|
|
17
|
-
|
|
|
18
|
-
| `<Composition id durationInFrames fps width height>`
|
|
19
|
-
| `defaultProps={...}`
|
|
20
|
-
| `schema={z.object(...)}`
|
|
21
|
-
| `calculateMetadata` (sync)
|
|
22
|
-
| `calculateMetadata` (async)
|
|
23
|
-
| `registerRoot(RemotionRoot)`
|
|
24
|
-
| `<AbsoluteFill style>`
|
|
16
|
+
| Remotion | HyperFrames |
|
|
17
|
+
| ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| `<Composition id durationInFrames fps width height>` | root `<div id="stage" data-composition-id data-start="0" data-duration="<dur/fps>" data-fps data-width data-height>` |
|
|
19
|
+
| `defaultProps={...}` | `data-*` attributes on `#stage` (one per scalar prop). Nested objects/arrays — see [parameters.md](parameters.md) |
|
|
20
|
+
| `schema={z.object(...)}` | not represented in HTML; the schema lives in the agent's translation step only |
|
|
21
|
+
| `calculateMetadata` (sync) | resolve at translation time, write concrete values into `data-*` |
|
|
22
|
+
| `calculateMetadata` (async) | **refuse + interop** — see [escape-hatch.md](escape-hatch.md) |
|
|
23
|
+
| `registerRoot(RemotionRoot)` | drop |
|
|
24
|
+
| `<AbsoluteFill style>` | `<div style="position:absolute;inset:0;{style}">` |
|
|
25
|
+
| Remotion's render page: `* { box-sizing: border-box }` | the same rule, once, in the root `index.html` `<style>` (see below) |
|
|
26
|
+
|
|
27
|
+
Remotion's render page sets `* { box-sizing: border-box }`, so a `width` there already includes the border and padding. A browser's own default is `content-box`, so a port without the rule draws every bordered or padded element larger. This box is 200 by 100 in Remotion and with the rule; without it, it is 260 by 160:
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<style>
|
|
31
|
+
* {
|
|
32
|
+
box-sizing: border-box;
|
|
33
|
+
}
|
|
34
|
+
</style>
|
|
35
|
+
<div style="width:200px;height:100px;padding:20px;border:10px solid #fff">…</div>
|
|
36
|
+
```
|
|
25
37
|
|
|
26
38
|
## Sequencing
|
|
27
39
|
|
|
@@ -38,31 +50,31 @@ See [sequencing.md](sequencing.md) for nesting and stagger details.
|
|
|
38
50
|
|
|
39
51
|
See [timing.md](timing.md) — this is the highest-leverage section.
|
|
40
52
|
|
|
41
|
-
| Remotion | HyperFrames
|
|
42
|
-
| ---------------------------------------------------------- |
|
|
43
|
-
| `useCurrentFrame()` | drop — HF seeks the timeline. The math derived from `frame` becomes an animatable property of a paused GSAP tween.
|
|
44
|
-
| `useVideoConfig()` for `fps` / `durationInFrames` | drop — read from `data-fps` / `data-duration` on `#stage`
|
|
45
|
-
| `interpolate(frame, [a,b], [x,y])` (linear) | `gsap.fromTo(t, {p:x}, {p:y, duration:(b-a)/fps, ease:"none"})` at offset `a/fps`
|
|
46
|
-
| `interpolate(frame, [a,b,c,d], [x,y,y,z])` (multi-segment) | three `gsap.to` calls at offsets `a/fps`, `b/fps`, `c/fps`
|
|
47
|
-
| `interpolate(..., {easing: Easing.bezier})` | GSAP `CustomEase.create("c", "M0,0 C${a},${b} ${c},${d} 1,1")`
|
|
48
|
-
| `spring({frame, fps, config: {damping, stiffness, mass}})` | GSAP `back.out(N)` — see [timing.md](timing.md) for damping → overshoot table
|
|
49
|
-
| `interpolateColors(frame, range, colors)` | `gsap.to({...}, { backgroundColor, color, duration, ease })` — GSAP handles color tweens natively
|
|
50
|
-
| `Easing.in / .out / .inOut(
|
|
53
|
+
| Remotion | HyperFrames |
|
|
54
|
+
| ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
55
|
+
| `useCurrentFrame()` | drop — HF seeks the timeline. The math derived from `frame` becomes an animatable property of a paused GSAP tween. |
|
|
56
|
+
| `useVideoConfig()` for `fps` / `durationInFrames` | drop — read from `data-fps` / `data-duration` on `#stage` |
|
|
57
|
+
| `interpolate(frame, [a,b], [x,y])` (linear) | `gsap.fromTo(t, {p:x}, {p:y, duration:(b-a)/fps, ease:"none"})` at offset `a/fps` |
|
|
58
|
+
| `interpolate(frame, [a,b,c,d], [x,y,y,z])` (multi-segment) | three `gsap.to` calls at offsets `a/fps`, `b/fps`, `c/fps` |
|
|
59
|
+
| `interpolate(..., {easing: Easing.bezier})` | GSAP `CustomEase.create("c", "M0,0 C${a},${b} ${c},${d} 1,1")` |
|
|
60
|
+
| `spring({frame, fps, config: {damping, stiffness, mass}})` | GSAP `back.out(N)` — see [timing.md](timing.md) for damping → overshoot table |
|
|
61
|
+
| `interpolateColors(frame, range, colors)` | `gsap.to({...}, { backgroundColor, color, duration, ease })` — GSAP handles color tweens natively |
|
|
62
|
+
| `Easing.in / .out / .inOut(Easing.poly(N))` | GSAP `power<N-1>.in` / `power<N-1>.out` / `power<N-1>.inOut` for integer N=1–5; see [timing.md](timing.md) for other exponents |
|
|
51
63
|
|
|
52
64
|
## Media
|
|
53
65
|
|
|
54
66
|
See [media.md](media.md) for trim, volume ramps, and decoder notes.
|
|
55
67
|
|
|
56
|
-
| Remotion | HyperFrames
|
|
57
|
-
| -------------------------------------- |
|
|
58
|
-
| `<Audio src volume>` | `<audio data-start data-duration data-track-index data-volume src>`
|
|
59
|
-
| `<Audio playbackRate startFrom endAt>` | `data-playback-rate`, `data-trim-start`, `data-trim-end`
|
|
60
|
-
| `<Video src>` | `<video
|
|
61
|
-
| `<OffthreadVideo>` | `<video>` — HF doesn't need the off-thread variant (uses headless Chrome)
|
|
62
|
-
| `<Img src>` | `<img>`
|
|
63
|
-
| `<IFrame src>` | `<iframe>` — HF auto-falls back to screenshot mode for nested iframes
|
|
64
|
-
| `staticFile("x.png")` | `"assets/x.png"` in the root, `"../assets/x.png"` inside a `compositions/` scene file — copy the file into `hf-src/assets/` next to `index.html`
|
|
65
|
-
| `delayRender()` / `continueRender()` | drop — HF waits on asset readiness via the Frame Adapter pattern
|
|
68
|
+
| Remotion | HyperFrames |
|
|
69
|
+
| -------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
70
|
+
| `<Audio src volume>` | `<audio data-start data-duration data-track-index data-volume src>` |
|
|
71
|
+
| `<Audio playbackRate startFrom endAt>` | `data-playback-rate`, `data-trim-start`, `data-trim-end` |
|
|
72
|
+
| `<Video src>` | `<video playsinline data-has-audio="true" data-start data-duration data-track-index src>` only when the file has an audio stream (check with `ffprobe -v error -select_streams a -show_entries stream=codec_type -of csv=p=0 <file>`: non-empty means it has audio) and the source is not `muted` or `volume={0}`; otherwise `muted` instead |
|
|
73
|
+
| `<OffthreadVideo>` | `<video>` — HF doesn't need the off-thread variant (uses headless Chrome) |
|
|
74
|
+
| `<Img src>` | `<img>` |
|
|
75
|
+
| `<IFrame src>` | `<iframe>` — HF auto-falls back to screenshot mode for nested iframes |
|
|
76
|
+
| `staticFile("x.png")` | `"assets/x.png"` in the root, `"../assets/x.png"` inside a `compositions/` scene file — copy the file into `hf-src/assets/` next to `index.html` |
|
|
77
|
+
| `delayRender()` / `continueRender()` | drop — HF waits on asset readiness via the Frame Adapter pattern |
|
|
66
78
|
|
|
67
79
|
## Transitions
|
|
68
80
|
|
|
@@ -32,7 +32,7 @@ Remotion accepts a function for `volume`:
|
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
HF ramps volume with a `data-automation` volume lane on the `<audio>`
|
|
35
|
-
(form in `
|
|
35
|
+
(form in `/media-use` → `references/mixing.md`).
|
|
36
36
|
Translation: write the lane from the `interpolate` points, OR bake the ramp
|
|
37
37
|
into the audio file with `ffmpeg afade`. The dropped-ramp path produces audibly different
|
|
38
38
|
output but visually-identical video, so SSIM passes — just flag it.
|
|
@@ -48,7 +48,7 @@ output but visually-identical video, so SSIM passes — just flag it.
|
|
|
48
48
|
A bounded GSAP repeat can reproduce _visual_ repetition when its finite count is derived
|
|
49
49
|
from the visible duration. If the looped child has cross-iteration state (a counter, a
|
|
50
50
|
randomness seed), HF won't reproduce it identically per iteration. Bow out unless the child
|
|
51
|
-
is fully deterministic per-iteration;
|
|
51
|
+
is fully deterministic per-iteration; use `repeat: -1` only when the root declares a finite `data-duration`.
|
|
52
52
|
|
|
53
53
|
### Remotion's `<Img>` with crossOrigin
|
|
54
54
|
|
|
@@ -122,7 +122,7 @@ a `TRANSLATION_NOTES.md` next to the output:
|
|
|
122
122
|
The following Remotion patterns were translated with caveats:
|
|
123
123
|
|
|
124
124
|
- `<Audio volume={(f) => ...}>` (line 15): volume ramp written as a
|
|
125
|
-
`data-automation` volume lane (see
|
|
125
|
+
`data-automation` volume lane (see the media-use skill's mixing reference); the
|
|
126
126
|
ffmpeg `afade` bake-in is the alternative.
|
|
127
127
|
- `<HeavyChart>` (line 30): translated as inline HTML. The original
|
|
128
128
|
React.lazy boundary was dropped — bundle size unchanged because HF
|
|
@@ -4,7 +4,7 @@ Lottie animations are a clean translation case — HF has a built-in
|
|
|
4
4
|
[Lottie adapter](https://github.com/heygen-com/hyperframes/blob/main/packages/core/src/runtime/adapters/lottie.ts)
|
|
5
5
|
that supports both `lottie-web` and `@lottiefiles/dotlottie-web`. The
|
|
6
6
|
adapter auto-discovers animations registered on `window.__hfLottie`
|
|
7
|
-
and seeks
|
|
7
|
+
and seeks lottie-web via `goToAndStop` and current dotLottie players via `setFrame`.
|
|
8
8
|
|
|
9
9
|
## Pattern
|
|
10
10
|
|
|
@@ -51,27 +51,40 @@ Key differences from a typical Lottie embed:
|
|
|
51
51
|
Remotion bundles the animation JSON via webpack import. HF needs the JSON
|
|
52
52
|
on disk under `assets/` and references it via path:
|
|
53
53
|
|
|
54
|
-
1. Copy
|
|
55
|
-
2.
|
|
54
|
+
1. Copy the animation JSON from the Remotion project into the HyperFrames project’s assets folder.
|
|
55
|
+
2. Pass that local path to `loadAnimation`, as shown in the example above.
|
|
56
56
|
|
|
57
|
-
For dotlottie (binary) format,
|
|
57
|
+
For dotlottie (binary) format, use the ESM build of `@lottiefiles/dotlottie-web`.
|
|
58
|
+
Before rendering, copy `dist/index.js` and `dist/dotlottie-player.wasm` from the
|
|
59
|
+
same pinned release into `hf-src/lib/dotlottie-web/`. Version 0.81.0 provides:
|
|
60
|
+
|
|
61
|
+
- https://unpkg.com/@lottiefiles/dotlottie-web@0.81.0/dist/index.js
|
|
62
|
+
- https://unpkg.com/@lottiefiles/dotlottie-web@0.81.0/dist/dotlottie-player.wasm
|
|
63
|
+
|
|
64
|
+
The package's CommonJS entry cannot run as a classic browser script. Set the
|
|
65
|
+
local WASM URL before constructing the player; the render then loads the SDK,
|
|
66
|
+
WASM and animation from project files.
|
|
58
67
|
|
|
59
68
|
```html
|
|
60
|
-
<script src="https://unpkg.com/@lottiefiles/dotlottie-web"></script>
|
|
61
69
|
<canvas id="anim" style="width:100%;height:100%"></canvas>
|
|
62
|
-
<script>
|
|
70
|
+
<script type="module">
|
|
71
|
+
import { DotLottie } from "./lib/dotlottie-web/index.js";
|
|
72
|
+
|
|
73
|
+
DotLottie.setWasmUrl(new URL("./lib/dotlottie-web/dotlottie-player.wasm", import.meta.url).href);
|
|
63
74
|
const player = new DotLottie({
|
|
64
75
|
canvas: document.getElementById("anim"),
|
|
65
76
|
src: "assets/hello.lottie",
|
|
66
77
|
autoplay: false,
|
|
78
|
+
loop: false,
|
|
79
|
+
renderConfig: { autoResize: false, freezeOnOffscreen: false },
|
|
67
80
|
});
|
|
68
81
|
window.__hfLottie = window.__hfLottie || [];
|
|
69
82
|
window.__hfLottie.push(player);
|
|
70
83
|
</script>
|
|
71
84
|
```
|
|
72
85
|
|
|
73
|
-
The HF adapter
|
|
74
|
-
|
|
86
|
+
The HF adapter supports `goToAndStop` for lottie-web, `setFrame` for current
|
|
87
|
+
dotLottie players, and `setCurrentRawFrameValue` / `seek` for older player shapes.
|
|
75
88
|
|
|
76
89
|
## Multiple Lottie animations
|
|
77
90
|
|
|
@@ -45,7 +45,7 @@ didn't specify trim.
|
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Volume ramps become a `data-automation` volume lane on the `<audio>`
|
|
48
|
-
(form in `
|
|
48
|
+
(form in `/media-use` → `references/mixing.md`); `data-volume`
|
|
49
49
|
is the static baseline.
|
|
50
50
|
|
|
51
51
|
### Trim / playbackRate
|
|
@@ -70,14 +70,25 @@ is the static baseline.
|
|
|
70
70
|
## `<Video>` and `<OffthreadVideo>`
|
|
71
71
|
|
|
72
72
|
```tsx
|
|
73
|
-
<Video src={staticFile("intro.mp4")}
|
|
74
|
-
<OffthreadVideo src={staticFile("intro.mp4")}
|
|
73
|
+
<Video src={staticFile("intro.mp4")} playsInline />
|
|
74
|
+
<OffthreadVideo src={staticFile("intro.mp4")} />
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
```html
|
|
78
|
+
<!-- intro.mp4 has an audio stream -->
|
|
79
|
+
<video
|
|
80
|
+
playsinline
|
|
81
|
+
data-has-audio="true"
|
|
82
|
+
data-start="0"
|
|
83
|
+
data-duration="5"
|
|
84
|
+
data-track-index="0"
|
|
85
|
+
src="assets/intro.mp4"
|
|
86
|
+
></video>
|
|
87
|
+
|
|
88
|
+
<!-- intro.mp4 is silent (or the Remotion element is muted) -->
|
|
78
89
|
<video
|
|
79
|
-
muted
|
|
80
90
|
playsinline
|
|
91
|
+
muted
|
|
81
92
|
data-start="0"
|
|
82
93
|
data-duration="5"
|
|
83
94
|
data-track-index="0"
|
|
@@ -89,8 +100,14 @@ is the static baseline.
|
|
|
89
100
|
rendering. HF runs in headless Chrome already, so the off-thread variant
|
|
90
101
|
collapses to a regular `<video>`.
|
|
91
102
|
|
|
92
|
-
`
|
|
93
|
-
|
|
103
|
+
`playsinline` is required for the runtime to autoplay (browser policy); always
|
|
104
|
+
emit it. Check the source file for an audio stream first:
|
|
105
|
+
`ffprobe -v error -select_streams a -show_entries stream=codec_type -of csv=p=0 <file>`
|
|
106
|
+
(non-empty output means it has audio). Remotion `<Video>` maps to
|
|
107
|
+
`<video playsinline>` + `data-has-audio="true"` only when the file has an audio
|
|
108
|
+
stream and the Remotion source does not set `muted` or `volume={0}`; otherwise
|
|
109
|
+
emit `muted`. Silent b-roll with `data-has-audio="true"` aborts the render
|
|
110
|
+
(`ASSET_MEDIA_TYPE_MISMATCH`).
|
|
94
111
|
|
|
95
112
|
## `<Img>`
|
|
96
113
|
|