freecodego 0.1.7-alpha.2.2 → 0.1.7-rc.2.2
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.i18n.yaml +45 -5
- package/README.md +4 -4
- package/README.zh.md +4 -4
- package/cordis.patch.yml +230 -126
- package/dist/assets/design/craft/FUTURE_SECTIONS.md +9 -0
- package/dist/assets/design/craft/LICENSE +201 -0
- package/dist/assets/design/craft/PROVENANCE.md +77 -0
- package/dist/assets/design/craft/README.md +106 -0
- package/dist/assets/design/craft/accessibility-baseline.md +201 -0
- package/dist/assets/design/craft/animation-discipline.md +154 -0
- package/dist/assets/design/craft/anti-ai-slop.md +84 -0
- package/dist/assets/design/craft/color.md +88 -0
- package/dist/assets/design/craft/form-validation.md +221 -0
- package/dist/assets/design/craft/laws-of-ux.md +296 -0
- package/dist/assets/design/craft/rtl-and-bidi.md +186 -0
- package/dist/assets/design/craft/state-coverage.md +134 -0
- package/dist/assets/design/craft/typography-hierarchy-editorial.md +182 -0
- package/dist/assets/design/craft/typography-hierarchy.md +165 -0
- package/dist/assets/design/craft/typography.md +122 -0
- package/dist/assets/design/react-bits/SKILL.md +130 -0
- package/dist/assets/design/skills/embedded-captions/CATALOG.md +91 -0
- package/dist/assets/design/skills/embedded-captions/SKILL.md +260 -0
- package/dist/assets/design/skills/embedded-captions/assets/fonts/char-widths.json +2211 -0
- package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScript1.svg +242 -0
- package/dist/assets/design/skills/embedded-captions/assets/strokefonts/HersheyScriptMed.svg +242 -0
- package/dist/assets/design/skills/embedded-captions/dna/README.md +148 -0
- package/dist/assets/design/skills/embedded-captions/dna/chrome.json +68 -0
- package/dist/assets/design/skills/embedded-captions/dna/cream.json +69 -0
- package/dist/assets/design/skills/embedded-captions/dna/documentary.json +62 -0
- package/dist/assets/design/skills/embedded-captions/dna/editorial.json +70 -0
- package/dist/assets/design/skills/embedded-captions/dna/glitch.json +82 -0
- package/dist/assets/design/skills/embedded-captions/dna/ink.json +65 -0
- package/dist/assets/design/skills/embedded-captions/dna/keynote.json +62 -0
- package/dist/assets/design/skills/embedded-captions/dna/loud.json +75 -0
- package/dist/assets/design/skills/embedded-captions/dna/neon.json +58 -0
- package/dist/assets/design/skills/embedded-captions/dna/velocity.json +89 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/README.md +48 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/spec.md +98 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/champion/template.html +188 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/spec.md +134 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/memory-wall/template.html +179 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/spec.md +81 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/_archive/portrait-header/template.html +170 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/spec.md +16 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/cinematic-cream/template.html +226 -0
- package/dist/assets/design/skills/embedded-captions/modes/cinematic/engine.html +355 -0
- package/dist/assets/design/skills/embedded-captions/modes/standard/_anatomy.md +232 -0
- package/dist/assets/design/skills/embedded-captions/modes/standard/_motion.md +192 -0
- package/dist/assets/design/skills/embedded-captions/references/aesthetic-principles.md +167 -0
- package/dist/assets/design/skills/embedded-captions/references/anti-patterns.md +188 -0
- package/dist/assets/design/skills/embedded-captions/references/bespoke-vs-presets.md +178 -0
- package/dist/assets/design/skills/embedded-captions/references/caption-grouping.md +130 -0
- package/dist/assets/design/skills/embedded-captions/references/composition-craft.md +522 -0
- package/dist/assets/design/skills/embedded-captions/references/direction-catalog.md +138 -0
- package/dist/assets/design/skills/embedded-captions/references/example-renders/champion.html +371 -0
- package/dist/assets/design/skills/embedded-captions/references/example-renders/memory-wall.html +334 -0
- package/dist/assets/design/skills/embedded-captions/references/failure-modes.md +145 -0
- package/dist/assets/design/skills/embedded-captions/references/layout-heuristics.md +238 -0
- package/dist/assets/design/skills/embedded-captions/references/motion-vocabulary.md +148 -0
- package/dist/assets/design/skills/embedded-captions/references/rail.md +68 -0
- package/dist/assets/design/skills/embedded-captions/references/reference-bar.md +47 -0
- package/dist/assets/design/skills/embedded-captions/references/scene-types.md +94 -0
- package/dist/assets/design/skills/embedded-captions/references/typographic-moves.md +266 -0
- package/dist/assets/design/skills/embedded-captions/references/typography-presets.md +63 -0
- package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/theme.json +11 -0
- package/dist/assets/design/skills/embedded-captions/scripts/fixtures/heroless/transcript.json +10 -0
- package/dist/assets/design/skills/embedded-captions/themes/README.md +243 -0
- package/dist/assets/design/skills/embedded-captions/themes/anchor.json +27 -0
- package/dist/assets/design/skills/embedded-captions/themes/arcade.json +51 -0
- package/dist/assets/design/skills/embedded-captions/themes/aurora.json +41 -0
- package/dist/assets/design/skills/embedded-captions/themes/biolume.json +35 -0
- package/dist/assets/design/skills/embedded-captions/themes/brush.json +74 -0
- package/dist/assets/design/skills/embedded-captions/themes/chalkboard.json +52 -0
- package/dist/assets/design/skills/embedded-captions/themes/dossier.json +56 -0
- package/dist/assets/design/skills/embedded-captions/themes/graffiti.json +62 -0
- package/dist/assets/design/skills/embedded-captions/themes/hologram.json +41 -0
- package/dist/assets/design/skills/embedded-captions/themes/inkwater.json +43 -0
- package/dist/assets/design/skills/embedded-captions/themes/laser.json +46 -0
- package/dist/assets/design/skills/embedded-captions/themes/lastpage.json +33 -0
- package/dist/assets/design/skills/embedded-captions/themes/neonsign.json +53 -0
- package/dist/assets/design/skills/embedded-captions/themes/ordnance.json +54 -0
- package/dist/assets/design/skills/embedded-captions/themes/papercut.json +37 -0
- package/dist/assets/design/skills/embedded-captions/themes/popup.json +46 -0
- package/dist/assets/design/skills/embedded-captions/themes/ransom.json +62 -0
- package/dist/assets/design/skills/embedded-captions/themes/scoreboard.json +54 -0
- package/dist/assets/design/skills/embedded-captions/themes/spectrum.json +46 -0
- package/dist/assets/design/skills/embedded-captions/themes/stardust.json +29 -0
- package/dist/assets/design/skills/embedded-captions/themes/stomp.json +43 -0
- package/dist/assets/design/skills/embedded-captions/themes/terminal.json +49 -0
- package/dist/assets/design/skills/embedded-captions/themes/thunder.json +44 -0
- package/dist/assets/design/skills/embedded-captions/themes/transit.json +44 -0
- package/dist/assets/design/skills/embedded-captions/themes/vhs.json +47 -0
- package/dist/assets/design/skills/faceless-explainer/SKILL.md +235 -0
- package/dist/assets/design/skills/faceless-explainer/references/cut-catalog.md +215 -0
- package/dist/assets/design/skills/faceless-explainer/references/motion-language.md +156 -0
- package/dist/assets/design/skills/faceless-explainer/references/story-design.md +255 -0
- package/dist/assets/design/skills/faceless-explainer/references/visual-design.md +146 -0
- package/dist/assets/design/skills/faceless-explainer/sub-agents/frame-worker.md +12 -0
- package/dist/assets/design/skills/general-video/SKILL.md +164 -0
- package/dist/assets/design/skills/general-video/sub-agents/frame-worker.md +34 -0
- package/dist/assets/design/skills/hyperframes/SKILL.md +134 -0
- package/dist/assets/design/skills/hyperframes/references/brief-contract.md +108 -0
- package/dist/assets/design/skills/hyperframes/references/brief-format.md +72 -0
- package/dist/assets/design/skills/hyperframes/references/capability-menu.md +47 -0
- package/dist/assets/design/skills/hyperframes/references/frame-worker-core.md +80 -0
- package/dist/assets/design/skills/hyperframes/references/intent-interview.md +71 -0
- package/dist/assets/design/skills/hyperframes/references/pitch-round.md +40 -0
- package/dist/assets/design/skills/hyperframes/references/production-loop.md +26 -0
- package/dist/assets/design/skills/hyperframes/references/review-loop.md +37 -0
- package/dist/assets/design/skills/hyperframes/references/route-briefs.md +11 -0
- package/dist/assets/design/skills/hyperframes/references/routes/embedded-captions.md +11 -0
- package/dist/assets/design/skills/hyperframes/references/routes/faceless-explainer.md +12 -0
- package/dist/assets/design/skills/hyperframes/references/routes/general-video.md +12 -0
- package/dist/assets/design/skills/hyperframes/references/routes/motion-graphics.md +11 -0
- package/dist/assets/design/skills/hyperframes/references/routes/music-to-video.md +12 -0
- package/dist/assets/design/skills/hyperframes/references/routes/pr-to-video.md +28 -0
- package/dist/assets/design/skills/hyperframes/references/routes/product-launch-video.md +13 -0
- package/dist/assets/design/skills/hyperframes/references/routes/remotion-to-hyperframes.md +9 -0
- package/dist/assets/design/skills/hyperframes/references/routes/slideshow.md +11 -0
- package/dist/assets/design/skills/hyperframes/references/routes/talking-head-recut.md +11 -0
- package/dist/assets/design/skills/hyperframes/references/script-format.md +52 -0
- package/dist/assets/design/skills/hyperframes/references/skill-lifecycle.md +30 -0
- package/dist/assets/design/skills/hyperframes/references/storyboard-format.md +99 -0
- package/dist/assets/design/skills/hyperframes/references/subagent-dispatch.md +35 -0
- package/dist/assets/design/skills/hyperframes/references/workflow-catalog.md +10 -0
- package/dist/assets/design/skills/hyperframes-animation/SKILL.md +86 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/animate-text.md +64 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/animejs.md +130 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/css-animations.md +143 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-easing-and-stagger.md +199 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-timeline-and-labels.md +96 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/gsap-transforms-and-perf.md +129 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/gsap.md +105 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/html-in-canvas-patterns.md +507 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/lottie.md +130 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/three.md +145 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/typegpu.md +182 -0
- package/dist/assets/design/skills/hyperframes-animation/adapters/waapi.md +101 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/agent-progress-theater.md +76 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/camera-journey.md +61 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/comparison-split.md +27 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/constellation-hub.md +63 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/cta-morph-press.md +63 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/cursor-ui-demo.md +89 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/dataviz-countup.md +59 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/device-surface-showcase.md +68 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/fixed-anchor-cycle.md +46 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/grid-card-assemble.md +81 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/kinetic-type-beats.md +133 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/logo-assemble-lockup.md +121 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/overwhelm-surround.md +58 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/panel-edit-live-sync.md +73 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/prompt-type-submit-generate.md +85 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/spatial-pan-stations.md +37 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/ticker-takeover.md +29 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/titlecard-reveal.md +80 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/transcript-scroll-artifact-reveal.md +45 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/typewriter-reveal.md +51 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/video-text-pivot.md +30 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints/zoom-out-workspace-reveal.md +68 -0
- package/dist/assets/design/skills/hyperframes-animation/blueprints-index.md +202 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/brand-reveal-assemble-zoom.html +382 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/comparison-split-cards.html +649 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/concept-demo-decode-pan.html +520 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/cta-morph-press.html +468 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/cta-orbit-collapse.html +1298 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/demo-page-scroll-spotlight.html +759 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/hook-counter-burst.html +729 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/messaging-multi-phrase.html +352 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/metric-video-text-pivot.html +779 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/problem-mockup-overwhelm.html +1374 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/proof-logo-chain.html +861 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/takeover-ticker-displace.html +347 -0
- package/dist/assets/design/skills/hyperframes-animation/examples/workflow-approve-press.html +606 -0
- package/dist/assets/design/skills/hyperframes-animation/references/motion-blur.md +133 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/3d-camera-flight.md +180 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/3d-page-scroll.md +135 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/3d-text-depth-layers.md +128 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/ai-tracking-box.md +139 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/ambient-glow-bloom.md +133 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/anchored-layout-expand.md +148 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/asr-keyword-glow.md +128 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/avatar-cloud-network.md +145 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/camera-cursor-tracking.md +133 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/card-morph-anchor.md +134 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/center-outward-expansion.md +88 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/chart-scrub-readout.md +151 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/chromatic-glitch.md +150 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/context-sensitive-cursor.md +140 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/control-target-sync.md +131 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/coordinate-target-zoom.md +138 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/counting-dynamic-scale.md +115 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/css-marker-patterns.md +208 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/cursor-click-ripple.md +104 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/cursor-drag.md +141 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/depth-of-field-blur.md +112 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/depth-scatter-assemble.md +139 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/discrete-text-sequence.md +146 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/dynamic-content-sequencing.md +149 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/gradient-text-sweep.md +136 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/gsap-effects.md +196 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/hacker-flip-3d.md +123 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/kinetic-beat-slam.md +137 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/motion-blur-streak.md +130 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/multi-cursor-choreography.md +133 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/multi-phase-camera.md +129 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/nudge-curve.md +47 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/orbit-3d-entry.md +148 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/particle-burst.md +149 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/physics-press-reaction.md +101 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/press-release-spring.md +108 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/reactive-displacement.md +92 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/scale-swap-transition.md +88 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/sine-wave-loop.md +85 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/split-tilt-cards.md +123 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/spring-pop-entrance.md +107 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/stat-bars-and-fills.md +145 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/svg-icon-enrichment.md +141 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/svg-path-draw.md +122 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/theme-crossfade-morph.md +126 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/vertical-spring-ticker.md +104 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/viewport-change.md +148 -0
- package/dist/assets/design/skills/hyperframes-animation/rules/waterfall-entry.md +81 -0
- package/dist/assets/design/skills/hyperframes-animation/rules-index.md +113 -0
- package/dist/assets/design/skills/hyperframes-animation/techniques.md +507 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/TRANSITION-REGISTRY.md +168 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/catalog.md +127 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-3d.md +12 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-blur.md +51 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-cover.md +43 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-destruction.md +95 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-dissolve.md +66 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-distortion.md +45 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-grid.md +10 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-light.md +49 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-mechanical.md +30 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-other.md +25 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-push.md +41 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-radial.md +37 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/css-scale.md +24 -0
- package/dist/assets/design/skills/hyperframes-animation/transitions/overview.md +153 -0
- package/dist/assets/design/skills/hyperframes-audio/SKILL.md +476 -0
- package/dist/assets/design/skills/hyperframes-audio/references/attributes.md +138 -0
- package/dist/assets/design/skills/hyperframes-audio/references/diagnosis.md +274 -0
- package/dist/assets/design/skills/hyperframes-audio/references/fx-registry.md +84 -0
- package/dist/assets/design/skills/hyperframes-audio/references/presets.md +216 -0
- package/dist/assets/design/skills/hyperframes-core/SKILL.md +97 -0
- package/dist/assets/design/skills/hyperframes-core/references/composition-patterns.md +224 -0
- package/dist/assets/design/skills/hyperframes-core/references/creator-editing-recipes.md +491 -0
- package/dist/assets/design/skills/hyperframes-core/references/data-attributes.md +78 -0
- package/dist/assets/design/skills/hyperframes-core/references/determinism-rules.md +53 -0
- package/dist/assets/design/skills/hyperframes-core/references/full-screen-motion.md +67 -0
- package/dist/assets/design/skills/hyperframes-core/references/minimal-composition.md +69 -0
- package/dist/assets/design/skills/hyperframes-core/references/sub-compositions.md +176 -0
- package/dist/assets/design/skills/hyperframes-core/references/tailwind.md +104 -0
- package/dist/assets/design/skills/hyperframes-core/references/tracks-and-clips.md +87 -0
- package/dist/assets/design/skills/hyperframes-core/references/variables-and-media.md +107 -0
- package/dist/assets/design/skills/hyperframes-creative/SKILL.md +71 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/FRAME.md +289 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/caption-skin.html +221 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/biennale-yellow/frame-showcase.html +1214 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/FRAME.md +275 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/caption-skin.html +224 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blockframe/frame-showcase.html +1347 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/FRAME.md +307 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/caption-skin.html +223 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/blue-professional/frame-showcase.html +1372 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/FRAME.md +275 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/caption-skin.html +230 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/bold-poster/frame-showcase.html +1140 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/FRAME.md +284 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/caption-skin.html +225 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/broadside/frame-showcase.html +1166 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/FRAME.md +284 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/caption-skin.html +224 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/capsule/frame-showcase.html +1465 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/FRAME.md +278 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/caption-skin.html +222 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cartesian/frame-showcase.html +1263 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/FRAME.md +265 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/caption-skin.html +238 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/cobalt-grid/frame-showcase.html +1468 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/FRAME.md +277 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/caption-skin.html +224 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-eb-garamond.txt +93 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-inter.txt +93 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/fonts/OFL-jetbrains-mono.txt +93 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/code-editorial/frame-showcase.html +1438 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/FRAME.md +314 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/caption-skin.html +226 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/coral/frame-showcase.html +1268 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/FRAME.md +333 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/caption-skin.html +227 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/creative-mode/frame-showcase.html +1330 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/FRAME.md +274 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/caption-skin.html +230 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/daisy-days/frame-showcase.html +1444 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/FRAME.md +265 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/caption-skin.html +223 -0
- package/dist/assets/design/skills/hyperframes-creative/frame-presets/editorial-forest/frame-showcase.html +1273 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/bold-energetic.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/clean-corporate.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/dark-premium.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/jewel-rich.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/monochrome.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/nature-earth.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/neon-electric.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/pastel-soft.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/palettes/warm-editorial.md +14 -0
- package/dist/assets/design/skills/hyperframes-creative/references/audio-reactive.md +76 -0
- package/dist/assets/design/skills/hyperframes-creative/references/beat-direction.md +164 -0
- package/dist/assets/design/skills/hyperframes-creative/references/composition-patterns.md +199 -0
- package/dist/assets/design/skills/hyperframes-creative/references/data-in-motion.md +19 -0
- package/dist/assets/design/skills/hyperframes-creative/references/design-adherence.md +19 -0
- package/dist/assets/design/skills/hyperframes-creative/references/design-picker.md +123 -0
- package/dist/assets/design/skills/hyperframes-creative/references/design-spec.md +55 -0
- package/dist/assets/design/skills/hyperframes-creative/references/house-style.md +73 -0
- package/dist/assets/design/skills/hyperframes-creative/references/motion-principles.md +151 -0
- package/dist/assets/design/skills/hyperframes-creative/references/narration.md +92 -0
- package/dist/assets/design/skills/hyperframes-creative/references/prompt-expansion.md +68 -0
- package/dist/assets/design/skills/hyperframes-creative/references/story-spine.md +45 -0
- package/dist/assets/design/skills/hyperframes-creative/references/storyboard-recipe.md +57 -0
- package/dist/assets/design/skills/hyperframes-creative/references/typography.md +218 -0
- package/dist/assets/design/skills/hyperframes-creative/references/video-composition.md +63 -0
- package/dist/assets/design/skills/hyperframes-creative/references/visual-styles.md +457 -0
- package/dist/assets/design/skills/hyperframes-creative/templates/design-picker.html +1432 -0
- package/dist/assets/design/skills/hyperframes-keyframes/SKILL.md +262 -0
- package/dist/assets/design/skills/hyperframes-keyframes/agents/openai.yaml +4 -0
- package/dist/assets/design/skills/hyperframes-keyframes/references/keyframe-patterns.md +108 -0
- package/dist/assets/design/skills/hyperframes-studio/SKILL.md +75 -0
- package/dist/assets/design/skills/motion-graphics/SKILL.md +175 -0
- package/dist/assets/design/skills/motion-graphics/agents/builder.md +41 -0
- package/dist/assets/design/skills/motion-graphics/agents/director.md +54 -0
- package/dist/assets/design/skills/motion-graphics/agents/finalize.md +17 -0
- package/dist/assets/design/skills/motion-graphics/catalog-map.md +52 -0
- package/dist/assets/design/skills/motion-graphics/categories/asset-fusion/module.md +37 -0
- package/dist/assets/design/skills/motion-graphics/categories/charts/module.md +22 -0
- package/dist/assets/design/skills/motion-graphics/categories/kinetic-type/module.md +19 -0
- package/dist/assets/design/skills/motion-graphics/categories/logo-reveal/module.md +17 -0
- package/dist/assets/design/skills/motion-graphics/categories/lower-thirds/module.md +20 -0
- package/dist/assets/design/skills/motion-graphics/categories/maps/module.md +61 -0
- package/dist/assets/design/skills/motion-graphics/categories/news/module.md +56 -0
- package/dist/assets/design/skills/motion-graphics/categories/stat/module.md +21 -0
- package/dist/assets/design/skills/motion-graphics/categories/tweet/module.md +16 -0
- package/dist/assets/design/skills/motion-graphics/categories/webpage/module.md +30 -0
- package/dist/assets/design/skills/motion-graphics/grounding/PROTOCOL.md +64 -0
- package/dist/assets/design/skills/motion-graphics/phases/source/guide.md +21 -0
- package/dist/assets/design/skills/motion-graphics/references/builder-contract.md +38 -0
- package/dist/assets/design/skills/motion-graphics/references/motion-vocabulary.md +47 -0
- package/dist/assets/design/skills/motion-graphics/references/shot-plan-ir.md +54 -0
- package/dist/assets/design/skills/motion-graphics/samples/asset-fusion/_ref-circle-highlight.html +306 -0
- package/dist/assets/design/skills/music-to-video/SKILL.md +207 -0
- package/dist/assets/design/skills/music-to-video/references/frame-skeleton.md +100 -0
- package/dist/assets/design/skills/music-to-video/references/montage.md +55 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitive-catalog.md +75 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/3d-card-flip/scene.html +119 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/bg-flow-field/scene.html +294 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/index.html +54 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/binary-decrypt/scene.html +85 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/blur-resolve/scene.html +60 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/braam-punch/scene.html +100 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/chromatic-split/scene.html +111 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/chrome-sweep/scene.html +68 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/index.html +54 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/counting-punch/scene.html +119 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/crash-zoom-in/scene.html +120 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/index.html +55 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/datamosh-smear/scene.html +131 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/directional-fill/scene.html +103 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/dolly-zoom/scene.html +102 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/index.html +54 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/electric-arc/scene.html +105 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/flash-cut/scene.html +97 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/index.html +54 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/gooey-metaball/scene.html +206 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/hard-cut/scene.html +82 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/hypercut-whip/scene.html +44 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/iris-open/scene.html +69 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/kinetic-letter-in/scene.html +64 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/liquid-morph/scene.html +96 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/mask-reveal/scene.html +74 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/mosaic-pack/scene.html +89 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/neon-flicker/scene.html +73 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/outline-to-fill/scene.html +82 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/palette-flip/scene.html +97 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/particle-burst/scene.html +106 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/pixel-dissolve/scene.html +86 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/radial-burst-lines/scene.html +130 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/screen-shake/scene.html +78 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/slot-machine-reveal/scene.html +100 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/spotlight-sweep/scene.html +102 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/staggered-exit/scene.html +82 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/USAGE.md +42 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-spectral-rays/scene.html +280 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/index.html +54 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/text-wave-distort/scene.html +106 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/tile-mosaic/scene.html +109 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/typewriter-reveal/scene.html +91 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/index.html +53 -0
- package/dist/assets/design/skills/music-to-video/references/motion-primitives/word-grid-burst/scene.html +96 -0
- package/dist/assets/design/skills/music-to-video/references/planning.md +104 -0
- package/dist/assets/design/skills/music-to-video/references/storyboard-format.md +94 -0
- package/dist/assets/design/skills/music-to-video/references/template-catalog.md +106 -0
- package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/index.html +527 -0
- package/dist/assets/design/skills/music-to-video/references/templates/card-flyby/program.json +13 -0
- package/dist/assets/design/skills/music-to-video/references/templates/held-message-living-field/index.html +485 -0
- package/dist/assets/design/skills/music-to-video/references/templates/held-text-strobe-burst/index.html +302 -0
- package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/index.html +610 -0
- package/dist/assets/design/skills/music-to-video/references/templates/intro-kinetic-cascade/program.json +41 -0
- package/dist/assets/design/skills/music-to-video/references/templates/logo-split-lockup-pulse/index.html +596 -0
- package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/index.html +589 -0
- package/dist/assets/design/skills/music-to-video/references/templates/poster-tile-mosaic/program.json +25 -0
- package/dist/assets/design/skills/music-to-video/references/templates/roll-flipbook-word-cycle/index.html +267 -0
- package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/index.html +594 -0
- package/dist/assets/design/skills/music-to-video/references/templates/split-anchor-word-slot/program.json +39 -0
- package/dist/assets/design/skills/music-to-video/references/templates/typewriter-phrase-keyword-shuffle/index.html +238 -0
- package/dist/assets/design/skills/music-to-video/sub-agents/frame-worker.md +49 -0
- package/dist/assets/design/skills/pr-to-video/SKILL.md +271 -0
- package/dist/assets/design/skills/pr-to-video/references/code-vocabulary.md +112 -0
- package/dist/assets/design/skills/pr-to-video/references/cut-catalog.md +215 -0
- package/dist/assets/design/skills/pr-to-video/references/motion-language.md +156 -0
- package/dist/assets/design/skills/pr-to-video/references/story-design.md +230 -0
- package/dist/assets/design/skills/pr-to-video/references/visual-design.md +164 -0
- package/dist/assets/design/skills/pr-to-video/sub-agents/frame-worker.md +38 -0
- package/dist/assets/design/skills/product-launch-video/SKILL.md +262 -0
- package/dist/assets/design/skills/product-launch-video/references/cut-catalog.md +220 -0
- package/dist/assets/design/skills/product-launch-video/references/motion-language.md +156 -0
- package/dist/assets/design/skills/product-launch-video/references/story-design.md +508 -0
- package/dist/assets/design/skills/product-launch-video/references/visual-design.md +126 -0
- package/dist/assets/design/skills/product-launch-video/sub-agents/frame-worker.md +21 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/SKILL.md +130 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/README.md +41 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/expected.json +26 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/compositions/title.html +31 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/hf-src/index.html +46 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/package.json +14 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-1-title-card/remotion-src/tsconfig.json +15 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/README.md +54 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/expected.json +29 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-1.html +35 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-2.html +35 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/compositions/scene-3.html +36 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/hf-src/index.html +75 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/package.json +14 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-2-multi-scene/remotion-src/tsconfig.json +15 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/README.md +85 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/expected.json +41 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-1.html +52 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-2.html +99 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/compositions/scene-3.html +55 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/hf-src/index.html +70 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/package.json +15 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-3-data-driven/remotion-src/tsconfig.json +15 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/README.md +51 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/assets/test-corpus/tier-4-escape-hatch/expected.json +85 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/api-map.md +142 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/escape-hatch.md +115 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/eval.md +140 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/fonts.md +112 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/limitations.md +136 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/lottie.md +119 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/media.md +149 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/parameters.md +172 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/sequencing.md +251 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/timing.md +165 -0
- package/dist/assets/design/skills/remotion-to-hyperframes/references/transitions.md +113 -0
- package/dist/assets/design/skills/slideshow/SKILL.md +530 -0
- package/dist/assets/design/skills/slideshow/references/standalone-harness.md +1017 -0
- package/dist/assets/design/skills/talking-head-recut/NOTICE.md +39 -0
- package/dist/assets/design/skills/talking-head-recut/SKILL.md +1007 -0
- package/dist/assets/design/skills/talking-head-recut/references/DESIGN_INDEX.md +145 -0
- package/dist/assets/design/skills/talking-head-recut/references/confirm-visual-direction-with-user-do-this-first.md +211 -0
- package/dist/assets/design/skills/talking-head-recut/references/frames/clean.html +92 -0
- package/dist/assets/design/skills/talking-head-recut/references/frames/hairline.html +171 -0
- package/dist/assets/design/skills/talking-head-recut/references/frames/polaroid.html +131 -0
- package/dist/assets/design/skills/talking-head-recut/references/layouts/overlay.html +164 -0
- package/dist/assets/design/skills/talking-head-recut/references/layouts/pip.html +143 -0
- package/dist/assets/design/skills/talking-head-recut/references/layouts/split.html +121 -0
- package/dist/assets/design/skills/talking-head-recut/references/layouts/stack.html +109 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/academic.html +172 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/audit.html +170 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/editorial.html +189 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/geom.html +181 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/minimal.html +130 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/spotlight.html +142 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/swiss.html +188 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/terminal.html +196 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/whiteboard.html +170 -0
- package/dist/assets/design/skills/talking-head-recut/references/styles/xhs.html +206 -0
- package/dist/assets/design/taste/LICENSE +21 -0
- package/dist/assets/design/taste/PROVENANCE.md +70 -0
- package/dist/assets/design/taste/brandkit/SKILL.md +798 -0
- package/dist/assets/design/taste/brutalist-skill/SKILL.md +92 -0
- package/dist/assets/design/taste/gpt-tasteskill/SKILL.md +74 -0
- package/dist/assets/design/taste/image-to-code-skill/SKILL.md +1228 -0
- package/dist/assets/design/taste/imagegen-frontend-mobile/SKILL.md +1465 -0
- package/dist/assets/design/taste/imagegen-frontend-web/SKILL.md +987 -0
- package/dist/assets/design/taste/minimalist-skill/SKILL.md +85 -0
- package/dist/assets/design/taste/output-skill/SKILL.md +49 -0
- package/dist/assets/design/taste/redesign-skill/SKILL.md +178 -0
- package/dist/assets/design/taste/soft-skill/SKILL.md +98 -0
- package/dist/assets/design/taste/stitch-skill/DESIGN.md +121 -0
- package/dist/assets/design/taste/stitch-skill/SKILL.md +184 -0
- package/dist/assets/design/taste/taste-skill/SKILL.md +1043 -0
- package/dist/assets/design/taste/taste-skill/references/4-2-color-calibration.md +24 -0
- package/dist/assets/design/taste/taste-skill/references/4-7-layout-discipline-hard-rules-failing-any-of-.md +27 -0
- package/dist/assets/design/taste/taste-skill/references/4-8-image-visual-asset-strategy.md +35 -0
- package/dist/assets/design/taste/taste-skill/references/4-9-content-density.md +34 -0
- package/dist/assets/design/taste/taste-skill/references/9-f-production-test-tells-banned-outright.md +54 -0
- package/dist/assets/design/taste/taste-skill-v1/SKILL.md +226 -0
- package/dist/assets/engineering/skills-starter/engineering-ui-design/SKILL.md +84 -0
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/SKILL.md +68 -459
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/dispatch-and-review-rules.md +74 -0
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/example-workflow.md +70 -0
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/model-selection.md +40 -0
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/process-diagrams.md +92 -0
- package/dist/assets/engineering/skills-superpowers/subagent-driven-development/setup-and-ledger.md +75 -0
- package/dist/assets/uiux/LICENSE +21 -0
- package/dist/assets/uiux/PROVENANCE.md +110 -0
- package/dist/assets/uiux/data/app-interface.csv +33 -0
- package/dist/assets/uiux/data/charts.csv +26 -0
- package/dist/assets/uiux/data/colors.csv +193 -0
- package/dist/assets/uiux/data/icons.csv +106 -0
- package/dist/assets/uiux/data/landing.csv +35 -0
- package/dist/assets/uiux/data/motion.csv +18 -0
- package/dist/assets/uiux/data/products.csv +193 -0
- package/dist/assets/uiux/data/react-performance.csv +45 -0
- package/dist/assets/uiux/data/stacks/angular.csv +51 -0
- package/dist/assets/uiux/data/stacks/astro.csv +54 -0
- package/dist/assets/uiux/data/stacks/avalonia.csv +57 -0
- package/dist/assets/uiux/data/stacks/flutter.csv +53 -0
- package/dist/assets/uiux/data/stacks/html-tailwind.csv +60 -0
- package/dist/assets/uiux/data/stacks/javafx.csv +76 -0
- package/dist/assets/uiux/data/stacks/jetpack-compose.csv +53 -0
- package/dist/assets/uiux/data/stacks/laravel.csv +51 -0
- package/dist/assets/uiux/data/stacks/nextjs.csv +62 -0
- package/dist/assets/uiux/data/stacks/nuxt-ui.csv +77 -0
- package/dist/assets/uiux/data/stacks/nuxtjs.csv +68 -0
- package/dist/assets/uiux/data/stacks/react-native.csv +52 -0
- package/dist/assets/uiux/data/stacks/react.csv +67 -0
- package/dist/assets/uiux/data/stacks/shadcn.csv +69 -0
- package/dist/assets/uiux/data/stacks/svelte.csv +56 -0
- package/dist/assets/uiux/data/stacks/swiftui.csv +51 -0
- package/dist/assets/uiux/data/stacks/threejs.csv +54 -0
- package/dist/assets/uiux/data/stacks/uno.csv +60 -0
- package/dist/assets/uiux/data/stacks/uwp.csv +56 -0
- package/dist/assets/uiux/data/stacks/vue.csv +50 -0
- package/dist/assets/uiux/data/stacks/winui.csv +60 -0
- package/dist/assets/uiux/data/stacks/wpf.csv +57 -0
- package/dist/assets/uiux/data/styles.csv +89 -0
- package/dist/assets/uiux/data/typography.csv +75 -0
- package/dist/assets/uiux/data/ui-reasoning.csv +193 -0
- package/dist/assets/uiux/data/ux-guidelines.csv +120 -0
- package/dist/auto-review.js +38 -4
- package/dist/bootstrap.js +65061 -56810
- package/dist/client.cjs +4668 -3598
- package/dist/subagent-claude-code.js +493 -0
- package/dist/subagent-codex.js +1068 -0
- package/dist/tool-session-query.js +993 -0
- package/package.json +81 -74
- package/dist/agent-team.js +0 -16235
- package/dist/schedule.js +0 -15898
- package/dist/tool-agent-team.js +0 -16766
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Visual design — product-launch per-frame shot method
|
|
2
|
+
|
|
3
|
+
> The method behind **Step 4 (Frame visual design)**. You (the orchestrator) read it to **enrich `STORYBOARD.md` frames in place** — story-design wrote the skeleton (each frame's `scene`, `voiceover`, `transition_in`, the narrative fields, its `asset_candidates`, and optionally a candidate blueprint id); you add how each frame **looks and moves**. The unit you write per frame is a **time-coded shot sequence** — a shot directed across its whole duration, not a static slide. You write **no HTML** (that's the frame workers), you **never read `capture/`** (story already chose the assets), and you do **not** select assets or name transitions (story owns both). `frame.md` is your palette/type truth by role. Layout is a compact vocabulary in this file (the **Layout** section below), stated inline per Scene; motion vocabulary + the motion doctrine + the seek-safe core → `motion-language.md`; the proven shapes → `../hyperframes-animation/blueprints-index.md` + `blueprints/<id>.md`; concrete rules resolve in Step 5 from this skill's local `../hyperframes-animation/rules/`. Adding palette theory or a generic font rule here? Wrong home — `frame.md` + `hyperframes-creative`.
|
|
4
|
+
|
|
5
|
+
## The unit is a time-coded shot sequence
|
|
6
|
+
|
|
7
|
+
A frame's visual layer is **a sequence of time windows paced to the voiceover**, not a bag of effect tags. The failure that reads as PowerPoint is **front-loading**: the agent rushes the whole canvas on screen in the first ~25%, and then it just sits (the old representation — a flat set of effect names + a prose note — fired everything at entrance and left the rest empty). A time-coded shot sequence written **against the VO** makes that impossible: each window states what is on screen and what is moving, and **nothing appears before the voiceover reaches it.**
|
|
8
|
+
|
|
9
|
+
Write each frame as a handful of windows cued by the spoken line:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Scene 1 (0.0–Xs): only what the VO is saying at t=0 enters — never the whole canvas
|
|
13
|
+
Scene 2 (Xs–Ys): the next piece reveals as the VO names it (a line / card / stat / icon)
|
|
14
|
+
… one window per spoken cue — as many or as few as the line calls for
|
|
15
|
+
Scene N (…–end): content has resolved; hold the read (stillness; subtle jitter at most)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
- Each `Scene` line names **what's on screen**, **what moves in this window**, and **where it sits** (layout, inline). Times are real seconds across the frame's `duration`.
|
|
19
|
+
- **Pace reveals to the voiceover; never front-load.** This is the core anti-PowerPoint mechanism (→ `motion-language.md` Part 2 Rule 2). At t=0 show only what the VO is saying then; reveal each further piece — a line, a card, even an h1 — **when the VO names it**, spreading reveals across the shot and especially the **back ~50%**. **The window count = the number of spoken cues the line calls for** — a two-beat line is two windows, a five-feature list is five or six. There is **no fixed count and no mandatory "middle" act**; the only sin is dumping everything up front.
|
|
20
|
+
- **End on a held read.** Once the content has resolved it holds and reads — **prefer stillness to bad motion**: no forced camera drift, no lazy breathing, no back-half pan/push; at most a subtle jitter keeps it alive (→ `motion-language.md`). On a short shot the final reveal and the hold are the **same window** — the hold is not a separate mandatory act. Only the final frame has a real exit; every other frame's exit is the harness transition (story's `transition_in`).
|
|
21
|
+
- A **deliberately held** frame — content already revealed, now reading still — is legitimate and often right (a climax, a breather). The failure is never "too still"; it is **front-loaded-then-frozen** (everything dumped by ~25%, nothing cued to the VO). Place held beats deliberately for rhythm so the video isn't uniformly busy (allocate them in `## Video direction`). Reveal pacing + holds + the idle budget → `motion-language.md`.
|
|
22
|
+
|
|
23
|
+
## Pick the shape — instantiate a blueprint
|
|
24
|
+
|
|
25
|
+
Don't invent each shot from scratch. The frame's **role** (its `type` / `beat`) points to a proven shape:
|
|
26
|
+
|
|
27
|
+
1. **Match the role to a blueprint.** Open `../hyperframes-animation/blueprints-index.md`, find the frame's role in the **role→blueprint menu**, and pick the blueprint whose intent fits this beat (story may already have named a candidate id — confirm or override it). Read that `blueprints/<id>.md`: it is a short, product-agnostic, **time-coded shot template with `[slots]`** and a named **signature move** (the thing that makes the shape itself — the SVG ring, the push-THROUGH, the in-place token swap).
|
|
28
|
+
|
|
29
|
+
2. **Instantiate its `[slots]` with THIS product's content** — three postures:
|
|
30
|
+
- **Reproduce** — the blueprint fits the beat and your content maps onto its slots cleanly. Fill every `[slot]` with this product's word / asset / stat and follow its Scene timing. Write the resulting Scene lines.
|
|
31
|
+
- **Adapt** — the _structure_ fits but the content / asset-count / surface doesn't (or you want a fresher surface to avoid templating). State **what you keep / what you change** in one line, then write the adapted Scene lines. You may extend or vary; you may **never** drop the **signature move** (drop it and you picked the wrong blueprint), and you keep the reveals **paced to the VO** — never collapse the shape to a single front-loaded dump.
|
|
32
|
+
- **Compose** — no blueprint fits the beat. Build the shot from the **motion vocabulary** in `motion-language.md`: still pace the reveals to the VO across the shot, never fire everything at t=0. Mark it `blueprint: compose`.
|
|
33
|
+
|
|
34
|
+
3. **Keep the signature move.** Whichever posture, the blueprint's signature move (named in its file) is the spine of the shot — it usually lands on the shot's key reveal. Carry it through.
|
|
35
|
+
|
|
36
|
+
The blueprint's own Scene lines, motion vocabulary, and `rule mapping` are your raw material; you are choosing a shape and casting this product into it, not copying an engineering spec.
|
|
37
|
+
|
|
38
|
+
## What you add to each frame
|
|
39
|
+
|
|
40
|
+
Story-design's `## Frame N` block already carries the narrative + `asset_candidates`. You append the shot. Story's `scene` / `voiceover` / `transition_in` / role fields stay untouched.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
## Frame 3 — The problem
|
|
44
|
+
- scene: a 20-minute timer over a stack of rejected takes ← refine only if it could read sharper
|
|
45
|
+
- voiceover: "…" ← story's; leave it
|
|
46
|
+
- transition_in: crossfade ← story's; leave it
|
|
47
|
+
- type: pain_point ← story's
|
|
48
|
+
- persuasion: Pain agitation
|
|
49
|
+
- beat: frustration
|
|
50
|
+
- blueprint: dataviz-countup (Adapt) ← you add: the id you instantiated (or "compose")
|
|
51
|
+
- focal: assets/reject-stat.png ← you add: the hero asset for this beat
|
|
52
|
+
- roles: reject-stat = cutout · timer = supporting · backdrop = background (dim ~40%) ← you add: role per candidate
|
|
53
|
+
- sfx: impact-soft, riser ← you add: the sound the beat wants (fetched + mounted at root; never yours to embed)
|
|
54
|
+
|
|
55
|
+
Adapt: keep the count-up-ring signature; one stat not three, and the trend chart becomes the rejected-takes count climbing.
|
|
56
|
+
Scene 1 (0.0–1.2s): solid backdrop (dim ~40%); a circular progress ring + bold center number seat dead-center, ring sweeps and number counts 0→20 on one heavy ease — Centered template, ~50% of frame. Slow push-in runs underneath.
|
|
57
|
+
Scene 2 (1.2–3.4s): as the VO names the count, the camera pushes THROUGH the ring into the rejected-takes stack lower-left; the stack grows beat-by-beat as a reject counter ticks up beside it (the count-up reveals on its spoken cue, not at t=0). Asymmetric 60/40, 3 depth layers.
|
|
58
|
+
Scene 3 (3.4–5.0s): land the hero stat card dead-center, accent glow blooms behind it and holds; the stat reads clean and STILL — no continuing push, no breathing (a held beat beats bad motion). The stillness reads against the prior motion.
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The lightweight tags:
|
|
62
|
+
|
|
63
|
+
- **`blueprint:`** — the id you instantiated (with `(Reproduce)` / `(Adapt)`), or `compose`. One id per frame.
|
|
64
|
+
- **`focal:`** — which existing candidate is the hero of this beat.
|
|
65
|
+
- **`roles:`** — each candidate's role: `cutout` (foreground subject, lay text around it) · `background` (full-bleed, dim 30–50%) · `supporting` (secondary). You **consume** the candidates story chose — never add, swap, or drop one (coverage is story's call; if a frame truly has the wrong candidates, flag it back, don't reach into `capture/`).
|
|
66
|
+
- **`sfx:`** — name the sound the beat wants (an impact for a slam, a whoosh for a push, a riser into a reveal). The audio script's `fetch-sfx` pass retrieves it and the assembler mounts it at the root — you only **name** it, never embed an `<audio>` element.
|
|
67
|
+
|
|
68
|
+
**Layout is stated INLINE in each Scene line** — name the template, density, depth, and hierarchy as part of "where it sits" (`Centered, ~50% of frame`, `asymmetric 60/40, 3 depth layers`), drawing on the **Layout** vocabulary below; never write px / scale / shadow recipes (the worker writes those).
|
|
69
|
+
|
|
70
|
+
**Motion is named INLINE in each Scene line** — name the move from `motion-language.md`'s vocabulary (`ring sweeps`, `pushes THROUGH`, `count-up`, `glow blooms`) and let it settle on a long-tail curve (`power3` default — smooth beats bouncy; see `motion-language.md`). Never write ease curves / ms / stagger (those resolve in Step 5 from this skill's local `../hyperframes-animation/rules/`).
|
|
71
|
+
|
|
72
|
+
## Layout — named inline per Scene
|
|
73
|
+
|
|
74
|
+
State each Scene's layout as part of "where it sits." **If the blueprint already implies a composition** (a ring around a center, stations on a wide canvas, two cards from opposite wings), that wins — describe it directly; the vocabulary below is for **composing freely** or a generic beat, not a menu you must pick from. Never write px / scale / shadow (the worker does). One frame's layout can EVOLVE across its Scenes (Scene 1 centered hero → Scene 2 rearranges to a grid).
|
|
75
|
+
|
|
76
|
+
- **Framing vocabulary** — centered (hero / climax) · rule-of-thirds · split-screen (comparison) · layered-depth (immersive) · asymmetric 60/40 or 70/30 (editorial) · triptych (three panels) · full-width strip. Vary the framing across the video so it doesn't read as one repeated template — let the beat decide, not a quota.
|
|
77
|
+
- **Density** — primary visual ≥ 40% of canvas; ≥ 3 depth layers (background + midground + foreground); never a lone small cluster floating in empty space. Squint test: after blur you can still pick out the #1 element.
|
|
78
|
+
- **Hierarchy** — combine ≥ 2 of size (3:1) / weight (800 vs 400) / contrast / position (upper-third is golden) / motion, so one element clearly dominates.
|
|
79
|
+
- **Depth** — layer 2–3 of: size, blur, opacity gradient, overlap, shadow-stack.
|
|
80
|
+
- **Don't show**: nav bars, footers, scrollbars, real cursors / browser chrome, generic decorative shapes standing in for a real asset, floating bokeh / purple-blue "AI" gradients — unless it's an intentional UI-demo reconstruction.
|
|
81
|
+
|
|
82
|
+
## `## Video direction` — write the invariants ONCE
|
|
83
|
+
|
|
84
|
+
The whole video shares one look and one motion grammar. Write a **`## Video direction`** block ONCE at the top of `STORYBOARD.md` so every frame inherits it and per-frame Scene lines carry only the **delta**. This block is load-bearing — it is what binds many independent shots into one film. **Keep it.**
|
|
85
|
+
|
|
86
|
+
- **palette system** — from `frame.md`: which roles map to which hues. Never invent.
|
|
87
|
+
- **motion grammar + reveal model** — long-tail eases (`power3` default, smooth over bouncy) + the **VO-paced reveal** model every frame follows (reveal each piece on its spoken cue; never front-load) + what may stay alive during a hold (subtle jitter at most; no lazy breathing) (→ `motion-language.md`).
|
|
88
|
+
- **rhythm / held-frame allocation** — name the **held / breather frames** (often before a climax) so the video varies its energy: most frames reveal to the VO, a few hold still (a held read beats bad motion; the anti-monotony discipline; → `motion-language.md`).
|
|
89
|
+
- **negative list** — what never appears: off-brand textures / effects the pack forbids, **plus both motion failure modes** — slideshow (front-load then freeze) and screensaver (everything floating independently) (→ `motion-language.md`).
|
|
90
|
+
|
|
91
|
+
Do **not** repeat these per frame — restating video-level rules in every frame is exactly the bloat this layer prevents.
|
|
92
|
+
|
|
93
|
+
## Palette & type — from `frame.md`, never invented
|
|
94
|
+
|
|
95
|
+
- **Palette** — `frame.md` (the adopted pack) is the color truth; apply its roles per frame. Generic basics (one accent, tint neutrals, avoid pure `#000`/`#fff`) → `hyperframes-creative/references/house-style.md`.
|
|
96
|
+
- **Type** — fonts resolve via `frame.md`'s type tokens; reference them **by role** (display / body / mono / the pack's ramp), never by raw family or px. Generic typography craft (embedded fonts, dark-bg optical compensation, `tabular-nums`) → `hyperframes-creative/references/typography.md`.
|
|
97
|
+
|
|
98
|
+
## Caption-band keep-out (plan side)
|
|
99
|
+
|
|
100
|
+
The bottom ~17% of the canvas is reserved for the caption pill. Plan every frame's content into the **top ~83%** so nothing important lands in the band (the worker enforces the pixel cutoff; you plan the layout). Holds even when captions are disabled — bottom-edge consistency.
|
|
101
|
+
|
|
102
|
+
## Where the detail lives
|
|
103
|
+
|
|
104
|
+
| For… | Read |
|
|
105
|
+
| ------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
|
|
106
|
+
| the proven shapes + role→blueprint menu + how to pick | `../hyperframes-animation/blueprints-index.md` → `blueprints/<id>.md` (local) |
|
|
107
|
+
| motion — shot model, vocabulary, holds, idle budget, stillness, seek-safe | `motion-language.md` (local) |
|
|
108
|
+
| layout — templates, density, depth, hierarchy, caption band | the **Layout** vocabulary in this file |
|
|
109
|
+
| concrete eases / ms / stagger + rule recipe bodies (Step 5) | local `../hyperframes-animation/rules/` (the frame worker reads it; you don't) |
|
|
110
|
+
| palette + type tokens | the project's `frame.md`; basics → `hyperframes-creative` `house-style.md` / `typography.md` |
|
|
111
|
+
| "produced, not generated" foreground density | `hyperframes-creative/references/video-composition.md` |
|
|
112
|
+
| within-frame cuts / seams (zoom-through · cut-the-curve · waterfall) | `cut-catalog.md` (the worker builds them inside the composition) |
|
|
113
|
+
| transitions | story-design owns `transition_in`; you don't touch it |
|
|
114
|
+
|
|
115
|
+
## Before you finish — checklist
|
|
116
|
+
|
|
117
|
+
- **`## Video direction`** written once at the top (palette · motion grammar + shot model + idle budget · stillness allocation · negative list incl. both failure modes); per-frame entries are deltas, not restatements.
|
|
118
|
+
- Every frame is a **time-coded shot sequence** with real second windows across its `duration` — not a tag bag.
|
|
119
|
+
- **No frame front-loads** — at t=0 only what the VO is saying enters; each further piece reveals on its spoken cue, across the back ~50%. Window count follows the VO, not a fixed number.
|
|
120
|
+
- Every frame names an **`blueprint:`** id (Reproduce / Adapt) or `compose`; an Adapt states keep/change and **keeps the signature move**; nothing collapses to a single front-loaded dump — reveals stay paced to the VO.
|
|
121
|
+
- **Held frames are deliberate** — allocated in Video direction for rhythm; a held read is fine (prefer stillness to bad motion), but no frame may be front-loaded-then-frozen.
|
|
122
|
+
- Each frame's `asset_candidates` have a `focal` + per-candidate `roles`; none added, swapped, or dropped.
|
|
123
|
+
- Layout named **inline** per Scene (template / density / depth / hierarchy — the **Layout** vocabulary here); motion named **inline** per Scene from the vocabulary (`motion-language.md`). No px / ease curves / ms / JS.
|
|
124
|
+
- Content planned into the top ~83% (caption band clear).
|
|
125
|
+
- Palette / type pulled from `frame.md` by role — nothing invented.
|
|
126
|
+
- You wrote no HTML and never read `capture/`.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Frame worker — product-launch delta
|
|
2
|
+
|
|
3
|
+
> The shared law is the core contract above (the packet builder prepends `../hyperframes/references/frame-worker-core.md` to this file as `_role.md`) — read the two as one role. This file carries only what's specific to a product-launch frame; you run N-up, **one frame each** — your dispatch carries exactly one packet. Tempted to add a generic GSAP / timeline rule here? Wrong home — it belongs in the core contract or `hyperframes-core`.
|
|
4
|
+
|
|
5
|
+
## Your `focal:` / `roles:` — real captured media
|
|
6
|
+
|
|
7
|
+
- `focal:` — which candidate is the hero.
|
|
8
|
+
- `roles:` — each candidate's role: `cutout` foreground / `background` full-bleed / supporting — plus the real media available (each `public/<basename> — description`; a **`[video]`** tag marks a `.mp4` motion source that cannot be mounted by this sub-composition worker).
|
|
9
|
+
- **Asset paths are project-root relative everywhere.** This includes HTML attributes and CSS `url(...)` values such as `@font-face src`: use `assets/...` (or the supplied `capture/assets/...` path), never `../` or `../../`. Shared fonts are staged before dispatch so every parallel frame resolves the same local files; never fall back to a network `@import`.
|
|
10
|
+
|
|
11
|
+
## Placing candidates (product-launch constraint)
|
|
12
|
+
|
|
13
|
+
**Place each candidate by its `roles`** (the `focal` is the hero): a `cutout` is a foreground subject — respect the 83% keep-out, lay text around it, not over its face; a `background` is full-bleed and dimmed ~30–50% so foreground content stays legible. Frame files are sub-compositions. Audio remains orchestrator-owned: never author `<audio>` in a frame. An approved `[video]` candidate may be declared as a frame-local `<video data-frame-video="approved" data-start="..." data-duration="..." data-track-index="...">`; `assemble-index.mjs` hoists it to the host root and translates its timing. Give every approved video explicit host geometry with numeric `data-frame-video-x`, `data-frame-video-y`, `data-frame-video-width`, and `data-frame-video-height`; optionally set `data-frame-video-fit="cover|contain|fill|none|scale-down"` (default `cover`). The assembler converts only those values to host CSS: frame-local classes and inline styles do not cross the hoist boundary. Do not use this declaration for audio, unapproved URLs, or videos without explicit timing and geometry. If no approved video is supplied, use an explicitly supplied static still/key art (`[video-still]` or another image candidate) as `<img>`; do not extract a frame, fabricate a URL, or silently embed an unapproved clip.
|
|
14
|
+
|
|
15
|
+
When a frame showcases a captured website, use the supplied screenshot as the page. Do not rebuild the full site in HTML: even a close recreation can change the real layout, spacing, or branding. If the shot needs motion inside the page, overlay the supplied real assets at measured positions or rebuild only the moving component.
|
|
16
|
+
|
|
17
|
+
Brand text comes from your frame's `scene` / narrative — never from `frame.md` (a style spec, not the product's content). Place the named assets, and never invent new ones.
|
|
18
|
+
|
|
19
|
+
## Cross-frame handoffs
|
|
20
|
+
|
|
21
|
+
If the packet includes `handoff_in:` or `handoff_out:`, treat those values as a hard boundary contract. Start or end the named element at the exact x/y position, scale, opacity, and motion direction/speed provided; a field the packet states as unchanged is still binding, not optional. Do not restyle or reinterpret that boundary state. The neighboring frame is being built by another worker and will use the matching values.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remotion-to-hyperframes
|
|
3
|
+
description: 'Port an existing Remotion (React) composition''s source to HyperFrames HTML. Use ONLY on an explicit ask to port/convert/migrate/translate a Remotion source — one-way, Remotion-only. A passing Remotion mention, reference-only code, or "make something like my Remotion video" is a fresh build (/general-video). Unclear → /hyperframes.'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **First, keep this skill fresh — confirm with the user before running:** `this pack is bundled offline and is not updated at runtime remotion-to-hyperframes`. A fast no-op when everything is current; otherwise it refreshes this skill plus the core domain skills it depends on before you rely on them.
|
|
7
|
+
|
|
8
|
+
# Remotion to HyperFrames
|
|
9
|
+
|
|
10
|
+
> **The front door is `/hyperframes`.** Use this **only** to port an existing **Remotion** (React) composition's source into HyperFrames, one way. Authoring a **new** composition, re-creating from a non-Remotion source (After Effects, Framer Motion, plain React / CSS — there is no Remotion source to translate), a passing Remotion mention, or any uncertainty → read `/hyperframes` first: the intent layer owns every route decision.
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Translate Remotion (React-based) video compositions into HyperFrames (HTML + GSAP) compositions. Most Remotion idioms have direct HyperFrames equivalents — the translation is mechanical for ~80% of typical compositions. This skill encodes the mapping and guards against the lossy 20% by refusing to translate patterns that don't fit HF's seek-driven model and recommending the runtime interop pattern from [PR #214](https://github.com/heygen-com/hyperframes/pull/214) instead.
|
|
15
|
+
|
|
16
|
+
The skill ships with a **tiered test corpus** (T1–T4, 4 fixtures total) that grades translations against measured SSIM thresholds. Don't translate without running the eval — a translation that "looks right" but renders 0.05 SSIM lower than the validated baseline is silently wrong.
|
|
17
|
+
|
|
18
|
+
## When to use
|
|
19
|
+
|
|
20
|
+
**Use this skill ONLY when the user explicitly asks to migrate from Remotion.** Example trigger phrases:
|
|
21
|
+
|
|
22
|
+
- "port my Remotion project to HyperFrames"
|
|
23
|
+
- "convert this Remotion code to HyperFrames"
|
|
24
|
+
- "migrate from Remotion"
|
|
25
|
+
- "translate this Remotion comp"
|
|
26
|
+
- "rewrite this as HyperFrames HTML"
|
|
27
|
+
|
|
28
|
+
**Do NOT use this skill when:**
|
|
29
|
+
|
|
30
|
+
- (a) The user is authoring a **new** HyperFrames composition, even if they have or are A/B-testing a similar Remotion video.
|
|
31
|
+
- (b) The user mentions Remotion in passing without asking for migration.
|
|
32
|
+
- (c) The user shares Remotion code as reference material rather than asking for a translation.
|
|
33
|
+
- (d) The user asks for "the same video as my Remotion one" without explicitly asking to migrate the source — treat that as a fresh HyperFrames build.
|
|
34
|
+
|
|
35
|
+
**NOT SUPPORTED (decline — this is not what this skill does):**
|
|
36
|
+
|
|
37
|
+
- **The reverse direction.** Exporting a HyperFrames composition back out _to_ Remotion (or to any other framework) is not a workflow — the translation is Remotion → HyperFrames only. Say so plainly.
|
|
38
|
+
- **Non-Remotion sources.** An After Effects project (`.aep`), a Framer Motion / plain-React / CSS animation, or any other tool's source is not a Remotion composition — there is no Remotion source to translate. Re-create it natively via `/general-video`, or decline if HyperFrames can't represent it.
|
|
39
|
+
|
|
40
|
+
When in doubt, default to authoring a native HyperFrames composition with `/general-video` (the general HyperFrames authoring flow) instead.
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
### Step 1: Lint the source
|
|
45
|
+
|
|
46
|
+
Run [`scripts/lint_source.py`](scripts/lint_source.py) over the Remotion source directory. The lint detects patterns that can't translate cleanly:
|
|
47
|
+
|
|
48
|
+
- **Blockers** (refuse + recommend interop): `useState`, `useReducer`, `useEffect`/`useLayoutEffect` with non-empty deps, async `calculateMetadata`, third-party React UI libraries (MUI, Chakra, Mantine, antd, shadcn, Radix, NextUI).
|
|
49
|
+
- **Warnings** (translate after dropping the construct): `@remotion/lambda` config, `delayRender`, `useCallback`, `useMemo`, custom hooks.
|
|
50
|
+
- **Info** (translate with note): `staticFile`, `interpolateColors`.
|
|
51
|
+
|
|
52
|
+
If any blocker fires, **stop**. Read [`references/escape-hatch.md`](references/escape-hatch.md) and surface the recommendation message. Warnings don't stop translation — drop the offending construct in step 3 and note the gap in `TRANSLATION_NOTES.md`. `@remotion/lambda` config is the canonical warning case: the skill drops the import + `renderMediaOnLambda(...)` calls but translates the rest of the composition.
|
|
53
|
+
|
|
54
|
+
### Step 2: Plan the translation
|
|
55
|
+
|
|
56
|
+
Read [`references/api-map.md`](references/api-map.md) — the index of every Remotion API and its HF equivalent or per-topic reference. Identify which topic references you'll need based on what the source uses:
|
|
57
|
+
|
|
58
|
+
| Source contains | Load reference |
|
|
59
|
+
| ------------------------------------------------------------------------- | --------------------------------------------- |
|
|
60
|
+
| `Composition`, `defaultProps`, `schema`, `calculateMetadata` | [`parameters.md`](references/parameters.md) |
|
|
61
|
+
| `Sequence`, `Series`, `Loop`, `AbsoluteFill`, `Freeze` | [`sequencing.md`](references/sequencing.md) |
|
|
62
|
+
| `useCurrentFrame`, `interpolate`, `spring`, `Easing`, `interpolateColors` | [`timing.md`](references/timing.md) |
|
|
63
|
+
| `Audio`, `Video`, `Img`, `IFrame`, `staticFile`, `delayRender` | [`media.md`](references/media.md) |
|
|
64
|
+
| `TransitionSeries`, `@remotion/transitions` | [`transitions.md`](references/transitions.md) |
|
|
65
|
+
| `@remotion/lottie` | [`lottie.md`](references/lottie.md) |
|
|
66
|
+
| `@remotion/google-fonts/<Family>`, `Font.loadFont`, `@font-face` | [`fonts.md`](references/fonts.md) |
|
|
67
|
+
|
|
68
|
+
Don't load all of them — load only what the specific source needs.
|
|
69
|
+
|
|
70
|
+
This plugin ships no hosted look registry, so the local materials this skill carries are the catalogue.
|
|
71
|
+
|
|
72
|
+
### Step 3: Generate the HF composition
|
|
73
|
+
|
|
74
|
+
Emit `index.html` with:
|
|
75
|
+
|
|
76
|
+
- Root `<div id="stage">` carrying the composition's `data-composition-id`, `data-start="0"`, `data-duration` (in seconds), `data-fps`, `data-width`, `data-height`, plus one `data-*` per scalar prop.
|
|
77
|
+
- One host `<div>` per scene with `data-composition-src="compositions/<scene>.html"` and `data-start` / `data-duration` / `data-track-index`. The root holds no nested layout.
|
|
78
|
+
- One `compositions/<scene>.html` per scene (a `<template>` sub-composition): its inline `<style>` for layout (CSS sets the `from` state of every animated property), its markup, and one paused `gsap.timeline({paused: true})` in the scene's local time. Every Remotion `useCurrentFrame()` derivation becomes a tween on that timeline at the offset within the scene.
|
|
79
|
+
- `window.__timelines["<scene-id>"] = tl;` in each scene file, and `window.__timelines["<composition-id>"]` for the root's own (possibly empty) timeline.
|
|
80
|
+
|
|
81
|
+
Custom React subcomponents inline as repeated HTML using the prop interface as the template (see [`parameters.md`](references/parameters.md) for the per-instance `data-*` pattern).
|
|
82
|
+
|
|
83
|
+
### Step 4: Validate
|
|
84
|
+
|
|
85
|
+
Run the eval harness — [`references/eval.md`](references/eval.md) for the full guide. Quick path:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Render Remotion baseline (after npm install in the fixture)
|
|
89
|
+
cd remotion-src && npx remotion render <CompositionId> out/baseline.mp4
|
|
90
|
+
|
|
91
|
+
# Render HF translation
|
|
92
|
+
cd ../hf-src && freecodego_design_render
|
|
93
|
+
|
|
94
|
+
# SSIM diff
|
|
95
|
+
../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Threshold: ~0.02 below `p05` of the source's complexity tier (see `eval.md`'s validated thresholds table). If the diff fails, run [`scripts/frame_strip.sh`](scripts/frame_strip.sh) to see _which_ frames diverged, then re-read the relevant timing/sequencing/media reference.
|
|
99
|
+
|
|
100
|
+
**Critical**: both renders must use matching pixel format. Set `Config.setVideoImageFormat("png")` + `Config.setColorSpace("bt709")` in the Remotion source's `remotion.config.ts` — otherwise the diff measures encoder differences (~0.05 SSIM hit), not translation fidelity.
|
|
101
|
+
|
|
102
|
+
### Step 5: Document gaps
|
|
103
|
+
|
|
104
|
+
Anything that didn't translate cleanly (volume ramps dropped, custom presentations approximated, fonts substituted) gets a `TRANSLATION_NOTES.md` written next to the HF output. See [`references/limitations.md`](references/limitations.md) for the format.
|
|
105
|
+
|
|
106
|
+
## What this skill explicitly does NOT do
|
|
107
|
+
|
|
108
|
+
- **Translate React state machines.** Compositions that drive animation via `useState` + `useEffect` are not deterministic frame-capture targets in HyperFrames' seek-driven model. Recommend the runtime interop pattern.
|
|
109
|
+
- **Run Remotion's render pipeline alongside HyperFrames.** That's the runtime interop pattern from [PR #214](https://github.com/heygen-com/hyperframes/pull/214) — a separate solution for compositions that fail this skill's lint.
|
|
110
|
+
|
|
111
|
+
(`@remotion/lambda` is _not_ a blocker — Lambda config is deployment, not animation. The skill drops it as a warning and translates the rest. See [`references/escape-hatch.md`](references/escape-hatch.md).)
|
|
112
|
+
|
|
113
|
+
## How to grade your own translation
|
|
114
|
+
|
|
115
|
+
Run the test corpus orchestrator:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
./assets/test-corpus/run.sh
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
It runs T1, T2, T3 (render + diff) and T4 (lint validation), prints a per-tier pass/fail table, and emits an aggregate JSON report. Use this to verify the skill is working end-to-end on a clean checkout — and as a regression check after editing any reference.
|
|
122
|
+
|
|
123
|
+
Validated baseline (as of 2026-04-27):
|
|
124
|
+
|
|
125
|
+
| Tier | Composition shape | Mean SSIM | Threshold |
|
|
126
|
+
| ---- | ------------------------------------------- | --------- | --------- |
|
|
127
|
+
| T1 | single-element fade-in | 0.974 | 0.95 |
|
|
128
|
+
| T2 | multi-scene + spring + audio + image | 0.985 | 0.95 |
|
|
129
|
+
| T3 | data-driven, custom subcomponents, count-up | 0.953 | 0.90 |
|
|
130
|
+
| T4 | escape-hatch (8 lint cases) | 8/8 pass | n/a |
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Tier 1 — title-card-fade
|
|
2
|
+
|
|
3
|
+
## What it tests
|
|
4
|
+
|
|
5
|
+
The simplest non-trivial Remotion → HyperFrames translation. A single text
|
|
6
|
+
element fades in over the first 0.5 s, holds for 2.0 s, and fades out over
|
|
7
|
+
the last 0.5 s. No audio, no media, no custom components.
|
|
8
|
+
|
|
9
|
+
If a translation can't pass T1, it's broken on table-stakes basics:
|
|
10
|
+
`AbsoluteFill`, `useCurrentFrame`, `interpolate` with multi-segment input,
|
|
11
|
+
and the timing offset between Remotion's frame-based driver and HF's
|
|
12
|
+
paused-GSAP driver.
|
|
13
|
+
|
|
14
|
+
## Translation walk-through
|
|
15
|
+
|
|
16
|
+
| Remotion | HyperFrames |
|
|
17
|
+
| ------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| `<AbsoluteFill style={{ backgroundColor: "#0a0a0a" }}>` | `<body style="background: #0a0a0a">` + a positioned root div |
|
|
19
|
+
| `useCurrentFrame()` | dropped — HF seeks the timeline |
|
|
20
|
+
| `interpolate(frame, [0, 15, 75, 90], [0, 1, 1, 0])` at fps=30 | `gsap.timeline({ paused: true })` with three `.to()` calls at offsets 0s/0.5s/2.5s, each `ease: "none"` |
|
|
21
|
+
| `<div style={{ opacity }}>HELLO</div>` | static markup; opacity is animated by the timeline |
|
|
22
|
+
|
|
23
|
+
The Remotion→HF time conversion is `time = frame / fps`. So
|
|
24
|
+
`[0, 15, 75, 90]` at 30 fps becomes `[0, 0.5, 2.5, 3.0]` seconds.
|
|
25
|
+
|
|
26
|
+
## How to render and evaluate
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# Render Remotion baseline
|
|
30
|
+
cd remotion-src && npm install && npm run render
|
|
31
|
+
# Renders to remotion-src/out/baseline.mp4
|
|
32
|
+
|
|
33
|
+
# Render HyperFrames translation
|
|
34
|
+
cd ../hf-src && freecodego_design_render
|
|
35
|
+
|
|
36
|
+
# Compare with the eval harness (from skill scripts/)
|
|
37
|
+
../../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`expected.json` documents the SSIM threshold (0.95) for this fixture; the
|
|
41
|
+
calibrated mean against Remotion @ 4.0 with PNG/BT.709 output is 0.974.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tier": 1,
|
|
3
|
+
"name": "title-card-fade",
|
|
4
|
+
"composition_id": "TitleCard",
|
|
5
|
+
"description": "Solid black background, single 'HELLO' element fades in 0-0.5s, holds 0.5-2.5s, fades out 2.5-3.0s. Tests the most basic Remotion → HyperFrames translation: a single AbsoluteFill, a single useCurrentFrame-driven interpolate, no audio, no media, no custom React components.",
|
|
6
|
+
"duration_seconds": 3,
|
|
7
|
+
"fps": 30,
|
|
8
|
+
"width": 1280,
|
|
9
|
+
"height": 720,
|
|
10
|
+
"ssim_threshold": 0.95,
|
|
11
|
+
"validation": {
|
|
12
|
+
"measured_mean_ssim": 0.974,
|
|
13
|
+
"measured_min_ssim": 0.973,
|
|
14
|
+
"measured_p05_ssim": 0.973,
|
|
15
|
+
"measured_p95_ssim": 0.984,
|
|
16
|
+
"measured_at": "2026-09-18",
|
|
17
|
+
"measured_against": "remotion@4.0 (PNG output, BT.709) vs hyperframes@0.7.71 (sub-composition fixtures)"
|
|
18
|
+
},
|
|
19
|
+
"translation_notes": [
|
|
20
|
+
"Remotion: AbsoluteFill → HF: position:absolute;inset:0 div",
|
|
21
|
+
"Remotion: interpolate(frame, [0,15,75,90], [0,1,1,0]) at fps=30 → HF: paused GSAP timeline with three keyframed tweens at 0s, 0.5s, 2.5s with ease:'none' (linear matches Remotion's default linear interpolation)",
|
|
22
|
+
"No fonts loaded; both renderers use system Helvetica/Arial fallback. The Linux fallback diverges between Remotion's bundled Chromium and HyperFrames' chrome-headless-shell — same fontWeight:800 renders perceptibly bolder in HF. This costs ~0.025 mean SSIM and is the dominant non-translation noise floor.",
|
|
23
|
+
"Remotion config must use setVideoImageFormat('png') + setColorSpace('bt709'); the JPEG default writes yuvj420p (full-range) which costs ~0.05 SSIM vs HF's yuv420p (limited-range)."
|
|
24
|
+
],
|
|
25
|
+
"rationale": "Threshold 0.95 sits ~0.02 below measured p05. A real translation regression (wrong easing, wrong durations) drops mean SSIM by 0.05+. Encoder/font drift between CI runs is bounded at ~0.01."
|
|
26
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
<template id="title-scene-template">
|
|
2
|
+
<div data-composition-id="title-scene" data-width="1280" data-height="720" data-duration="3">
|
|
3
|
+
<style>
|
|
4
|
+
.title {
|
|
5
|
+
position: absolute;
|
|
6
|
+
inset: 0;
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
color: #ffffff;
|
|
11
|
+
font-size: 160px;
|
|
12
|
+
font-weight: 800;
|
|
13
|
+
letter-spacing: 0.05em;
|
|
14
|
+
opacity: 0;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
<div class="title">HELLO</div>
|
|
18
|
+
<script>
|
|
19
|
+
// Translation of Remotion's
|
|
20
|
+
// interpolate(frame, [0, 15, 75, 90], [0, 1, 1, 0]) at fps=30
|
|
21
|
+
// into a paused GSAP timeline keyed in seconds.
|
|
22
|
+
const tl = gsap.timeline({ paused: true });
|
|
23
|
+
const target = document.querySelector(".title");
|
|
24
|
+
tl.to(target, { opacity: 1, duration: 0.5, ease: "none" }, 0);
|
|
25
|
+
tl.to(target, { opacity: 1, duration: 2.0, ease: "none" }, 0.5);
|
|
26
|
+
tl.to(target, { opacity: 0, duration: 0.5, ease: "none" }, 2.5);
|
|
27
|
+
window.__timelines = window.__timelines || {};
|
|
28
|
+
window.__timelines["title-scene"] = tl;
|
|
29
|
+
</script>
|
|
30
|
+
</div>
|
|
31
|
+
</template>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<title>tier-1-title-card</title>
|
|
6
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
|
|
7
|
+
<style>
|
|
8
|
+
html,
|
|
9
|
+
body {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
width: 1280px;
|
|
13
|
+
height: 720px;
|
|
14
|
+
overflow: hidden;
|
|
15
|
+
background: #0a0a0a;
|
|
16
|
+
font-family: Helvetica, Arial, sans-serif;
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
19
|
+
</head>
|
|
20
|
+
<body>
|
|
21
|
+
<div
|
|
22
|
+
id="stage"
|
|
23
|
+
data-composition-id="tier-1-title-card"
|
|
24
|
+
data-start="0"
|
|
25
|
+
data-width="1280"
|
|
26
|
+
data-height="720"
|
|
27
|
+
data-duration="3"
|
|
28
|
+
data-fps="30"
|
|
29
|
+
>
|
|
30
|
+
<div
|
|
31
|
+
id="title"
|
|
32
|
+
class="clip"
|
|
33
|
+
data-composition-id="title-scene"
|
|
34
|
+
data-composition-src="compositions/title.html"
|
|
35
|
+
data-start="0"
|
|
36
|
+
data-duration="3"
|
|
37
|
+
data-track-index="0"
|
|
38
|
+
></div>
|
|
39
|
+
|
|
40
|
+
<script>
|
|
41
|
+
window.__timelines = window.__timelines || {};
|
|
42
|
+
window.__timelines["tier-1-title-card"] = gsap.timeline({ paused: true });
|
|
43
|
+
</script>
|
|
44
|
+
</div>
|
|
45
|
+
</body>
|
|
46
|
+
</html>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "tier-1-title-card-remotion",
|
|
3
|
+
"version": "0.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"render": "remotion render TitleCard out/baseline.mp4"
|
|
7
|
+
},
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"@remotion/cli": "^4.0.0",
|
|
10
|
+
"react": "^18.3.1",
|
|
11
|
+
"react-dom": "^18.3.1",
|
|
12
|
+
"remotion": "^4.0.0"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2018",
|
|
4
|
+
"module": "ESNext",
|
|
5
|
+
"jsx": "react-jsx",
|
|
6
|
+
"strict": true,
|
|
7
|
+
"esModuleInterop": true,
|
|
8
|
+
"moduleResolution": "node",
|
|
9
|
+
"skipLibCheck": true,
|
|
10
|
+
"forceConsistentCasingInFileNames": true,
|
|
11
|
+
"resolveJsonModule": true,
|
|
12
|
+
"isolatedModules": true
|
|
13
|
+
},
|
|
14
|
+
"include": ["src"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Tier 2 — title-image-outro
|
|
2
|
+
|
|
3
|
+
## What it tests
|
|
4
|
+
|
|
5
|
+
Three-scene composition. Each scene exercises a different Remotion idiom:
|
|
6
|
+
|
|
7
|
+
1. **Scene 1 (0–2 s)** — TitleScene with `spring({damping:12, stiffness:100, mass:1})`
|
|
8
|
+
driving a `transform: scale()` on text. Tests the lossy `spring → GSAP ease` translation.
|
|
9
|
+
2. **Scene 2 (2–4 s)** — ImageScene that fades in a `staticFile`-loaded image and
|
|
10
|
+
linearly scales it from 0.8 → 1.0. Tests asset paths + linear `interpolate`.
|
|
11
|
+
3. **Scene 3 (4–6 s)** — OutroScene with a 1-s linear fade-in. Sanity check after
|
|
12
|
+
the harder scenes.
|
|
13
|
+
|
|
14
|
+
A silent 6-second WAV plays throughout at `volume={0.5}`. Tests `<Audio>` translation.
|
|
15
|
+
|
|
16
|
+
If a translation passes T2, the skill correctly handles `<Sequence>` boundaries,
|
|
17
|
+
`<Audio>` / `<Img>` / `staticFile`, and the Remotion `spring → GSAP ease` heuristic.
|
|
18
|
+
|
|
19
|
+
## Translation walk-through
|
|
20
|
+
|
|
21
|
+
| Remotion | HyperFrames |
|
|
22
|
+
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
23
|
+
| `<Sequence from={0} durationInFrames={60}>` | host `<div data-composition-src="compositions/scene-1.html" data-start="0" data-duration="2" data-track-index="0">` |
|
|
24
|
+
| `spring({frame, fps, config: {damping:12, stiffness:100, mass:1}})` | `gsap.to(target, { scale: 1, duration: 0.7, ease: "back.out(1.4)" })` |
|
|
25
|
+
| `<Audio src={staticFile("music.wav")} volume={0.5} />` | `<audio src="assets/music.wav" data-start="0" data-duration="6" data-volume="0.5" data-track-index="1">` |
|
|
26
|
+
| `<Img src={staticFile("square.png")} />` | `<img src="../assets/square.png">` inside `compositions/scene-2.html` (with setup.sh copying into both trees) |
|
|
27
|
+
| `interpolate(frame, [0, 15], [0, 1])` at 30 fps | `gsap.to(target, { opacity: 1, duration: 0.5, ease: "none" })` |
|
|
28
|
+
|
|
29
|
+
The scene crossfading is a HyperFrames idiom, not a Remotion one: at scene boundaries
|
|
30
|
+
each scene sub-composition sets its own `gsap.set(scene, { opacity: 0 })` at its local end so the scene disappears at the
|
|
31
|
+
right time. Remotion does this implicitly by virtue of `<Sequence>`'s durationInFrames.
|
|
32
|
+
|
|
33
|
+
## How to render and evaluate
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# 1. Generate the binary assets (PNG + WAV) via ffmpeg
|
|
37
|
+
./setup.sh
|
|
38
|
+
|
|
39
|
+
# 2. Render Remotion baseline
|
|
40
|
+
cd remotion-src && npm install && npm run render
|
|
41
|
+
|
|
42
|
+
# 3. Render HyperFrames translation
|
|
43
|
+
cd ../hf-src && freecodego_design_render
|
|
44
|
+
|
|
45
|
+
# 4. Compare
|
|
46
|
+
../../../scripts/render_diff.sh ./remotion-src/out/baseline.mp4 ./hf.mp4 ./diff
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Why threshold 0.95?
|
|
50
|
+
|
|
51
|
+
Same threshold as T1 (`expected.json` codifies it for the orchestrator). Spring → `back.out(1.4)`
|
|
52
|
+
came in cleaner than predicted during calibration — the validated mean is 0.985 against the
|
|
53
|
+
0.95 gate. If the translation breaks anything else (spring overshoot wrong, stagger off,
|
|
54
|
+
asset path drift), mean SSIM will fall well below 0.95 — that's the failure signal.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"tier": 2,
|
|
3
|
+
"name": "title-image-outro",
|
|
4
|
+
"composition_id": "MultiScene",
|
|
5
|
+
"description": "Three-scene composition exercising Sequence, spring, interpolate, Audio, Img, and staticFile. Title scene uses Remotion's spring (translated to GSAP back.out as an approximation). Image scene scales an Img (from staticFile) with linear interpolate. Outro scene fades text in linearly. A silent WAV plays throughout at volume 0.5.",
|
|
6
|
+
"duration_seconds": 6,
|
|
7
|
+
"fps": 30,
|
|
8
|
+
"width": 1280,
|
|
9
|
+
"height": 720,
|
|
10
|
+
"ssim_threshold": 0.95,
|
|
11
|
+
"validation": {
|
|
12
|
+
"measured_mean_ssim": 0.986,
|
|
13
|
+
"measured_min_ssim": 0.964,
|
|
14
|
+
"measured_p05_ssim": 0.967,
|
|
15
|
+
"measured_p95_ssim": 1,
|
|
16
|
+
"measured_at": "2026-09-18",
|
|
17
|
+
"measured_against": "remotion@4.0 (PNG output, BT.709) vs hyperframes@0.7.71 (sub-composition fixtures)",
|
|
18
|
+
"notes": "Spring → back.out(1.4) translation came out cleaner than expected; mean 0.986 leaves substantial headroom over 0.95."
|
|
19
|
+
},
|
|
20
|
+
"translation_notes": [
|
|
21
|
+
"spring({damping:12, stiffness:100, mass:1}) → back.out(1.4) over 0.7s. Spring overshoot+settle and back.out's overshoot+settle have similar shape; budget ~0.02 SSIM for the late-tail curvature mismatch (validated lower than predicted in spec; original notes overestimated drift).",
|
|
22
|
+
"<Sequence from durationInFrames> → a sub-composition host with data-start/data-duration in seconds; the scene's own file uses local time and explicit gsap.set(opacity, 0/1) at its boundaries to crossfade in/out cleanly",
|
|
23
|
+
"<Audio src volume> → <audio data-start data-duration data-volume>",
|
|
24
|
+
"<Img src={staticFile('x')}> → <img src='assets/x'> (`../assets/x` inside the scene sub-composition file); setup.sh copies the asset into both fixture trees",
|
|
25
|
+
"interpolate with default linear easing → ease:'none' in GSAP",
|
|
26
|
+
"Fonts again rely on system Helvetica/Arial; ~0.015 SSIM cost from AA differences"
|
|
27
|
+
],
|
|
28
|
+
"rationale": "Threshold 0.95 sits ~0.015 below measured p05 (0.966). T2 actually validated cleaner than T1 because the lower title fontWeight (140px vs T1's 160px) shows less of the system-font fallback divergence."
|
|
29
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template id="scene-1-template">
|
|
2
|
+
<div data-composition-id="scene-1" data-width="1280" data-height="720" data-duration="2">
|
|
3
|
+
<style>
|
|
4
|
+
.scene {
|
|
5
|
+
position: absolute;
|
|
6
|
+
inset: 0;
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
opacity: 0;
|
|
11
|
+
}
|
|
12
|
+
.title {
|
|
13
|
+
font-size: 140px;
|
|
14
|
+
font-weight: 800;
|
|
15
|
+
color: #ffffff;
|
|
16
|
+
letter-spacing: 0.05em;
|
|
17
|
+
transform: scale(0);
|
|
18
|
+
}
|
|
19
|
+
</style>
|
|
20
|
+
<div class="scene">
|
|
21
|
+
<div class="title">Welcome</div>
|
|
22
|
+
</div>
|
|
23
|
+
<script>
|
|
24
|
+
// Scene 1 (0-2s): spring scale on "Welcome". Remotion:
|
|
25
|
+
// spring({frame, fps, config: {damping:12, stiffness:100, mass:1}}) -> back.out(1.4) over ~0.7s.
|
|
26
|
+
const tl = gsap.timeline({ paused: true });
|
|
27
|
+
const scene = document.querySelector(".scene");
|
|
28
|
+
tl.set(scene, { opacity: 1 }, 0);
|
|
29
|
+
tl.to(scene.querySelector(".title"), { scale: 1, duration: 0.7, ease: "back.out(1.4)" }, 0);
|
|
30
|
+
tl.set(scene, { opacity: 0 }, 2);
|
|
31
|
+
window.__timelines = window.__timelines || {};
|
|
32
|
+
window.__timelines["scene-1"] = tl;
|
|
33
|
+
</script>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<template id="scene-2-template">
|
|
2
|
+
<div data-composition-id="scene-2" data-width="1280" data-height="720" data-duration="2">
|
|
3
|
+
<style>
|
|
4
|
+
.scene {
|
|
5
|
+
position: absolute;
|
|
6
|
+
inset: 0;
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
opacity: 0;
|
|
11
|
+
}
|
|
12
|
+
.square {
|
|
13
|
+
width: 200px;
|
|
14
|
+
height: 200px;
|
|
15
|
+
opacity: 0;
|
|
16
|
+
transform: scale(0.8);
|
|
17
|
+
}
|
|
18
|
+
</style>
|
|
19
|
+
<div class="scene">
|
|
20
|
+
<img class="square" src="../assets/square.png" alt="" />
|
|
21
|
+
</div>
|
|
22
|
+
<script>
|
|
23
|
+
// Scene 2 (2-4s, local 0-2s): opacity 0->1 over 0.5s, scale 0.8->1.0 over 2s, both linear.
|
|
24
|
+
const tl = gsap.timeline({ paused: true });
|
|
25
|
+
const scene = document.querySelector(".scene");
|
|
26
|
+
const square = scene.querySelector(".square");
|
|
27
|
+
tl.set(scene, { opacity: 1 }, 0);
|
|
28
|
+
tl.to(square, { opacity: 1, duration: 0.5, ease: "none" }, 0);
|
|
29
|
+
tl.to(square, { scale: 1.0, duration: 2.0, ease: "none" }, 0);
|
|
30
|
+
tl.set(scene, { opacity: 0 }, 2);
|
|
31
|
+
window.__timelines = window.__timelines || {};
|
|
32
|
+
window.__timelines["scene-2"] = tl;
|
|
33
|
+
</script>
|
|
34
|
+
</div>
|
|
35
|
+
</template>
|