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
package/skills/figma/SKILL.md
CHANGED
|
@@ -1,134 +1,55 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: figma
|
|
3
|
-
description:
|
|
3
|
+
description: Bring Figma into a HyperFrames video - rendered assets, brand tokens, components, storyboard frames as reconstructed motion (frames read as states, not slides), shaders and connector-assisted motion. Use when the person pastes a figma.com link or asks to use a Figma design, frame, logo or brand.
|
|
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.
|
|
7
|
-
|
|
8
|
-
> **First, keep this skill fresh — confirm with the user before running:** `npx hyperframes skills update figma`. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them.
|
|
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.
|
|
9
7
|
|
|
10
8
|
# Figma → HyperFrames
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
| Phase | What | Transport | Surface |
|
|
15
|
-
| ----- | ------------------- | ------------------------- | ----------------------------- |
|
|
16
|
-
| 1 | Static assets | REST | `hyperframes figma asset` |
|
|
17
|
-
| 2 | Brand tokens/styles | REST | `hyperframes figma tokens` |
|
|
18
|
-
| 3 | Components → HTML | REST | `hyperframes figma component` |
|
|
19
|
-
| 4 | Motion → GSAP | connector when available | use its motion context |
|
|
20
|
-
| 5 | Shaders | connector / manual export | use it or a native export |
|
|
21
|
-
|
|
22
|
-
REST is used wherever it can be (usable at volume, headless). A compatible Figma connector is optional for motion and shader data; without one, ask for a native export. Every path freezes assets locally so renders stay deterministic. Storyboard reconstructions compose Phase-1 asset exports (REST) with agent-driven timeline assembly — no connector needed. Existing frozen assets, manifest records, and bindings are unaffected by routing changes — the split only changes which credential the next import uses.
|
|
23
|
-
|
|
24
|
-
## Auth — two credentials, scoped
|
|
25
|
-
|
|
26
|
-
**Preflight — before the first CLI call, check a token exists**: shell env (`[ -n "$FIGMA_TOKEN" ]`) **or** the project `.env` (the CLI auto-loads it — a `.env` entry counts as configured). If neither, do NOT run the command to harvest the error — walk the user through the one-time setup first, then stop and wait:
|
|
27
|
-
|
|
28
|
-
1. figma.com/settings → **Security** → **Personal access tokens** → Generate new token.
|
|
29
|
-
2. Scopes — read-only is all this integration ever needs (it never writes to Figma): **File content: Read-only** + **File metadata: Read-only**. Add **Library content: Read-only** if you'll run `tokens` on a non-Enterprise plan — the published-styles fallback hits `/v1/files/:key/styles`, which 403s without it (a scope the older setup text omitted). Optionally **Variables: Read-only** for brand variables — Enterprise-only; without it `tokens` degrades to published styles automatically (expected, not an error — say so). A 403 now names the exact missing scope; 429s retry automatically (per-minute limit, honors `Retry-After`).
|
|
30
|
-
3. Have the user set `FIGMA_TOKEN` in their shell profile or project `.env`; never ask them to paste the token into the conversation.
|
|
31
|
-
|
|
32
|
-
While onboarding, also set expectations in one breath: every import lands as a **local frozen file with recorded provenance** — renders never call Figma, re-running a command re-imports only what changed in Figma, and one token works for assets, brand tokens, and components across every file their Figma account can view.
|
|
33
|
-
|
|
34
|
-
- **Phases 4–5 (motion/shaders):** a compatible Figma connector, with separate authorization from the token. If it is unavailable or unauthenticated, ask the user to connect it or provide a native export, then stop.
|
|
35
|
-
- Say exactly which credential a failing phase needs — never present the split as broken.
|
|
36
|
-
- `BAD_TOKEN` (401) mid-flow → the token is expired/revoked; re-mint. `FORBIDDEN` (403) → the message names the exact missing scope (e.g. `library_content:read` for the styles fallback) — add it, or the file isn't visible to the account. `REQUIRES_ENTERPRISE` (403 on variables) → not a failure: styles fallback already ran. `RATE_LIMITED` (429) → the client already retried with backoff (this applies to EVERY read — assets, tokens, styles, node trees, versions — the retry lives in the shared request path; `Retry-After` is honored, capped at 60s); if it still surfaces, wait a minute or import fewer nodes per call.
|
|
37
|
-
|
|
38
|
-
**Rate-limit awareness (spec §2.1):** connector quotas vary by Figma plan — batch parent-frame requests, skip verification screenshots unless asked, and cache raw responses so re-derivation never spends a second call. REST is per-minute (10+/min, per-endpoint buckets) — fine at volume, back off on 429.
|
|
39
|
-
|
|
40
|
-
## Routing
|
|
41
|
-
|
|
42
|
-
Parse the user's figma link with `parseFigmaRef` (URL, `fileKey:nodeId`, bare `fileKey`). Then by intent:
|
|
43
|
-
|
|
44
|
-
- "use this layer / logo / image" → **Asset** (CLI)
|
|
45
|
-
- "pull my brand / colors / tokens" → **Tokens** (CLI)
|
|
46
|
-
- "build a scene from this frame" → **Component** (CLI)
|
|
47
|
-
- "import this animation / motion" → **Motion** (connector when available, below)
|
|
48
|
-
- a storyboard section / filmstrip of scene frames → **Storyboard** (below)
|
|
49
|
-
- shader fill/effect → **Shaders** (below)
|
|
50
|
-
|
|
51
|
-
**Narrate every step for the user** — before each command say what you're about to pull from Figma; after it, say where the artifact landed (the frozen path / sidecar / component dir), what changed in the composition, and the immediate next action (preview, add printed variables, re-import to link bindings). The user should never have to ask "did it work?" or "now what?".
|
|
52
|
-
|
|
53
|
-
## Assets (Phase 1 — CLI)
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
hyperframes figma asset '<url-or-fileKey:nodeId>' [more refs…] [--format svg|png|jpg|pdf] [--scale 2] [--description "..."] [--entity "..."]
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
Renders over REST, sanitizes SVG, freezes under `.media/images/`, appends the manifest with provenance, regenerates `.media/index.md` (the shared media-use inventory), prints an `<img>` snippet. Idempotent per `fileKey:nodeId:format:scale:version`. Prefer SVG for vectors/logos (scalable, animatable), PNG `--scale 2` for raster fidelity. **Always pass `--description "<what it is>"`** (it becomes the index row + `<img alt>`); add `--entity "<name>"` for named brand marks so media-use `resolve --entity` finds them later (entity hits match across image/icon).
|
|
60
|
-
|
|
61
|
-
**Batch many nodes in ONE request** — pass several refs (space-separated or comma-joined) of the SAME file: `hyperframes figma asset 'KEY:1-2' 'KEY:3-4' 'KEY:5-6'`. All render in a single `/v1/images` call, which is figma's own answer to the per-minute rate limit — prefer it over N separate commands when pulling a whole frame's worth of assets. `--description`/`--entity` apply to every node in the batch, so batch nodes that share a purpose. 429s also auto-retry with backoff regardless.
|
|
62
|
-
|
|
63
|
-
## Tokens (Phase 2 — CLI)
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
hyperframes figma tokens <fileKey>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Imports variables as composition brand-variable entries + `figma-tokens.json` sidecar + binding-index records (`.media/figma-bindings.jsonl`). Variables are Enterprise-gated upstream: on other plans the command degrades to published-style metadata (values resolve at component-import time). Add the printed entries to the composition's `data-composition-variables`.
|
|
70
|
-
|
|
71
|
-
**Import tokens before components** when both are wanted — that's what lets component colors link to brand variables instead of baking duplicates.
|
|
72
|
-
|
|
73
|
-
**Non-Enterprise variables path (field-tested):** REST variables are Enterprise-gated, but a compatible connector may provide variable definitions. When `tokens` reports `REQUIRES_ENTERPRISE` and the connector is available, retrieve the parent scene's variables once, cache the raw response to `.media/figma-cache/`, and use it to build the binding index. The REST node tree's `boundVariables` supplies per-property `VariableID`s; join them by node and property, then write `.media/figma-bindings.jsonl` rows (`{kind:"binding", figmaId, sourceFileKey, compositionVariableId: "figma:<name>", version}`) plus the composition-variable entries. Everything downstream (component `var()` resolution, refresh, runtime CSS variables) is the shipped machinery. Label it for the user: "tokens via the Figma connector — Enterprise plans get this from `hyperframes figma tokens` directly."
|
|
74
|
-
|
|
75
|
-
The runtime defines every declared composition variable as a CSS custom property (document root + sub-comp hosts), so imported `var(--slug, literal)` fills recolor when the variable default changes — updating one value in `data-composition-variables` re-brands every imported component without re-importing anything. `hyperframes render --variables '<json>'` overrides them at render time.
|
|
76
|
-
|
|
77
|
-
## Components (Phase 3 — CLI)
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
hyperframes figma component '<url-or-fileKey:nodeId>'
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Node tree → editable HTML at exact figma geometry, packaged as a registry item under `compositions/components/<name>/`. Vectors/boolean-ops auto-rasterize via Phase-1 export. Binding pass (spec §7.1, exact-ID only — never value matching):
|
|
84
|
-
|
|
85
|
-
- **Static fidelity self-check (mandatory for hero content)**: after importing, render the fragment and compare against figma's own pixels — `figma asset <same node> --format png` is the ground truth. Text is the known drift axis: a figma text box shorter than its line-height is vertically-trimmed bounds (the mapper emits `text-box-trim` for these; measured drift without it was ~6px on a 70px font). If the comparison shows drift the mapper doesn't cover, report it — don't hand-tweak the fragment silently.
|
|
86
|
-
- Fill bound to an **imported** token → `var(--slug, #literal)` — brand refresh propagates.
|
|
87
|
-
- Bound to an **unknown** token → literal + `data-figma-unresolved` flag. The command tells you; offer the user: run `tokens` on the source (or library) file, then re-import the component to link them. Ask **once** per unknown library which file it is — never guess, never match by hex.
|
|
10
|
+
Every import happens at build time and freezes a local file with its source recorded under `.media/`, so renders never call Figma and re-running a command re-imports only what changed. Assets, tokens and components go over REST with a token; motion and shader data need a Figma connector, or a native export from the person.
|
|
88
11
|
|
|
89
|
-
##
|
|
12
|
+
## Access
|
|
90
13
|
|
|
91
|
-
|
|
14
|
+
`FIGMA_TOKEN` in the shell or the project `.env`. Check it exists before the first command; if not, tell the person how to make one and stop: figma.com → Settings → Security → Personal access tokens, read-only **File content** and **File metadata**, plus **Library content** for `tokens` on non-Enterprise plans. They set it themselves; never ask them to paste it into the chat.
|
|
92
15
|
|
|
93
|
-
|
|
16
|
+
| Error | Meaning |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| `BAD_TOKEN` (401) | Expired or revoked: make a new one |
|
|
19
|
+
| `FORBIDDEN` (403) | The message names the missing scope, or the file isn't visible to the account |
|
|
20
|
+
| `REQUIRES_ENTERPRISE` (403, variables) | Not a failure: the published-styles fallback already ran |
|
|
21
|
+
| `RATE_LIMITED` (429) | Already retried with backoff; wait a minute or import fewer nodes per call |
|
|
94
22
|
|
|
95
|
-
|
|
96
|
-
2. Normalize into `MotionDoc`s with `motionContextToDocs(rawResponse, { selectorFor, repeat })` from `@hyperframes/core/figma` — **never transcribe keyframe numbers by hand**. The helper encodes the field-tested decoding rules mechanically: it parses the motion.dev snippets (the reliable encoding — the CSS snippets stretch durations and can disagree; they are ignored), strips loop-wrap tail keyframes (sub-millisecond segments at times ≈0.9999→1 are the loop's instant reset, not authored motion — the wrap is realized by `repeat` restart), and preserves bezier eases verbatim. `selectorFor` must return the ids from the Phase-3 component import — don't derive selectors from node names.
|
|
97
|
-
2b. **Validate against ground truth before calling it done — mandatory**: export the cohort's root frame through the available connector and run `node skills/figma/scripts/verify-motion.mjs --reference <export.mp4> --render <render.mp4> --crop WxH+X+Y` — it compares motion-energy deltas (static import fidelity cancels out) and fails below 15dB min motion-PSNR (calibrated: faithful ≈ 20+, diverging ≈ 5). Measure `--crop` from the render's actual card edges, don't guess. FAIL means re-check the translation, not the threshold.
|
|
98
|
-
3. `motionToGsap(doc)` → `emitTimelineScript(spec)` → inject as a `<script>` after the GSAP + CustomEase CDN tags. Paused, finite, registered on `window.__timelines` with a literal key.
|
|
99
|
-
4. Untranslatable track (shader-driven, unsupported prop, complex masks) → export through the connector, freeze the MP4, then embed it as `<video class="clip">`. Exception: shader-driven tracks — Figma's export path flattens shaders to the base color (see Shaders below), so a bake there silently loses the shader; ask the user for a native Figma export instead. Always say which path you used and why. Named eases outside the mapped set fall back to linear — the mapping table lives in `motionEase.ts`; flag the fallback to the user when it fires.
|
|
100
|
-
5. Run `npx hyperframes check` before calling it done.
|
|
23
|
+
## Commands
|
|
101
24
|
|
|
102
|
-
|
|
25
|
+
- A layer, logo or image: `npx hyperframes figma asset '<url or fileKey:nodeId>' [more refs] --format svg|png --scale 2 --description "<what it is>" [--entity "<brand mark>"]`. SVG for vectors and logos, PNG at 2x for raster. Several nodes of one file in one call render in a single request; `--entity` lets `/media-use` find a brand mark later.
|
|
26
|
+
- Brand colours and type: `npx hyperframes figma tokens <fileKey>`. Run it before `component` and paste the printed entries into `data-composition-variables`. Without Enterprise it falls back to published styles. A connector can supply variables there instead: cache its raw response in `.media/figma-cache/` and write the bindings to `.media/figma-bindings.jsonl` (`{kind:"binding", figmaId, sourceFileKey, compositionVariableId:"figma:<name>", version}`).
|
|
27
|
+
- A frame as editable HTML at exact geometry: `npx hyperframes figma component '<url or fileKey:nodeId>'`, packaged under `compositions/components/<name>/`. A fill bound to an imported token comes out as `var(--slug, #literal)`, so one variable re-brands every import; an unknown token stays a literal marked `data-figma-unresolved`: import that library's tokens and re-import. Ask once which file a library is; never match by hex.
|
|
28
|
+
- Check hero components against Figma's pixels (`figma asset <same node> --format png`). Text drift is the usual cause; report drift you can't fix instead of hand-tweaking the import.
|
|
103
29
|
|
|
104
|
-
|
|
30
|
+
## Motion (connector)
|
|
105
31
|
|
|
106
|
-
|
|
32
|
+
Usage beacon: these phases have no CLI touchpoint, so run `npx hyperframes events --skill=figma-motion` when you begin and `npx hyperframes events --skill=figma-motion --event=skill_completed --outcome=success|error` when done. Same for shaders (`figma-shaders`) and storyboards (`figma-storyboard`).
|
|
107
33
|
|
|
108
|
-
|
|
34
|
+
1. Fetch motion context for the parent frame in one recursive request; cache the raw JSON in `.media/figma-cache/`.
|
|
35
|
+
2. Normalise with `motionContextToDocs(raw, { selectorFor, repeat })` from `@hyperframes/core/figma`, never by transcribing keyframes. It reads the motion.dev snippets (the CSS snippets stretch durations), drops loop-wrap tail keyframes and keeps bezier eases. `selectorFor` returns the ids from the component import.
|
|
36
|
+
3. `motionToGsap(doc)` → `emitTimelineScript(spec)`, injected after the GSAP and CustomEase tags: paused, finite, a literal `window.__timelines` key. Named eases outside the mapped set fall back to linear; say so.
|
|
37
|
+
4. Verify against Figma's own export: `node <SKILL_DIR>/scripts/verify-motion.mjs --reference <export.mp4> --render <render.mp4> --crop WxH+X+Y`. It compares motion between samples, so static drift cancels out, and fails under 15 dB (faithful ≈ 20+, diverging ≈ 5). Measure `--crop` from the render's card edges. A fail means fix the translation, not the threshold.
|
|
38
|
+
5. A track that won't translate: export it, freeze the MP4 and place it as `<video class="clip">`.
|
|
109
39
|
|
|
110
|
-
|
|
40
|
+
## Shaders
|
|
111
41
|
|
|
112
|
-
|
|
113
|
-
2. **Order = x-position** (row-major if the strip wraps). Sort scenes by `absoluteBoundingBox.x`.
|
|
114
|
-
3. **Diff adjacent frames into element chains** — this is where the animation lives. Match children across consecutive frames: first by **name** (same name = same element → tween its relative x/y/w/h between states), then by **geometry similarity** (similar size + nearby center = same logical element whose pixels changed → crossfade the two exports in place while tweening geometry; covers typed-text progressions and morph states). Unmatched children enter/exit at their scene's beat. Frame background fills tween as a color track. Export ONE asset per chain (one per state only when pixels genuinely differ) — never one still per frame.
|
|
115
|
-
4. **Stills are the fallback, not the default** — only for frames that don't decompose (flat full-frame screenshots with no shared elements); those get the animatic treatment below.
|
|
116
|
-
5. **Director notes**: TEXT nodes below the strip are motion intent, paired to the scene whose x-range they overlap. They describe _how_ to animate — they are not on-screen copy.
|
|
117
|
-
6. **Batch exports** (elements or stills): `GET /v1/images` accepts comma-separated ids, but big scene frames hit "Render timeout" past ~12 ids — chunk to ~4 per call with a retry. (One call per scene wastes the rate budget; 26 scenes ≈ 52 calls via the single-asset path.)
|
|
118
|
-
7. **Note verbs → transitions** (starter vocabulary, extend as encountered):
|
|
42
|
+
Figma's export path flattens shaders to their base colour, and shader source is only reachable for library-published styles. Ask the person for a native export of that frame (PNG or MP4) and place it as an asset or clip.
|
|
119
43
|
|
|
120
|
-
|
|
121
|
-
| ------------------------------- | ----------------------------------------------------------------- |
|
|
122
|
-
| EXPLOSION / BURST | incoming scale ~1.5→1 + fade, `power3.out` |
|
|
123
|
-
| SLIDES / SLIDE TO THE… / SCROLL | directional slide in from that edge |
|
|
124
|
-
| MORPH / REVEALS | crossfade — or Phase-3 import if the motion is inside one scene |
|
|
125
|
-
| CYCLE THROUGH / EACH ONE | longer hold — or Phase-3 import if items animate within the scene |
|
|
126
|
-
| (no note) | crossfade + slow Ken-Burns drift |
|
|
44
|
+
## Storyboards: frames are KEYFRAMES, not slides
|
|
127
45
|
|
|
128
|
-
|
|
129
|
-
9. One `main` timeline sequences everything (opacity/x/y per scene at absolute times) — no per-scene sub-compositions needed for an animatic.
|
|
130
|
-
10. **Escalation — frames depict ONE product UI → rebuild the app, not element chains.** When every frame is the same application screen in successive states (a signup flow, a settings panel, a player), element chains undersell it. Rebuild the UI as live DOM — Phase-3 component import for the parts that change state, real exported pixels for static chrome (**code what changes state, freeze what doesn't**) — and treat each frame delta as an **interaction to perform**, not a tween to apply: the cursor enters, clicks the control, the state responds, screens push/slide as real navigation. The result reads as one continuous screen recording of a working app. This is the cardinal rule taken to its conclusion for UI flows; the stills/element-chain treatments are for storyboards that aren't one coherent application.
|
|
46
|
+
Two frames holding the same element describe that element's state through time: animate the element between the states. Playing the frames back to back as stills is the failure mode.
|
|
131
47
|
|
|
132
|
-
|
|
48
|
+
1. Scenes are every frame-sized node in the section, named frames and loose full-frame rectangles alike: filter by size, not type or name. Order by `absoluteBoundingBox.x`.
|
|
49
|
+
2. Match children across neighbouring frames by name first, then by similar size and position. Tween geometry between states; crossfade two exports in place when the pixels changed. Export one asset per element, not one still per frame. Unmatched children enter or exit at their scene's beat.
|
|
50
|
+
3. Text nodes below the strip are motion notes for the scene above them, not on-screen copy. A note about motion inside a scene ("lines reveal one after another") means import that frame as a component and animate it.
|
|
51
|
+
4. Export in batches of about 4 scene frames per call: past about 12 ids `/v1/images` times out.
|
|
52
|
+
5. Frames that are one product UI in successive states: rebuild the UI as live DOM: code what changes state, freeze what doesn't, and treat each frame change as an interaction to perform (the cursor moves, clicks, the screen responds), not a tween to apply.
|
|
53
|
+
6. Stills are the fallback, only for frames with no shared elements.
|
|
133
54
|
|
|
134
|
-
Never leave a Figma URL in the composition
|
|
55
|
+
Never leave a Figma URL in the composition.
|
|
@@ -1,167 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: general-video
|
|
3
|
-
description:
|
|
4
|
-
Author or edit a custom HyperFrames composition when no specialized workflow fits, or when
|
|
5
|
-
BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels,
|
|
6
|
-
montages, static loops, static title cards, footage remixes, and freeform builds. Use
|
|
7
|
-
motion-graphics instead for a short unnarrated motion-first unit, including an animated title.
|
|
8
|
-
Route fresh creation through hyperframes before using this skill.
|
|
3
|
+
description: Compatibility entry for the retired general-video skill; routes to the current official hyperframes skill.
|
|
9
4
|
---
|
|
10
5
|
|
|
11
|
-
|
|
6
|
+
# general-video: compatibility entry
|
|
12
7
|
|
|
13
|
-
|
|
8
|
+
The current official HyperFrames release merged this workflow into the `hyperframes` skill. Load `hyperframes` from the DSH skill registry and follow its current instructions for the user's task. Use its bundled resources; do not reconstruct the retired workflow or download standalone skills.
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npx hyperframes skills update general-video
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
A successful no-op means the skill is current. Surface an update failure instead of continuing from memory.
|
|
22
|
-
|
|
23
|
-
## 1. Apply cross-cutting source adapters
|
|
24
|
-
|
|
25
|
-
- **Media:** For any audio, image, icon, logo, voice, grade, LUT, treatment/effect, caption, or media-operation need, load `/media-use` and follow `../media-use/references/resolve.md` (resolve, adopt, reuse) and `../media-use/references/setup-providers.md` (providers, auth). Vague footage feedback and named styles use `../media-use/references/media-treatments.md` before editing; do not improvise supported media effects with CSS/SVG/opacity. Before the first authenticated provider action, run `npx hyperframes auth status` and relay its output verbatim. If signed out, apply the gate in `../hyperframes/references/brief-contract.md`: collaborative waits for sign-in or an explicit offline choice; autonomous states the status and continues through an available offline provider. Surface a blocker when no offline provider can satisfy a required capability. Local adoption alone does not require an auth gate.
|
|
26
|
-
- **Figma:** If any input is a `figma.com` URL, run `/figma` first. Build from its exported assets, tokens, components, or storyboard frames. Do not use raw Figma connector calls because they skip SVG sanitization, media provenance, and brand-token binding.
|
|
27
|
-
|
|
28
|
-
These adapters do not change the workflow selected by `/hyperframes`.
|
|
29
|
-
|
|
30
|
-
## 2. Start from project state
|
|
31
|
-
|
|
32
|
-
Apply the first matching row; do not evaluate lower state rows:
|
|
33
|
-
|
|
34
|
-
| State | Action |
|
|
35
|
-
| ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
36
|
-
| Specific edit | Make the edit, preserve existing project decisions, then rerun affected checks. Do not reopen discovery. |
|
|
37
|
-
| `BRIEF.md` exists | Read it. If `workflow` names another workflow and `flow` is not `companion`, hand off. Ask no brief questions. |
|
|
38
|
-
| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from files and recorded preferences. Backfill `BRIEF.md` only from known facts. |
|
|
39
|
-
| Fresh creation | Run `/hyperframes` and its intent layer. Return here only for `workflow: general-video` or `flow: companion`. |
|
|
40
|
-
|
|
41
|
-
For a new project, choose a kebab-case directory name from the brief and scaffold before writing the brief:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
npx hyperframes init "videos/<project>" --non-interactive --example=blank --skill=general-video
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
Then write `BRIEF.md` at the project root using `../hyperframes/references/brief-format.md`. In an existing project, the root is the directory containing `hyperframes.json`. Record only the confirmed preference-backed fields named by the brief format, using `node <MEDIA_DIR>/scripts/prefs.mjs record --hyperframes <PROJECT_ROOT>`; never record inferred defaults. Here `<MEDIA_DIR>` is the installed `/media-use` skill directory and `<PROJECT_ROOT>` is the directory containing `hyperframes.json`. If the intent layer adopted a recipe, apply it now with `node <MEDIA_DIR>/scripts/recipe.mjs use --hyperframes <PROJECT_ROOT> --name <name>` and do not ask again.
|
|
48
|
-
|
|
49
|
-
## 3. Interpret the run shape
|
|
50
|
-
|
|
51
|
-
Use only the canonical terms from `../hyperframes/references/brief-contract.md`:
|
|
52
|
-
|
|
53
|
-
| Field | Meaning | Effect |
|
|
54
|
-
| -------------- | ------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
55
|
-
| `flow` | Who drives | `automation`: choose and execute the route. `companion`: co-create in conversation. |
|
|
56
|
-
| `storyboard` | Plan, sketch, and review before build | `yes`: run plan and sketch review (`storyboard.html`). `no`: build without it. |
|
|
57
|
-
| derived `mode` | How checkpoint gates behave | Follow the brief contract. Never ask the user to name a mode. |
|
|
58
|
-
|
|
59
|
-
Do not invent synonyms for these states. An ongoing “just build it” signal is handled by the intent layer and arrives as `flow: automation`, `storyboard: no`.
|
|
60
|
-
|
|
61
|
-
- For `flow: automation`, choose the route and state it in one line in the first progress update.
|
|
62
|
-
- For a specific edit, make the edit without inventing a new route.
|
|
63
|
-
|
|
64
|
-
For a hard cut, trim, splice, or reorder of existing footage, duplicate the same
|
|
65
|
-
video source into multiple clip elements. On each copy, set the source range
|
|
66
|
-
with `data-media-start` plus `data-duration`, then set authored placement/order
|
|
67
|
-
with `data-start`. Separately authored audio follows the identical clip ranges
|
|
68
|
-
and timing on matching `<audio>` elements. `/hyperframes-core` owns this temporal
|
|
69
|
-
edit; use `/hyperframes-keyframes` only for visual-property animation such as
|
|
70
|
-
zoom, punch, pan, crop, mask, or `clip-path` on an inner wrapper.
|
|
71
|
-
Copy the full contracts from `../hyperframes-core/references/creator-editing-recipes.md`.
|
|
72
|
-
|
|
73
|
-
### Companion flow
|
|
74
|
-
|
|
75
|
-
When `flow: companion`:
|
|
76
|
-
|
|
77
|
-
- Read `BRIEF.md` and reconcile accepted `## Assets` and `## Customizations` with project artifacts. Complete accepted work that is still pending; leave completed work alone; do not offer an accepted capability again as if it were new.
|
|
78
|
-
- **Arrive as the director, not the contractor.** A user who chose companion chose involvement and quality; the honest response is the best version you can design, not the smallest one you can defend. The first plan is the ceiling treatment: the story arc (borrow the nearest genre lens — menu § Genre lenses), the design spec, each scene's motion treatment cited by name (§ 5's plan discipline), the transitions, the audio identity — music and sound marks, or deliberate silence — the user's material placed, and a designed open and close. Say what each layer adds in one line; flag the expensive ones (render time, sign-in, billing) as you name them. The user trims a treatment down; they should never have to assemble one approval by approval.
|
|
79
|
-
- **The ceiling belongs to the concept, not the toolbox.** Every layer must serve the brief's message — a treatment that would dress any video the same way is decoration. Craft rises to the ceiling; content never grows past what was asked (§ 6).
|
|
80
|
-
- Between checkpoints, `../hyperframes/references/capability-menu.md` works two ways. As the trigger list: offer a relevant capability when the user mentions its input or the build reaches its need. As each pass's upgrade channel: a plan, sketch, or build checkpoint may carry one or two traced offers pointed at material the user is looking at ("scene 3's stat wants the count-up treatment"). Read it before offering; never dump the full catalog.
|
|
81
|
-
- After the user accepts a capability, produce its artifact and record the decision in the matching `BRIEF.md` body section immediately. Rewrite a frontmatter field and record the confirmed preference only when the user explicitly changes it.
|
|
82
|
-
- Keep the same storyboard, validation, final-preview, and render-approval gates. Companion changes who steers, not what quality requires.
|
|
83
|
-
|
|
84
|
-
## 4. Load required knowledge before each stage
|
|
85
|
-
|
|
86
|
-
These reads are mandatory when their condition matches:
|
|
87
|
-
|
|
88
|
-
| Condition | Read before acting |
|
|
89
|
-
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
90
|
-
| Any composition HTML or scene layout | `/hyperframes-core`; use `references/determinism-rules.md` for its layout contract |
|
|
91
|
-
| Any non-trivial creation or visual treatment | `/hyperframes-creative` → `references/house-style.md` and `references/video-composition.md` |
|
|
92
|
-
| Any motion, animation, or scene transition | `/hyperframes-animation`; follow its routing to the matching rules, adapters, blueprints, or transition references |
|
|
93
|
-
| `storyboard: yes` | `../hyperframes/references/storyboard-format.md` and `../hyperframes/references/review-loop.md` |
|
|
94
|
-
| Any media asset or operation, including narration, BGM, SFX, captions, grading, or transforms | `/media-use`; for framework playback and placement also read `/hyperframes-core` → `references/variables-and-media.md` |
|
|
95
|
-
| Multi-scene assembly | `../hyperframes/references/production-loop.md` |
|
|
96
|
-
| `flow: companion`, before the first plan | `/hyperframes-creative` → `references/story-spine.md` and `references/house-style.md`; the nearest genre lens and the full `../hyperframes/references/capability-menu.md` — the ceiling treatment is designed from these, not recalled |
|
|
97
|
-
| A companion capability offer, capture, beat grid, generative video, map, publishing, or cross-workflow capability | `../hyperframes/references/capability-menu.md` |
|
|
98
|
-
| A design spec exists, before final approval | `/hyperframes-creative` → `references/design-adherence.md` |
|
|
99
|
-
|
|
100
|
-
Do not replace these reads with recollection. Progressive disclosure saves context only when the matching reference is actually loaded.
|
|
101
|
-
|
|
102
|
-
## 5. Execute the composition
|
|
103
|
-
|
|
104
|
-
Use this dependency order. Skip a stage only when its input is absent.
|
|
105
|
-
|
|
106
|
-
1. **Plan.** State the viewer arc, structure, rhythm, and duration driver. Use one file for a short single scene; use sub-compositions for three or more hard scene cuts or any reused scene. Read `/hyperframes-creative` → `references/story-spine.md` for narrated arcs, `references/beat-direction.md` for rhythm, and `/hyperframes-core` → `references/composition-patterns.md` for structure. For an open-ended multi-scene brief, expand the prompt through `/hyperframes-creative` → `references/prompt-expansion.md`. A multi-scene plan cites each scene's shape: a blueprint id from `/hyperframes-animation` → `blueprints-index.md` when one fits, or the named rules it composes from `rules-index.md` when none does — motion names come from those indexes, never invented. Story truth decides which scenes exist; the citation dresses them. **Search the live catalog before you plan to build any named look yourself**: for every look, effect, treatment or transition the brief names — "CRT scanlines", "glitch", "film grain", "shimmer sweep", "confetti burst" — run `npx hyperframes catalog --query "<the look, in plain English>" --json` and read the top results before the plan names how that look gets built. 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, so it also applies to a look the user asks for mid-build. Blocks the plan names are installed at stage 3; hand-author a look only after a search for it came back with nothing that fits. A multi-scene plan is also recorded as the dispatch artifact: one `## Frame N` block per scene in `STORYBOARD.md` — `status: outline`, a declared `src:`, the blueprint/rules citation, and the beat text — **even when `storyboard: no`**. The block is the dispatch unit; the storyboard sheet is only the review surface.
|
|
107
|
-
2. **Review the plan when requested.** For `storyboard: yes`, run the shared review loop over those blocks. For `storyboard: no`, continue without a plan pause or sketch sheet. When a plan pause happens anyway, fold the sub-agent delegation grant (needed by codex for step 4's dispatch) into that pause rather than stopping again later.
|
|
108
|
-
3. **Resolve dependencies.** Install registry blocks before parallel work. Stage user assets, adopt existing media, and resolve only what the brief requires. Start audio early when its timings drive duration.
|
|
109
|
-
4. **Build scenes.** For a short single-scene piece, implement the scene at its most visible moment before adding motion (the confirmed wireframe, when present, is that end state and must not be redrawn), then animate from its cited blueprint or rules — read the full recipe body (`/hyperframes-animation` → `blueprints/<id>.md`, `rules/<id>.md`) before writing motion.
|
|
110
|
-
|
|
111
|
-
**Dispatch pays for itself only at scale.** Authoring packets and warming fresh worker contexts costs real minutes and tokens: a film of up to ~6 short scenes builds FASTER inline, in this context, one scene after another (measured: 5 short scenes ≈ 9 min inline vs ≈ 21 min packetized). Fan out only when the plan exceeds that — more scenes, or individually heavy ones — and then give each worker **2–3 scenes**, not one, and spawn **all workers in a single wave** (a second wave nearly doubles the window). When dispatching:
|
|
112
|
-
|
|
113
|
-
`node <SKILL_DIR>/scripts/frame-packets.mjs --project "$PROJECT_DIR" --storyboard "$PROJECT_DIR/STORYBOARD.md"`
|
|
114
|
-
|
|
115
|
-
The builder writes one bounded packet per scene under `.hyperframes/frame-packets/` (the scene's exact storyboard block + the blueprint body + every cited rule recipe, inlined) and `_role.md` (`../hyperframes/references/frame-worker-core.md` + this skill's `sub-agents/frame-worker.md`, concatenated verbatim — the complete worker role). Dispatch the workers — 2–3 scene packets each, all in one wave (`../hyperframes/references/subagent-dispatch.md`); each worker's prompt carries `_role.md` and its packets — paste them in full, or hand the file paths for the worker to read first (equivalent either way) — plus a dispatch context with `PROJECT_DIR`, its `frame_id`s, and canvas size. WAIT on every scene's `compositions/<frame_id>.html` + `compositions/<frame_id>.motion.json`. Workers read only their packets and the design truth file; they never open `STORYBOARD.md` or the skill documents. With no delegation channel, fall back serially: process one packet at a time in this context, still working from the packet alone.
|
|
116
|
-
|
|
117
|
-
5. **Merge motion sidecars.** Collect the workers' `compositions/<frame_id>.motion.json` files and carry their durations and exit/entry vectors into assembly; where the doctrine chain (`/motion-doctrine`) is installed, translate them into the project ledger before stamping seams.
|
|
118
|
-
6. **Assemble.** Mount scenes, media, transitions, captions, and audio using the production loop. Real voice duration overrides estimates. When a music bed plays under any voice track, carve the bed before verifying: `/hyperframes-audio` → `scripts/carve.mjs --comp index.html`. A volume duck alone does not finish the mix.
|
|
119
|
-
7. **Verify.** Use `npx hyperframes lint` for fast feedback after the first HTML pass and structural changes. For the final gate, run `npx hyperframes check`; it reruns lint internally, so do not run a redundant standalone lint immediately before it. For sub-compositions, inspect midpoint snapshots. For multi-scene work, review the animation map.
|
|
120
|
-
8. **Final approval.** Open the final Studio preview only after checks pass. Ask whether to render or revise. Render only after approval.
|
|
121
|
-
|
|
122
|
-
## 6. Gates that always apply
|
|
123
|
-
|
|
124
|
-
### Keep scope exact
|
|
125
|
-
|
|
126
|
-
Build what the user asked for. A title card is not a title card plus three scenes, music, and captions. Offer additions before adding them.
|
|
127
|
-
|
|
128
|
-
### Establish design before HTML
|
|
129
|
-
|
|
130
|
-
Resolve the design source in this order: `frame.md` → `design.md` → `DESIGN.md`. Treat the first file found as brand truth.
|
|
131
|
-
|
|
132
|
-
When no design spec exists, complete all four items before writing composition HTML:
|
|
133
|
-
|
|
134
|
-
1. Ground the visual identity in `house-style.md` and `video-composition.md`.
|
|
135
|
-
2. Write one sentence naming the concept angle for every non-trivial creation.
|
|
136
|
-
3. Choose an embeddable font pairing from `/hyperframes-creative` → `references/typography.md`; do not assume an unbundled display font exists in cloud rendering.
|
|
137
|
-
4. Define the focal element, edge anchors, supporting detail, and background treatment.
|
|
138
|
-
|
|
139
|
-
Match density to the requested format and message. Density examples are guidance for produced frames, not permission to invent claims, scenes, or a fixed number of elements.
|
|
140
|
-
|
|
141
|
-
For a named style or mood, read `/hyperframes-creative` → `references/visual-styles.md`. When the user needs to choose visually and no shipped preset fits, read `/hyperframes-creative` → `references/design-picker.md` and run the interactive design selection there.
|
|
142
|
-
|
|
143
|
-
### Preserve the composition contract
|
|
144
|
-
|
|
145
|
-
Timed elements use `class="clip"`; the root and relevant ancestors are sized; each composition registers one paused, seek-safe timeline on `window.__timelines`; rendering is deterministic. Do not use render-time network fetches, clocks, or unseeded randomness.
|
|
146
|
-
|
|
147
|
-
### Borrow workflows safely
|
|
148
|
-
|
|
149
|
-
When the piece resembles a shipped workflow, borrow its genre references as examples. First run `npx hyperframes skills update <workflow-name>`. Borrow its story shape and taste, not its private scripts, pipeline state, or directory contract. The generic build remains owned by this skill.
|
|
150
|
-
|
|
151
|
-
## 7. Done
|
|
152
|
-
|
|
153
|
-
A run is complete only when:
|
|
154
|
-
|
|
155
|
-
- requested scope is implemented;
|
|
156
|
-
- for `flow: companion`, the treatment is delivered, not just the scope: every scene's cited blueprint or rules realized, the audio identity present (or the silence chosen and said), the open and close designed rather than defaulted;
|
|
157
|
-
- `npx hyperframes check` passes, including its built-in lint stage;
|
|
158
|
-
- design adherence is reviewed against `/hyperframes-creative` → `references/design-adherence.md` when a design spec exists;
|
|
159
|
-
- contrast findings are resolved;
|
|
160
|
-
- sub-composition snapshots are inspected when applicable;
|
|
161
|
-
- an autonomous handoff includes an inspected contact or snapshot sheet; multi-scene sheets use scene midpoints;
|
|
162
|
-
- the handoff names the final preview or rendered artifact as applicable and reports the actual duration for a time-based deliverable;
|
|
163
|
-
- `hyperframes-animation/scripts/animation-map.mjs` is reviewed for multi-scene work;
|
|
164
|
-
- the user approves the final Studio preview before render;
|
|
165
|
-
- the rendered file is verified when a render was requested.
|
|
166
|
-
|
|
167
|
-
After final approval, offer once to freeze the run as a recipe, following `../hyperframes/references/review-loop.md` § 4.
|
|
10
|
+
For an existing project, preserve its files and dependencies. DSH plugin management owns this installed skill bundle. The upstream plugin launcher pins HyperFrames 0.8.207 and suppresses standalone skill installation; run it in the user's project directory. This entry preserves the previous DSH skill name while using the current workflow.
|
|
@@ -1,137 +1,74 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hyperframes
|
|
3
|
-
description:
|
|
4
|
-
Mandatory entry point: read this first for any request to make, create, edit, animate, or render a
|
|
5
|
-
video, animation, or motion graphic, including a promo, explainer, captioned clip, title card,
|
|
6
|
-
overlay, slideshow or interactive deck, Remotion port, or any HyperFrames HTML composition. Also
|
|
7
|
-
use it to inspect, diagnose, validate, preview, publish, or batch-render an existing HyperFrames
|
|
8
|
-
project. Inputs may be a website URL, GitHub PR, Figma design or URL, text or brief, existing
|
|
9
|
-
footage, or music. It resumes project state, captures intent when applicable, selects and installs
|
|
10
|
-
the owning workflow, and routes domain capabilities. HyperFrames is the default output framework
|
|
11
|
-
unless the user explicitly chooses another framework for the deliverable or asks only to record a
|
|
12
|
-
browser session.
|
|
3
|
+
description: Read first to make, edit, animate or render any video with HyperFrames (HTML rendered to video), including launch films, explainers, music videos, charts, maps, vertical clips, title cards, captions and overlays. Holds the render contract, the work loop and what each kind of video needs.
|
|
13
4
|
---
|
|
14
5
|
|
|
15
|
-
**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](references/plugin-installation.md) when this skill is inside a HyperFrames plugin.
|
|
6
|
+
**Plugin installs:** Before setup or freshness commands, follow [plugin execution rules](references/plugin-installation.md) when this skill is inside a HyperFrames plugin.
|
|
16
7
|
|
|
17
|
-
# HyperFrames
|
|
8
|
+
# HyperFrames
|
|
18
9
|
|
|
19
|
-
HyperFrames
|
|
10
|
+
HyperFrames renders HTML to video by seeking a paused timeline frame by frame, so every render is identical; the person edits the same files in the Studio preview. Use it unless another framework or a plain browser recording is asked for. Run the CLI as `npx hyperframes <command>` (`/hyperframes-cli`); at the start of a new video, `npx hyperframes usage --json` reports the person's remaining plan usage (say "unknown" when it is).
|
|
20
11
|
|
|
21
|
-
|
|
12
|
+
`index.html` is the root composition: it declares the video's variables and mounts one scene per sub-composition from `compositions/`. Media and fonts live in `assets/`. A new project: `npx hyperframes init <dir>`. A website as the subject: `npx hyperframes capture <url> --json`.
|
|
22
13
|
|
|
23
|
-
|
|
14
|
+
Build what was asked: no voiceover or captions and no new aspect ratio unless the request or the source calls for them; a film over ~15 s that tells something gets music and sound on its visible actions unless the person asked for silence (`references/sound.md`). A new video is 1920×1080 at 30 fps. A question, a hold or a loose idea gets an answer or a proposal, not an edit. Before hand-writing a named effect, transition, caption style, chart or card, search the registry (`/hyperframes-registry`). Any media (a presenter or avatar, footage, voice, music): `/media-use`, which says when HeyGen is needed and what is free. Show real things from their source (the product's screens, the brand's logo, a real place's imagery); draw only what has none.
|
|
24
15
|
|
|
25
|
-
|
|
26
|
-
| ----------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
27
|
-
| Explicit port of existing Remotion source to HyperFrames | Read `references/routes/remotion-to-hyperframes.md`, then route directly to that workflow. Skip the intent layer. |
|
|
28
|
-
| Specific operation on an existing HyperFrames project: inspect, diagnose, validate, preview, render, publish, or batch-render | Perform only that operation. Skip intent and workflow routing; load `/hyperframes-cli` and any required domain skills. |
|
|
29
|
-
| Specific edit to an existing project | Make the edit. Do not run the intent layer. To know what is on a project's timeline (tracks, clips, starts, ends, what plays), run `npx hyperframes timeline [--json]` instead of reading `index.html` and every sub-composition file. |
|
|
30
|
-
| `BRIEF.md` exists | Read `workflow` and `flow`. Execute that workflow; `flow: companion` always executes in `/general-video`. Ask no brief questions. |
|
|
31
|
-
| No brief, but `hyperframes.json` or `STORYBOARD.md` exists | Resume from project files and recorded preferences. Infer the owning workflow from existing artifacts. If it cannot be determined uniquely, ask one routing-only question; do not run the intent interview. |
|
|
32
|
-
| Fresh creation | Run the intent layer — `references/intent-interview.md` — then route once using § 2's table. |
|
|
16
|
+
## Contract
|
|
33
17
|
|
|
34
|
-
|
|
18
|
+
`npx hyperframes check --json` reports most violations with a `Fix:` line.
|
|
35
19
|
|
|
36
|
-
|
|
20
|
+
1. Every timed element has `class="clip"`, `data-start` and `data-duration` in seconds, and shows over `[start, start + duration)`: land an end state just before its end. `data-track-index` is only a Studio lane; paint order is `z-index`.
|
|
21
|
+
2. The video's length is the root's `data-duration`: overrun is cut, an early end holds the last frame.
|
|
22
|
+
3. Each composition builds one paused timeline and registers it after its tweens: `window.__timelines["<data-composition-id>"] = tl`.
|
|
23
|
+
4. No `Date.now()`, unseeded `Math.random()`, network fetches, timers or `repeat: -1`. Everything visible is a function of timeline time.
|
|
24
|
+
5. Never tween `display`, `visibility` or `autoAlpha` on a `.clip`; animate a child.
|
|
25
|
+
6. No CSS `transform` on an element GSAP transforms; animate transforms, not `left`/`top`/`width`/`height`.
|
|
26
|
+
7. Never `play()`, `pause()` or seek media. A `<video>` keeps its sound with `data-has-audio="true"`, else it is `muted`; music, voice, replacement sound and J/L cuts are a separate `<audio>`.
|
|
27
|
+
8. Every `<audio>` has an `id` or it is left out of the mix. No `crossorigin` on media. Time a `<video>` or its wrapper, never both.
|
|
28
|
+
9. Only the bundled fonts (`references/format.md`) resolve by name; any other family needs `@font-face` to a file in `assets/fonts/`.
|
|
29
|
+
10. Asset paths are root-relative (`assets/...`), in sub-compositions too.
|
|
30
|
+
11. Grades, grain, blur and vignettes on footage go through `npx hyperframes media-treatment` (`/media-use`), never CSS filters.
|
|
31
|
+
12. A scene file puts its styles, markup and scripts inside `<template>` and styles its root as `#root`. Intended overflow or overlap: `data-layout-allow-overflow`, `data-layout-allow-overlap`.
|
|
37
32
|
|
|
38
|
-
|
|
33
|
+
## Keep it editable
|
|
39
34
|
|
|
40
|
-
|
|
35
|
+
Studio edits the tags you write.
|
|
41
36
|
|
|
42
|
-
|
|
37
|
+
- One scene per sub-composition, short readable ids; the root holds only scene hosts, media and audio.
|
|
38
|
+
- Timed elements are written in the HTML, not made by script, each with a stable `id`.
|
|
39
|
+
- Copy, brand colours and swappable media are variables (`data-var-text`, `data-var-src`, `var(--id)`).
|
|
40
|
+
- One kind per track: `data-track-kind="graphics"` on scene and overlay hosts, `captions` on the one host that holds every caption group.
|
|
41
|
+
- Content stays inside the 90% action-safe box, captions and key text inside 80% title-safe; Studio draws the guides, never add them.
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
## Work loop
|
|
45
44
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
- An existing project: `npx hyperframes timeline --json` shows what plays when; before any change, `npx hyperframes history --since mine --who <you>` shows what the person changed since your last turn: build on it (`/hyperframes-cli`).
|
|
46
|
+
- A new film over ~15 s that tells something: its type's file (below), then `references/story.md`: three storylines that are three different films, in words only; the person picks unless they asked for the file or no stops. Then `SPEC.md` (`references/spec.md`): every adjective as a number, the defaults banned by name, the shots by frame.
|
|
47
|
+
- After your last edit: `npx hyperframes check --json`; fix every error, weigh every warning. A film: `npx hyperframes snapshot --review` and `references/review.md`, ending in `REVIEW.md`. A small edit: snapshot what you changed (`--at`, `--range`, `--composition`) and look before you reply.
|
|
48
|
+
- Render when the person approves the Studio preview, asks for the file or asks for no stops, after your check and review pass; otherwise stop at the preview and wait.
|
|
49
49
|
|
|
50
|
-
The
|
|
50
|
+
## The HyperFrames desktop app
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
Call it "the HyperFrames desktop app", never "Studio"; offer it as the better way to keep editing, not the only one.
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
- Before the delivery render of a new video, open the Studio preview, even in no-questions mode, and say they can edit there. If `preview` printed "Keep editing by chatting with Framey", add that the **Edit with Framey** button opens the app.
|
|
55
|
+
- After the delivery render, pass on its Framey line in your own words: offer to run the `hyperframes open` it names or give its download link; else say nothing (autonomous: the delivery note).
|
|
56
|
+
- When any command says to run `catch-up`, run `npx hyperframes catch-up [dir]` before your next change; what it lists is their work, not a new request.
|
|
55
57
|
|
|
56
|
-
|
|
57
|
-
| -------- | ------------------------------------------------------------------------------------------------------------------ | -------------------------- |
|
|
58
|
-
| 1 | Explicitly port an existing Remotion source | `/remotion-to-hyperframes` |
|
|
59
|
-
| 2 | Author a presentation, pitch deck, or navigable interactive deck | `/slideshow` |
|
|
60
|
-
| 3 | Add plain captions or subtitles to existing talking-head footage without changing it | `/embedded-captions` |
|
|
61
|
-
| 4 | Add designed graphic overlays to existing talking-head, interview, or podcast footage without changing the footage | `/talking-head-recut` |
|
|
62
|
-
| 5 | Build a beat-synced video from a music track, with no narration or website capture | `/music-to-video` |
|
|
63
|
-
| 6 | Create an explicitly short, unnarrated, motion-first unit, typically under 10s | `/motion-graphics` |
|
|
64
|
-
| 7 | Explain a GitHub pull request or code change from a PR reference | `/pr-to-video` |
|
|
65
|
-
| 8 | Market or showcase a website, product site, app, or company from a URL or site-specific brief | `/product-launch-video` |
|
|
66
|
-
| 9 | Explain a topic, article, or notes with invented visuals and no product or site capture | `/faceless-explainer` |
|
|
67
|
-
| 10 | Any other custom video or composition | `/general-video` |
|
|
58
|
+
## What to read
|
|
68
59
|
|
|
69
|
-
|
|
60
|
+
| The request | Read |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| Launch, promo, feature | `references/types/launch.md` |
|
|
63
|
+
| Explainer, tutorial | `references/types/explainer.md` |
|
|
64
|
+
| Music video | `references/types/music.md` |
|
|
65
|
+
| Chart, numbers | `references/types/data.md` |
|
|
66
|
+
| Vertical or social clip | `references/types/vertical.md` |
|
|
67
|
+
| 3D, simulation, generative | `references/types/3d.md` |
|
|
68
|
+
| Character, mascot, story short | `references/types/character.md` |
|
|
69
|
+
| A real place or map; a website, PR or script; kinetic type | `references/film.md` |
|
|
70
|
+
| Captions; cards over a talking head | `references/captions.md`; `references/overlays.md` |
|
|
71
|
+
| Motion: eases, titles, cuts, punch-ins, speed, holds | `references/motion.md` |
|
|
72
|
+
| Scenes, attributes, media, lint; GSAP, Lottie, 3D, canvas | `references/format.md`; `references/runtimes.md` |
|
|
70
73
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
- A short animated title, logo sting, stat hit, chart hit, map hit, or standalone lower-third is `/motion-graphics` when it is unnarrated and motion is the message. A static title card, narrated sequence, longer montage, or custom loop is `/general-video`.
|
|
74
|
-
- An explicitly short motion graphic may use a URL, tweet, article, or screenshot as source material. A generic "make a video from this site" request is `/product-launch-video`.
|
|
75
|
-
- Existing footage with captions routes to `/embedded-captions`; footage with designed information cards routes to `/talking-head-recut`. Retiming, reordering, recoloring, reframing, or remixing footage is a custom edit and falls through to `/general-video`.
|
|
76
|
-
- A music file selects `/music-to-video` only when its beat grid drives the piece. Music used as a bed does not override the subject-matched route.
|
|
77
|
-
- "I want a storyboard" changes the review process, not the workflow. With no other routing signal, use `/general-video`. A confirmed sketched `storyboard.html` may itself be the requested deliverable; the review loop defines that stop point.
|
|
78
|
-
- Specialized narrative workflows support up to about 3 minutes and are strongest around 30–90s. Route a clearly longer piece to `/general-video`. Length never overrides an explicit port, deck, caption, overlay, or music-driven deliverable.
|
|
79
|
-
|
|
80
|
-
## 3. Route once, then leave
|
|
81
|
-
|
|
82
|
-
For fresh creation the intent layer (`references/intent-interview.md`) runs the full conversation — memory, triage, pitch round, must-haves, run-shape, hand-off — and **ends by writing `BRIEF.md`. The brief is the only routing artifact the workflow reads**; nothing later re-opens this skill or the interview. Answer every later "what did the route require?" from `BRIEF.md`.
|
|
83
|
-
|
|
84
|
-
## 4. Install and enter the workflow
|
|
85
|
-
|
|
86
|
-
Before reading the selected workflow, install or refresh it and the core domain skills:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
npx hyperframes skills update <workflow-name>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Use the bare name without `/`. If the command fails, surface the error; do not reconstruct the workflow from memory. Everything else about installation — the core-vs-lazy split, what `init` refreshes, diagnosis, CI opt-out, and the no-CLI fallback — lives in `references/skill-lifecycle.md`.
|
|
93
|
-
|
|
94
|
-
## 5. Load domain skills on demand
|
|
95
|
-
|
|
96
|
-
| Need | Skill |
|
|
97
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
|
|
98
|
-
| Composition structure, timing attributes, tracks, variables, determinism | `/hyperframes-core` |
|
|
99
|
-
| Motion rules, scene blueprints, transitions, runtime adapters | `/hyperframes-animation` |
|
|
100
|
-
| Seek-safe GSAP, CSS, Anime.js, WAAPI, FLIP, paths, masks, SVG, 3D keyframes, or `hyperframes keyframes` diagnostics | `/hyperframes-keyframes` |
|
|
101
|
-
| Design specs, concept, palette, typography, narration, beat planning | `/hyperframes-creative` |
|
|
102
|
-
| Images, icons, logos, audio, captions, grades, LUTs, reusable media | `/media-use` |
|
|
103
|
-
| Voiceover carve, audio effect chains, automation envelopes, or one chain/fader across several tracks (submix bus) | `/hyperframes-audio` |
|
|
104
|
-
| Init, lint, check, snapshots, compare, batch render, Studio, render, publish, or diagnostics | `/hyperframes-cli` |
|
|
105
|
-
| Registry blocks and components | `/hyperframes-registry` |
|
|
106
|
-
| A named look, effect, treatment, or transition — CRT scanlines, glitch, film grain, shimmer sweep, confetti burst — BEFORE hand-building it | `/hyperframes-registry` |
|
|
107
|
-
| Figma assets, tokens, components, or storyboard frames as reconstructed motion | `/figma` |
|
|
108
|
-
|
|
109
|
-
Creator edit phrases are cross-domain requests. Load every skill named in the matching row:
|
|
110
|
-
|
|
111
|
-
| Creator request | Required domains |
|
|
112
|
-
| ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
113
|
-
| “cut this footage”, hard cut, trim, splice, reorder, or use a source range | `/general-video` + `/hyperframes-core`; core owns `data-start`, `data-duration`, `data-media-start`, and track layout. |
|
|
114
|
-
| zoom in here, punch-in / punch-out, smooth multi-state zoom or reframe, Ken Burns, or camera move | `/general-video` + `/hyperframes-core` + `/hyperframes-keyframes`; animate the inner visual/crop wrapper, not the timed clip. |
|
|
115
|
-
| match cut or whip pan camera transition | `/general-video` + `/hyperframes-animation` + `/hyperframes-keyframes` + `/hyperframes-registry`; search/install a transition primitive before hand-authoring. |
|
|
116
|
-
| fade, crossfade, track gain/volume, automation, duck/carve, audio effects, or one effect across several tracks | `/general-video` + `/hyperframes-core` + `/hyperframes-audio`; core places clips, audio mixes placed tracks — including a submix bus over a group of them. |
|
|
117
|
-
| picture and sound edits that combine cuts with camera motion or mixing | `/general-video` + `/hyperframes-core` + `/hyperframes-keyframes` when there is visual motion + `/hyperframes-audio` when sound is faded, mixed, ducked, automated, or processed. |
|
|
118
|
-
| lay out a project so it reads well in Studio: caption track, tracks per element kind, sub-compositions, safe zones | `/hyperframes-studio` + `/hyperframes-core`; studio owns the layout conventions, core owns each edit. |
|
|
119
|
-
| source or generate media, or preprocess an unsupported mid-source freeze | `/media-use`; sourcing/generation/preprocessing only, never placed-track mixing. |
|
|
120
|
-
|
|
121
|
-
Constant `data-playback-rate` is render-safe for picture and pitch-preserved
|
|
122
|
-
sound. Speed ramps are a `rate` lane in `data-automation`.
|
|
123
|
-
For copyable edit contracts, load `/hyperframes-core` → `references/creator-editing-recipes.md`.
|
|
124
|
-
|
|
125
|
-
Broad feedback about how photographic media looks or behaves also routes to
|
|
126
|
-
`/media-use`, even when the user never says “color grading” or “effect”: fix
|
|
127
|
-
dark/flat/boring footage, stylize a clip, hide a face, or improve a media
|
|
128
|
-
reveal. Read `../media-use/references/media-treatments.md` before editing a
|
|
129
|
-
treatment; it governs how footage is treated, never whether media may be used.
|
|
130
|
-
Do not substitute a generic LUT, CSS filter/overlay, or opacity tween for an
|
|
131
|
-
existing canonical treatment primitive. Keep text/layout/motion-only edits in
|
|
132
|
-
their owning domain.
|
|
133
|
-
During a build with important photographic media, include one grounded
|
|
134
|
-
media-polish scan in the final quality pass; leaving suitable media unchanged is
|
|
135
|
-
a valid result.
|
|
136
|
-
|
|
137
|
-
Domain skills never take ownership of the end-to-end deliverable. Load only what the active workflow needs.
|
|
74
|
+
Decks: `/slideshow`. Remotion source: `/remotion-to-hyperframes`. Figma: `/figma`. Installing, refreshing or upgrading skills and the pinned CLI: `references/skill-lifecycle.md`.
|