dsh-hyperframes 0.2.0 → 0.3.1
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/README.en.md +52 -6
- package/README.md +51 -7
- package/lib/index.d.ts +8 -41
- package/lib/index.js +38 -99
- package/lib/skill-bundle.d.ts +56 -0
- package/lib/skill-bundle.js +218 -0
- package/package.json +1 -1
- package/skills/embedded-captions/CATALOG.md +91 -0
- package/skills/embedded-captions/SKILL.md +258 -0
- package/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/skills/embedded-captions/dna/README.md +148 -0
- package/skills/embedded-captions/dna/chrome.json +68 -0
- package/skills/embedded-captions/dna/cream.json +69 -0
- package/skills/embedded-captions/dna/documentary.json +62 -0
- package/skills/embedded-captions/dna/editorial.json +70 -0
- package/skills/embedded-captions/dna/glitch.json +82 -0
- package/skills/embedded-captions/dna/ink.json +65 -0
- package/skills/embedded-captions/dna/keynote.json +62 -0
- package/skills/embedded-captions/dna/loud.json +75 -0
- package/skills/embedded-captions/dna/neon.json +58 -0
- package/skills/embedded-captions/dna/velocity.json +89 -0
- package/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/skills/embedded-captions/modes/standard/_anatomy.md +233 -0
- package/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/skills/embedded-captions/modes/standard/fonts/build-fonts-css.cjs +97 -0
- package/skills/embedded-captions/modes/standard/fonts/files/anton-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/audiowide-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/baloo-2-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bangers-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/bodoni-moda-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/caveat-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/caveat-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/chakra-petch-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cinzel-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/cormorant-garamond-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/creepster-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/fredoka-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-italic.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-italic.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-600-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-800-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/inter-latin-900-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/monoton-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/orbitron-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/permanent-marker-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/press-start-2p-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-500-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/rajdhani-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/saira-stencil-one-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/shippori-mincho-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/sora-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/sora-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/space-grotesk-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/special-elite-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/teko-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/teko-latin-700-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/files/vt323-latin-400-normal.woff2 +0 -0
- package/skills/embedded-captions/modes/standard/fonts/fonts.css +401 -0
- package/skills/embedded-captions/references/aesthetic-principles.md +168 -0
- package/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/skills/embedded-captions/references/composition-craft.md +522 -0
- package/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/skills/embedded-captions/references/failure-modes.md +145 -0
- package/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/skills/embedded-captions/references/rail.md +68 -0
- package/skills/embedded-captions/references/reference-bar.md +47 -0
- package/skills/embedded-captions/references/scene-types.md +94 -0
- package/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/skills/embedded-captions/references/typography-presets.md +63 -0
- package/skills/embedded-captions/scripts/audio-envelope.cjs +95 -0
- package/skills/embedded-captions/scripts/check-occlusion.cjs +250 -0
- package/skills/embedded-captions/scripts/check-overflow.cjs +194 -0
- package/skills/embedded-captions/scripts/check-rail-climax.cjs +233 -0
- package/skills/embedded-captions/scripts/check-timing.cjs +173 -0
- package/skills/embedded-captions/scripts/fill-timings.cjs +124 -0
- package/skills/embedded-captions/scripts/fit-fonts.cjs +158 -0
- package/skills/embedded-captions/scripts/gen-stroke-path.py +57 -0
- package/skills/embedded-captions/scripts/inject-fonts.cjs +169 -0
- package/skills/embedded-captions/scripts/lib-dna.cjs +201 -0
- package/skills/embedded-captions/scripts/make-cinematic.cjs +1206 -0
- package/skills/embedded-captions/scripts/make-composition.cjs +405 -0
- package/skills/embedded-captions/scripts/make-theme.cjs +8585 -0
- package/skills/embedded-captions/scripts/matte.cjs +280 -0
- package/skills/embedded-captions/scripts/measure-layout.cjs +293 -0
- package/skills/embedded-captions/scripts/prepare.sh +39 -0
- package/skills/embedded-captions/scripts/preview-frames.cjs +268 -0
- package/skills/embedded-captions/scripts/render-and-composite.sh +469 -0
- package/skills/embedded-captions/scripts/render-theme.sh +34 -0
- package/skills/embedded-captions/scripts/safe-zones.cjs +813 -0
- package/skills/embedded-captions/scripts/transcribe.cjs +332 -0
- package/skills/embedded-captions/themes/README.md +243 -0
- package/skills/embedded-captions/themes/anchor.json +27 -0
- package/skills/embedded-captions/themes/arcade.json +51 -0
- package/skills/embedded-captions/themes/aurora.json +41 -0
- package/skills/embedded-captions/themes/biolume.json +35 -0
- package/skills/embedded-captions/themes/brush.json +74 -0
- package/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/skills/embedded-captions/themes/dossier.json +56 -0
- package/skills/embedded-captions/themes/graffiti.json +62 -0
- package/skills/embedded-captions/themes/hologram.json +41 -0
- package/skills/embedded-captions/themes/inkwater.json +43 -0
- package/skills/embedded-captions/themes/laser.json +46 -0
- package/skills/embedded-captions/themes/lastpage.json +33 -0
- package/skills/embedded-captions/themes/neonsign.json +53 -0
- package/skills/embedded-captions/themes/ordnance.json +54 -0
- package/skills/embedded-captions/themes/papercut.json +37 -0
- package/skills/embedded-captions/themes/popup.json +46 -0
- package/skills/embedded-captions/themes/ransom.json +62 -0
- package/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/skills/embedded-captions/themes/spectrum.json +46 -0
- package/skills/embedded-captions/themes/stardust.json +29 -0
- package/skills/embedded-captions/themes/stomp.json +43 -0
- package/skills/embedded-captions/themes/terminal.json +49 -0
- package/skills/embedded-captions/themes/thunder.json +44 -0
- package/skills/embedded-captions/themes/transit.json +44 -0
- package/skills/embedded-captions/themes/vhs.json +47 -0
- package/skills/faceless-explainer/SKILL.md +233 -0
- package/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/skills/faceless-explainer/references/motion-language.md +156 -0
- package/skills/faceless-explainer/references/story-design.md +255 -0
- package/skills/faceless-explainer/references/visual-design.md +146 -0
- package/skills/faceless-explainer/scripts/assemble-index.mjs +623 -0
- package/skills/faceless-explainer/scripts/assemble-index.test.mjs +72 -0
- package/skills/faceless-explainer/scripts/audio.mjs +291 -0
- package/skills/faceless-explainer/scripts/audio.test.mjs +176 -0
- package/skills/faceless-explainer/scripts/build-frame.mjs +551 -0
- package/skills/faceless-explainer/scripts/captions.mjs +521 -0
- package/skills/faceless-explainer/scripts/captions.test.mjs +219 -0
- package/skills/faceless-explainer/scripts/frame-packets.mjs +27 -0
- package/skills/faceless-explainer/scripts/frame-packets.test.mjs +66 -0
- package/skills/faceless-explainer/scripts/lib/assets.mjs +56 -0
- package/skills/faceless-explainer/scripts/lib/dimensions.mjs +45 -0
- package/skills/faceless-explainer/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/faceless-explainer/scripts/lib/storyboard.mjs +249 -0
- package/skills/faceless-explainer/scripts/lib/tokens.mjs +211 -0
- package/skills/faceless-explainer/scripts/lib/transition-registry.mjs +38 -0
- package/skills/faceless-explainer/scripts/lib/transitions.json +71 -0
- package/skills/faceless-explainer/scripts/transitions.mjs +383 -0
- package/skills/faceless-explainer/scripts/transitions.test.mjs +68 -0
- package/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
- package/skills/figma/SKILL.md +132 -0
- package/skills/figma/scripts/verify-motion.mjs +153 -0
- package/skills/general-video/SKILL.md +165 -0
- package/skills/general-video/scripts/frame-packets.mjs +38 -0
- package/skills/general-video/scripts/frame-packets.test.mjs +80 -0
- package/skills/general-video/sub-agents/frame-worker.md +34 -0
- package/skills/hyperframes/SKILL.md +98 -337
- package/skills/hyperframes/references/capability-menu.md +47 -0
- package/skills/hyperframes/references/intent-interview.md +71 -0
- package/skills/hyperframes/references/pitch-round.md +40 -0
- package/skills/hyperframes/references/route-briefs.md +11 -0
- package/skills/hyperframes/references/routes/embedded-captions.md +11 -0
- package/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
- package/skills/hyperframes/references/routes/general-video.md +12 -0
- package/skills/hyperframes/references/routes/motion-graphics.md +11 -0
- package/skills/hyperframes/references/routes/music-to-video.md +12 -0
- package/skills/hyperframes/references/routes/pr-to-video.md +28 -0
- package/skills/hyperframes/references/routes/product-launch-video.md +13 -0
- package/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
- package/skills/hyperframes/references/routes/slideshow.md +11 -0
- package/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
- package/skills/hyperframes/references/skill-lifecycle.md +33 -0
- package/skills/hyperframes/references/workflow-catalog.md +10 -0
- package/skills/hyperframes-animation/SKILL.md +84 -0
- package/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/skills/hyperframes-animation/adapters/animejs.md +130 -0
- package/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
- package/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
- package/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/skills/hyperframes-animation/adapters/lottie.md +117 -0
- package/skills/hyperframes-animation/adapters/three.md +131 -0
- package/skills/hyperframes-animation/adapters/typegpu.md +182 -0
- package/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
- package/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
- package/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
- package/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
- package/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
- package/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
- package/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
- package/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
- package/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
- package/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
- package/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
- package/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
- package/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
- package/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
- package/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
- package/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
- package/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
- package/skills/hyperframes-animation/blueprints-index.md +202 -0
- package/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
- package/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
- package/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
- package/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
- package/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
- package/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
- package/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
- package/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
- package/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
- package/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
- package/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
- package/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
- package/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
- package/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
- package/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
- package/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
- package/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
- package/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
- package/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
- package/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
- package/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
- package/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
- package/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
- package/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
- package/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
- package/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
- package/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
- package/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
- package/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
- package/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
- package/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
- package/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
- package/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
- package/skills/hyperframes-animation/rules/particle-burst.md +149 -0
- package/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
- package/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
- package/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
- package/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
- package/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
- package/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
- package/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
- package/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
- package/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
- package/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
- package/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
- package/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
- package/skills/hyperframes-animation/rules/viewport-change.md +148 -0
- package/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
- package/skills/hyperframes-animation/rules-index.md +113 -0
- package/skills/hyperframes-animation/scripts/animation-map-sampling.mjs +40 -0
- package/skills/hyperframes-animation/scripts/animation-map-sampling.test.mjs +48 -0
- package/skills/{hyperframes → hyperframes-animation}/scripts/animation-map.mjs +116 -53
- package/skills/hyperframes-animation/scripts/animation-map.test.mjs +444 -0
- package/skills/hyperframes-animation/scripts/package-loader.mjs +384 -0
- package/skills/hyperframes-animation/scripts/package-loader.test.mjs +62 -0
- package/skills/{website-to-hyperframes/references → hyperframes-animation}/techniques.md +146 -26
- package/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
- package/skills/{hyperframes/references → hyperframes-animation}/transitions/catalog.md +26 -16
- package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-destruction.md +1 -1
- package/skills/{hyperframes/references/transitions.md → hyperframes-animation/transitions/overview.md} +44 -3
- package/skills/hyperframes-audio/SKILL.md +470 -0
- package/skills/hyperframes-audio/references/attributes.md +138 -0
- package/skills/hyperframes-audio/references/diagnosis.md +276 -0
- package/skills/hyperframes-audio/references/fx-registry.md +84 -0
- package/skills/hyperframes-audio/references/presets.md +216 -0
- package/skills/hyperframes-audio/scripts/carve.mjs +569 -0
- package/skills/hyperframes-audio/scripts/carve.test.mjs +239 -0
- package/skills/hyperframes-cli/SKILL.md +121 -103
- package/skills/hyperframes-cli/references/beats.md +19 -0
- package/skills/hyperframes-cli/references/cloud.md +163 -0
- package/skills/hyperframes-cli/references/cloudrun.md +62 -0
- package/skills/hyperframes-cli/references/compare-and-batch.md +105 -0
- package/skills/hyperframes-cli/references/doctor-browser.md +57 -0
- package/skills/hyperframes-cli/references/init-and-scaffold.md +72 -0
- package/skills/hyperframes-cli/references/lambda.md +185 -0
- package/skills/hyperframes-cli/references/lint-validate-inspect.md +132 -0
- package/skills/hyperframes-cli/references/preview-render.md +190 -0
- package/skills/hyperframes-cli/references/upgrade-info-misc.md +77 -0
- package/skills/hyperframes-core/SKILL.md +94 -0
- package/skills/hyperframes-core/references/brief-contract.md +108 -0
- package/skills/hyperframes-core/references/brief-format.md +72 -0
- package/skills/hyperframes-core/references/composition-patterns.md +263 -0
- package/skills/hyperframes-core/references/creator-editing-recipes.md +367 -0
- package/skills/hyperframes-core/references/data-attributes.md +78 -0
- package/skills/hyperframes-core/references/determinism-rules.md +70 -0
- package/skills/hyperframes-core/references/frame-worker-core.md +80 -0
- package/skills/hyperframes-core/references/full-screen-motion.md +76 -0
- package/skills/hyperframes-core/references/minimal-composition.md +69 -0
- package/skills/hyperframes-core/references/production-loop.md +26 -0
- package/skills/hyperframes-core/references/review-loop.md +41 -0
- package/skills/hyperframes-core/references/script-format.md +52 -0
- package/skills/hyperframes-core/references/storyboard-format.md +130 -0
- package/skills/hyperframes-core/references/sub-compositions.md +239 -0
- package/skills/hyperframes-core/references/subagent-dispatch.md +35 -0
- package/skills/hyperframes-core/references/tailwind.md +123 -0
- package/skills/hyperframes-core/references/tracks-and-clips.md +91 -0
- package/skills/hyperframes-core/references/variables-and-media.md +107 -0
- package/skills/hyperframes-core/scripts/lib/frame-packets-core.mjs +212 -0
- package/skills/hyperframes-creative/SKILL.md +71 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/EBGaramond-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/EBGaramond-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/Inter-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/Inter-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/JetBrainsMono-400.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/JetBrainsMono-700.woff2 +0 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
- package/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
- package/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/skills/{hyperframes → hyperframes-creative}/references/audio-reactive.md +1 -1
- package/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/skills/{hyperframes → hyperframes-creative/references}/data-in-motion.md +1 -1
- package/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/skills/{hyperframes → hyperframes-creative/references}/house-style.md +4 -2
- package/skills/hyperframes-creative/references/motion-principles.md +151 -0
- package/skills/{website-to-hyperframes/references/step-3-script.md → hyperframes-creative/references/narration.md} +5 -9
- package/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/skills/hyperframes-creative/references/story-spine.md +43 -0
- package/skills/{hyperframes → hyperframes-creative}/references/typography.md +45 -2
- package/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/skills/hyperframes-creative/scripts/contrast-report.mjs +538 -0
- package/skills/{gsap → hyperframes-creative}/scripts/extract-audio-data.py +13 -2
- package/skills/hyperframes-creative/scripts/package-loader.mjs +384 -0
- package/skills/hyperframes-creative/scripts/package-loader.test.mjs +62 -0
- package/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/skills/hyperframes-keyframes/SKILL.md +262 -0
- package/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
- package/skills/hyperframes-registry/SKILL.md +55 -16
- package/skills/hyperframes-registry/references/component-quality-bar.md +250 -0
- package/skills/hyperframes-registry/references/contributing.md +174 -0
- package/skills/hyperframes-registry/references/discovery.md +191 -13
- package/skills/hyperframes-registry/references/placeholder-material.md +149 -0
- package/skills/hyperframes-registry/references/templates.md +417 -0
- package/skills/hyperframes-registry/references/wiring-blocks.md +1 -31
- package/skills/hyperframes-registry/references/wiring-components.md +1 -39
- package/skills/media-use/SKILL.md +96 -0
- package/skills/media-use/audio/assets/sfx/CREDITS.md +35 -0
- package/skills/media-use/audio/assets/sfx/chime.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/click-soft.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/click.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/error.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-1.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-2.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/glitch-3.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/impact-bass-1.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/impact-bass-2.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/key-press.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/manifest.json +97 -0
- package/skills/media-use/audio/assets/sfx/notification.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/ping.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/pop.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/riser.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/sparkle.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/typing.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh-cinematic.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh-short.mp3 +0 -0
- package/skills/media-use/audio/assets/sfx/whoosh.mp3 +0 -0
- package/skills/media-use/audio/references/bgm.md +74 -0
- package/skills/media-use/audio/references/captions/authoring.md +159 -0
- package/skills/{hyperframes/references/dynamic-techniques.md → media-use/audio/references/captions/motion.md} +8 -11
- package/skills/{hyperframes/references/transcript-guide.md → media-use/audio/references/captions/transcript-handling.md} +5 -59
- package/skills/media-use/audio/references/remove-background.md +143 -0
- package/skills/media-use/audio/references/requirements.md +29 -0
- package/skills/media-use/audio/references/sfx.md +42 -0
- package/skills/media-use/audio/references/transcribe.md +52 -0
- package/skills/media-use/audio/references/tts-to-captions.md +26 -0
- package/skills/media-use/audio/references/tts.md +165 -0
- package/skills/media-use/audio/scripts/audio.mjs +293 -0
- package/skills/media-use/audio/scripts/audio.test.mjs +49 -0
- package/skills/media-use/audio/scripts/heygen-tts.mjs +121 -0
- package/skills/media-use/audio/scripts/lib/bgm.mjs +257 -0
- package/skills/media-use/audio/scripts/lib/bgm.test.mjs +30 -0
- package/skills/media-use/audio/scripts/lib/concurrency.mjs +14 -0
- package/skills/media-use/audio/scripts/lib/concurrency.test.mjs +41 -0
- package/skills/media-use/audio/scripts/lib/heygen.mjs +155 -0
- package/skills/media-use/audio/scripts/lib/heygen.test.mjs +103 -0
- package/skills/media-use/audio/scripts/lib/python.mjs +63 -0
- package/skills/media-use/audio/scripts/lib/python.test.mjs +68 -0
- package/skills/media-use/audio/scripts/lib/sfx.mjs +143 -0
- package/skills/media-use/audio/scripts/lib/sfx.test.mjs +69 -0
- package/skills/media-use/audio/scripts/lib/tts.mjs +378 -0
- package/skills/media-use/audio/scripts/lib/tts.spawn.test.mjs +158 -0
- package/skills/media-use/audio/scripts/lib/tts.test.mjs +157 -0
- package/skills/media-use/audio/scripts/lyria-recipe.py +136 -0
- package/skills/media-use/audio/scripts/wait-bgm.mjs +167 -0
- package/skills/media-use/luts/README.md +28 -0
- package/skills/media-use/luts/index.json +57 -0
- package/skills/media-use/references/audio.md +19 -0
- package/skills/media-use/references/grading.md +160 -0
- package/skills/media-use/references/media-treatment-recipes.md +929 -0
- package/skills/media-use/references/media-treatments.md +202 -0
- package/skills/media-use/references/memory.md +36 -0
- package/skills/media-use/references/meta.md +61 -0
- package/skills/media-use/references/operations.md +325 -0
- package/skills/media-use/references/resolve.md +139 -0
- package/skills/media-use/references/setup-providers.md +80 -0
- package/skills/media-use/references/telemetry-dashboard.md +49 -0
- package/skills/media-use/scripts/audio-duck.mjs +121 -0
- package/skills/media-use/scripts/dither.mjs +328 -0
- package/skills/media-use/scripts/dither.test.mjs +176 -0
- package/skills/media-use/scripts/eval.mjs +369 -0
- package/skills/media-use/scripts/lib/adopt.mjs +128 -0
- package/skills/media-use/scripts/lib/adopt.test.mjs +95 -0
- package/skills/media-use/scripts/lib/bgm-provider.mjs +20 -0
- package/skills/media-use/scripts/lib/brand-provider.mjs +59 -0
- package/skills/media-use/scripts/lib/bundled-sfx-provider.mjs +108 -0
- package/skills/media-use/scripts/lib/bundled-sfx-provider.test.mjs +85 -0
- package/skills/media-use/scripts/lib/cache.mjs +150 -0
- package/skills/media-use/scripts/lib/candidates.mjs +91 -0
- package/skills/media-use/scripts/lib/candidates.test.mjs +155 -0
- package/skills/media-use/scripts/lib/codex-provider.mjs +161 -0
- package/skills/media-use/scripts/lib/codex-provider.test.mjs +34 -0
- package/skills/media-use/scripts/lib/coverage.test.mjs +117 -0
- package/skills/media-use/scripts/lib/cube-build.mjs +181 -0
- package/skills/media-use/scripts/lib/cube-build.test.mjs +80 -0
- package/skills/media-use/scripts/lib/cube-validate.mjs +198 -0
- package/skills/media-use/scripts/lib/cube-validate.test.mjs +125 -0
- package/skills/media-use/scripts/lib/cutlist.mjs +184 -0
- package/skills/media-use/scripts/lib/cutlist.test.mjs +148 -0
- package/skills/media-use/scripts/lib/duck.mjs +89 -0
- package/skills/media-use/scripts/lib/duck.test.mjs +118 -0
- package/skills/media-use/scripts/lib/error-diffusion.mjs +230 -0
- package/skills/media-use/scripts/lib/error-diffusion.test.mjs +102 -0
- package/skills/media-use/scripts/lib/freeze.mjs +70 -0
- package/skills/media-use/scripts/lib/freeze.test.mjs +46 -0
- package/skills/media-use/scripts/lib/grade-analyzer.mjs +264 -0
- package/skills/media-use/scripts/lib/grade-analyzer.test.mjs +285 -0
- package/skills/media-use/scripts/lib/heygen-cli.mjs +191 -0
- package/skills/media-use/scripts/lib/heygen-cli.test.mjs +301 -0
- package/skills/media-use/scripts/lib/heygen-search.mjs +45 -0
- package/skills/media-use/scripts/lib/heygen-search.test.mjs +49 -0
- package/skills/media-use/scripts/lib/heygen-video-provider.mjs +127 -0
- package/skills/media-use/scripts/lib/heygen-video-provider.test.mjs +344 -0
- package/skills/media-use/scripts/lib/image-provider.mjs +44 -0
- package/skills/media-use/scripts/lib/index-gen.mjs +63 -0
- package/skills/media-use/scripts/lib/local-models.mjs +318 -0
- package/skills/media-use/scripts/lib/local-models.test.mjs +220 -0
- package/skills/media-use/scripts/lib/local-run.mjs +78 -0
- package/skills/media-use/scripts/lib/local-run.test.mjs +121 -0
- package/skills/media-use/scripts/lib/logo-provider.mjs +222 -0
- package/skills/media-use/scripts/lib/logo-provider.test.mjs +137 -0
- package/skills/media-use/scripts/lib/ltx-video-provider.mjs +94 -0
- package/skills/media-use/scripts/lib/ltx-video-provider.test.mjs +316 -0
- package/skills/media-use/scripts/lib/lut-preset-provider.mjs +266 -0
- package/skills/media-use/scripts/lib/lut-preset-provider.test.mjs +176 -0
- package/skills/media-use/scripts/lib/manifest.mjs +229 -0
- package/skills/media-use/scripts/lib/manifest.test.mjs +388 -0
- package/skills/media-use/scripts/lib/match.mjs +47 -0
- package/skills/media-use/scripts/lib/mflux-provider.mjs +128 -0
- package/skills/media-use/scripts/lib/mflux-provider.test.mjs +174 -0
- package/skills/media-use/scripts/lib/misses.mjs +49 -0
- package/skills/media-use/scripts/lib/misses.test.mjs +78 -0
- package/skills/media-use/scripts/lib/npx-sync.mjs +31 -0
- package/skills/media-use/scripts/lib/npx-sync.test.mjs +50 -0
- package/skills/media-use/scripts/lib/parakeet-words.mjs +27 -0
- package/skills/media-use/scripts/lib/parakeet-words.test.mjs +44 -0
- package/skills/media-use/scripts/lib/prefs-store.mjs +180 -0
- package/skills/media-use/scripts/lib/prefs-store.test.mjs +189 -0
- package/skills/media-use/scripts/lib/probe.mjs +39 -0
- package/skills/media-use/scripts/lib/probe.test.mjs +31 -0
- package/skills/media-use/scripts/lib/providers.mjs +5 -0
- package/skills/media-use/scripts/lib/recipe-store.mjs +367 -0
- package/skills/media-use/scripts/lib/recipe-store.test.mjs +367 -0
- package/skills/media-use/scripts/lib/registry.mjs +218 -0
- package/skills/media-use/scripts/lib/registry.test.mjs +261 -0
- package/skills/media-use/scripts/lib/search.mjs +24 -0
- package/skills/media-use/scripts/lib/search.test.mjs +32 -0
- package/skills/media-use/scripts/lib/sfx-provider.mjs +23 -0
- package/skills/media-use/scripts/lib/specs.mjs +132 -0
- package/skills/media-use/scripts/lib/specs.test.mjs +157 -0
- package/skills/media-use/scripts/lib/stats.mjs +117 -0
- package/skills/media-use/scripts/lib/stats.test.mjs +165 -0
- package/skills/media-use/scripts/lib/telemetry.mjs +222 -0
- package/skills/media-use/scripts/lib/telemetry.test.mjs +373 -0
- package/skills/media-use/scripts/lib/tts-local-provider.mjs +92 -0
- package/skills/media-use/scripts/lib/tts-local-provider.test.mjs +72 -0
- package/skills/media-use/scripts/lib/usage.mjs +57 -0
- package/skills/media-use/scripts/lib/usage.test.mjs +54 -0
- package/skills/media-use/scripts/lib/voice-provider.mjs +57 -0
- package/skills/media-use/scripts/lib/voice-provider.test.mjs +46 -0
- package/skills/media-use/scripts/lib/words.mjs +18 -0
- package/skills/media-use/scripts/prefs.mjs +70 -0
- package/skills/media-use/scripts/recipe.mjs +103 -0
- package/skills/media-use/scripts/resolve.mjs +1271 -0
- package/skills/media-use/scripts/resolve.test.mjs +1120 -0
- package/skills/media-use/scripts/transcribe.mjs +180 -0
- package/skills/media-use/scripts/transcript-cut.mjs +239 -0
- package/skills/motion-graphics/SKILL.md +176 -0
- package/skills/motion-graphics/agents/builder.md +40 -0
- package/skills/motion-graphics/agents/director.md +53 -0
- package/skills/motion-graphics/agents/finalize.md +17 -0
- package/skills/motion-graphics/catalog-map.md +40 -0
- package/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/skills/motion-graphics/categories/charts/module.md +21 -0
- package/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/skills/motion-graphics/categories/lower-thirds/module.md +16 -0
- package/skills/motion-graphics/categories/maps/bake-basemap.mjs +273 -0
- package/skills/motion-graphics/categories/maps/module.md +61 -0
- package/skills/motion-graphics/categories/news/module.md +56 -0
- package/skills/motion-graphics/categories/stat/module.md +21 -0
- package/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/skills/motion-graphics/categories/webpage/module.md +30 -0
- package/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/skills/motion-graphics/grounding/locate.mjs +228 -0
- package/skills/motion-graphics/phases/source/guide.md +21 -0
- package/skills/motion-graphics/references/builder-contract.md +38 -0
- package/skills/motion-graphics/references/motion-vocabulary.md +43 -0
- package/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/skills/music-to-video/SKILL.md +208 -0
- package/skills/music-to-video/references/frame-skeleton.md +100 -0
- package/skills/music-to-video/references/montage.md +58 -0
- package/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
- package/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +154 -0
- package/skills/music-to-video/references/motion-primitives/assets/gsap.min.js +11 -0
- package/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +326 -0
- package/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +120 -0
- package/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +95 -0
- package/skills/music-to-video/references/motion-primitives/braam-punch/index.html +135 -0
- package/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +146 -0
- package/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +103 -0
- package/skills/music-to-video/references/motion-primitives/counting-punch/index.html +154 -0
- package/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +155 -0
- package/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +166 -0
- package/skills/music-to-video/references/motion-primitives/directional-fill/index.html +133 -0
- package/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +137 -0
- package/skills/music-to-video/references/motion-primitives/electric-arc/index.html +144 -0
- package/skills/music-to-video/references/motion-primitives/flash-cut/index.html +132 -0
- package/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +241 -0
- package/skills/music-to-video/references/motion-primitives/hard-cut/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +79 -0
- package/skills/music-to-video/references/motion-primitives/iris-open/index.html +104 -0
- package/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +98 -0
- package/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +131 -0
- package/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +109 -0
- package/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +124 -0
- package/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +108 -0
- package/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/palette-flip/index.html +132 -0
- package/skills/music-to-video/references/motion-primitives/particle-burst/index.html +141 -0
- package/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +121 -0
- package/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +160 -0
- package/skills/music-to-video/references/motion-primitives/screen-shake/index.html +113 -0
- package/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +130 -0
- package/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +137 -0
- package/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +117 -0
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
- package/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +313 -0
- package/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +136 -0
- package/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +144 -0
- package/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +122 -0
- package/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +126 -0
- package/skills/music-to-video/references/planning.md +104 -0
- package/skills/music-to-video/references/storyboard-format.md +94 -0
- package/skills/music-to-video/references/template-catalog.md +106 -0
- package/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
- package/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
- package/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/asphalt-031.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bark-014.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/brick.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-075-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-101.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-102.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/bricks-104.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/carpet.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-034.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-042-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-046.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete-047-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/concrete.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/diamond-plate-009.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-080.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/fabric-083.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-001.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-004.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/grass-005.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-037.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-054.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-068.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-080.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-103.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/ground-104.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/lava.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/leather-037.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-012.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/marble-016.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-032.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-038.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-041-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-046-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-048-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-049-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-055-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal-061-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/metal.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/onyx.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/painted-plaster-017.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-138.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/paving-stones-150.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/plaster-001.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-007.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-008-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-009-c.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-012-b.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/road-013-a.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-058.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock-063.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/rock.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow-015.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/snow.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/tiles-138.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/travertine-009.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-049.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-051.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-058.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-066.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-092.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-094.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-051.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-064.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood-floor-070.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/assets/texture-mask-text/masks/wood.png +0 -0
- package/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
- package/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
- package/skills/music-to-video/references/templates/logo-split-lockup-pulse/assets/fredoka-700.woff2 +0 -0
- package/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
- package/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
- package/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
- package/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
- package/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
- package/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
- package/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
- package/skills/music-to-video/scripts/analyze-beatgrid.py +542 -0
- package/skills/music-to-video/scripts/assemble-index.mjs +220 -0
- package/skills/music-to-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/music-to-video/scripts/stage-assets.mjs +58 -0
- package/skills/music-to-video/scripts/validate-plan.mjs +161 -0
- package/skills/music-to-video/sub-agents/frame-worker.md +49 -0
- package/skills/pr-to-video/SKILL.md +269 -0
- package/skills/pr-to-video/references/code-vocabulary.md +111 -0
- package/skills/pr-to-video/references/cut-catalog.md +215 -0
- package/skills/pr-to-video/references/motion-language.md +156 -0
- package/skills/pr-to-video/references/story-design.md +230 -0
- package/skills/pr-to-video/references/visual-design.md +164 -0
- package/skills/pr-to-video/scripts/assemble-index.mjs +629 -0
- package/skills/pr-to-video/scripts/assemble-index.test.mjs +75 -0
- package/skills/pr-to-video/scripts/audio.mjs +291 -0
- package/skills/pr-to-video/scripts/build-frame.mjs +586 -0
- package/skills/pr-to-video/scripts/captions.mjs +521 -0
- package/skills/pr-to-video/scripts/captions.test.mjs +219 -0
- package/skills/pr-to-video/scripts/fetch-people-avatars.mjs +157 -0
- package/skills/pr-to-video/scripts/fetch-pr.mjs +234 -0
- package/skills/pr-to-video/scripts/frame-contract.test.mjs +209 -0
- package/skills/pr-to-video/scripts/frame-packets.mjs +62 -0
- package/skills/pr-to-video/scripts/ingest.mjs +561 -0
- package/skills/pr-to-video/scripts/lib/assets.mjs +56 -0
- package/skills/pr-to-video/scripts/lib/dimensions.mjs +45 -0
- package/skills/pr-to-video/scripts/lib/frame-contract.mjs +54 -0
- package/skills/pr-to-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/pr-to-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/pr-to-video/scripts/lib/tokens.mjs +211 -0
- package/skills/pr-to-video/scripts/lib/transition-registry.mjs +38 -0
- package/skills/pr-to-video/scripts/lib/transitions.json +71 -0
- package/skills/pr-to-video/scripts/preflight.mjs +51 -0
- package/skills/pr-to-video/scripts/project-dir.mjs +92 -0
- package/skills/pr-to-video/scripts/transitions.mjs +381 -0
- package/skills/pr-to-video/scripts/workflow-guardrails.test.mjs +198 -0
- package/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
- package/skills/product-launch-video/SKILL.md +260 -0
- package/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/skills/product-launch-video/references/motion-language.md +156 -0
- package/skills/product-launch-video/references/story-design.md +508 -0
- package/skills/product-launch-video/references/visual-design.md +126 -0
- package/skills/product-launch-video/scripts/assemble-index.mjs +771 -0
- package/skills/product-launch-video/scripts/assemble-index.test.mjs +72 -0
- package/skills/product-launch-video/scripts/audio.mjs +291 -0
- package/skills/product-launch-video/scripts/audio.test.mjs +218 -0
- package/skills/product-launch-video/scripts/build-frame.mjs +549 -0
- package/skills/product-launch-video/scripts/captions.mjs +521 -0
- package/skills/product-launch-video/scripts/captions.test.mjs +219 -0
- package/skills/product-launch-video/scripts/capture-skill-guardrails.test.mjs +39 -0
- package/skills/product-launch-video/scripts/frame-packets.mjs +27 -0
- package/skills/product-launch-video/scripts/frame-packets.test.mjs +144 -0
- package/skills/product-launch-video/scripts/lib/assets.mjs +56 -0
- package/skills/product-launch-video/scripts/lib/dimensions.mjs +45 -0
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.mjs +36 -0
- package/skills/product-launch-video/scripts/lib/pad-frame-duration.test.mjs +76 -0
- package/skills/product-launch-video/scripts/lib/storyboard.mjs +249 -0
- package/skills/product-launch-video/scripts/lib/tokens.mjs +218 -0
- package/skills/product-launch-video/scripts/lib/tokens.test.mjs +57 -0
- package/skills/product-launch-video/scripts/lib/transition-registry.mjs +38 -0
- package/skills/product-launch-video/scripts/lib/transitions.json +71 -0
- package/skills/product-launch-video/scripts/media-contract.test.mjs +200 -0
- package/skills/product-launch-video/scripts/stage-assets.mjs +39 -0
- package/skills/product-launch-video/scripts/stage-assets.test.mjs +52 -0
- package/skills/product-launch-video/scripts/transitions.mjs +381 -0
- package/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
- package/skills/remotion-to-hyperframes/SKILL.md +129 -0
- package/skills/remotion-to-hyperframes/assets/.gitkeep +0 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/run.sh +249 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +61 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/Root.tsx +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/TitleCard.tsx +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +118 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/MultiScene.tsx +105 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/Root.tsx +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/setup.sh +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +269 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/remotion.config.ts +13 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Root.tsx +27 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/Stargazed.tsx +37 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/AnimatedNumber.tsx +23 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/StatCard.tsx +59 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/components/UnderlinedText.tsx +47 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/index.ts +4 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/OutroScene.tsx +18 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/StatsScene.tsx +34 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/src/scenes/TitleScene.tsx +55 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/01-use-state.tsx +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/02-use-effect-deps.tsx +29 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/03-async-metadata.tsx +39 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/04-third-party-react.tsx +30 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/05-lambda-config.tsx +38 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/06-warnings-only.tsx +36 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/07-custom-hook.tsx +28 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/cases/08-mixed.tsx +41 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
- package/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/validate.sh +110 -0
- package/skills/remotion-to-hyperframes/references/api-map.md +142 -0
- package/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
- package/skills/remotion-to-hyperframes/references/eval.md +140 -0
- package/skills/remotion-to-hyperframes/references/fonts.md +112 -0
- package/skills/remotion-to-hyperframes/references/limitations.md +136 -0
- package/skills/remotion-to-hyperframes/references/lottie.md +121 -0
- package/skills/remotion-to-hyperframes/references/media.md +149 -0
- package/skills/remotion-to-hyperframes/references/parameters.md +167 -0
- package/skills/remotion-to-hyperframes/references/sequencing.md +198 -0
- package/skills/remotion-to-hyperframes/references/timing.md +165 -0
- package/skills/remotion-to-hyperframes/references/transitions.md +114 -0
- package/skills/remotion-to-hyperframes/scripts/.gitkeep +0 -0
- package/skills/remotion-to-hyperframes/scripts/frame_strip.sh +107 -0
- package/skills/remotion-to-hyperframes/scripts/lint_source.py +370 -0
- package/skills/remotion-to-hyperframes/scripts/render_diff.sh +103 -0
- package/skills/remotion-to-hyperframes/scripts/tests/fixtures/blocker.tsx +50 -0
- package/skills/remotion-to-hyperframes/scripts/tests/fixtures/clean.tsx +46 -0
- package/skills/remotion-to-hyperframes/scripts/tests/smoke.sh +90 -0
- package/skills/slideshow/SKILL.md +529 -0
- package/skills/slideshow/references/standalone-harness.md +1020 -0
- package/skills/talking-head-recut/NOTICE.md +39 -0
- package/skills/talking-head-recut/SKILL.md +1211 -0
- package/skills/talking-head-recut/assets/fonts/Caveat-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Caveat-700-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Inter-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Inter-700-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/LXGWWenKaiTC-400-latin.woff2 +0 -0
- package/skills/talking-head-recut/assets/fonts/Virgil.woff2 +0 -0
- package/skills/talking-head-recut/assets/vendor/gsap.min.js +10 -0
- package/skills/talking-head-recut/media-contract.test.mjs +35 -0
- package/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/skills/gsap/SKILL.md +0 -213
- package/skills/gsap/references/effects.md +0 -297
- package/skills/hyperframes/patterns.md +0 -118
- package/skills/hyperframes/references/captions.md +0 -132
- package/skills/hyperframes/references/css-patterns.md +0 -373
- package/skills/hyperframes/references/motion-principles.md +0 -69
- package/skills/hyperframes/references/tts.md +0 -75
- package/skills/hyperframes/scripts/contrast-report.mjs +0 -335
- package/skills/hyperframes/visual-styles.md +0 -211
- package/skills/website-to-hyperframes/SKILL.md +0 -125
- package/skills/website-to-hyperframes/references/step-1-capture.md +0 -74
- package/skills/website-to-hyperframes/references/step-2-design.md +0 -178
- package/skills/website-to-hyperframes/references/step-4-storyboard.md +0 -246
- package/skills/website-to-hyperframes/references/step-5-vo.md +0 -42
- package/skills/website-to-hyperframes/references/step-6-build.md +0 -229
- package/skills/website-to-hyperframes/references/step-7-validate.md +0 -114
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-3d.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-blur.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-cover.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-dissolve.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-distortion.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-grid.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-light.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-mechanical.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-other.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-push.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-radial.md +0 -0
- /package/skills/{hyperframes/references → hyperframes-animation}/transitions/css-scale.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/bold-energetic.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/clean-corporate.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/dark-premium.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/jewel-rich.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/monochrome.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/nature-earth.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/neon-electric.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/pastel-soft.md +0 -0
- /package/skills/{hyperframes → hyperframes-creative}/palettes/warm-editorial.md +0 -0
|
@@ -1,335 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
// contrast-report.mjs — HyperFrames contrast audit
|
|
3
|
-
//
|
|
4
|
-
// Reads a composition, seeks to N sample timestamps, walks the DOM for text
|
|
5
|
-
// elements, measures the WCAG 2.1 contrast ratio between each element's
|
|
6
|
-
// declared foreground color and the pixels behind it, and emits:
|
|
7
|
-
//
|
|
8
|
-
// - contrast-report.json (machine-readable, one entry per text element × sample)
|
|
9
|
-
// - contrast-overlay.png (sprite grid; magenta=fail AA, yellow=pass AA only, green=AAA)
|
|
10
|
-
//
|
|
11
|
-
// Usage:
|
|
12
|
-
// node skills/hyperframes/scripts/contrast-report.mjs <composition-dir> \
|
|
13
|
-
// [--samples N] [--out <dir>] [--width W] [--height H] [--fps N]
|
|
14
|
-
//
|
|
15
|
-
// The composition directory must contain an index.html. Raw authoring HTML
|
|
16
|
-
// works — the producer's file server auto-injects the runtime at serve time.
|
|
17
|
-
// Exits 1 if any text element fails WCAG AA.
|
|
18
|
-
|
|
19
|
-
import { mkdir, writeFile } from "node:fs/promises";
|
|
20
|
-
import { resolve } from "node:path";
|
|
21
|
-
|
|
22
|
-
import sharp from "sharp";
|
|
23
|
-
|
|
24
|
-
// Use the producer's file server — it auto-injects the HyperFrames runtime
|
|
25
|
-
// and render-seek bridge, so raw authoring HTML works without a build step.
|
|
26
|
-
import {
|
|
27
|
-
createFileServer,
|
|
28
|
-
createCaptureSession,
|
|
29
|
-
initializeSession,
|
|
30
|
-
closeCaptureSession,
|
|
31
|
-
captureFrameToBuffer,
|
|
32
|
-
getCompositionDuration,
|
|
33
|
-
} from "@hyperframes/producer";
|
|
34
|
-
|
|
35
|
-
// ─── CLI ─────────────────────────────────────────────────────────────────────
|
|
36
|
-
|
|
37
|
-
const args = parseArgs(process.argv.slice(2));
|
|
38
|
-
if (!args.composition) die("missing <composition-dir>");
|
|
39
|
-
|
|
40
|
-
const SAMPLES = Number(args.samples ?? 10);
|
|
41
|
-
const OUT_DIR = resolve(args.out ?? ".hyperframes/contrast");
|
|
42
|
-
const WIDTH = Number(args.width ?? 1920);
|
|
43
|
-
const HEIGHT = Number(args.height ?? 1080);
|
|
44
|
-
const FPS = Number(args.fps ?? 30);
|
|
45
|
-
const COMP_DIR = resolve(args.composition);
|
|
46
|
-
|
|
47
|
-
// ─── Main ────────────────────────────────────────────────────────────────────
|
|
48
|
-
|
|
49
|
-
await mkdir(OUT_DIR, { recursive: true });
|
|
50
|
-
|
|
51
|
-
const server = await createFileServer({ projectDir: COMP_DIR, port: 0 });
|
|
52
|
-
const session = await createCaptureSession(
|
|
53
|
-
server.url,
|
|
54
|
-
OUT_DIR,
|
|
55
|
-
{ width: WIDTH, height: HEIGHT, fps: FPS, format: "png" },
|
|
56
|
-
null,
|
|
57
|
-
);
|
|
58
|
-
await initializeSession(session);
|
|
59
|
-
|
|
60
|
-
try {
|
|
61
|
-
const duration = await getCompositionDuration(session);
|
|
62
|
-
const times = Array.from(
|
|
63
|
-
{ length: SAMPLES },
|
|
64
|
-
(_, i) => +(((i + 0.5) / SAMPLES) * duration).toFixed(3),
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const allEntries = [];
|
|
68
|
-
const overlayFrames = [];
|
|
69
|
-
|
|
70
|
-
for (let i = 0; i < times.length; i++) {
|
|
71
|
-
const t = times[i];
|
|
72
|
-
const { buffer: pngBuf } = await captureFrameToBuffer(session, i, t);
|
|
73
|
-
const elements = await probeTextElements(session, t);
|
|
74
|
-
const annotated = await annotateFrame(pngBuf, elements);
|
|
75
|
-
overlayFrames.push({ t, png: annotated });
|
|
76
|
-
for (const el of elements) allEntries.push({ time: t, ...el });
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const report = {
|
|
80
|
-
composition: COMP_DIR,
|
|
81
|
-
width: WIDTH,
|
|
82
|
-
height: HEIGHT,
|
|
83
|
-
duration,
|
|
84
|
-
samples: times,
|
|
85
|
-
entries: allEntries,
|
|
86
|
-
summary: summarize(allEntries),
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
await writeFile(resolve(OUT_DIR, "contrast-report.json"), JSON.stringify(report, null, 2));
|
|
90
|
-
await writeOverlaySprite(overlayFrames, resolve(OUT_DIR, "contrast-overlay.png"));
|
|
91
|
-
|
|
92
|
-
printSummary(report);
|
|
93
|
-
process.exitCode = report.summary.failAA > 0 ? 1 : 0;
|
|
94
|
-
} finally {
|
|
95
|
-
await closeCaptureSession(session).catch(() => {});
|
|
96
|
-
server.close();
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// ─── DOM probe (runs in the page) ────────────────────────────────────────────
|
|
100
|
-
|
|
101
|
-
async function probeTextElements(session, _t) {
|
|
102
|
-
// `session.page` is the Puppeteer Page owned by the capture session.
|
|
103
|
-
// We pass a pure function to `evaluate`: it walks the DOM and returns
|
|
104
|
-
// enough info for us to compute a ratio in Node using the frame buffer.
|
|
105
|
-
return await session.page.evaluate(() => {
|
|
106
|
-
/** @type {Array<{selector: string, text: string, fg: [number,number,number,number], fontSize: number, fontWeight: number, bbox: {x:number,y:number,w:number,h:number}}>} */
|
|
107
|
-
const out = [];
|
|
108
|
-
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT);
|
|
109
|
-
const parseColor = (c) => {
|
|
110
|
-
const m = c.match(/rgba?\(([^)]+)\)/);
|
|
111
|
-
if (!m) return [0, 0, 0, 1];
|
|
112
|
-
const parts = m[1].split(",").map((s) => parseFloat(s.trim()));
|
|
113
|
-
return [parts[0], parts[1], parts[2], parts[3] ?? 1];
|
|
114
|
-
};
|
|
115
|
-
const selectorOf = (el) => {
|
|
116
|
-
if (el.id) return `#${el.id}`;
|
|
117
|
-
const cls = [...el.classList].slice(0, 2).join(".");
|
|
118
|
-
return cls ? `${el.tagName.toLowerCase()}.${cls}` : el.tagName.toLowerCase();
|
|
119
|
-
};
|
|
120
|
-
let el;
|
|
121
|
-
while ((el = walker.nextNode())) {
|
|
122
|
-
// must have direct text
|
|
123
|
-
const direct = [...el.childNodes].some(
|
|
124
|
-
(n) => n.nodeType === 3 && n.textContent.trim().length,
|
|
125
|
-
);
|
|
126
|
-
if (!direct) continue;
|
|
127
|
-
const cs = getComputedStyle(el);
|
|
128
|
-
if (cs.visibility === "hidden" || cs.display === "none") continue;
|
|
129
|
-
if (parseFloat(cs.opacity) <= 0.01) continue;
|
|
130
|
-
const rect = el.getBoundingClientRect();
|
|
131
|
-
if (rect.width < 8 || rect.height < 8) continue;
|
|
132
|
-
out.push({
|
|
133
|
-
selector: selectorOf(el),
|
|
134
|
-
text: el.textContent.trim().slice(0, 60),
|
|
135
|
-
fg: parseColor(cs.color),
|
|
136
|
-
fontSize: parseFloat(cs.fontSize),
|
|
137
|
-
fontWeight: Number(cs.fontWeight) || 400,
|
|
138
|
-
bbox: { x: rect.x, y: rect.y, w: rect.width, h: rect.height },
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
return out;
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// ─── Pixel sampling + WCAG math ──────────────────────────────────────────────
|
|
146
|
-
|
|
147
|
-
async function annotateFrame(pngBuf, elements) {
|
|
148
|
-
const img = sharp(pngBuf);
|
|
149
|
-
const meta = await img.metadata();
|
|
150
|
-
const { width, height } = meta;
|
|
151
|
-
const raw = await img.ensureAlpha().raw().toBuffer();
|
|
152
|
-
const channels = 4;
|
|
153
|
-
|
|
154
|
-
const measured = [];
|
|
155
|
-
for (const el of elements) {
|
|
156
|
-
const bg = sampleRingMedian(raw, width, height, channels, el.bbox);
|
|
157
|
-
const fg = compositeOver(el.fg, bg); // flatten any alpha against measured bg
|
|
158
|
-
const ratio = wcagRatio(fg, bg);
|
|
159
|
-
const large = isLargeText(el.fontSize, el.fontWeight);
|
|
160
|
-
el.bg = bg;
|
|
161
|
-
el.ratio = +ratio.toFixed(2);
|
|
162
|
-
el.wcagAA = large ? ratio >= 3 : ratio >= 4.5;
|
|
163
|
-
el.wcagAALarge = ratio >= 3;
|
|
164
|
-
el.wcagAAA = large ? ratio >= 4.5 : ratio >= 7;
|
|
165
|
-
measured.push(el);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
// Draw boxes + ratio labels as an SVG overlay (sharp composite).
|
|
169
|
-
const svg = buildOverlaySVG(measured, width, height);
|
|
170
|
-
return await sharp(pngBuf)
|
|
171
|
-
.composite([{ input: Buffer.from(svg), top: 0, left: 0 }])
|
|
172
|
-
.png()
|
|
173
|
-
.toBuffer();
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
function sampleRingMedian(raw, width, height, channels, bbox) {
|
|
177
|
-
// 4-px ring immediately outside the element bbox. Median of each channel.
|
|
178
|
-
const r = [],
|
|
179
|
-
g = [],
|
|
180
|
-
b = [];
|
|
181
|
-
const x0 = Math.max(0, Math.floor(bbox.x) - 4);
|
|
182
|
-
const x1 = Math.min(width - 1, Math.ceil(bbox.x + bbox.w) + 4);
|
|
183
|
-
const y0 = Math.max(0, Math.floor(bbox.y) - 4);
|
|
184
|
-
const y1 = Math.min(height - 1, Math.ceil(bbox.y + bbox.h) + 4);
|
|
185
|
-
const pushPixel = (x, y) => {
|
|
186
|
-
const i = (y * width + x) * channels;
|
|
187
|
-
r.push(raw[i]);
|
|
188
|
-
g.push(raw[i + 1]);
|
|
189
|
-
b.push(raw[i + 2]);
|
|
190
|
-
};
|
|
191
|
-
for (let x = x0; x <= x1; x++) {
|
|
192
|
-
pushPixel(x, y0);
|
|
193
|
-
pushPixel(x, y1);
|
|
194
|
-
}
|
|
195
|
-
for (let y = y0; y <= y1; y++) {
|
|
196
|
-
pushPixel(x0, y);
|
|
197
|
-
pushPixel(x1, y);
|
|
198
|
-
}
|
|
199
|
-
return [median(r), median(g), median(b), 1];
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function median(arr) {
|
|
203
|
-
const s = [...arr].sort((a, b) => a - b);
|
|
204
|
-
return s[Math.floor(s.length / 2)];
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
function compositeOver([fr, fg, fb, fa], [br, bg, bb]) {
|
|
208
|
-
return [
|
|
209
|
-
Math.round(fr * fa + br * (1 - fa)),
|
|
210
|
-
Math.round(fg * fa + bg * (1 - fa)),
|
|
211
|
-
Math.round(fb * fa + bb * (1 - fa)),
|
|
212
|
-
1,
|
|
213
|
-
];
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
function relLum([r, g, b]) {
|
|
217
|
-
const ch = (v) => {
|
|
218
|
-
const s = v / 255;
|
|
219
|
-
return s <= 0.03928 ? s / 12.92 : ((s + 0.055) / 1.055) ** 2.4;
|
|
220
|
-
};
|
|
221
|
-
return 0.2126 * ch(r) + 0.7152 * ch(g) + 0.0722 * ch(b);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
function wcagRatio(a, b) {
|
|
225
|
-
const la = relLum(a);
|
|
226
|
-
const lb = relLum(b);
|
|
227
|
-
const [L1, L2] = la > lb ? [la, lb] : [lb, la];
|
|
228
|
-
return (L1 + 0.05) / (L2 + 0.05);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function isLargeText(fontSize, fontWeight) {
|
|
232
|
-
return fontSize >= 24 || (fontSize >= 19 && fontWeight >= 700);
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// ─── Overlay rendering ───────────────────────────────────────────────────────
|
|
236
|
-
|
|
237
|
-
function buildOverlaySVG(elements, w, h) {
|
|
238
|
-
const rects = elements
|
|
239
|
-
.map((el) => {
|
|
240
|
-
const color = !el.wcagAA ? "#ff00aa" : !el.wcagAAA ? "#ffcc00" : "#00e08a";
|
|
241
|
-
const { x, y, w: bw, h: bh } = el.bbox;
|
|
242
|
-
return `
|
|
243
|
-
<rect x="${x}" y="${y}" width="${bw}" height="${bh}"
|
|
244
|
-
fill="none" stroke="${color}" stroke-width="3"/>
|
|
245
|
-
<rect x="${x}" y="${y - 18}" width="${48}" height="16" fill="${color}"/>
|
|
246
|
-
<text x="${x + 4}" y="${y - 5}" font-family="monospace" font-size="12" fill="#000">
|
|
247
|
-
${el.ratio.toFixed(1)}:1
|
|
248
|
-
</text>`;
|
|
249
|
-
})
|
|
250
|
-
.join("");
|
|
251
|
-
return `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}">${rects}</svg>`;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
async function writeOverlaySprite(frames, outPath) {
|
|
255
|
-
if (!frames.length) return;
|
|
256
|
-
const cols = Math.min(frames.length, 5);
|
|
257
|
-
const rows = Math.ceil(frames.length / cols);
|
|
258
|
-
const { width, height } = await sharp(frames[0].png).metadata();
|
|
259
|
-
const scale = 0.25;
|
|
260
|
-
const cellW = Math.round(width * scale);
|
|
261
|
-
const cellH = Math.round(height * scale);
|
|
262
|
-
|
|
263
|
-
const cells = await Promise.all(
|
|
264
|
-
frames.map(async (f) => ({
|
|
265
|
-
input: await sharp(f.png).resize(cellW, cellH).png().toBuffer(),
|
|
266
|
-
time: f.t,
|
|
267
|
-
})),
|
|
268
|
-
);
|
|
269
|
-
|
|
270
|
-
const composites = cells.map((c, i) => ({
|
|
271
|
-
input: c.input,
|
|
272
|
-
top: Math.floor(i / cols) * cellH,
|
|
273
|
-
left: (i % cols) * cellW,
|
|
274
|
-
}));
|
|
275
|
-
|
|
276
|
-
await sharp({
|
|
277
|
-
create: {
|
|
278
|
-
width: cols * cellW,
|
|
279
|
-
height: rows * cellH,
|
|
280
|
-
channels: 3,
|
|
281
|
-
background: { r: 16, g: 16, b: 20 },
|
|
282
|
-
},
|
|
283
|
-
})
|
|
284
|
-
.composite(composites)
|
|
285
|
-
.png()
|
|
286
|
-
.toFile(outPath);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// ─── Summary ────────────────────────────────────────────────────────────────
|
|
290
|
-
|
|
291
|
-
function summarize(entries) {
|
|
292
|
-
const total = entries.length;
|
|
293
|
-
const failAA = entries.filter((e) => !e.wcagAA).length;
|
|
294
|
-
const passAAonly = entries.filter((e) => e.wcagAA && !e.wcagAAA).length;
|
|
295
|
-
const passAAA = entries.filter((e) => e.wcagAAA).length;
|
|
296
|
-
return { total, failAA, passAAonly, passAAA };
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
function printSummary({ summary, entries }) {
|
|
300
|
-
const { total, failAA, passAAonly, passAAA } = summary;
|
|
301
|
-
console.log(`\nContrast report: ${total} text-element samples`);
|
|
302
|
-
console.log(` fail WCAG AA: ${failAA}`);
|
|
303
|
-
console.log(` pass AA, not AAA: ${passAAonly}`);
|
|
304
|
-
console.log(` pass AAA: ${passAAA}`);
|
|
305
|
-
if (failAA) {
|
|
306
|
-
console.log("\nFailures:");
|
|
307
|
-
for (const e of entries.filter((x) => !x.wcagAA)) {
|
|
308
|
-
console.log(` t=${e.time}s ${e.selector.padEnd(24)} ${e.ratio.toFixed(2)}:1 "${e.text}"`);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// ─── Utilities ──────────────────────────────────────────────────────────────
|
|
314
|
-
|
|
315
|
-
function parseArgs(argv) {
|
|
316
|
-
const out = {};
|
|
317
|
-
let positional = 0;
|
|
318
|
-
for (let i = 0; i < argv.length; i++) {
|
|
319
|
-
const a = argv[i];
|
|
320
|
-
if (a.startsWith("--")) {
|
|
321
|
-
const k = a.slice(2);
|
|
322
|
-
const v = argv[i + 1]?.startsWith("--") ? true : argv[++i];
|
|
323
|
-
out[k] = v;
|
|
324
|
-
} else if (positional === 0) {
|
|
325
|
-
out.composition = a;
|
|
326
|
-
positional++;
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
return out;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
function die(msg) {
|
|
333
|
-
console.error(`contrast-report: ${msg}`);
|
|
334
|
-
process.exit(2);
|
|
335
|
-
}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
# Visual Style Library
|
|
2
|
-
|
|
3
|
-
Named visual identities for HyperFrames videos. Each style is grounded in a real graphic design tradition. Use them to give your video a specific visual personality, not just generic "clean" or "bold."
|
|
4
|
-
|
|
5
|
-
**How to pick:** Match mood first, content second. Ask: _"What should the viewer FEEL?"_
|
|
6
|
-
|
|
7
|
-
**How to use:** Reference the style in your scene plan. Translate the style's principles into concrete composition decisions — palette choice, font selection, entrance patterns, transition type, ambient motion feel.
|
|
8
|
-
|
|
9
|
-
## Quick Reference
|
|
10
|
-
|
|
11
|
-
| Style | Mood | Best for | Primary shader |
|
|
12
|
-
| --------------- | --------------------- | ---------------------------------- | --------------------------------- |
|
|
13
|
-
| Swiss Pulse | Clinical, precise | SaaS, data, dev tools, metrics | Cinematic Zoom or SDF Iris |
|
|
14
|
-
| Velvet Standard | Premium, timeless | Luxury, enterprise, keynotes | Cross-Warp Morph |
|
|
15
|
-
| Deconstructed | Industrial, raw | Tech launches, security, punk | Glitch or Whip Pan |
|
|
16
|
-
| Maximalist Type | Loud, kinetic | Big announcements, launches | Ridged Burn |
|
|
17
|
-
| Data Drift | Futuristic, immersive | AI, ML, cutting-edge tech | Gravitational Lens or Domain Warp |
|
|
18
|
-
| Soft Signal | Intimate, warm | Wellness, personal stories, brand | Thermal Distortion |
|
|
19
|
-
| Folk Frequency | Cultural, vivid | Consumer apps, food, communities | Swirl Vortex or Ripple Waves |
|
|
20
|
-
| Shadow Cut | Dark, cinematic | Dramatic reveals, security, exposé | Domain Warp |
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## 1. Swiss Pulse — Josef Müller-Brockmann
|
|
25
|
-
|
|
26
|
-
**Mood:** Clinical, precise | **Best for:** SaaS dashboards, developer tools, APIs, metrics
|
|
27
|
-
|
|
28
|
-
- Black (`#1a1a1a`), white, ONE accent — electric blue (`#0066FF`) or amber (`#FFB300`)
|
|
29
|
-
- Helvetica or Inter Bold for headlines, Regular for labels. Numbers large (80–120px)
|
|
30
|
-
- Grid-locked compositions. Every element snaps to an invisible 12-column grid
|
|
31
|
-
- Animated counters count up from 0. Hard cuts, no decorative transitions
|
|
32
|
-
- Transitions: Cinematic Zoom or SDF Iris (precise, geometric)
|
|
33
|
-
|
|
34
|
-
**GSAP signature:** `expo.out`, `power4.out`. Entries are fast and snap into place. Nothing floats.
|
|
35
|
-
|
|
36
|
-
```
|
|
37
|
-
Swiss Pulse: Black/white + one electric accent. Grid-locked compositions.
|
|
38
|
-
Numbers dominate the frame at 80-120px. Counter animations from 0.
|
|
39
|
-
Hard cuts or geometric transitions. Nothing decorative.
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## 2. Velvet Standard — Massimo Vignelli
|
|
45
|
-
|
|
46
|
-
**Mood:** Premium, timeless | **Best for:** Luxury products, enterprise software, keynotes, investor decks
|
|
47
|
-
|
|
48
|
-
- Black, white, ONE rich accent — deep navy (`#1a237e`) or gold (`#c9a84c`)
|
|
49
|
-
- Thin sans-serif, ALL CAPS, wide letter-spacing (`0.15em+`)
|
|
50
|
-
- Generous negative space. Symmetrical, centered, architectural precision
|
|
51
|
-
- Slow, deliberate. Sequential reveals with long holds. No frantic motion
|
|
52
|
-
- Transitions: Cross-Warp Morph (elegant, organic flow between scenes)
|
|
53
|
-
|
|
54
|
-
**GSAP signature:** `sine.inOut`, `power1`. Nothing snaps — everything glides with intention.
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
Velvet Standard: Black, white, one rich accent. Thin ALL CAPS type with wide tracking.
|
|
58
|
-
Generous negative space. Sequential reveals, long holds.
|
|
59
|
-
Cross-Warp Morph transitions. Slow and deliberate — luxury takes its time.
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## 3. Deconstructed — Neville Brody
|
|
65
|
-
|
|
66
|
-
**Mood:** Industrial, raw | **Best for:** Tech news, developer launches, security products, punk-energy reveals
|
|
67
|
-
|
|
68
|
-
- Dark grey (`#1a1a1a`), rust orange (`#D4501E`), raw white (`#f0f0f0`)
|
|
69
|
-
- Type at angles, overlapping edges, escaping frames. Bold industrial weight
|
|
70
|
-
- Gritty textures: scan-line effects, glitch artifacts baked into the design
|
|
71
|
-
- Text SLAMS and SHATTERS. Letters scramble then snap to final position
|
|
72
|
-
- Transitions: Glitch shader or Whip Pan (breaks the rules, feels aggressive)
|
|
73
|
-
|
|
74
|
-
**GSAP signature:** `back.out(2.5)`, `steps(8)`, `elastic.out(1.2, 0.4)`. Intentional irregularity.
|
|
75
|
-
|
|
76
|
-
```
|
|
77
|
-
Deconstructed: Dark grey #1a1a1a + rust orange #D4501E. Type at angles, escaping frames.
|
|
78
|
-
Scan-line glitch overlays. Text SLAMS and scrambles into place.
|
|
79
|
-
Glitch shader transitions. Industrial and raw — nothing should feel polished.
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 4. Maximalist Type — Paula Scher
|
|
85
|
-
|
|
86
|
-
**Mood:** Loud, kinetic | **Best for:** Big product launches, milestone announcements, high-energy hype videos
|
|
87
|
-
|
|
88
|
-
- Bold saturated: red (`#E63946`), yellow (`#FFD60A`), black, white — maximum contrast
|
|
89
|
-
- Text IS the visual. Overlapping type layers at different scales and angles, filling 50–80% of frame
|
|
90
|
-
- Everything is kinetic: slamming, sliding, scaling. 2–3 second rapid-fire scenes
|
|
91
|
-
- Text layered OVER footage — never empty backgrounds
|
|
92
|
-
- Transitions: Ridged Burn (explosive, dramatic, impossible to ignore)
|
|
93
|
-
|
|
94
|
-
**GSAP signature:** `expo.out`, `back.out(1.8)`. Fast arrivals, hard stops.
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
Maximalist Type: Red, yellow, black, white — max contrast. Text IS the visual.
|
|
98
|
-
Overlapping at different scales, 50-80% of frame. Everything in motion.
|
|
99
|
-
Ridged Burn transitions. No static moments — kinetic energy throughout.
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 5. Data Drift — Refik Anadol
|
|
105
|
-
|
|
106
|
-
**Mood:** Futuristic, immersive | **Best for:** AI products, ML platforms, data companies, speculative tech
|
|
107
|
-
|
|
108
|
-
- Iridescent: deep black (`#0a0a0a`), electric purple (`#7c3aed`), cyan (`#06b6d4`)
|
|
109
|
-
- Thin futuristic sans-serif — floating, weightless, minimal
|
|
110
|
-
- Fluid morphing compositions. Extreme scale shifts (micro → macro)
|
|
111
|
-
- Particles coalesce into numbers. Light traces data paths through the frame
|
|
112
|
-
- Transitions: Gravitational Lens or Domain Warp (otherworldly distortion)
|
|
113
|
-
|
|
114
|
-
**GSAP signature:** `sine.inOut`, `power2.out`. Smooth, continuous, organic. Nothing hard.
|
|
115
|
-
|
|
116
|
-
```
|
|
117
|
-
Data Drift: Deep black #0a0a0a with electric purple #7c3aed and cyan #06b6d4.
|
|
118
|
-
Thin futuristic type, minimal text. Particles coalesce into numbers.
|
|
119
|
-
Gravitational Lens or Domain Warp transitions. Fluid, immersive, otherworldly.
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## 6. Soft Signal — Stefan Sagmeister
|
|
125
|
-
|
|
126
|
-
**Mood:** Intimate, warm | **Best for:** Wellness brands, personal stories, lifestyle products, human-centered apps
|
|
127
|
-
|
|
128
|
-
- Warm amber (`#F5A623`), cream (`#FFF8EC`), dusty rose (`#C4A3A3`), sage green (`#8FAF8C`)
|
|
129
|
-
- Handwritten-style or humanist serif fonts. Personal, lowercase, delicate
|
|
130
|
-
- Close-up framing feel: single element fills the frame. Nothing feels corporate
|
|
131
|
-
- Slow drifts and floats, never snaps. Soft organic motion throughout
|
|
132
|
-
- Transitions: Thermal Distortion (warm, flowing, like heat shimmer)
|
|
133
|
-
|
|
134
|
-
**GSAP signature:** `sine.inOut`, `power1.inOut`. Everything breathes.
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
Soft Signal: Warm amber, cream, dusty rose, sage green. Humanist or handwritten type.
|
|
138
|
-
Single elements fill the frame — intimate, never corporate.
|
|
139
|
-
Slow drifts and floats throughout. Thermal Distortion transitions.
|
|
140
|
-
Nothing should feel hurried or polished.
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## 7. Folk Frequency — Eduardo Terrazas
|
|
146
|
-
|
|
147
|
-
**Mood:** Cultural, vivid | **Best for:** Consumer apps, food platforms, community products, festive launches
|
|
148
|
-
|
|
149
|
-
- Vivid folk: hot pink (`#FF1493`), cobalt blue (`#0047AB`), sun yellow (`#FFE000`), emerald (`#009B77`)
|
|
150
|
-
- Bold warm rounded type. Pattern and repetition — folk art rhythm and density
|
|
151
|
-
- Layered compositions with rich visual texture. Every frame feels handcrafted
|
|
152
|
-
- Colorful motion: elements bounce, pop, and spin into place with joy
|
|
153
|
-
- Transitions: Swirl Vortex or Ripple Waves (hypnotic, celebratory)
|
|
154
|
-
|
|
155
|
-
**GSAP signature:** `back.out(1.6)`, `elastic.out(1, 0.5)`. Overshoots feel intentional.
|
|
156
|
-
|
|
157
|
-
```
|
|
158
|
-
Folk Frequency: Hot pink #FF1493, cobalt blue, sun yellow, emerald. Bold rounded type.
|
|
159
|
-
Pattern and repetition throughout. Layered, dense, handcrafted feeling.
|
|
160
|
-
Swirl Vortex or Ripple Waves transitions. Joyful, celebratory energy.
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
---
|
|
164
|
-
|
|
165
|
-
## 8. Shadow Cut — Hans Hillmann
|
|
166
|
-
|
|
167
|
-
**Mood:** Dark, cinematic | **Best for:** Security products, dramatic reveals, investigative content, intense launches
|
|
168
|
-
|
|
169
|
-
- Near-monochrome: deep blacks (`#0a0a0a`), cold greys (`#3a3a3a`), stark white + blood red (`#C1121F`) or toxic green (`#39FF14`)
|
|
170
|
-
- Sharp angular text like film noir title cards. Heavy contrast, no softness
|
|
171
|
-
- Heavy shadow — elements emerge from darkness. Reveal is the narrative
|
|
172
|
-
- Slow creeping push-ins, dramatic scale reveals, silence before the hit
|
|
173
|
-
- Transitions: Domain Warp (dissolves reality itself before revealing the next scene)
|
|
174
|
-
|
|
175
|
-
**GSAP signature:** `power4.in` for exits, `power3.out` for dramatic reveals. The pause before the hit matters.
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
Shadow Cut: Deep blacks #0a0a0a, cold greys, stark white + one accent (blood red or toxic green).
|
|
179
|
-
Sharp angular type, film noir aesthetic. Elements emerge from darkness.
|
|
180
|
-
Slow creeping push-ins. Domain Warp transitions. The reveal IS the story.
|
|
181
|
-
```
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## Mood → Style Guide
|
|
186
|
-
|
|
187
|
-
| If the content feels... | Use... |
|
|
188
|
-
| ---------------------------------- | --------------- |
|
|
189
|
-
| Data-driven, analytical, technical | Swiss Pulse |
|
|
190
|
-
| Premium, enterprise, luxury | Velvet Standard |
|
|
191
|
-
| Raw, punk, aggressive, rebellious | Deconstructed |
|
|
192
|
-
| Hype, loud, high-energy launch | Maximalist Type |
|
|
193
|
-
| AI, ML, speculative, futuristic | Data Drift |
|
|
194
|
-
| Human, warm, personal, wellness | Soft Signal |
|
|
195
|
-
| Cultural, fun, consumer, festive | Folk Frequency |
|
|
196
|
-
| Dark, dramatic, intense, cinematic | Shadow Cut |
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## Creating Custom Styles
|
|
201
|
-
|
|
202
|
-
These 8 styles are examples — not constraints. Create your own by:
|
|
203
|
-
|
|
204
|
-
1. **Name it** after a designer, art movement, or cultural reference
|
|
205
|
-
2. **Palette**: 2-3 colors max. Declare explicit hex values
|
|
206
|
-
3. **Typography**: One family, two weights. State the role of each
|
|
207
|
-
4. **Motion rules**: How fast? Snappy or fluid? Overshoot or precision?
|
|
208
|
-
5. **Transition**: Which shader matches the energy?
|
|
209
|
-
6. **What NOT to do**: 2-3 explicit anti-patterns for this style
|
|
210
|
-
|
|
211
|
-
The pattern: **named style → palette → typography → motion rules → transition → avoids.**
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: website-to-hyperframes
|
|
3
|
-
description: "Capture a website and create a HyperFrames video from it. Use when: (1) a user provides a URL and wants a video, (2) someone says capture this site, turn this into a video, make a promo from my site, (3) the user wants a social ad, product tour, or any video based on an existing website, (4) the user shares a link and asks for any kind of video content. Even if the user just pastes a URL — this is the skill to use. 中文:把网址变成 HyperFrames 视频(产品宣传/广告/产品导览)时使用。"
|
|
4
|
-
compatibility: Requires Node.js >= 22 and FFmpeg on PATH; the 7-step pipeline drives `npx hyperframes`.
|
|
5
|
-
allowed-tools: Bash
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Website to HyperFrames
|
|
9
|
-
|
|
10
|
-
Capture a website, then produce a professional video from it.
|
|
11
|
-
|
|
12
|
-
Users say things like:
|
|
13
|
-
|
|
14
|
-
- "Capture https://... and make me a 25-second product launch video"
|
|
15
|
-
- "Turn this website into a 15-second social ad for Instagram"
|
|
16
|
-
- "Create a 30-second product tour from https://..."
|
|
17
|
-
|
|
18
|
-
The workflow has 7 steps. Each produces an artifact that gates the next.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Step 1: Capture & Understand
|
|
23
|
-
|
|
24
|
-
**Read:** [references/step-1-capture.md](references/step-1-capture.md)
|
|
25
|
-
|
|
26
|
-
Run the capture, read the extracted data, and build a working summary using the write-down-and-forget method.
|
|
27
|
-
|
|
28
|
-
**Gate:** Print your site summary (name, top colors, fonts, key assets, one-sentence vibe).
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Step 2: Write DESIGN.md
|
|
33
|
-
|
|
34
|
-
**Read:** [references/step-2-design.md](references/step-2-design.md)
|
|
35
|
-
|
|
36
|
-
Write a simple brand reference for the captured website. 6 sections, ~90 lines. This is a cheat sheet, not the creative plan — that comes in Step 4.
|
|
37
|
-
|
|
38
|
-
**Gate:** `DESIGN.md` exists in the project directory.
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Step 3: Write SCRIPT
|
|
43
|
-
|
|
44
|
-
**Read:** [references/step-3-script.md](references/step-3-script.md)
|
|
45
|
-
|
|
46
|
-
Write the narration script. The story backbone. Scene durations come from the narration, not from guessing.
|
|
47
|
-
|
|
48
|
-
**Gate:** `SCRIPT.md` exists in the project directory.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Step 4: Write STORYBOARD
|
|
53
|
-
|
|
54
|
-
**Read:** [references/step-4-storyboard.md](references/step-4-storyboard.md)
|
|
55
|
-
|
|
56
|
-
Write per-beat creative direction: mood, camera, animations, transitions, assets, depth layers, SFX. This is the creative north star — the document the engineer follows to build each composition.
|
|
57
|
-
|
|
58
|
-
**Gate:** `STORYBOARD.md` exists with beat-by-beat direction and an asset audit table.
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Step 5: Generate VO + Map Timing
|
|
63
|
-
|
|
64
|
-
**Read:** [references/step-5-vo.md](references/step-5-vo.md)
|
|
65
|
-
|
|
66
|
-
Generate TTS audio, transcribe for word-level timestamps, and map timestamps to beats. Update STORYBOARD.md with real durations.
|
|
67
|
-
|
|
68
|
-
**Gate:** `narration.wav` (or .mp3) + `transcript.json` exist. Beat timings in STORYBOARD.md updated.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## Step 6: Build Compositions
|
|
73
|
-
|
|
74
|
-
**Read:** The `hyperframes` skill (load it — every rule matters)
|
|
75
|
-
**Read:** [references/step-6-build.md](references/step-6-build.md)
|
|
76
|
-
|
|
77
|
-
Build each composition following the storyboard. After each one: self-review for layout, asset placement, and animation quality.
|
|
78
|
-
|
|
79
|
-
**Gate:** Every composition has been self-reviewed. No overlapping elements, no misplaced assets, no static images without motion.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## Step 7: Validate & Deliver
|
|
84
|
-
|
|
85
|
-
**Read:** [references/step-7-validate.md](references/step-7-validate.md)
|
|
86
|
-
|
|
87
|
-
Lint, validate, snapshot, preview. Deliver the localhost Studio project URL
|
|
88
|
-
(`http://localhost:<port>/#project/<project-name>`) to the user first — only
|
|
89
|
-
render to MP4 on explicit request. Do not treat `index.html` as the project
|
|
90
|
-
handoff link; it is source-code context only.
|
|
91
|
-
|
|
92
|
-
**Gate:** `npx hyperframes lint` and `npx hyperframes validate` pass with zero errors, and the final response includes the active Studio project URL.
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Quick Reference
|
|
97
|
-
|
|
98
|
-
### Video Types
|
|
99
|
-
|
|
100
|
-
| Type | Duration | Beats | Narration |
|
|
101
|
-
| --------------------- | -------- | ----- | ---------------------- |
|
|
102
|
-
| Social ad (IG/TikTok) | 10-15s | 3-4 | Optional hook sentence |
|
|
103
|
-
| Product demo | 30-60s | 5-8 | Full narration |
|
|
104
|
-
| Feature announcement | 15-30s | 3-5 | Full narration |
|
|
105
|
-
| Brand reel | 20-45s | 4-6 | Optional, music focus |
|
|
106
|
-
| Launch teaser | 10-20s | 2-4 | Minimal, high energy |
|
|
107
|
-
|
|
108
|
-
### Format
|
|
109
|
-
|
|
110
|
-
- **Landscape**: 1920x1080 (default)
|
|
111
|
-
- **Portrait**: 1080x1920 (Instagram Stories, TikTok)
|
|
112
|
-
- **Square**: 1080x1080 (Instagram feed)
|
|
113
|
-
|
|
114
|
-
### Reference Files
|
|
115
|
-
|
|
116
|
-
| File | When to read |
|
|
117
|
-
| ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
118
|
-
| [step-1-capture.md](references/step-1-capture.md) | Step 1 — reading captured data |
|
|
119
|
-
| [step-2-design.md](references/step-2-design.md) | Step 2 — writing DESIGN.md |
|
|
120
|
-
| [step-3-script.md](references/step-3-script.md) | Step 3 — writing the narration script |
|
|
121
|
-
| [step-4-storyboard.md](references/step-4-storyboard.md) | Step 4 — per-beat creative direction |
|
|
122
|
-
| [step-5-vo.md](references/step-5-vo.md) | Step 5 — TTS, transcription, timing |
|
|
123
|
-
| [step-6-build.md](references/step-6-build.md) | Step 6 — building compositions with self-review |
|
|
124
|
-
| [step-7-validate.md](references/step-7-validate.md) | Step 7 — lint, validate, snapshot, preview |
|
|
125
|
-
| [techniques.md](references/techniques.md) | Steps 4 & 6 — 10 visual techniques with code patterns (SVG drawing, Canvas 2D, 3D, typography, Lottie, video, typing, variable fonts, MotionPath, transitions) |
|