@openvidstudio/mcp-server 0.1.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +63 -0
- package/dist/api.d.ts +28 -0
- package/dist/api.js +35 -0
- package/dist/audioTick.d.ts +33 -0
- package/dist/audioTick.js +117 -0
- package/dist/beats.d.ts +126 -3
- package/dist/canvasExplainer.d.ts +198 -0
- package/dist/canvasExplainer.js +661 -0
- package/dist/canvasValidate.d.ts +76 -0
- package/dist/canvasValidate.js +263 -0
- package/dist/capture.d.ts +33 -0
- package/dist/capture.js +97 -1
- package/dist/config.d.ts +52 -0
- package/dist/config.js +29 -1
- package/dist/facts.d.ts +45 -0
- package/dist/facts.js +124 -0
- package/dist/frameDiff.d.ts +74 -0
- package/dist/frameDiff.js +120 -0
- package/dist/install.d.ts +63 -0
- package/dist/install.js +225 -0
- package/dist/jobs.d.ts +37 -0
- package/dist/jobs.js +72 -0
- package/dist/lessonArc.d.ts +68 -0
- package/dist/lessonArc.js +188 -0
- package/dist/paths.d.ts +10 -0
- package/dist/paths.js +11 -1
- package/dist/primitives/registry.d.ts +43 -0
- package/dist/primitives/registry.js +729 -0
- package/dist/remotionBridge.d.ts +138 -0
- package/dist/remotionBridge.js +364 -0
- package/dist/renderCache.d.ts +178 -0
- package/dist/renderCache.js +371 -0
- package/dist/scenes/castToSteps.d.ts +49 -0
- package/dist/scenes/castToSteps.js +69 -0
- package/dist/scenes/cursorPoints.d.ts +43 -0
- package/dist/scenes/cursorPoints.js +125 -0
- package/dist/scenes/repoInfo.d.ts +17 -0
- package/dist/scenes/repoInfo.js +122 -0
- package/dist/scenes/templates.d.ts +77 -2
- package/dist/scenes/templates.js +349 -71
- package/dist/scenes/videoDuration.d.ts +15 -0
- package/dist/scenes/videoDuration.js +30 -0
- package/dist/server.d.ts +2 -1
- package/dist/server.js +19 -1
- package/dist/stdio.js +12 -4
- package/dist/tools/captureDesktop.d.ts +30 -0
- package/dist/tools/captureDesktop.js +225 -0
- package/dist/tools/captureMobile.d.ts +18 -0
- package/dist/tools/captureMobile.js +176 -0
- package/dist/tools/captureScreenRecording.d.ts +102 -2
- package/dist/tools/captureScreenRecording.js +310 -12
- package/dist/tools/captureScreenshot.d.ts +126 -2
- package/dist/tools/captureScreenshot.js +308 -24
- package/dist/tools/captureTerminal.d.ts +50 -0
- package/dist/tools/captureTerminal.js +156 -0
- package/dist/tools/checkScript.d.ts +105 -0
- package/dist/tools/checkScript.js +456 -0
- package/dist/tools/collectFacts.d.ts +82 -0
- package/dist/tools/collectFacts.js +210 -0
- package/dist/tools/composeScore.d.ts +156 -0
- package/dist/tools/composeScore.js +330 -0
- package/dist/tools/contactSheet.d.ts +19 -1
- package/dist/tools/contactSheet.js +53 -14
- package/dist/tools/diffBeats.d.ts +48 -0
- package/dist/tools/diffBeats.js +226 -0
- package/dist/tools/docsDrift.d.ts +84 -0
- package/dist/tools/docsDrift.js +275 -0
- package/dist/tools/exportRendition.d.ts +283 -0
- package/dist/tools/exportRendition.js +688 -0
- package/dist/tools/extractBrand.d.ts +32 -0
- package/dist/tools/extractBrand.js +541 -0
- package/dist/tools/finalizeVideo.d.ts +94 -0
- package/dist/tools/finalizeVideo.js +300 -0
- package/dist/tools/fitBeats.d.ts +69 -0
- package/dist/tools/fitBeats.js +229 -0
- package/dist/tools/generateNarration.d.ts +98 -1
- package/dist/tools/generateNarration.js +274 -66
- package/dist/tools/importHiggsfieldClip.js +16 -0
- package/dist/tools/index.js +57 -0
- package/dist/tools/initProject.d.ts +12 -1
- package/dist/tools/initProject.js +80 -2
- package/dist/tools/jobStatus.d.ts +14 -0
- package/dist/tools/jobStatus.js +37 -0
- package/dist/tools/mcp.d.ts +9 -0
- package/dist/tools/mcp.js +66 -4
- package/dist/tools/motionPrimitives.d.ts +46 -0
- package/dist/tools/motionPrimitives.js +128 -0
- package/dist/tools/musicCues.d.ts +43 -0
- package/dist/tools/musicCues.js +252 -0
- package/dist/tools/musicLibrary.d.ts +80 -0
- package/dist/tools/musicLibrary.js +614 -0
- package/dist/tools/planBeats.d.ts +35 -0
- package/dist/tools/planBeats.js +98 -5
- package/dist/tools/planProduction.d.ts +77 -0
- package/dist/tools/planProduction.js +303 -0
- package/dist/tools/planShots.d.ts +79 -0
- package/dist/tools/planShots.js +427 -0
- package/dist/tools/preflight.d.ts +43 -0
- package/dist/tools/preflight.js +203 -16
- package/dist/tools/qcCapture.d.ts +38 -0
- package/dist/tools/qcCapture.js +206 -0
- package/dist/tools/qcExtractFrames.d.ts +36 -6
- package/dist/tools/qcExtractFrames.js +81 -28
- package/dist/tools/reformatVertical.d.ts +112 -0
- package/dist/tools/reformatVertical.js +260 -0
- package/dist/tools/releaseDiff.d.ts +96 -0
- package/dist/tools/releaseDiff.js +319 -0
- package/dist/tools/renderCanvasExplainer.d.ts +2 -0
- package/dist/tools/renderCanvasExplainer.js +56 -0
- package/dist/tools/renderStills.d.ts +138 -0
- package/dist/tools/renderStills.js +399 -0
- package/dist/tools/renderVideo.d.ts +70 -1
- package/dist/tools/renderVideo.js +362 -5
- package/dist/tools/scaffoldScene.d.ts +29 -4
- package/dist/tools/scaffoldScene.js +218 -16
- package/dist/tools/soundEffects.d.ts +49 -0
- package/dist/tools/soundEffects.js +383 -0
- package/dist/tools/stitchComposition.d.ts +105 -6
- package/dist/tools/stitchComposition.js +416 -50
- package/dist/tools/validateBeats.d.ts +28 -0
- package/dist/tools/validateBeats.js +357 -23
- package/dist/tools/validateCanvasExplainer.d.ts +2 -0
- package/dist/tools/validateCanvasExplainer.js +35 -0
- package/dist/tools/validateScenes.d.ts +71 -3
- package/dist/tools/validateScenes.js +348 -34
- package/dist/tools/validateScenesRender.d.ts +186 -0
- package/dist/tools/validateScenesRender.js +772 -0
- package/dist/tools/visualRegression.d.ts +72 -0
- package/dist/tools/visualRegression.js +192 -0
- package/dist/tools/writeBeatsFile.d.ts +1 -0
- package/dist/tools/writeBeatsFile.js +4 -2
- package/dist/tools/writeBrief.d.ts +155 -0
- package/dist/tools/writeBrief.js +344 -0
- package/dist/tools/writeDescription.d.ts +58 -0
- package/dist/tools/writeDescription.js +503 -0
- package/dist/util.d.ts +7 -12
- package/dist/util.js +14 -48
- package/docs/API.md +1351 -344
- package/docs/CAPTURE.md +182 -0
- package/docs/CREATIVE.md +217 -0
- package/docs/NARRATION.md +252 -111
- package/docs/OVERVIEW.md +30 -3
- package/docs/PIPELINE.md +433 -7
- package/docs/PLANNING.md +309 -19
- package/docs/PRESETS.md +153 -0
- package/docs/SCRIPT.md +194 -0
- package/docs/STYLE.md +74 -9
- package/docs/SUPERNOVA.md +191 -0
- package/docs/TOOLS.md +55 -0
- package/package.json +60 -54
- package/py/compose-score.py +1032 -0
- package/py/edge-words.py +57 -0
- package/templates/default/.agents/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.agents/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.agents/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.agents/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.agents/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.agents/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.agents/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.agents/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.agents/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.agents/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.agents/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.agents/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.agents/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.agents/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.agents/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.agents/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.agents/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.agents/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.agents/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.agents/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.agents/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.agents/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.agents/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.agents/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.agents/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.agents/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.agents/skills/remotion-markup/images.md +73 -0
- package/templates/default/.agents/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.agents/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.agents/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.agents/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.agents/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.agents/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.agents/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.agents/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.agents/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.agents/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.agents/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.agents/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.agents/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.agents/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.agents/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.agents/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.agents/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.agents/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.agents/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.agents/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.agents/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.agents/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.agents/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.agents/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.agents/skills/remotion-saas/player.md +33 -0
- package/templates/default/.agents/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.agents/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.agents/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.agents/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.agents/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.agents/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.claude/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.claude/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.claude/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.claude/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.claude/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.claude/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.claude/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.claude/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.claude/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.claude/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.claude/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.claude/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.claude/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.claude/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.claude/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.claude/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.claude/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.claude/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.claude/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.claude/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.claude/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.claude/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.claude/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.claude/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.claude/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.claude/skills/remotion-markup/images.md +73 -0
- package/templates/default/.claude/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.claude/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.claude/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.claude/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.claude/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.claude/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.claude/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.claude/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.claude/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.claude/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.claude/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.claude/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.claude/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.claude/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.claude/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.claude/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.claude/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.claude/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.claude/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.claude/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.claude/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.claude/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.claude/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.claude/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.claude/skills/remotion-saas/player.md +33 -0
- package/templates/default/.claude/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.claude/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.claude/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.claude/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.claude/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.claude/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.cursor/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.cursor/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.cursor/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.cursor/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.cursor/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.cursor/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.cursor/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.cursor/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.cursor/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.cursor/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.cursor/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.cursor/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.cursor/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.cursor/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.cursor/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.cursor/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.cursor/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.cursor/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.cursor/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.cursor/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.cursor/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.cursor/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.cursor/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.cursor/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.cursor/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.cursor/skills/remotion-markup/images.md +73 -0
- package/templates/default/.cursor/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.cursor/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.cursor/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.cursor/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.cursor/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.cursor/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.cursor/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.cursor/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.cursor/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.cursor/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.cursor/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.cursor/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.cursor/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.cursor/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.cursor/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.cursor/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.cursor/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.cursor/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.cursor/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.cursor/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.cursor/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.cursor/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.cursor/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.cursor/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.cursor/skills/remotion-saas/player.md +33 -0
- package/templates/default/.cursor/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.cursor/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.cursor/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.cursor/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.cursor/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.cursor/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.github/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.github/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.github/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.github/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.github/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.github/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.github/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.github/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.github/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.github/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.github/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.github/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.github/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.github/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.github/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.github/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.github/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.github/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.github/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.github/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.github/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.github/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.github/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.github/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.github/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.github/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.github/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.github/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.github/skills/remotion-markup/images.md +73 -0
- package/templates/default/.github/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.github/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.github/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.github/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.github/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.github/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.github/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.github/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.github/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.github/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.github/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.github/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.github/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.github/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.github/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.github/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.github/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.github/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.github/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.github/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.github/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.github/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.github/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.github/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.github/skills/remotion-saas/player.md +33 -0
- package/templates/default/.github/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.github/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.github/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.github/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.github/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.github/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.github/workflows/visual-regression.yml +69 -0
- package/templates/default/.opencode/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.opencode/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.opencode/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.opencode/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.opencode/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.opencode/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.opencode/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.opencode/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.opencode/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.opencode/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.opencode/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.opencode/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.opencode/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.opencode/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.opencode/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.opencode/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.opencode/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.opencode/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.opencode/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.opencode/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.opencode/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.opencode/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.opencode/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.opencode/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.opencode/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.opencode/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.opencode/skills/remotion-markup/images.md +73 -0
- package/templates/default/.opencode/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.opencode/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.opencode/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.opencode/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.opencode/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.opencode/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.opencode/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.opencode/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.opencode/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.opencode/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.opencode/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.opencode/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.opencode/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.opencode/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.opencode/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.opencode/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.opencode/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.opencode/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.opencode/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.opencode/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.opencode/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.opencode/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.opencode/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.opencode/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.opencode/skills/remotion-saas/player.md +33 -0
- package/templates/default/.opencode/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.opencode/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.opencode/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.opencode/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.opencode/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.opencode/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/SKILL.md +59 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/REFERENCE.md +36 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/display-captions.md +190 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-create/REFERENCE.md +68 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-create/tailwind.md +11 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-create/video-layout.md +9 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-docs/REFERENCE.md +46 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-interactivity/REFERENCE.md +247 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/3d.md +86 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/REFERENCE.md +365 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/audio.md +171 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/compositions.md +117 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/cropping.md +34 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/effects.md +251 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/gifs.md +187 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/images.md +73 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/lottie.md +73 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/parameters.md +111 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/sequencing.md +169 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/sfx.md +51 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/timing.md +111 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/transitions.md +239 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/video-editing.md +90 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-markup/voiceover.md +99 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/REFERENCE.md +20 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-render/REFERENCE.md +27 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/REFERENCE.md +33 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/framework.md +21 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/player.md +33 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-saas/rendering.md +69 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-studio/REFERENCE.md +24 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-upgrade/REFERENCE.md +31 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-best-practices/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-captions/SKILL.md +36 -0
- package/templates/default/.windsurf/skills/remotion-captions/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-captions/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-captions/display-captions.md +190 -0
- package/templates/default/.windsurf/skills/remotion-captions/import-srt-captions.md +73 -0
- package/templates/default/.windsurf/skills/remotion-captions/transcribe-captions.md +70 -0
- package/templates/default/.windsurf/skills/remotion-create/SKILL.md +68 -0
- package/templates/default/.windsurf/skills/remotion-create/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-create/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-create/tailwind.md +11 -0
- package/templates/default/.windsurf/skills/remotion-create/video-layout.md +9 -0
- package/templates/default/.windsurf/skills/remotion-docs/SKILL.md +46 -0
- package/templates/default/.windsurf/skills/remotion-docs/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-docs/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-interactivity/SKILL.md +247 -0
- package/templates/default/.windsurf/skills/remotion-interactivity/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-interactivity/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-maps/SKILL.md +36 -0
- package/templates/default/.windsurf/skills/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.windsurf/skills/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.windsurf/skills/remotion-markup/3d.md +86 -0
- package/templates/default/.windsurf/skills/remotion-markup/SKILL.md +365 -0
- package/templates/default/.windsurf/skills/remotion-markup/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-markup/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-markup/audio-visualization.md +198 -0
- package/templates/default/.windsurf/skills/remotion-markup/audio.md +171 -0
- package/templates/default/.windsurf/skills/remotion-markup/calculate-metadata.md +136 -0
- package/templates/default/.windsurf/skills/remotion-markup/compositions.md +117 -0
- package/templates/default/.windsurf/skills/remotion-markup/cropping.md +34 -0
- package/templates/default/.windsurf/skills/remotion-markup/effects.md +251 -0
- package/templates/default/.windsurf/skills/remotion-markup/embedding-videos.md +173 -0
- package/templates/default/.windsurf/skills/remotion-markup/ffmpeg.md +38 -0
- package/templates/default/.windsurf/skills/remotion-markup/gifs.md +187 -0
- package/templates/default/.windsurf/skills/remotion-markup/google-fonts.md +76 -0
- package/templates/default/.windsurf/skills/remotion-markup/html-in-canvas.md +128 -0
- package/templates/default/.windsurf/skills/remotion-markup/images.md +73 -0
- package/templates/default/.windsurf/skills/remotion-markup/light-leaks.md +106 -0
- package/templates/default/.windsurf/skills/remotion-markup/local-fonts.md +69 -0
- package/templates/default/.windsurf/skills/remotion-markup/lottie.md +73 -0
- package/templates/default/.windsurf/skills/remotion-markup/measuring-dom-nodes.md +38 -0
- package/templates/default/.windsurf/skills/remotion-markup/measuring-text.md +146 -0
- package/templates/default/.windsurf/skills/remotion-markup/multi-scene-video.md +81 -0
- package/templates/default/.windsurf/skills/remotion-markup/parameters.md +111 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/REFERENCE.md +36 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/TECHNIQUE.md +89 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/CesiumFlythrough.tsx +284 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/cesium-path.json +299 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/city-path.json +12 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/example-Root.tsx +39 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/flight-path.ts +35 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/assets/sample-river.geojson +215 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-data-sources.md +43 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-flyover-architecture.md +128 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/references/3d-troubleshooting.md +57 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/cesium/scripts/prep-cesium-path.mjs +161 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/mapbox/TECHNIQUE.md +449 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/mapbox/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maplibre/TECHNIQUE.md +465 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maplibre/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/TECHNIQUE.md +80 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/CountryLabel.tsx +70 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/MapTilerVectorElement.ts +80 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/RiverReveal.tsx +363 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/example-Root.tsx +22 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/country-meta.json +7535 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/sample-data/yarlung-flow.json +605 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/assets/tokens.ts +34 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-data-sources.md +91 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-explainer-architecture.md +129 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/references/map-geo-prep.md +85 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/references/render-stability.md +64 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/maptiler/scripts/prep-geo.mjs +202 -0
- package/templates/default/.windsurf/skills/remotion-markup/remotion-maps/techniques/static-map/TECHNIQUE.md +37 -0
- package/templates/default/.windsurf/skills/remotion-markup/sequencing.md +169 -0
- package/templates/default/.windsurf/skills/remotion-markup/sfx.md +51 -0
- package/templates/default/.windsurf/skills/remotion-markup/silence-detection.md +71 -0
- package/templates/default/.windsurf/skills/remotion-markup/text-highlights.md +56 -0
- package/templates/default/.windsurf/skills/remotion-markup/timing.md +111 -0
- package/templates/default/.windsurf/skills/remotion-markup/transitions.md +239 -0
- package/templates/default/.windsurf/skills/remotion-markup/video-editing.md +90 -0
- package/templates/default/.windsurf/skills/remotion-markup/voiceover.md +99 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/SKILL.md +20 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/get-audio-duration.md +56 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/get-video-dimensions.md +66 -0
- package/templates/default/.windsurf/skills/remotion-multimedia/get-video-duration.md +58 -0
- package/templates/default/.windsurf/skills/remotion-render/SKILL.md +27 -0
- package/templates/default/.windsurf/skills/remotion-render/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-render/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-render/transparent-videos.md +106 -0
- package/templates/default/.windsurf/skills/remotion-saas/SKILL.md +33 -0
- package/templates/default/.windsurf/skills/remotion-saas/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-saas/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-saas/framework.md +21 -0
- package/templates/default/.windsurf/skills/remotion-saas/player.md +33 -0
- package/templates/default/.windsurf/skills/remotion-saas/rendering.md +69 -0
- package/templates/default/.windsurf/skills/remotion-studio/SKILL.md +24 -0
- package/templates/default/.windsurf/skills/remotion-studio/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-studio/assets/remotion-icon.png +0 -0
- package/templates/default/.windsurf/skills/remotion-upgrade/SKILL.md +31 -0
- package/templates/default/.windsurf/skills/remotion-upgrade/agents/openai.yaml +7 -0
- package/templates/default/.windsurf/skills/remotion-upgrade/assets/remotion-icon.png +0 -0
- package/templates/default/AGENTS.md +61 -0
- package/templates/default/CLAUDE.md +49 -8
- package/templates/default/openvidstudio-core/package.json +16 -12
- package/templates/default/openvidstudio-core/scripts/gen-fonts.sh +31 -0
- package/templates/default/openvidstudio-core/scripts/gen-sfx.sh +2 -20
- package/templates/default/openvidstudio-core/src/ChecklistPanel.tsx +2 -5
- package/templates/default/openvidstudio-core/src/CinematicScene.tsx +14 -6
- package/templates/default/openvidstudio-core/src/CursorActor.tsx +59 -15
- package/templates/default/openvidstudio-core/src/DirectedShot.tsx +294 -0
- package/templates/default/openvidstudio-core/src/KineticText.tsx +84 -17
- package/templates/default/openvidstudio-core/src/LayeredShot.tsx +80 -0
- package/templates/default/openvidstudio-core/src/RepoCta.tsx +21 -15
- package/templates/default/openvidstudio-core/src/TerminalReplay.tsx +2 -5
- package/templates/default/openvidstudio-core/src/TransitionOverlay.tsx +194 -0
- package/templates/default/openvidstudio-core/src/atmosphere.tsx +109 -0
- package/templates/default/openvidstudio-core/src/camera.tsx +72 -12
- package/templates/default/openvidstudio-core/src/designSystem.ts +179 -0
- package/templates/default/openvidstudio-core/src/handheld.tsx +116 -0
- package/templates/default/openvidstudio-core/src/index.ts +69 -7
- package/templates/default/openvidstudio-core/src/kinetic.tsx +152 -0
- package/templates/default/openvidstudio-core/src/localFonts.ts +67 -0
- package/templates/default/openvidstudio-core/src/motion.ts +6 -0
- package/templates/default/openvidstudio-core/src/motionBlur.tsx +35 -0
- package/templates/default/openvidstudio-core/src/musicClock.tsx +171 -0
- package/templates/default/openvidstudio-core/src/narrationWords.tsx +85 -0
- package/templates/default/openvidstudio-core/src/panels.tsx +367 -0
- package/templates/default/openvidstudio-core/src/pixel.tsx +285 -0
- package/templates/default/openvidstudio-core/src/sfx.tsx +77 -30
- package/templates/default/openvidstudio-core/src/shots.ts +114 -0
- package/templates/default/openvidstudio-core/src/tokens.ts +51 -2
- package/templates/default/openvidstudio-stem/package.json +41 -0
- package/templates/default/openvidstudio-stem/public/fonts/SPACE-GROTESK-LICENSE.txt +93 -0
- package/templates/default/openvidstudio-stem/public/fonts/space-grotesk-latin-500-normal.woff2 +0 -0
- package/templates/default/openvidstudio-stem/public/fonts/space-grotesk-latin-700-normal.woff2 +0 -0
- package/templates/default/openvidstudio-stem/public/mathjax/MATHJAX-LICENSE.txt +202 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/accents-other.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/accents.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/arrows.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/calligraphic.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/cyrillic.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/double-struck.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/fraktur.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/greek.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/latin-b.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/latin-bi.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/latin-i.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/latin-m.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/latin.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/math-other.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/monospace.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/phonetics.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/sans-serif.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/script.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/shapes.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/stretchy.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/symbols-other.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/symbols.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/up-int.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg/dynamic/variants.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/fira/svg.js +1 -0
- package/templates/default/openvidstudio-stem/public/mathjax/tex-svg-nofont.js +1 -0
- package/templates/default/openvidstudio-stem/src/ArrayViz.tsx +118 -0
- package/templates/default/openvidstudio-stem/src/ComplexityCurve.tsx +108 -0
- package/templates/default/openvidstudio-stem/src/Derivation.tsx +334 -0
- package/templates/default/openvidstudio-stem/src/Equation.tsx +132 -0
- package/templates/default/openvidstudio-stem/src/FreeBody.tsx +152 -0
- package/templates/default/openvidstudio-stem/src/GraphViz.tsx +249 -0
- package/templates/default/openvidstudio-stem/src/LessonCaptions.tsx +135 -0
- package/templates/default/openvidstudio-stem/src/MatrixGrid.tsx +187 -0
- package/templates/default/openvidstudio-stem/src/Nova.tsx +104 -0
- package/templates/default/openvidstudio-stem/src/Orbit.tsx +241 -0
- package/templates/default/openvidstudio-stem/src/Spark.tsx +69 -0
- package/templates/default/openvidstudio-stem/src/TreeViz.tsx +241 -0
- package/templates/default/openvidstudio-stem/src/VectorField.tsx +231 -0
- package/templates/default/openvidstudio-stem/src/Wave.tsx +234 -0
- package/templates/default/openvidstudio-stem/src/designSystem.ts +76 -0
- package/templates/default/openvidstudio-stem/src/glow.tsx +52 -0
- package/templates/default/openvidstudio-stem/src/graph.tsx +331 -0
- package/templates/default/openvidstudio-stem/src/index.ts +61 -0
- package/templates/default/openvidstudio-stem/src/localFonts.ts +40 -0
- package/templates/default/openvidstudio-stem/src/mathjax.ts +79 -0
- package/templates/default/openvidstudio-stem/src/paths.ts +148 -0
- package/templates/default/output/.gitignore +3 -0
- package/templates/default/output/README.md +9 -0
- package/templates/default/package.json +19 -13
- package/templates/default/public/fonts/inter-latin-400-normal.woff2 +0 -0
- package/templates/default/public/fonts/inter-latin-500-normal.woff2 +0 -0
- package/templates/default/public/fonts/inter-latin-700-normal.woff2 +0 -0
- package/templates/default/public/fonts/inter-latin-800-normal.woff2 +0 -0
- package/templates/default/public/fonts/inter-latin-900-normal.woff2 +0 -0
- package/templates/default/public/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/templates/default/public/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/templates/default/public/imported_audios/README.md +14 -0
- package/templates/default/public/sfx/CREDITS.md +49 -0
- package/templates/default/public/sfx/bong.wav +0 -0
- package/templates/default/public/sfx/click.wav +0 -0
- package/templates/default/public/sfx/click_soft.wav +0 -0
- package/templates/default/public/sfx/drop.wav +0 -0
- package/templates/default/public/sfx/typing-effect.mp3 +0 -0
- package/templates/default/scripts/visual-regression.mjs +69 -0
- package/templates/default/src/PreflightBenchmark.tsx +49 -0
- package/templates/default/public/sfx/key_a.wav +0 -0
- package/templates/default/public/sfx/key_b.wav +0 -0
- package/templates/default/public/sfx/key_c.wav +0 -0
- package/templates/default/public/sfx/key_enter.wav +0 -0
package/docs/API.md
CHANGED
|
@@ -1,344 +1,1351 @@
|
|
|
1
|
-
# API.md: everything `@openvidstudio/core` exports
|
|
2
|
-
|
|
3
|
-
Written because the alternative is reading the library source. If you are an agent
|
|
4
|
-
about to write a scene, this file has every prop you need and you should not have to
|
|
5
|
-
open `packages/core/src`.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
|
29
|
-
|
|
30
|
-
| `
|
|
31
|
-
| `
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
### `
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
`
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
|
134
|
-
|
|
135
|
-
| `
|
|
136
|
-
| `
|
|
137
|
-
| `
|
|
138
|
-
| `
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
|
171
|
-
|
|
172
|
-
| `
|
|
173
|
-
| `
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
`
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
1
|
+
# API.md: everything `@openvidstudio/core` exports
|
|
2
|
+
|
|
3
|
+
Written because the alternative is reading the library source. If you are an agent
|
|
4
|
+
about to write a scene, this file has every prop you need and you should not have to
|
|
5
|
+
open `packages/core/src`.
|
|
6
|
+
|
|
7
|
+
These are **building blocks**, not a template. At peak and mid creative level the agent is
|
|
8
|
+
expected to compose scenes from them against the video's own `design.ts`, and to write its
|
|
9
|
+
own component when the brief's motif needs something the library does not have. Every
|
|
10
|
+
primitive below has a still, rendered for real by `scripts/build-api-gallery.mjs`. The MCP
|
|
11
|
+
tools are listed in [TOOLS.md](TOOLS.md).
|
|
12
|
+
|
|
13
|
+
Import everything from the package root:
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { CinematicScene, Layer, TerminalReplay, E, color } from "@openvidstudio/core";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Scene wrapper
|
|
22
|
+
|
|
23
|
+
### `CinematicScene`
|
|
24
|
+
|
|
25
|
+
Wraps every scene. Grain, vignette and colour grade are always on, and the camera rig
|
|
26
|
+
lives inside it. Nothing renders outside one.
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Default | Notes |
|
|
29
|
+
|---|---|---|---|
|
|
30
|
+
| `camera` | `CamKeyframe[]` | required | At least two, or nothing moves |
|
|
31
|
+
| `stageWidth` | `number` | composition width | 1920 in 16:9, 1080 in a 9:16 reel. Camera x/y are in stage px, so the centre is 960,540 or 540,960 |
|
|
32
|
+
| `stageHeight` | `number` | composition height | |
|
|
33
|
+
| `variant` | `"dark" \| "light"` | `"dark"` | |
|
|
34
|
+
| `grain` | `number` | `0.05` | |
|
|
35
|
+
| `vignette` | `number` | `0.32` | |
|
|
36
|
+
| `overlay` | `ReactNode` | | Screen space, not camera transformed. Captions and title cards go here |
|
|
37
|
+
| `children` | `ReactNode` | required | |
|
|
38
|
+
|
|
39
|
+
**The overlay is not optional knowledge.** Anything inside `children` moves with the
|
|
40
|
+
camera, so a caption placed there drifts off screen as the shot pushes in. Captions,
|
|
41
|
+
title cards and dips belong in `overlay`.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Camera
|
|
46
|
+
|
|
47
|
+
### `CamKeyframe`
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
type CamKeyframe = {
|
|
51
|
+
frame: number;
|
|
52
|
+
x: number; // focal point on the stage, lands at frame centre
|
|
53
|
+
y: number;
|
|
54
|
+
scale: number; // 1 = stage px equals output px, 1.6 = 160% close up
|
|
55
|
+
rotX?: number;
|
|
56
|
+
rotY?: number;
|
|
57
|
+
rotZ?: number;
|
|
58
|
+
easing?: (t: number) => number; // easing INTO this keyframe
|
|
59
|
+
};
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**The one thing that catches everyone.** The visible area is the stage divided by
|
|
63
|
+
`scale`. At `scale: 1.4` only 1371x771 of a 1920x1080 stage is on screen, so content
|
|
64
|
+
laid out at full stage width is cropped at the frame edge, and the render does not
|
|
65
|
+
warn. The binding number is the scene's **highest** scale, not its first.
|
|
66
|
+
|
|
67
|
+
Rules of thumb:
|
|
68
|
+
|
|
69
|
+
- Real captures with text: 1.05 to 1.6. STYLE.md requires the camera to sit inside the UI
|
|
70
|
+
rather than showing a flat full-screen grab, but past 1.6 the product text goes soft.
|
|
71
|
+
Captures without text to read can push further.
|
|
72
|
+
- Constructed panels: 1.04 to 1.15. They are already built at stage size, so they
|
|
73
|
+
need a gentle push, not a zoom.
|
|
74
|
+
- Run `validate_scenes` and it will tell you which scenes are cropping. That is a read of
|
|
75
|
+
the source. Pass `render: true` (after `stitch_composition`) to measure the real rendered
|
|
76
|
+
frames instead: cropped text, text below the design system's minimum size, on-screen text
|
|
77
|
+
that takes longer to read than the beat lasts (3 words/sec), and beats that never change.
|
|
78
|
+
|
|
79
|
+
### `Layer`
|
|
80
|
+
|
|
81
|
+
| Prop | Type | Default | Notes |
|
|
82
|
+
|---|---|---|---|
|
|
83
|
+
| `depth` | `number` | `0` | Distance from the focal plane. `0` is the focal plane, positive is behind it, negative is in front |
|
|
84
|
+
| `maxBlur` | `number` | `10` | Blur in px at `|depth|` 1, scaled by `|depth|`. `0` turns the depth blur off |
|
|
85
|
+
| `style` | `CSSProperties` | | |
|
|
86
|
+
|
|
87
|
+
Depth is a place in space. A layer is moved back (or forward) by `depth * 170` px and scaled
|
|
88
|
+
about the stage centre so it looks the same size, so with the camera still on the stage centre
|
|
89
|
+
every depth shows the same picture. When the camera pans, the rig's perspective does the rest:
|
|
90
|
+
a layer at depth 1 moves 0.89 as far as the focal plane, depth 2 about 0.80, and a layer at
|
|
91
|
+
depth -1 moves 1.14 times as far. Depth also orders layers: one behind stays behind however the
|
|
92
|
+
JSX is ordered. A Layer has to be a direct child of the rig's stage (a plain wrapper `div`
|
|
93
|
+
in between flattens the depth).
|
|
94
|
+
|
|
95
|
+
One focal plane per shot. Blur on a layer softens any text in it, so pass `maxBlur={0}` to a
|
|
96
|
+
layer that carries text.
|
|
97
|
+
|
|
98
|
+
### `CameraRig`, `useCamera`
|
|
99
|
+
|
|
100
|
+
`CinematicScene` sets these up for you. Reach for them only when building a scene
|
|
101
|
+
that needs the camera state directly.
|
|
102
|
+
|
|
103
|
+
`CameraRig` also takes `viewportWidth` and `viewportHeight`, the size of the window the camera
|
|
104
|
+
looks through (default: the composition's size). A rig nested in a smaller box, such as
|
|
105
|
+
`DirectedShot`, passes that box's size. `resolveCamera(keyframes, frame)` returns the camera
|
|
106
|
+
state the rig renders at a frame, for code that needs to know where the camera is without
|
|
107
|
+
rendering.
|
|
108
|
+
|
|
109
|
+
`useCamera()` returns the camera state plus `stageWidth` and `stageHeight` (type `CameraInfo`), or
|
|
110
|
+
`null` outside a rig. `projectToScreen(camera, viewportWidth, viewportHeight, x, y)` returns where
|
|
111
|
+
a stage point lands on screen, through the same rotation, scale and perspective the rig applies.
|
|
112
|
+
|
|
113
|
+
### `DirectedShot`
|
|
114
|
+
|
|
115
|
+
A nested camera rig that turns a flat capture into a directed move: a push-in on one point,
|
|
116
|
+
an optional tilt, optional depth of field and motion blur, handheld sway, and a cursor, all in
|
|
117
|
+
the capture's own pixel space. It owns its own `CameraRig`, so it sits inside a `CinematicScene`
|
|
118
|
+
(or anywhere) without touching that scene's camera.
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
<DirectedShot
|
|
122
|
+
src={staticFile("images/dashboard.png")}
|
|
123
|
+
focus={{ x: 1560, y: 280 }}
|
|
124
|
+
push={1.9}
|
|
125
|
+
tilt={{ y: -4, x: 2 }}
|
|
126
|
+
move={{ from: 0, to: 70 }}
|
|
127
|
+
cursor={{ path: [{ frame: 0, x: 900, y: 600 }, { frame: 55, x: 1500, y: 300 }], clicks: [60] }}
|
|
128
|
+
/>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
| Prop | Type | Default | Notes |
|
|
132
|
+
|---|---|---|---|
|
|
133
|
+
| `src` | `string` | | Image URL, usually `staticFile("images/<beat>.png")`. Use `children` for anything else |
|
|
134
|
+
| `focus` | `{ x, y }` | the middle | The point in the capture, in capture pixels, the move pushes into |
|
|
135
|
+
| `push` | `number` | `1.4` | End zoom relative to fitting the whole capture in the box. `1` holds the full frame. Keep it at or under `1.6` when the capture has text |
|
|
136
|
+
| `shot` | `ShotName` | | A named move (see Shots below). It supplies zoom, start and end position, tilt, easing and length; `push`, `tilt` and `move` given explicitly win |
|
|
137
|
+
| `tilt` | `{ x?, y?, z? }` | | Rotation in degrees at the end of the move. 2 to 6 reads as depth |
|
|
138
|
+
| `move` | `{ from?, to?, easing? }` | `0` to `90` | Frames, local to the scene. Defaults to `E.cinematic`; a `shot` sets its own length |
|
|
139
|
+
| `depthOfField` | `number` | `0` | Blur in px away from the focal point. Off by default: blur smears product text. Never use it on a shot whose text has to be read |
|
|
140
|
+
| `protect` | `{ x, y, width, height }[]` | | Regions of the capture, in capture pixels, that stay sharp under `depthOfField`. Hard edged, and they follow the camera through a push and a tilt |
|
|
141
|
+
| `rackTo` | `{ x, y }` | | Rack focus: the sharp region slides from `focus` to this point, in capture pixels, across the move |
|
|
142
|
+
| `blur` | `boolean \| { shutterAngle?, samples? }` | on for `whip`, else off | Motion blur while the camera moves, and only then. `true` is a 180 degree shutter with 8 samples. Costs `samples` times the render work for those frames |
|
|
143
|
+
| `handheld` | `number` | `0` | Handheld sway, the largest drift in px at 1080p. 3 to 8 reads as a person holding the camera |
|
|
144
|
+
| `shake` | `number[]` | | Local frames of impacts. The shot jolts 12px (at 1080p) on each and settles within about 24 frames |
|
|
145
|
+
| `cursor` | `{ path, clicks? }` | | A `CursorActor` path and click frames, in capture pixels. The cursor sits above the blur layers and is never blurred |
|
|
146
|
+
| `captureWidth`, `captureHeight` | `number` | `1920`, `1080` | The capture's natural size |
|
|
147
|
+
| `width`, `height` | `number` | the composition | The box the shot fills |
|
|
148
|
+
|
|
149
|
+
The move starts on the whole capture and ends pushed in on `focus`. The end centre is clamped
|
|
150
|
+
so the camera never leaves the capture (empty stage reads as a mistake). Sway and shake move the
|
|
151
|
+
whole shot, cursor included, and the shot is scaled up slightly so the shift never shows an edge;
|
|
152
|
+
with neither set, nothing extra is rendered.
|
|
153
|
+
|
|
154
|
+
`directedKeyframes({ W, H, captureWidth, captureHeight, focus?, push?, tilt?, move?, shot? })`
|
|
155
|
+
returns the two camera keyframes a `DirectedShot` renders with, so `resolveCamera` can read the
|
|
156
|
+
camera at any frame without mounting the component.
|
|
157
|
+
|
|
158
|
+
| Start of the move | End of the move |
|
|
159
|
+
|---|---|
|
|
160
|
+
|  |  |
|
|
161
|
+
|
|
162
|
+
### Shots: `resolveShot`, `SHOT_NAMES`
|
|
163
|
+
|
|
164
|
+
`<DirectedShot shot="whip" />` applies a named move. Each is plain data from a pure function, so a
|
|
165
|
+
scene can read it too: `resolveShot(name, { focus?, push?, captureWidth?, captureHeight? })` returns
|
|
166
|
+
`{ startScale, endScale, startFocus, endFocus, startTilt, tilt, easing, moveFrames, blur }`
|
|
167
|
+
(zoom relative to fitting the whole capture, camera positions in capture pixels, tilt in degrees).
|
|
168
|
+
`push` overrides the preset's zoom.
|
|
169
|
+
|
|
170
|
+
| Shot | The move | Zoom | Frames |
|
|
171
|
+
|---|---|---|---|
|
|
172
|
+
| `pushIn` | From the whole capture in to the focus. The default workhorse | 1 to 1.4 | 90 |
|
|
173
|
+
| `pullOut` | Starts close on the focus and backs out to the whole capture, to reveal context | 1.5 to 1 | 90 |
|
|
174
|
+
| `pan` | Same zoom throughout; the camera slides sideways onto the focus with a slight yaw | 1.35 | 75 |
|
|
175
|
+
| `whip` | A fast slide in from the side, `E.whip` easing, motion blur on | 1.5 | 18 |
|
|
176
|
+
| `orbit` | The camera swings around the focus: `rotY` goes from -5 to +5 degrees | 1.15 to 1.35 | 120 |
|
|
177
|
+
| `dutch` | A push that rolls the horizon off level, 3.5 degrees | 1 to 1.35 | 90 |
|
|
178
|
+
| `hold` | The whole capture with a 2% creep so it is never dead. For action inside the frame: a cursor, typing | 1 to 1.02 | 60 |
|
|
179
|
+
| `drift` | Ambient: a long, small move toward the focus with a sub-degree wander in the tilt | 1 to 1.06 | 150 |
|
|
180
|
+
|
|
181
|
+
Each move, caught half way through (the dashboard capture, focus on the Done column):
|
|
182
|
+
|
|
183
|
+
| | | |
|
|
184
|
+
|---|---|---|
|
|
185
|
+
|  `pushIn` |  `pullOut` |  `pan` |
|
|
186
|
+
|  `whip` |  `orbit` |  `dutch` |
|
|
187
|
+
|
|
188
|
+
### `LayeredShot`
|
|
189
|
+
|
|
190
|
+

|
|
191
|
+
|
|
192
|
+
A `DirectedShot` whose picture is a stack of layers instead of one flat image: a background plus
|
|
193
|
+
the elements that float above it, each at its own depth, so a push and a tilt make them slide
|
|
194
|
+
against each other. At rest the stack composites to the same picture as the flat capture. Takes
|
|
195
|
+
every `DirectedShot` prop except `src` and `children`, plus:
|
|
196
|
+
|
|
197
|
+
| Prop | Type | Default | Notes |
|
|
198
|
+
|---|---|---|---|
|
|
199
|
+
| `manifest` | `{ width, height, background, layers }` | | The capture's size, the flat background URL and the layers |
|
|
200
|
+
| `background`, `layers` | `string`, `ShotLayer[]` | | Instead of `manifest`; give `captureWidth` and `captureHeight` too |
|
|
201
|
+
| `backgroundDepth` | `number` | `1` | Depth of the background plane, a notch behind the focal plane |
|
|
202
|
+
| `maxBlur` | `number` | `0` | Blur per unit of depth, in px. Off, because the layers are real UI |
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
type ShotLayer = { src: string; x: number; y: number; width: number; height: number; depth: number };
|
|
206
|
+
// x, y, width, height in capture pixels; depth > 0 is behind the focal plane, < 0 in front
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### `MotionBlur`
|
|
210
|
+
|
|
211
|
+

|
|
212
|
+
|
|
213
|
+
Wraps children in Remotion's `CameraMotionBlur`, but only for the frames of a window. Outside it the
|
|
214
|
+
children render directly, as if the wrapper were not there.
|
|
215
|
+
|
|
216
|
+
| Prop | Type | Default | Notes |
|
|
217
|
+
|---|---|---|---|
|
|
218
|
+
| `from` | `number` | `0` | First frame of the window, local to the scene |
|
|
219
|
+
| `to` | `number` | never | Last frame of the window, inclusive |
|
|
220
|
+
| `shutterAngle` | `number` | `180` | Degrees, 0 to 360. Larger smears more |
|
|
221
|
+
| `samples` | `number` | `8` | Sub-frame renders blended. More is smoother and slower |
|
|
222
|
+
|
|
223
|
+
### Handheld and impact shake
|
|
224
|
+
|
|
225
|
+
Small deterministic camera motion, as pure functions and hooks. `DirectedShot` uses them for its
|
|
226
|
+
`handheld` and `shake` props; use them directly to move anything else.
|
|
227
|
+
|
|
228
|
+
```ts
|
|
229
|
+
handheldOffset(frame, amount, seed = 1): { x, y, rot } // px and degrees; |x|, |y| <= amount
|
|
230
|
+
useHandheld(amount, { holds?, seed?, ramp? }): { x, y, rot } // scaled to the composition height
|
|
231
|
+
impactShake(frame, impactFrames, { amplitude = 12, decay = 8 }): { x, y, rot }
|
|
232
|
+
useImpactShake(impactFrames, { amplitude?, decay? }): { x, y, rot }
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Sway is two unrelated sines per axis, so the path does not repeat. `holds` is a list of
|
|
236
|
+
`[from, to]` frame windows where `useHandheld` is exactly zero (the camera is set down while a
|
|
237
|
+
cursor clicks or a block of text is read), easing in and out over `ramp` frames (default 6).
|
|
238
|
+
Shake is exactly zero before an impact frame, at full `amplitude` on it, and below 5% of it
|
|
239
|
+
after `3 * decay` frames. All of it is a function of the frame, never `Math.random()`.
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Motion
|
|
244
|
+
|
|
245
|
+
### `E` and `SPRING`
|
|
246
|
+
|
|
247
|
+
```ts
|
|
248
|
+
E.cinematic // default move: slow out, soft landing
|
|
249
|
+
E.whip // aggressive, for cuts and fast pans
|
|
250
|
+
E.drift // gentle ambient motion inside a shot
|
|
251
|
+
E.snap // snappy UI reaction, button press, blip reveal
|
|
252
|
+
E.sine // symmetric ease in and out along a sine: calm, even, no hard push
|
|
253
|
+
E.expo // symmetric ease in and out along an exponential: still at the ends, fast through the middle
|
|
254
|
+
|
|
255
|
+
SPRING.soft SPRING.pop SPRING.heavy
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Linear easing fails QC.** There is no linear preset on purpose.
|
|
259
|
+
|
|
260
|
+
### `tween`, `pop`, `jitter`, `staggerDelay`
|
|
261
|
+
|
|
262
|
+
```ts
|
|
263
|
+
tween(frame, [fromFrame, toFrame], [fromValue, toValue], E.cinematic): number
|
|
264
|
+
pop(frame, fps, atFrame): number // spring entrance scalar
|
|
265
|
+
jitter(seed, n): number // deterministic 0..1, same every render
|
|
266
|
+
staggerDelay(index, step = 3): number // 3 frames at 30fps is 100ms
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
`jitter` is deterministic. Never use `Math.random()` in a scene: every frame renders
|
|
270
|
+
in a separate process and random values differ per frame, which shows up as flicker.
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Text
|
|
275
|
+
|
|
276
|
+
### `TitleSlam`
|
|
277
|
+
|
|
278
|
+
| Prop | Type | Default |
|
|
279
|
+
|---|---|---|
|
|
280
|
+
| `text` | `string` | required |
|
|
281
|
+
| `at` | `number` | required |
|
|
282
|
+
| `fontSize` | `number` | `120` |
|
|
283
|
+
| `color` | `string` | `color.textPrimary` |
|
|
284
|
+
| `glowColor` | `string` | |
|
|
285
|
+
| `align` | `"center" \| "left"` | `"center"` |
|
|
286
|
+
| `sfx` | `boolean` | `false` |
|
|
287
|
+
|
|
288
|
+
Per word entrance. Renders nothing before `at`. `sfx` adds a blip per word; it is off by
|
|
289
|
+
default because a blip every few frames sounds like a ticking clock under a title.
|
|
290
|
+
|
|
291
|
+
### `Caption`
|
|
292
|
+
|
|
293
|
+
| Prop | Type | Default |
|
|
294
|
+
|---|---|---|
|
|
295
|
+
| `text` | `string` | required |
|
|
296
|
+
| `at` | `number` | required |
|
|
297
|
+
| `out` | `number` | |
|
|
298
|
+
| `fontSize` | `number` | `34` |
|
|
299
|
+
| `position` | `"bottom" \| "top" \| "left" \| "right" \| "auto"` | `"bottom"` |
|
|
300
|
+
| `avoid` | `{ x, y, width, height }` | |
|
|
301
|
+
|
|
302
|
+
Sits 84px from the chosen edge. Put it in `overlay`, not `children`. Vary `position` from scene to
|
|
303
|
+
scene; the same spot in every scene covers the same part of the product every time.
|
|
304
|
+
|
|
305
|
+
- `"auto"` with `avoid` (the part of the frame that carries the product, in composition pixels)
|
|
306
|
+
takes the edge with the most free room beside that rect, counting only edges where the card fits.
|
|
307
|
+
Ties go bottom, top, right, left. With no `avoid` it stays at the bottom.
|
|
308
|
+
- The reveal is always finished within 8 frames of `at`, however many words there are: the
|
|
309
|
+
per-word stagger shrinks as the caption grows (2 frames for short ones), so no frame a reviewer
|
|
310
|
+
lands on shows a half-typed line.
|
|
311
|
+
- The card is at most `min(1400, 0.9 * composition width)` wide, so it fits a 1080 wide
|
|
312
|
+
vertical frame. `"left"` and `"right"` use a column of `min(640, 0.34 * width)`.
|
|
313
|
+
- `captionLayout(position, avoid, width, height, fontSize)` returns `{ side, maxWidth }`, the
|
|
314
|
+
rule above as a function.
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
## Panels
|
|
319
|
+
|
|
320
|
+
### `BrowserFrame`
|
|
321
|
+
|
|
322
|
+
| Prop | Type | Default |
|
|
323
|
+
|---|---|---|
|
|
324
|
+
| `url` | `string` | required |
|
|
325
|
+
| `width` | `number` | `1360` |
|
|
326
|
+
| `height` | `number` | `850` |
|
|
327
|
+
| `dark` | `boolean` | `true` |
|
|
328
|
+
| `children` | `ReactNode` | required |
|
|
329
|
+
|
|
330
|
+
Chrome bar is 56px, so `height` must be the capture height plus 56 or the page is
|
|
331
|
+
letterboxed. `scaffold_scene` computes this from the real PNG for you.
|
|
332
|
+
|
|
333
|
+
Screenshots may only appear inside a `BrowserFrame`. Recordings and AI clips must
|
|
334
|
+
not: wrapping generated footage in browser chrome makes it look like a captured
|
|
335
|
+
page, which STYLE.md's provenance rule forbids.
|
|
336
|
+
|
|
337
|
+
### `CodePanel`
|
|
338
|
+
|
|
339
|
+
| Prop | Type | Default |
|
|
340
|
+
|---|---|---|
|
|
341
|
+
| `title` | `string` | required |
|
|
342
|
+
| `lines` | `CodeLine[]` | required |
|
|
343
|
+
| `width` | `number` | `860` |
|
|
344
|
+
| `height` | `number` | `640` |
|
|
345
|
+
| `fontSize` | `number` | `22` |
|
|
346
|
+
| `scroll` | `number` | `0` | px translateY, drive with a tween |
|
|
347
|
+
| `highlight` | `number[]` | `[]` | 0-based line indexes |
|
|
348
|
+
|
|
349
|
+
```ts
|
|
350
|
+
type Token = { t: string; c?: "kw" | "str" | "fn" | "cm" | "num" | "plain" };
|
|
351
|
+
type CodeLine = Token[];
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
```tsx
|
|
355
|
+
lines={[
|
|
356
|
+
[{ t: "{", c: "plain" }],
|
|
357
|
+
[{ t: ' "name"', c: "str" }, { t: ": ", c: "plain" }, { t: '"value"', c: "str" }],
|
|
358
|
+
]}
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### `ChecklistPanel`
|
|
362
|
+
|
|
363
|
+
| Prop | Type | Default |
|
|
364
|
+
|---|---|---|
|
|
365
|
+
| `title` | `string` | `"Community Standards"` |
|
|
366
|
+
| `items` | `ChecklistItem[]` | required |
|
|
367
|
+
| `width` | `number` | `760` |
|
|
368
|
+
| `fontSize` | `number` | `27` |
|
|
369
|
+
| `sfx` | `boolean` | `true` |
|
|
370
|
+
|
|
371
|
+
```ts
|
|
372
|
+
type ChecklistItem = { label: string; flipAt?: number }; // omit flipAt to stay unchecked
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
`flipAt` is an absolute scene frame.
|
|
376
|
+
|
|
377
|
+
### `TerminalReplay`
|
|
378
|
+
|
|
379
|
+
| Prop | Type | Default |
|
|
380
|
+
|---|---|---|
|
|
381
|
+
| `steps` | `TermStep[]` | required |
|
|
382
|
+
| `title` | `string` | `"Project"` |
|
|
383
|
+
| `width` | `number` | `1280` |
|
|
384
|
+
| `fontSize` | `number` | `26` |
|
|
385
|
+
| `cps` | `number` | `16` | characters per second |
|
|
386
|
+
| `sfx` | `boolean` | `true` |
|
|
387
|
+
| `trailingPrompt` | `boolean` | `true` |
|
|
388
|
+
|
|
389
|
+
```ts
|
|
390
|
+
type TermLine = { text: string; color?: string; glow?: boolean; bold?: boolean };
|
|
391
|
+
type TermStep =
|
|
392
|
+
| { type: "cmd"; text: string }
|
|
393
|
+
| { type: "out"; lines: TermLine[]; stagger?: number; preDelay?: number }
|
|
394
|
+
| { type: "pause"; frames: number };
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Terminals are always this component, never a screen recording of a terminal.
|
|
398
|
+
|
|
399
|
+
`computeTerminalTimeline(steps, fps, cps)` returns `{ items, totalFrames }`, so camera
|
|
400
|
+
keyframes can land frame-exact on content events rather than being guessed.
|
|
401
|
+
|
|
402
|
+
### `CursorActor`
|
|
403
|
+
|
|
404
|
+
| Prop | Type | Default |
|
|
405
|
+
|---|---|---|
|
|
406
|
+
| `path` | `CursorKeyframe[]` | required |
|
|
407
|
+
| `clicks` | `number[]` | `[]` | frames where a click ring fires |
|
|
408
|
+
| `scale` | `number` | `1.6` |
|
|
409
|
+
| `sfx` | `boolean` | `true` |
|
|
410
|
+
|
|
411
|
+
```ts
|
|
412
|
+
type CursorKeyframe = { frame: number; x: number; y: number };
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Coordinates are stage space. Movement is eased automatically; never linear. Each segment bows
|
|
416
|
+
sideways by up to 6% of its length (the side alternates from one segment to the next) and swings
|
|
417
|
+
2.5% of its length past the target before settling, so the cursor moves like a hand. Progress
|
|
418
|
+
along the segment still follows `E.cinematic`, and on a keyframe's own frame the cursor is exactly
|
|
419
|
+
on the keyframe, so a click ring lands on its target. `cursorPositionAt(path, frame)` returns the
|
|
420
|
+
position `CursorActor` draws at a frame.
|
|
421
|
+
|
|
422
|
+
### `RepoCta`
|
|
423
|
+
|
|
424
|
+
| Prop | Type | Default |
|
|
425
|
+
|---|---|---|
|
|
426
|
+
| `owner` | `string` | required |
|
|
427
|
+
| `name` | `string` | required |
|
|
428
|
+
| `description` | `string` | required |
|
|
429
|
+
| `chips` | `string[]` | required |
|
|
430
|
+
| `titleText` | `string` | required |
|
|
431
|
+
| `durationInFrames` | `number` | `270` |
|
|
432
|
+
|
|
433
|
+
A whole scene, not a panel. Do not wrap it in a `CinematicScene`; it brings its own.
|
|
434
|
+
No star action by default. Laid out from the composition size, so the card is centred in
|
|
435
|
+
1920x1080 and in a 1080x1920 reel.
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Sound
|
|
440
|
+
|
|
441
|
+
Synthesized by `scripts/gen-sfx.sh` with ffmpeg, except `typing-effect.mp3`, a
|
|
442
|
+
copyright-free recording, so a rendered video carries no third-party audio rights.
|
|
443
|
+
Regenerate the synthesized files with `bash scripts/gen-sfx.sh`.
|
|
444
|
+
|
|
445
|
+
| Component | Props | Use |
|
|
446
|
+
|---|---|---|
|
|
447
|
+
| `TypingSfx` | `charFrames`, `volume?` (1) | The typing recording, played across each typed run |
|
|
448
|
+
| `Click` | `at`, `volume?` | Cursor click |
|
|
449
|
+
| `Whoosh` | `at`, `volume?` | Camera move or cut |
|
|
450
|
+
| `Blip` | `at`, `volume?` (0.3) | UI reveal |
|
|
451
|
+
| `SuccessChime` | `at`, `volume?` (0.35) | Completion |
|
|
452
|
+
| `Bell` | `at`, `volume?` (0.3) | Heavier completion |
|
|
453
|
+
| `MusicBed` | `durationInFrames`, `volume?` (0.16) | Ambient bed, loops |
|
|
454
|
+
|
|
455
|
+
`TerminalReplay` emits its own typing sounds. Pass `sfx={false}` to silence it.
|
|
456
|
+
|
|
457
|
+
Narration is separate: `generate_narration` writes
|
|
458
|
+
`public/audio/vo/<beatId>.mp3` and `stitch_composition` picks it up.
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## Music clock
|
|
463
|
+
|
|
464
|
+
The score's grid as scene-local frames, so a cut, a reveal or a glow can land on the music.
|
|
465
|
+
`stitch_composition` copies the bed's `<stem>.cues.json` next to the composition and mounts
|
|
466
|
+
`MusicClockProvider` with each beat's start frame; a scene just asks for its own beat.
|
|
467
|
+
|
|
468
|
+
```tsx
|
|
469
|
+
const clock = useMusicClock("reveal"); // the beat id, exactly as in beats.json
|
|
470
|
+
const hit = clock.at(8); // first downbeat of bar 8, as a frame local to this scene
|
|
471
|
+
const glow = clock.beatPulse(); // 1 on each beat, decaying to 0 before the next
|
|
472
|
+
if (clock.onDownbeat()) { /* a bar starts on this frame */ }
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+

|
|
476
|
+

|
|
477
|
+
|
|
478
|
+
Bars count from 0 at the start of the track, in 4/4 (what `compose_score` writes), and the bed
|
|
479
|
+
is mounted at composition frame 0. `useMusicClock(beatId)` must be called inside that beat's
|
|
480
|
+
scene, because the pulse helpers read the scene's current frame.
|
|
481
|
+
|
|
482
|
+
| Member | Notes |
|
|
483
|
+
|---|---|
|
|
484
|
+
| `at(bar, beat?)` | Scene-local frame of that bar and beat (`beat` may be fractional: `at(8, 2.5)`). Rounded to the nearest frame; negative when it is before the scene starts |
|
|
485
|
+
| `position(frame)` | `{ bar, beat }` a scene-local frame falls in |
|
|
486
|
+
| `impact(label)` | Scene-local frame of the score's impact point with that label, or `null` |
|
|
487
|
+
| `sectionAt(frame)` | The section label a frame falls in, or `null` without sections |
|
|
488
|
+
| `beatPulse({ decay?, strongOnly? })` | 1 on a beat, decaying to 0 over `decay` (0.6) of a beat; `strongOnly` pulses on downbeats only |
|
|
489
|
+
| `onBeat()`, `onDownbeat()` | True on the frame a beat or a bar starts, using the same rounding as `at` |
|
|
490
|
+
| `available`, `bpm`, `framesPerBeat`, `framesPerBar` | `available` is false when the bed has no cues file; the clock then runs a 120 bpm grid so a scene still renders |
|
|
491
|
+
|
|
492
|
+
`createMusicClock({ cues, fps, sceneStartFrame, frame })` is the pure core, for tests.
|
|
493
|
+
`plan_beats` with `snapToBars` plans beat boundaries onto the same downbeats.
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Narration words
|
|
498
|
+
|
|
499
|
+
When each word of a beat's narration is said, for a scene that points at the word being spoken.
|
|
500
|
+
`generate_narration` (edge-tts engine) writes `public/audio/vo/<beatId>.words.json`, `stitch_composition`
|
|
501
|
+
copies it next to the composition and mounts it with `NarrationWordsProvider`. See NARRATION.md.
|
|
502
|
+
|
|
503
|
+
### `useNarrationWords(beatId)`
|
|
504
|
+
|
|
505
|
+
Call it inside the scene of beat `beatId`.
|
|
506
|
+
|
|
507
|
+
| Member | Type | Notes |
|
|
508
|
+
|---|---|---|
|
|
509
|
+
| `available` | `boolean` | False when the beat has no timings (another engine, or none generated) |
|
|
510
|
+
| `words` | `{ word, startMs, endMs }[]` | In the clip as written |
|
|
511
|
+
| `wordAt(frame?)` | `{ index, word, speaking } \| null` | The word being said at a scene-local frame (default: the current one), or in a pause the last one said (`speaking: false`). `null` before the first word |
|
|
512
|
+
| `frameOfWord(index)` | `number \| null` | The scene-local frame word `index` starts on, rounded to the nearest frame |
|
|
513
|
+
|
|
514
|
+
`createNarrationWords(words, fps, frame?)` is the same thing without Remotion, for tests.
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## Look pass
|
|
519
|
+
|
|
520
|
+
`FilmGrain`, `Vignette`, `ColorGrade`, `LookPass`. `CinematicScene` applies these, so
|
|
521
|
+
reach for them only when compositing outside a scene.
|
|
522
|
+
|
|
523
|
+
---
|
|
524
|
+
|
|
525
|
+
## Tokens
|
|
526
|
+
|
|
527
|
+
```ts
|
|
528
|
+
color.bg0 color.bg1 color.panel color.panelBorder
|
|
529
|
+
color.textPrimary color.textSecondary
|
|
530
|
+
color.accent color.accentAlt color.success color.warn color.danger
|
|
531
|
+
color.lightBg color.lightCard color.lightShadow
|
|
532
|
+
|
|
533
|
+
font.ui // "Inter"
|
|
534
|
+
font.mono // "JetBrains Mono"
|
|
535
|
+
|
|
536
|
+
radius.window // 12
|
|
537
|
+
radius.card // 10
|
|
538
|
+
radius.pill // 999
|
|
539
|
+
|
|
540
|
+
glow(color, strength = 1) // returns { textShadow }
|
|
541
|
+
panelShadow(dark = true) // returns a box-shadow string
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
Use tokens rather than literal hex, so a per-video theme can override them.
|
|
545
|
+
|
|
546
|
+
---
|
|
547
|
+
|
|
548
|
+
## Design system
|
|
549
|
+
|
|
550
|
+
### `defineDesignSystem(overrides?)`
|
|
551
|
+
|
|
552
|
+
Builds one video's `DesignSystem`: palette, type scale, layout grid, a signature
|
|
553
|
+
motif, a motion personality, a transition vocabulary and a texture pass. Call it
|
|
554
|
+
once in that video's own `src/videos/<name>/design.ts`:
|
|
555
|
+
|
|
556
|
+
```ts
|
|
557
|
+
export const design = defineDesignSystem({
|
|
558
|
+
motif: "pixel-grid",
|
|
559
|
+
motion: { cameraEnergy: "energetic" },
|
|
560
|
+
});
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Anything omitted falls back to the current brand tokens (`color`/`font`, already
|
|
564
|
+
brand-applied if `extract_brand` ran) and STYLE.md's own defaults. The result is a
|
|
565
|
+
plain object, frozen at the point `design.ts` is imported, not a live binding: a
|
|
566
|
+
later `applyBrand` call never reaches into an already-built `DesignSystem`.
|
|
567
|
+
|
|
568
|
+
| Field | Type | Notes |
|
|
569
|
+
|---|---|---|
|
|
570
|
+
| `color`, `font` | tokens | Seeded from the current brand tokens |
|
|
571
|
+
| `typeScale` | `{ display, headline, body, mono: [min, max] }` | px |
|
|
572
|
+
| `grid` | `{ marginX, marginTop, marginBottom }` | px. Default 150 / 130 / 110 at 1920x1080; scaled to `stage` when one is passed (84 / 231 / 196 at 1080x1920). An explicit `grid` wins |
|
|
573
|
+
| `stage` (input only) | `{ width, height }` | The frame the video renders at, default 1920x1080. Pass `{ width: 1080, height: 1920 }` in a native vertical project. Not stored on the result |
|
|
574
|
+
| `motif` | `"pixel-grid" \| "rounded-soft" \| "geometric" \| "editorial" \| "void-spark"` | Default `"rounded-soft"`. `"void-spark"` is Supernova mode's |
|
|
575
|
+
| `motion` | `{ easing, staggerMs, cameraEnergy, cutRhythmSeconds }` | `easing` names an `E.*` preset by string, not a function reference, so the system stays JSON-serializable |
|
|
576
|
+
| `transitions` | `string[]` | Preference order, default `["cut", "whip", "fade", "push", "wipe", "light-leak"]` |
|
|
577
|
+
| `texture` | `{ grainOpacity, vignetteStrength }` | STYLE.md's default ranges |
|
|
578
|
+
|
|
579
|
+
### `contrastRatio(hexA, hexB)`
|
|
580
|
+
|
|
581
|
+
WCAG relative-luminance contrast ratio, 1 (no contrast) to 21 (black on white).
|
|
582
|
+
Reach for it directly when a bespoke scene picks a text colour against a
|
|
583
|
+
background the design system doesn't already pair.
|
|
584
|
+
|
|
585
|
+
Several primitives below take an optional `design?: DesignSystem` prop: pass
|
|
586
|
+
that video's own `design` export and they read palette, motif and motion from
|
|
587
|
+
it instead of the package's global tokens.
|
|
588
|
+
|
|
589
|
+
---
|
|
590
|
+
|
|
591
|
+
## Kinetic text
|
|
592
|
+
|
|
593
|
+
### `Words`
|
|
594
|
+
|
|
595
|
+

|
|
596
|
+
|
|
597
|
+
Per-word masked reveal. Never a plain opacity fade (STYLE.md): each word clips
|
|
598
|
+
in from below on its own stagger, and clips back out the same way if `out` is
|
|
599
|
+
set.
|
|
600
|
+
|
|
601
|
+
| Prop | Type | Default | Notes |
|
|
602
|
+
|---|---|---|---|
|
|
603
|
+
| `text` | `string` | required | Split on spaces, one reveal per word |
|
|
604
|
+
| `at` | `number` | required | Frame the first word starts |
|
|
605
|
+
| `out` | `number` | | Frame the exit starts. Omit to leave the line on screen |
|
|
606
|
+
| `size` | `number` | `72` | |
|
|
607
|
+
| `weight` | `number` | `800` | |
|
|
608
|
+
| `color` | `string` | `color.textPrimary` | |
|
|
609
|
+
| `accent` | `Record<number, string>` | `{}` | Word index to accent colour, for one word landing harder than the rest |
|
|
610
|
+
| `stagger` | `number` | | Frames between word starts. Explicit value always wins |
|
|
611
|
+
| `design` | `DesignSystem` | | Without `stagger`, reads `design.motion.staggerMs` at the composition's fps; with neither, falls back to 3 frames |
|
|
612
|
+
| `align` | `"left" \| "center" \| "right"` | `"left"` | |
|
|
613
|
+
| `font`, `tracking`, `lineHeight`, `maxWidth`, `glow`, `italic`, `style` | | | |
|
|
614
|
+
|
|
615
|
+
### `useTyped(text, at, cps?)`
|
|
616
|
+
|
|
617
|
+
Typewriter hook. Returns `{ visible, done, charFrames, end }`: the visible slice
|
|
618
|
+
of `text` at the current frame, plus the per-character reveal frames, so a
|
|
619
|
+
caller can drive `TypingSfx` off the exact same numbers the visible text uses.
|
|
620
|
+
`cps` defaults to 22 characters per second.
|
|
621
|
+
|
|
622
|
+
### `Caret`
|
|
623
|
+
|
|
624
|
+

|
|
625
|
+
|
|
626
|
+
| Prop | Type | Default |
|
|
627
|
+
|---|---|---|
|
|
628
|
+
| `h` | `number` | `40` |
|
|
629
|
+
| `color` | `string` | `color.textPrimary` |
|
|
630
|
+
| `blink` | `boolean` | `true` |
|
|
631
|
+
|
|
632
|
+
Blinking text caret, sized to a line height. Pair with `useTyped` for a typed line.
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## Pixel-grid family
|
|
637
|
+
|
|
638
|
+
### `DotText`
|
|
639
|
+
|
|
640
|
+

|
|
641
|
+
|
|
642
|
+
5x7 dot-matrix text, built pixel by pixel rather than drawn with a font file.
|
|
643
|
+
|
|
644
|
+
| Prop | Type | Default | Notes |
|
|
645
|
+
|---|---|---|---|
|
|
646
|
+
| `text` | `string` | required | Uppercased; unsupported characters render as a blank cell |
|
|
647
|
+
| `at` | `number` | required | |
|
|
648
|
+
| `px` | `number` | `14` | px per cell |
|
|
649
|
+
| `colors` | `string[] \| "cycle"` | `"cycle"` | `"cycle"` uses the token/design accent, accentAlt, success, warn four |
|
|
650
|
+
| `solid` | `string` | | Overrides `colors` with one flat colour for every pixel |
|
|
651
|
+
| `build` | `"scatter" \| "wipe" \| "none"` | `"wipe"` | |
|
|
652
|
+
| `out` | `number` | | Frame the exit starts |
|
|
653
|
+
| `glow` | `number` | `0.6` | |
|
|
654
|
+
| `seed` | `number` | `3` | |
|
|
655
|
+
|
|
656
|
+
### `PixelLogo`
|
|
657
|
+
|
|
658
|
+

|
|
659
|
+
|
|
660
|
+
Assembles a pixel-grid logo from its own rect shapes, each flying in from a ring
|
|
661
|
+
around the mark (`build="scatter"`) or rendered flat (`build="none"`). The ring's
|
|
662
|
+
centre and spread come from the shapes' own bounding box, so this works for any
|
|
663
|
+
pixel-grid logo.
|
|
664
|
+
|
|
665
|
+
| Prop | Type | Default | Notes |
|
|
666
|
+
|---|---|---|---|
|
|
667
|
+
| `shapes` | `PixelShape[]` | required | `{ x, y, width, height, color }`, the same shape `extract_brand` already produces for an SVG rect |
|
|
668
|
+
| `at` | `number` | required | |
|
|
669
|
+
| `scale` | `number` | `1` | Output px per source (viewBox) unit |
|
|
670
|
+
| `build` | `"scatter" \| "none"` | `"scatter"` | |
|
|
671
|
+
| `glow` | `number` | `0.9` | |
|
|
672
|
+
| `out` | `number` | | Frame the exit starts |
|
|
673
|
+
| `seed` | `number` | `5` | |
|
|
674
|
+
| `style` | `CSSProperties` | | |
|
|
675
|
+
|
|
676
|
+
### `PixelWipe`
|
|
677
|
+
|
|
678
|
+

|
|
679
|
+
|
|
680
|
+
Transition pair, pixel-grid's natural home but usable standalone. Call both
|
|
681
|
+
ends of a cut with the same `cell`/`seed` so the out and the following in read
|
|
682
|
+
as one continuous move across the cut.
|
|
683
|
+
|
|
684
|
+
| Prop | Type | Default | Notes |
|
|
685
|
+
|---|---|---|---|
|
|
686
|
+
| `mode` | `"in" \| "out"` | required | `"in"`: starts fully covered, clears. `"out"`: finishes covered at the scene's last frame |
|
|
687
|
+
| `at` | `number` | | Defaults to frame 0 (`in`) or `durationInFrames - dur - 1` (`out`) |
|
|
688
|
+
| `dur` | `number` | `12` | |
|
|
689
|
+
| `cell` | `number` | `60` | |
|
|
690
|
+
| `seed` | `number` | `1` | |
|
|
691
|
+
| `bg`, `tint` | | | Default to `design`'s colours if `design` is passed, else the package tokens |
|
|
692
|
+
| `design` | `DesignSystem` | | Optional; only informs the default tint and background |
|
|
693
|
+
|
|
694
|
+
---
|
|
695
|
+
|
|
696
|
+
## Backgrounds and transitions
|
|
697
|
+
|
|
698
|
+
| Component | Props | Notes |
|
|
699
|
+
|---|---|---|
|
|
700
|
+
| `Atmosphere` | `intensity?` (1), `colors?`, `seed?` (2) | Soft drifting radial colour fields behind everything, one blob per colour |
|
|
701
|
+
| `DotGrid` | `gap?` (36), `color?` (`#ffffff`), `opacity?` (0.05), `w?`, `h?` (composition size) | Faint texture pass behind a constructed (non-capture) panel. Covers the whole frame by default, 1080x1920 included |
|
|
702
|
+
| `Flash` | `at`, `color?` (`#ffffff`), `strength?` (0.55), `dur?` (10) | Brief exposure flash on a hard hit |
|
|
703
|
+
| `Black` | `from`, `to?` | Holds solid black. Omit `to` to hold forever |
|
|
704
|
+
| `Letterbox` | `amount?` (1) | Bars for a cinematic moment. `amount` scales the bar height, 1 = 64/1080 of the frame height (64px at 1080, about 114px at 1920 tall) |
|
|
705
|
+
| `TransitionOverlay` | `type` (`"fade"`, `"whip"`, `"push"`, `"wipe"`, `"light-leak"`), `length?` | A transition drawn over a hard cut, in the colour tokens. Mount it in a `Sequence` that starts `length / 2` frames before the cut (`layout="none"`): it peaks on the cut frame and is clear on its first and last frames. `length` is its total frames and defaults to the Sequence's. `stitch_composition` does this for every beat whose `transition` is not `"cut"`, so a scene rarely mounts one by hand |
|
|
706
|
+
|
|
707
|
+
| | |
|
|
708
|
+
|---|---|
|
|
709
|
+
|  `Atmosphere` |  `DotGrid` |
|
|
710
|
+
|  `Flash` |  `Letterbox` |
|
|
711
|
+
|  `Black` | |
|
|
712
|
+
|
|
713
|
+
`TransitionOverlay`, one still per type, a few frames into the cut (a blue "before" scene turning into a dark "after" one;
|
|
714
|
+
the light leak is at its peak on the cut itself):
|
|
715
|
+
|
|
716
|
+
| | | |
|
|
717
|
+
|---|---|---|
|
|
718
|
+
|  `fade` |  `whip` |  `push` |
|
|
719
|
+
|  `wipe` |  `light-leak` | |
|
|
720
|
+
|
|
721
|
+
---
|
|
722
|
+
|
|
723
|
+
## UI chrome
|
|
724
|
+
|
|
725
|
+
### `Window`
|
|
726
|
+
|
|
727
|
+

|
|
728
|
+
|
|
729
|
+
| Prop | Type | Default | Notes |
|
|
730
|
+
|---|---|---|---|
|
|
731
|
+
| `title` | `string` | | Omit for no title bar |
|
|
732
|
+
| `width` | `number` | required | |
|
|
733
|
+
| `height` | `number` | | |
|
|
734
|
+
| `light` | `boolean` | | Light chrome instead of the dark default, matches `BrowserFrame`'s light mode |
|
|
735
|
+
| `glow` | `string` | | Hex colour for an outer glow, when this window is the shot's focal point |
|
|
736
|
+
| `titleRight` | `ReactNode` | | |
|
|
737
|
+
| `children` | `ReactNode` | required | |
|
|
738
|
+
|
|
739
|
+
### `JsonView`
|
|
740
|
+
|
|
741
|
+
Syntax-coloured JSON of a real object, revealed line by line. An actually-rendered
|
|
742
|
+
view, not a screenshot of a JSON blob (the same ground-truth bias as `TerminalReplay`
|
|
743
|
+
being DOM text instead of a recorded terminal).
|
|
744
|
+
|
|
745
|
+
| Prop | Type | Default | Notes |
|
|
746
|
+
|---|---|---|---|
|
|
747
|
+
| `value` | `unknown` | required | `JSON.stringify(value, null, 2)`, line by line |
|
|
748
|
+
| `at` | `number` | `0` | |
|
|
749
|
+
| `perLine` | `number` | `1.2` | Frames between each line's reveal |
|
|
750
|
+
| `fontSize` | `number` | `20` | |
|
|
751
|
+
| `highlight` | `(line, i) => string \| undefined` | | Returns a hex accent to highlight a line with |
|
|
752
|
+
| `maxLines` | `number` | `400` | |
|
|
753
|
+
| `scroll` | `number` | `0` | |
|
|
754
|
+
|
|
755
|
+
### `Check`, `Cross`
|
|
756
|
+
|
|
757
|
+

|
|
758
|
+
|
|
759
|
+
| Prop | Type | Default |
|
|
760
|
+
|---|---|---|
|
|
761
|
+
| `size` | `number` | required |
|
|
762
|
+
| `color` | `string` | `color.success` (`Check`) / `color.danger` (`Cross`) |
|
|
763
|
+
| `at` | `number` | `0`, `Check` only (draws its tick stroke in) |
|
|
764
|
+
|
|
765
|
+
### `ToolChip`
|
|
766
|
+
|
|
767
|
+

|
|
768
|
+
|
|
769
|
+
| Prop | Type | Default | Notes |
|
|
770
|
+
|---|---|---|---|
|
|
771
|
+
| `name` | `string` | required | |
|
|
772
|
+
| `at` | `number` | required | |
|
|
773
|
+
| `doneAt` | `number` | | Swaps the spinner for a `Check` once passed |
|
|
774
|
+
| `color` | `string` | `color.accent` | |
|
|
775
|
+
| `size` | `number` | `20` | |
|
|
776
|
+
|
|
777
|
+
"▸ tool_name" chip: spinner while running, a check once done.
|
|
778
|
+
|
|
779
|
+
### `Pill`
|
|
780
|
+
|
|
781
|
+
| Prop | Type | Default |
|
|
782
|
+
|---|---|---|
|
|
783
|
+
| `children` | `ReactNode` | required |
|
|
784
|
+
| `color` | `string` | `color.textSecondary` |
|
|
785
|
+
| `size` | `number` | `18` |
|
|
786
|
+
| `style` | `CSSProperties` | |
|
|
787
|
+
|
|
788
|
+
### `Glass`
|
|
789
|
+
|
|
790
|
+
| Prop | Type | Default |
|
|
791
|
+
|---|---|---|
|
|
792
|
+
| `children` | `ReactNode` | required |
|
|
793
|
+
| `style` | `CSSProperties` | |
|
|
794
|
+
| `pad` | `number` | `28` |
|
|
795
|
+
|
|
796
|
+
Frosted glass panel: `backdrop-filter: blur`, for a floating card over motion.
|
|
797
|
+
|
|
798
|
+
### `ChapterHud`
|
|
799
|
+
|
|
800
|
+

|
|
801
|
+
|
|
802
|
+
Screen space, meant for a scene's `overlay` (like `Caption`), not camera-transformed.
|
|
803
|
+
A dot-matrix chapter number and label top-left, a progress rail bottom.
|
|
804
|
+
|
|
805
|
+
| Prop | Type | Default | Notes |
|
|
806
|
+
|---|---|---|---|
|
|
807
|
+
| `chapters` | `Chapter[]` | required | `{ label: string }` |
|
|
808
|
+
| `activeIndex` | `number` | required | |
|
|
809
|
+
| `firstFrame` | `boolean` | `true` | True during this chapter's own opening stretch (plays the label-in and rail fill-in); false just holds the rail filled |
|
|
810
|
+
| `at` | `number` | `4` | |
|
|
811
|
+
| `fillDurationInFrames` | `number` | `90` | Pass the chapter's own duration so the fill lands exactly as it ends |
|
|
812
|
+
| `design` | `DesignSystem` | | Reads `grid.marginBottom` and palette from it when passed |
|
|
813
|
+
| `accentColor` | `string` | | Overrides `design`'s or the token success colour |
|
|
814
|
+
|
|
815
|
+
---
|
|
816
|
+
|
|
817
|
+
## A scene, end to end
|
|
818
|
+
|
|
819
|
+
```tsx
|
|
820
|
+
import React from "react";
|
|
821
|
+
import { CinematicScene, Layer, TerminalReplay, Caption, color, E } from "@openvidstudio/core";
|
|
822
|
+
|
|
823
|
+
export const Install: React.FC = () => (
|
|
824
|
+
<CinematicScene
|
|
825
|
+
camera={[
|
|
826
|
+
{ frame: 0, x: 960, y: 540, scale: 1.05, rotZ: -0.4 },
|
|
827
|
+
{ frame: 300, x: 960, y: 548, scale: 1.15, rotZ: 0.35, easing: E.drift },
|
|
828
|
+
]}
|
|
829
|
+
overlay={<Caption text="one command" at={40} out={240} />}
|
|
830
|
+
>
|
|
831
|
+
<Layer depth={0}>
|
|
832
|
+
<div style={{ position: "absolute", inset: 0, display: "flex",
|
|
833
|
+
alignItems: "center", justifyContent: "center" }}>
|
|
834
|
+
<TerminalReplay
|
|
835
|
+
width={1400}
|
|
836
|
+
steps={[
|
|
837
|
+
{ type: "cmd", text: "node packages/mcp-server/dist/stdio.js" },
|
|
838
|
+
{ type: "out", lines: [{ text: "connected over stdio", color: color.success, glow: true }] },
|
|
839
|
+
]}
|
|
840
|
+
/>
|
|
841
|
+
</div>
|
|
842
|
+
</Layer>
|
|
843
|
+
</CinematicScene>
|
|
844
|
+
);
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
Two keyframes so it moves, content centred inside the safe area, caption in the
|
|
848
|
+
overlay, tokens instead of hex.
|
|
849
|
+
|
|
850
|
+
---
|
|
851
|
+
|
|
852
|
+
## Catalog primitives
|
|
853
|
+
|
|
854
|
+
Small components that are not in `@openvidstudio/core` but are in the motion primitives catalog:
|
|
855
|
+
`catalog_motion_primitives` finds one and `add_motion_primitive` copies its source into the video's
|
|
856
|
+
`primitives/` folder, where it is yours to edit. Each imports only `react`, `remotion` and core.
|
|
857
|
+
|
|
858
|
+
### `CollageBroll`
|
|
859
|
+
|
|
860
|
+

|
|
861
|
+
|
|
862
|
+
A halftone paper-collage b-roll beat for an abstract idea between screen captures, made in code: free, and
|
|
863
|
+
nothing in it is invented footage. A flat colour field, black and white halftone cut-outs, a few cardstock accents,
|
|
864
|
+
thin cream keylines, soft low-opacity shadows and fine paper grain. Pieces assemble structure first (structure,
|
|
865
|
+
then people or key cards, then connectors, then the result): each enters from empty space on a spring, in a set
|
|
866
|
+
order, with no fade and no zoom. It is inspired by the look of the MIT-licensed `gbro-collage-broll` skill, which
|
|
867
|
+
generates it with a paid model API; this is written from scratch and calls no model.
|
|
868
|
+
|
|
869
|
+
| Prop | Type | Default | Notes |
|
|
870
|
+
|---|---|---|---|
|
|
871
|
+
| `pieces` | `CollagePiece[]` | required | See below |
|
|
872
|
+
| `background` | `string` | `#D9503F` | The flat colour field |
|
|
873
|
+
| `order` | `("structure" \| "people" \| "connector" \| "result")[]` | that order | The order the roles arrive in; within a role, as listed |
|
|
874
|
+
| `at` | `number` | `0` | Composition frame the first piece starts to move. Before it the frame is the empty field |
|
|
875
|
+
| `stagger` | `number` | `10` | Frames between one piece starting and the next |
|
|
876
|
+
|
|
877
|
+
A piece is `{ src | shape, x, y, width, aspect?, rotation?, tone?, role? }`: `x`, `y` and `width` are fractions of the
|
|
878
|
+
frame (so it follows the frame size); `src` is an image (`staticFile(...)`) cut out in halftone; `shape` is
|
|
879
|
+
`"card"`, `"circle"`, `"person"` or `"arrow"`; `tone` is `"halftone"` (default), `"red"`, `"blue"`, `"yellow"`,
|
|
880
|
+
`"green"` or `"cream"`; `role` says when it arrives (default `"structure"`).
|
|
881
|
+
|
|
882
|
+
## Supernova: `@openvidstudio/stem`
|
|
883
|
+
|
|
884
|
+
The primitives for STEM lesson videos (production mode `"supernova"`, 1080x1920). A project made
|
|
885
|
+
with `init_project` `mode: "supernova"` can import them; a standard project cannot. Everything here is
|
|
886
|
+
a pure function of the frame, takes its sizes from `useVideoConfig()` and uses no random numbers.
|
|
887
|
+
Stills are 540x960, rendered for real by `scripts/build-api-gallery.mjs`.
|
|
888
|
+
|
|
889
|
+
```tsx
|
|
890
|
+
import { Spark, Nova, supernovaDesignSystem } from "@openvidstudio/stem";
|
|
891
|
+
```
|
|
892
|
+
|
|
893
|
+
### `supernovaDesignSystem(subject)`
|
|
894
|
+
|
|
895
|
+
The Void + Spark design system for one subject (`"math" | "physics" | "cs" | "chemistry" | "biology"`):
|
|
896
|
+
a flat dark Void (`#07060B`, panels `#0E0C16`, hairline at 5% white), warm white text (`#F3EFE6`, never
|
|
897
|
+
pure white, dim `#8C8799`), one accent per subject (math `#5CC8FF`, physics `#FFB347` with ember
|
|
898
|
+
`#FF7A3D`, cs `#B58CFF`, chemistry `#FF4D5E`, biology `#7CFFB2`), the `"void-spark"` motif, and a layout
|
|
899
|
+
grid that keeps key content clear of the Reels interface (108 / 270 / 420). `design.display` is the
|
|
900
|
+
display face, Space Grotesk; the body face is Inter. Both load from local files.
|
|
901
|
+
|
|
902
|
+
### `Spark`
|
|
903
|
+
|
|
904
|
+

|
|
905
|
+
|
|
906
|
+
A luminous point: a bright core, a soft bloom and a fading trail. The pen, the pointer and the particle
|
|
907
|
+
of a lesson, with one on screen at a time.
|
|
908
|
+
|
|
909
|
+
| Prop | Type | Default | Notes |
|
|
910
|
+
|---|---|---|---|
|
|
911
|
+
| `path` | `Path \| Keyframe[]` | required | `(t) => ({ x, y })` with `t` in frames since `at`, or keyframes `{ frame, x, y, easing? }` (held at the ends, eased between) |
|
|
912
|
+
| `at` | `number` | `0` | Composition frame it appears. Nothing is drawn before it |
|
|
913
|
+
| `trail` | `number` | `18` | Frames of tail. Brighter near the head |
|
|
914
|
+
| `color` | `string` | the subject's accent | |
|
|
915
|
+
| `subject` | `Subject` | `"math"` | Picks the default colour |
|
|
916
|
+
| `size` | `number` | 1.4% of the shorter side | Radius of the core, px |
|
|
917
|
+
|
|
918
|
+
Behaviours are helpers that return a `Path`, so they compose: `trace(curve | points, { duration })`,
|
|
919
|
+
`carry(fn, from, to, { duration, map? })` (the Spark rides `y = fn(x)`; `map` is a graph-to-screen
|
|
920
|
+
mapping), `orbit(target, radius, { period })`, `split(parent, n, { at, spread })` (n paths),
|
|
921
|
+
`fall(g, { x, y, vx, vy }, { floorY? })` and `walk(points, { hop, hold })`.
|
|
922
|
+
|
|
923
|
+
### `Nova`
|
|
924
|
+
|
|
925
|
+

|
|
926
|
+
|
|
927
|
+
The payoff, once per video, on the aha sentence. Nothing before `at`; then a three-frame flash, a thin
|
|
928
|
+
shockwave ring that decelerates and fades, and the `children` condense from particles. Leave a beat of
|
|
929
|
+
silence in the narration before it.
|
|
930
|
+
|
|
931
|
+
| Prop | Type | Default | Notes |
|
|
932
|
+
|---|---|---|---|
|
|
933
|
+
| `at` | `number` | | Composition frame of the flash. Or: |
|
|
934
|
+
| `beatId`, `impact` | `string` | | Take the frame from `useMusicClock(beatId).impact(impact)`, the score's named impact |
|
|
935
|
+
| `origin` | `{ x, y }` | frame centre | |
|
|
936
|
+
| `color`, `subject` | | the subject's accent | |
|
|
937
|
+
| `duration` | `number` | `60` | Frames from the flash until the content is fully formed |
|
|
938
|
+
| `children` | node | | The payoff. Fully formed by `at + duration` |
|
|
939
|
+
|
|
940
|
+
### `Equation`
|
|
941
|
+
|
|
942
|
+

|
|
943
|
+
|
|
944
|
+
An equation typeset in sans-serif maths and revealed term by term: each top-level term fades in and rises
|
|
945
|
+
a little, one after the next, as a pure function of the frame (never a fade of the whole thing).
|
|
946
|
+
|
|
947
|
+
| Prop | Type | Default | Notes |
|
|
948
|
+
|---|---|---|---|
|
|
949
|
+
| `tex` | `string` | required | The equation as TeX |
|
|
950
|
+
| `spoken` | `string` | **required** | The equation as it is said, in plain words: "x squared plus one". Required by the types (and at runtime), and exposed on the element as `data-spoken`, so `check_script` can compare it with the narration of the beat |
|
|
951
|
+
| `at` | `number` | `0` | Composition frame the first term appears |
|
|
952
|
+
| `stagger` | `number` | `7` | Frames between one term and the next |
|
|
953
|
+
| `size` | `number` | 8.5% of the shorter side | Font size in px |
|
|
954
|
+
| `color` | `string` | the Void's warm white | |
|
|
955
|
+
| `center` | `{ x, y }` | frame centre | |
|
|
956
|
+
|
|
957
|
+
Terms are the children of the equation's top-level row, so `\frac{d}{dx}\left(x^{2}+1\right)=2x` reveals as
|
|
958
|
+
the fraction, `(`, `x²`, `+`, `1`, `)`, `=`, `2`, `x`. A fully revealed equation is pixel for pixel the same as
|
|
959
|
+
the unrevealed one. `texToSvg(tex)` gives the SVG markup directly.
|
|
960
|
+
|
|
961
|
+
**Why MathJax 4 with the Fira font, not KaTeX.** The visible goal is sans-serif maths, which is the biggest
|
|
962
|
+
break from the usual serif look. Measured on the same three equations at 1080 wide (MathJax and Fira first,
|
|
963
|
+
then KaTeX with `\mathsf`, the closest it gets):
|
|
964
|
+
|
|
965
|
+

|
|
966
|
+
|
|
967
|
+
| | MathJax 4 + Fira (SVG) | KaTeX 0.19 |
|
|
968
|
+
|---|---|---|
|
|
969
|
+
| Look | Sans throughout: math italics, Greek, `sin` and `cos` in one family | Hybrid: `\mathsf` makes Latin letters upright sans, but `sin`, `cos`, `theta` and every operator stay serif, and variables lose their italics |
|
|
970
|
+
| Offline | Runs from the project's `public/mathjax/` (copied by `init_project`), no font files, glyphs are vector paths | Needs its CSS and about six font files shipped and loaded |
|
|
971
|
+
| Size | about 1.3MB of scripts, plus 2.2MB of Fira glyph ranges loaded on demand | about 360KB |
|
|
972
|
+
| Time | 3 equations typeset in about 140ms after a one-off start-up of about 0.5s | 3 equations in 6ms |
|
|
973
|
+
| Determinism | Same TeX, same markup, so a frame is a pure function of the frame | Same |
|
|
974
|
+
|
|
975
|
+

|
|
976
|
+
|
|
977
|
+
MathJax costs more to load and to typeset, once per document, and that is paid for a look that KaTeX cannot
|
|
978
|
+
produce. Its speech and braille workers are switched off (they would fetch 800KB of rule files).
|
|
979
|
+
|
|
980
|
+
### `Axes`, `Plot`, `NumberLine`
|
|
981
|
+
|
|
982
|
+

|
|
983
|
+
|
|
984
|
+
`Axes` draws labelled axes with ticks and owns the graph-to-screen mapping. Its children are placed in
|
|
985
|
+
graph coordinates: `useAxes()` returns `{ toScreen(x, y), toWorld(px, py), box, xRange, yRange, weight }`,
|
|
986
|
+
so a `Plot`, a label or a Spark's path (`carry(fn, a, b, { duration, map: toScreen })`) can use it.
|
|
987
|
+
|
|
988
|
+
| `Axes` prop | Type | Default | Notes |
|
|
989
|
+
|---|---|---|---|
|
|
990
|
+
| `xRange`, `yRange` | `[min, max]` | required | Graph units |
|
|
991
|
+
| `box` | `{ x, y, width, height }` | sized to the frame | The plot area, composition px |
|
|
992
|
+
| `xStep`, `yStep` | `number` | a round step, about five ticks | |
|
|
993
|
+
| `xLabel`, `yLabel` | `string` | | |
|
|
994
|
+
| `grid` | `boolean` | `true` | Gridlines at the ticks in the dim token, fainter than the axes |
|
|
995
|
+
| `subject` | `Subject` | `"math"` | Picks the accent children use |
|
|
996
|
+
|
|
997
|
+
| `Plot` prop | Type | Default | Notes |
|
|
998
|
+
|---|---|---|---|
|
|
999
|
+
| `fn` | `(x) => number` | required | A value that is not finite breaks the line |
|
|
1000
|
+
| `domain` | `[a, b]` | the axes' x range | |
|
|
1001
|
+
| `samples` | `number` | `240` | Across the domain |
|
|
1002
|
+
| `progress` | `0..1` | `1` | How much is drawn. Or `at` and `duration` for a draw-on that eases from 0 to 1 |
|
|
1003
|
+
| `color` | `string` | the accent | |
|
|
1004
|
+
| `tangent` | `{ at, span?, color? }` | | A tangent at x, once the curve has reached it. `span` is its half-length in x units |
|
|
1005
|
+
| `area` | `{ from, to, color? }` | | Shades between the curve and the x axis, as far as the curve has been drawn |
|
|
1006
|
+
| `points` | `{ x, label? }[]` | | Dots on the curve, appearing as it reaches them |
|
|
1007
|
+
|
|
1008
|
+
`NumberLine` takes `range`, `step`, `points` (`{ value, label? }`), `intervals` (`{ from, to, openFrom?,
|
|
1009
|
+
openTo? }`, open ends are hollow) and `arrow` (`{ value, label? }`), plus an optional `box` (`{ x, y,
|
|
1010
|
+
width }`). `useNumberLine().toScreen(value)` lets a Spark ride the line.
|
|
1011
|
+
|
|
1012
|
+

|
|
1013
|
+
|
|
1014
|
+
Strokes are never thinner than `lineWeight(width, height)`, 3px at 1080 on the shorter side (the plot
|
|
1015
|
+
line is about 1.7 times that). None of these glow: the Spark is the one element that does.
|
|
1016
|
+
|
|
1017
|
+
### `Derivation`
|
|
1018
|
+
|
|
1019
|
+

|
|
1020
|
+
|
|
1021
|
+
A formula built line by line, each line spoken: the derive beat of a lesson. The newest line sits at the bottom;
|
|
1022
|
+
the one before it moves up and dims, up to a stack of three, so the viewer reads the algebra top to bottom. The
|
|
1023
|
+
lines share a left edge and sit on a baseline, as algebra on paper does, so between two lines the terms they
|
|
1024
|
+
share (matched by their TeX, top level terms) stay exactly where they are, and slide only if the terms before them
|
|
1025
|
+
changed width. Terms that are new fade in and rise in the accent and settle to white; terms that are gone fade out where
|
|
1026
|
+
they were. Term level, not per glyph. The range of a projectile, `R = u^2 sin(2 theta) / g`, in seven steps, is the sample scene.
|
|
1027
|
+
|
|
1028
|
+
| Prop | Type | Default | Notes |
|
|
1029
|
+
|---|---|---|---|
|
|
1030
|
+
| `steps` | `{ tex, spoken, because? }[]` | required | `tex` is the line. `spoken` is **required**, exactly as on `Equation`: it must appear in the beat's narration, in the order the steps are given, and `check_script` fails a step that does not. `because` is a short reason in plain words ("no horizontal force") shown under the step |
|
|
1031
|
+
| `beatId` | `string` | | Reveal each step at the word its `spoken` starts at, found in `useNarrationWords(beatId)` after the previous step's words |
|
|
1032
|
+
| `at` | `number[]` | | Explicit frames, one per step, which win over the narration |
|
|
1033
|
+
| `from`, `stagger` | `number` | `0`, `60` | When there is neither narration nor `at`: the first step's frame and the gap between steps |
|
|
1034
|
+
| `size` | `number` | 7% of the shorter side, smaller if the widest line would not fit | Font size in px |
|
|
1035
|
+
| `color`, `subject` | | the Void's warm white, `"math"` | `subject` picks the colour new terms arrive in |
|
|
1036
|
+
| `center` | `{ x, y }` | the horizontal centre, 60% down a tall frame | `y` is the baseline of the current line, `x` the middle of the block |
|
|
1037
|
+
|
|
1038
|
+
The stack is three lines: opacity 1, about a half, about a quarter; a fourth line is gone. `revealFrames`,
|
|
1039
|
+
`matchTerms` and `slotOpacity` are the pure functions behind it.
|
|
1040
|
+
|
|
1041
|
+
### `LessonCaptions`
|
|
1042
|
+
|
|
1043
|
+

|
|
1044
|
+
|
|
1045
|
+
Burned-in captions timed to the narration, in one line: `<LessonCaptions beatId="hook" text={vo} />`. The word
|
|
1046
|
+
timings (`<beat>.words.json`) carry bare words with no punctuation, so chunking on them runs one sentence into
|
|
1047
|
+
the next. The text comes from the beat's `vo`: split on spaces, and when that gives as many words as the timings it is
|
|
1048
|
+
shown with its punctuation, otherwise the timings' bare words are. A caption breaks at a sentence end, at a comma
|
|
1049
|
+
after at least three words, and at `maxWords`; a one word sentence is a caption on its own. The word being said is
|
|
1050
|
+
picked out in the subject's accent. A pure function of the frame.
|
|
1051
|
+
|
|
1052
|
+
| Prop | Type | Default | Notes |
|
|
1053
|
+
|---|---|---|---|
|
|
1054
|
+
| `beatId` | `string` | required | Read with `useNarrationWords(beatId)` |
|
|
1055
|
+
| `text` | `string` | required | The beat's `vo` |
|
|
1056
|
+
| `position` | `"bottom" \| "top"` | `"bottom"` | Above the bottom 22% or below the top 14% of a tall frame (8% either way on a wide one) |
|
|
1057
|
+
| `maxWords` | `number` | `6` | Most words in one caption |
|
|
1058
|
+
| `left`, `width` | `number` | 10% of the width, the rest | The block's box |
|
|
1059
|
+
| `subject`, `fontSize` | | `"math"`, 4.8% of the shorter side | |
|
|
1060
|
+
|
|
1061
|
+
With no timings at all (an engine that gives none) the words are spread evenly over the scene, and the block says so in
|
|
1062
|
+
`data-ovs-captions-timing="estimated"`. The block is tagged `data-ovs-captions`, which `validate_scenes` ignores when it
|
|
1063
|
+
looks for the first drawn element and for a static stretch. `captionChunks(words, maxWords)` and `captionInsets(width, height)`
|
|
1064
|
+
are the pure functions.
|
|
1065
|
+
|
|
1066
|
+
### `FreeBody`
|
|
1067
|
+
|
|
1068
|
+

|
|
1069
|
+
|
|
1070
|
+
An object with labelled force arrows, for a physics lesson. The picture is honest: every arrow is exactly
|
|
1071
|
+
`magnitude * scale` px from tail to tip and a scale bar says how much that is, so two forces compared by
|
|
1072
|
+
eye are compared correctly. Arrows arrive one at a time. A block on a slope at rest (three forces that sum
|
|
1073
|
+
to zero) is the sample scene.
|
|
1074
|
+
|
|
1075
|
+
| Prop | Type | Default | Notes |
|
|
1076
|
+
|---|---|---|---|
|
|
1077
|
+
| `forces` | `{ label, magnitude, angle, color? }[]` | required | `angle` in degrees counter-clockwise from the right (0 right, 90 up, 270 down) |
|
|
1078
|
+
| `scale` | `number` | required | Pixels per unit of magnitude |
|
|
1079
|
+
| `unit`, `scaleValue` | `string`, `number` | `"N"`, a round value near half the largest force | The scale bar's unit and the length it stands for |
|
|
1080
|
+
| `scaleAt` | `{ x, y }` | lower left | Left end of the scale bar |
|
|
1081
|
+
| `origin` | `{ x, y }` | frame centre | Where the object is; arrows start at its centre |
|
|
1082
|
+
| `objectSize`, `objectRotation`, `objectLabel` | | 9% of the shorter side, 0, none | Rotation in degrees clockwise: -30 puts a block flat on a 30 degree slope that rises to the right |
|
|
1083
|
+
| `at`, `stagger`, `order` | | `0`, `18`, as given | When the first arrow starts, frames between arrows, and the order as indices into `forces` |
|
|
1084
|
+
| `net` | `boolean` | `false` | Also draw the net force as a dashed arrow once the others are in. Left out when the net is zero |
|
|
1085
|
+
|
|
1086
|
+
### `ArrayViz`
|
|
1087
|
+
|
|
1088
|
+

|
|
1089
|
+
|
|
1090
|
+
A row of cells holding values, with named pointers, a highlighted range and a dimmed one: enough to teach
|
|
1091
|
+
binary search and a sorting pass. Binary search over a sorted array is the sample scene.
|
|
1092
|
+
|
|
1093
|
+
| Prop | Type | Default | Notes |
|
|
1094
|
+
|---|---|---|---|
|
|
1095
|
+
| `values` | `(number \| string)[]` | required | One cell each, numbered above |
|
|
1096
|
+
| `pointers` | `{ name, index, color?, spark? }[]` | | `index` is a cell, or keyframes `{ frame, index }` that move the pointer (eased, fractional between cells). With `spark: true` the pointer's tip is the Spark, so its move leaves a trail. At most one pointer may (one glowing element at a time) |
|
|
1097
|
+
| `highlights` | `{ from, to, color? }[]` | | Cells to fill with the accent, inclusive: the range still in play |
|
|
1098
|
+
| `dimmed` | `{ from, to }[]` | | Cells ruled out, inclusive |
|
|
1099
|
+
| `origin`, `cellSize` | | centred, fits 84% of the width | |
|
|
1100
|
+
| `subject` | `Subject` | `"cs"` | Picks the accent |
|
|
1101
|
+
|
|
1102
|
+
`useArrayViz()` returns `{ cellSize, left, top, cellCenter(i) }` so a Spark's path (`walk`) can be built from
|
|
1103
|
+
the cells' own positions.
|
|
1104
|
+
|
|
1105
|
+
### `Wave`
|
|
1106
|
+
|
|
1107
|
+

|
|
1108
|
+
|
|
1109
|
+
A travelling or standing sine wave with its wavelength, amplitude and phase drawn on it. Every number is exact: crests are exactly `wavelength` px apart, a crest is exactly `amplitude` px above the rest line, and a travelling crest moves exactly `speed` px per frame. The curve is a dense SVG path (24 or more samples per wavelength, with a sample on every crest and trough). In a standing wave the nodes (small rings on the rest line) never move and the antinodes swing up and down. `spark="crest"` rides the one Spark on a crest (an antinode, for a standing wave). A pure function of the frame; nothing is drawn before `at`.
|
|
1110
|
+
|
|
1111
|
+
The displacement is `amplitude * cos(k (x - x0 - speed t) + phase)` for a travelling wave and `amplitude * cos(k (x - x0) + phase) * cos(2 pi t / period)` for a standing one, with `k = 2 pi / wavelength` and `x0` the left edge of the box. Find the elements in a test by `data-ovs-wave` (with `data-ovs-crests`, `data-ovs-wavelength`, `data-ovs-amplitude`), `data-ovs-node`, `data-ovs-label` (`wavelength`, `amplitude`, `phase`) and `data-ovs-crest-spark`.
|
|
1112
|
+
|
|
1113
|
+
| Prop | Type | Default | Notes |
|
|
1114
|
+
| --- | --- | --- | --- |
|
|
1115
|
+
| `mode` | `"travelling" \| "standing"` | `"travelling"` | |
|
|
1116
|
+
| `wavelength` | number (px) | a third of the box width | Crest to crest. |
|
|
1117
|
+
| `amplitude` | number (px) | 8% of the shorter side | Rest line to crest. |
|
|
1118
|
+
| `speed` | number (px per frame) | one wavelength per 60 frames | Travelling only. A crest moves exactly this far each frame. |
|
|
1119
|
+
| `period` | number (frames) | 90 | Standing only. |
|
|
1120
|
+
| `phase` | number (radians) | 0 | The displacement at the left edge at time zero is `amplitude * cos(phase)`. |
|
|
1121
|
+
| `at` | number (frame) | 0 | The wave draws itself left to right over `WAVE_REVEAL_FRAMES` (24). |
|
|
1122
|
+
| `box` | `{ x, y, width, height }` | middle of the frame, inside the Reels safe zone | The rest line runs through the middle of the box. |
|
|
1123
|
+
| `labels` | boolean or `{ wavelength?, amplitude?, phase? }` | all on | Wavelength bracket (crest to crest), amplitude arrow (rest line to crest), phase marker. They fade in once the wave has drawn. |
|
|
1124
|
+
| `wavelengthText`, `amplitudeText` | string | `"λ"`, `"A"` | |
|
|
1125
|
+
| `spark` | `"crest"` | none | One Spark on a crest. On a travelling wave it rides a crest and, when that crest has gone a wavelength on, hands over to the next one. |
|
|
1126
|
+
|
|
1127
|
+
`waveField(input)` returns `{ k, displacement, crestX, antinodeX, nodeX, crestsIn }`, the maths without the drawing.
|
|
1128
|
+
|
|
1129
|
+
### `Orbit`
|
|
1130
|
+
|
|
1131
|
+

|
|
1132
|
+
|
|
1133
|
+
A body on a circular or elliptical orbit with its velocity and force arrows drawn to scale, like `FreeBody`: each arrow is exactly `magnitude * scale` px from tail to tip, and a scale bar for each says how much that is. The body is the one Spark; the central mass is a plain disc at a focus of the ellipse.
|
|
1134
|
+
|
|
1135
|
+
What is exact: the position (Kepler's equation is solved, so the body is at periapsis at `t = 0` and every `period`, at apoapsis half a period later, at distances `a(1 - e)` and `a(1 + e)`); the force arrow always points at the central mass; the velocity arrow is tangent to the path (perpendicular to the radius on a circle); the magnitudes follow vis-viva for speed, `v sqrt(2a/r - 1)`, and the inverse square law for force, `F (a/r)^2`, where `v` and `F` are the speed and force at a distance of `semiMajor`. What is not: `v` and `F` are the caller's numbers in the caller's units, so nothing is checked against a real gravitational constant, and the arrow scale (px per unit) is independent of the scale of the drawn orbit. A pure function of the frame; nothing is drawn before `at`. Find the elements by `data-ovs-arrow` (`velocity`, `force`, with `data-ovs-magnitude` and `data-ovs-length`), `data-ovs-mass`, `data-ovs-body`, `data-ovs-orbit-path` and `data-ovs-scale`.
|
|
1136
|
+
|
|
1137
|
+
| Prop | Type | Default | Notes |
|
|
1138
|
+
| --- | --- | --- | --- |
|
|
1139
|
+
| `semiMajor` | number (px) | 34% of the shorter side | The radius, for a circle. |
|
|
1140
|
+
| `eccentricity` | number | 0 | 0 is a circle; capped at 0.95. |
|
|
1141
|
+
| `period` | number (frames) | required | One full orbit. |
|
|
1142
|
+
| `v`, `F` | number | none | Speed and force at distance `semiMajor`. On a circle they are the speed and force all the way round. |
|
|
1143
|
+
| `speedAt`, `forceAt` | `(r: px) => number` | vis-viva, inverse square | Override the physics. |
|
|
1144
|
+
| `scale` | `{ velocity, force }` | required | Pixels per unit of magnitude. |
|
|
1145
|
+
| `units` | `{ velocity?, force? }` | `"m/s"`, `"N"` | On the scale bars. |
|
|
1146
|
+
| `scaleValue` | `{ velocity?, force? }` | a round value near half the periapsis value | What each scale bar stands for. |
|
|
1147
|
+
| `centre` | `{ x, y }` | puts the whole ellipse in the middle of the frame | Where the central mass is (the focus). |
|
|
1148
|
+
| `periapsisAngle` | degrees | 0 | Direction of the closest point, counter-clockwise from the right. The body starts there. |
|
|
1149
|
+
| `clockwise` | boolean | false | |
|
|
1150
|
+
| `arrows` | boolean | true | `false` hides the arrows and the scale bars. |
|
|
1151
|
+
| `at`, `arrowsAt` | number (frame) | 0, `at + 12` | The arrows grow over `ORBIT_ARROW_FRAMES` (14). |
|
|
1152
|
+
| `massRadius`, `centreLabel` | number, string | 3.2% of the shorter side, none | |
|
|
1153
|
+
|
|
1154
|
+
`orbitState(shape, t)` returns `{ anomaly, r, offset, tangent, towardCentre }` for a body `t` frames after release.
|
|
1155
|
+
|
|
1156
|
+
### `VectorField`
|
|
1157
|
+
|
|
1158
|
+

|
|
1159
|
+
|
|
1160
|
+
Arrows on a grid for a vector field `(x, y) => [fx, fy]` given in graph coordinates, with optional field
|
|
1161
|
+
lines, for a physics lesson on electric or gravitational fields. Inside an `<Axes>` it uses that mapping;
|
|
1162
|
+
on its own it takes a `box` and `xRange`/`yRange`. Each arrow starts at its grid point (cell centres) and is
|
|
1163
|
+
exactly `|f| * scale` px from tail to tip, with arrowheads like `FreeBody`'s. Nothing is capped or
|
|
1164
|
+
normalised unless `maxLength` or `normalize` is given, and then the arrows that are capped or normalised no
|
|
1165
|
+
longer show `|f|`, so say so in the narration. Arrows and lines point along `(fx, -fy)` in px whatever the
|
|
1166
|
+
axes' scales; give the box and ranges equal px per unit (a square box over square ranges) if the picture
|
|
1167
|
+
should look like the field does in the plane. With `fieldLines`, streamlines are traced from the seeds by
|
|
1168
|
+
integrating the field (RK4, fixed step, deterministic) both ways until they leave the box, run into a zero
|
|
1169
|
+
or a source, or close up, and are drawn on after the arrows. A point charge's radial field with its lines
|
|
1170
|
+
is the sample scene.
|
|
1171
|
+
|
|
1172
|
+
| Prop | Type | Default | Notes |
|
|
1173
|
+
|---|---|---|---|
|
|
1174
|
+
| `field` | `(x, y) => [fx, fy]` | required | Graph point to vector, y up. Return `[0, 0]` where undefined (a charge's own position) |
|
|
1175
|
+
| `grid` | `{ columns, rows? }` | 7 columns, rows to keep cells square | Arrows are at the cell centres, so a grid never sits on the origin or an edge |
|
|
1176
|
+
| `scale` | `number` | longest arrow is 80% of a cell | Pixels per unit of `|f|`. An arrow is exactly `\|f\| * scale` px |
|
|
1177
|
+
| `normalize` | `number` | off | Every arrow this many px long, direction only |
|
|
1178
|
+
| `maxLength` | `number` | off | Cap in px. Capped arrows are shorter than `\|f\| * scale` |
|
|
1179
|
+
| `fieldLines` | `boolean` | `false` | Trace and draw field lines |
|
|
1180
|
+
| `seeds` | `[x, y][]` | every other grid point | Graph points the lines start from, each traced both ways |
|
|
1181
|
+
| `box`, `xRange`, `yRange` | `Box`, `[n, n]` | frame-sized box, `[-1, 1]` | Used outside `<Axes>`. Inside one, the Axes' own are used |
|
|
1182
|
+
| `color`, `lineColor` | `string` | physics amber, ember | |
|
|
1183
|
+
| `at`, `lineDuration` | `number` | `0`, `45` | When the arrows start growing (20 frames, `FIELD_ARROW_FRAMES`), and how long the lines take to draw on after that |
|
|
1184
|
+
|
|
1185
|
+
Helpers: `vectorFieldGrid(geometry, props)` returns each arrow (`world`, `screen` tail, `length`, unit
|
|
1186
|
+
`dir`), and `traceFieldLine(geometry, field, seed, step)` one streamline as px points. Elements carry
|
|
1187
|
+
`data-ovs-vectorfield`, `data-ovs-arrow` (with `data-ovs-gx`, `data-ovs-gy`, the grid point) and
|
|
1188
|
+
`data-ovs-fieldline`.
|
|
1189
|
+
|
|
1190
|
+
### `ComplexityCurve`
|
|
1191
|
+
|
|
1192
|
+

|
|
1193
|
+
|
|
1194
|
+
The growth of `n`, `n log n` and `n^2` plotted together on shared axes, with a marker for a chosen `n`: a
|
|
1195
|
+
dashed vertical rule, a dot on each curve and the value there. Built from `Axes` and `Plot`, so a curve
|
|
1196
|
+
that climbs past `yMax` is clipped at the top of the plot. **The log is base 2**: the `n log n` curve is
|
|
1197
|
+
`n * log2(n)` (drawn as 0 for n at or below 1). Each curve has its own accent (n green, n log n the cs
|
|
1198
|
+
violet, n squared red) and is named at its end. The curves are drawn on over `duration` frames, and the
|
|
1199
|
+
marker and names appear once the draw-on reaches them. The marker at n = 12 is the sample scene.
|
|
1200
|
+
|
|
1201
|
+
| Prop | Type | Default | Notes |
|
|
1202
|
+
|---|---|---|---|
|
|
1203
|
+
| `curves` | `("n" \| "nlogn" \| "n2")[]` | all three | Which to draw, in this order |
|
|
1204
|
+
| `n` | `number` | none | The marked input size. Dots sit at `Axes.toScreen(n, f(n))` |
|
|
1205
|
+
| `xMax` | `number` | `1.5 * n`, or 16 | Right end of the x axis (it starts at 0) |
|
|
1206
|
+
| `yMax` | `number` | `1.25 * ` the largest value at `n`, or the largest at `xMax` | Top of the y axis |
|
|
1207
|
+
| `at`, `duration` | `number` | `0`, `60` | Draw-on start frame and length |
|
|
1208
|
+
| `box` | `Box` | frame-sized | Where the plot sits |
|
|
1209
|
+
| `labels` | `boolean` | `true` | Curve names at their ends, the values at the dots and "n = 12" |
|
|
1210
|
+
|
|
1211
|
+
Also exports `complexityValue(kind, n)`, `COMPLEXITY_NAMES` and `COMPLEXITY_COLORS`. Elements carry
|
|
1212
|
+
`data-ovs-complexity`, `data-ovs-plot="point"`, `data-ovs-marker`, `data-ovs-marker-rule` and
|
|
1213
|
+
`data-ovs-curve-label`.
|
|
1214
|
+
|
|
1215
|
+
### `MatrixGrid`
|
|
1216
|
+
|
|
1217
|
+

|
|
1218
|
+
|
|
1219
|
+
A 2x2 matrix acting on the plane. A grid of points (and the lines through them), the unit square and the images of i-hat and j-hat move from the identity to the matrix over `at` to `at + duration`. Every entry is interpolated linearly from the identity, so each frame shows the plane under `I + p (M - I)` and the last frame exactly `M`. The picture is honest: a point (x, y) is drawn at `scale` px per unit times `M * (x, y)`, the origin never moves, and the square is drawn flipped when the determinant is negative (`data-ovs-orientation`). The matrix is shown in brackets above the plane in portrait and beside it in landscape, with its determinant. A pure function of the frame; nothing glows.
|
|
1220
|
+
|
|
1221
|
+
| Prop | Type | Default | |
|
|
1222
|
+
|---|---|---|---|
|
|
1223
|
+
| `matrix` | `number[][]` | required | 2x2, rows first: `[[a, b], [c, d]]` |
|
|
1224
|
+
| `at` | `number` | `0` | Frame the picture appears and the transform starts |
|
|
1225
|
+
| `duration` | `number` | `45` | Frames from the identity to the matrix |
|
|
1226
|
+
| `transform` | `boolean` | `true` | `false` shows the plane already transformed |
|
|
1227
|
+
| `ease` | `(t) => number` | `E.cinematic` | Shapes the progress; `(t) => t` is linear |
|
|
1228
|
+
| `grid` | `{ extent?, spacing? }` | `{ 2, 1 }` | Reach and gap of the point grid, graph units |
|
|
1229
|
+
| `unitSquare` | `boolean` | `true` | Unit square, its image, and the i-hat and j-hat arrows |
|
|
1230
|
+
| `showMatrix` | `boolean` | `true` | Draw the matrix with its determinant |
|
|
1231
|
+
| `box` | `Box` | middle band (portrait), right side (landscape) | Where the plane is drawn; its centre is the origin |
|
|
1232
|
+
| `scale` | `number` | fits the grid and its image in the box | px per graph unit |
|
|
1233
|
+
| `subject` | `Subject` | `"math"` | Picks the accent |
|
|
1234
|
+
|
|
1235
|
+
Helpers: `matrixGridGeometry(matrix, { width, height, box?, scale?, extent? })` returns `{ box, origin, scale, toScreen }`; `interpolateMatrix(m, progress)` and `applyMatrix(m, x, y)` are the pure maths. DOM: `data-ovs-point="x,y"` (with `data-ovs-sx/sy`), `data-ovs-corner`, `data-ovs-basis="i|j"`, `data-ovs-unit-square`, `data-ovs-progress`.
|
|
1236
|
+
|
|
1237
|
+
### `TreeViz`
|
|
1238
|
+
|
|
1239
|
+

|
|
1240
|
+
|
|
1241
|
+
A binary search tree built one insert at a time, with traversals. The component builds the BST from `values` itself (smaller to the left, a repeated value skipped) and lays it out tidily from the frame size: x is the in-order rank, y the depth, so a left child is always left of its parent and a right child right of it, one level lower. Each node arrives with its edge. A Spark can walk from the root to the place of a value as it is inserted (the node appears when the Spark gets there). A traversal then lights the nodes in visit order, one every `hop` frames, and lists the visited values under the tree. The only glowing element is the Spark. A pure function of the frame.
|
|
1242
|
+
|
|
1243
|
+
| Prop | Type | Default | |
|
|
1244
|
+
|---|---|---|---|
|
|
1245
|
+
| `values` | `number[]` | required | Inserted in this order |
|
|
1246
|
+
| `at` | `number` | `0` | Frame the first insert starts |
|
|
1247
|
+
| `insertAt` | `number` | `24` | Frames per insert (a walked insert also takes its walk) |
|
|
1248
|
+
| `walkValue` | `number` | last value | The Spark walks to this value's place |
|
|
1249
|
+
| `spark` | `boolean` | `true` | `false` turns the walk off |
|
|
1250
|
+
| `walkHop`, `walkHold` | `number` | `14`, `8` | Frames per hop down, and resting on each node |
|
|
1251
|
+
| `traversal` | `"inorder" \| "preorder" \| "postorder" \| "level"` | none | Light nodes in this order and list them |
|
|
1252
|
+
| `traverseAt` | `number` | 20 frames after the last insert | Frame the first node lights |
|
|
1253
|
+
| `hop` | `number` | `18` | Frames between one node lighting and the next |
|
|
1254
|
+
| `highlight` | `number` | none | Ring the node with this value |
|
|
1255
|
+
| `subject` | `Subject` | `"cs"` | Picks the accent |
|
|
1256
|
+
|
|
1257
|
+
Helper: `treeLayout(values, { width, height, at?, insertAt?, walkValue?, spark?, walkHop?, walkHold?, traverseAt? })` returns `{ nodes: [{ value, order, parent, side, depth, x, y, appearFrame }], radius, orders: { inorder, preorder, postorder, level }, walkPoints, ... }`. DOM: `data-ovs-node`, `data-ovs-x/y`, `data-ovs-lit`, `data-ovs-edge="parent-child"`, `data-ovs-visited` with `data-ovs-visit-index`.
|
|
1258
|
+
|
|
1259
|
+
### `GraphViz`
|
|
1260
|
+
|
|
1261
|
+

|
|
1262
|
+
|
|
1263
|
+
Nodes and edges for teaching graph search. Each node is coloured by its role at the current frame (dim: unvisited, violet: frontier, warm white: being visited, blue: done, ember: on the final path) and a legend names the roles. A `walk` hops one `Spark` from node to node (the only glowing element), using `walk` from `paths.ts`. Build `steps` from a real search with `bfsSteps`, not by hand.
|
|
1264
|
+
|
|
1265
|
+
| Prop | Type | Default | Meaning |
|
|
1266
|
+
|---|---|---|---|
|
|
1267
|
+
| `nodes` | `{ id, x?, y?, label? }[]` | required | `x`, `y` are fractions (0..1) of the layout box. Give all nodes both, or none: then they sit evenly on a circle that fits the box, from the top. `label` defaults to the id and is drawn inside the node. |
|
|
1268
|
+
| `edges` | `[from, to][]` | required | Lines run centre to centre. |
|
|
1269
|
+
| `directed` | `boolean` | `false` | Arrowheads; lines stop at the node edge. |
|
|
1270
|
+
| `steps` | `{ frame, visit?, frontier?, done?, path? }[]` | none | A snapshot from `frame` on: the latest step at or before the current frame gives every node's role. Nodes in none of its lists are unvisited. Edges between consecutive nodes of `path` are drawn in ember at twice the weight. |
|
|
1271
|
+
| `walk` | `string[]` | none | Node ids a single Spark hops along. The Spark rests on `walk[k]` during local frames `[k*(hop+hold)+hop, (k+1)*(hop+hold)]`, so a step at `walkAt + k*(hop+hold) + hop` lines the colour up with the Spark. |
|
|
1272
|
+
| `hop`, `hold` | `number` | `20`, `20` | Frames to move, and to rest on each node. |
|
|
1273
|
+
| `walkAt` | `number` | `at` | Frame the Spark starts. |
|
|
1274
|
+
| `at` | `number` | `0` | Frame the graph appears; nothing is drawn before it. |
|
|
1275
|
+
| `box` | `{ x, y, w, h }` | 80% of the width, from 17% down, 45% of the height | The layout box in px. |
|
|
1276
|
+
| `radius` | `number` | 4.5% of the shorter side | Node radius. Label text is 80% of it, the legend is 2.7% of the shorter side. |
|
|
1277
|
+
| `legend` | `boolean` | `true` | The role legend, below the box, wrapped to the box width. |
|
|
1278
|
+
|
|
1279
|
+
Helpers: `bfsOrder(adjacency, start)` (visiting order, neighbours in listed order), `shortestPath(adjacency, from, to)` (fewest edges, or `null`), `adjacencyFrom(edges, directed?, ids?)`, `bfsSteps(adjacency, start, { first, every, goal? })` (a step per visited node: that node visiting, the earlier ones done, the discovered ones frontier; with `goal`, a last step showing the shortest path), `graphLayout(nodes, width, height, { box, radius })` (centres in px). `GRAPH_ROLE_COLOR` holds the role fills.
|
|
1280
|
+
|
|
1281
|
+
### The glow budget
|
|
1282
|
+
|
|
1283
|
+
One glowing element at a time. Spark and Nova draw their glow through `Glow`, which tags its element
|
|
1284
|
+
with `data-ovs-glow` and `data-ovs-glow-level`; `countGlowing(root)` counts the elements above
|
|
1285
|
+
`GLOW_VISIBLE_LEVEL`. A Spark is one, a Nova's flash is one (the ring and particles do not glow).
|
|
1286
|
+
|
|
1287
|
+
## Pixel narrator and depth kit: `@openvidstudio/styles`
|
|
1288
|
+
|
|
1289
|
+
Plain TypeScript modules that draw to a 2D canvas context, for canvas explainers (hand-written or built by `render_canvas_explainer`). No React, no WebGL, no dependencies. Everything is a pure function of its inputs and of `t` in seconds: the same `t` draws the same pixels. Randomness comes from `createRng(seed)` (a seeded mulberry32), never from the platform's global generator, and a test greps the package for it. `import { ... } from "@openvidstudio/styles"`.
|
|
1290
|
+
|
|
1291
|
+
### Sprites and the narrator
|
|
1292
|
+
|
|
1293
|
+
`makeSprite(palette, frames, fps?)` builds a palette-indexed string-grid sprite: each frame is equal-width strings, each character a palette key, `.` is transparent, and a ragged row or a key missing from the palette throws. `drawSprite(ctx, sprite, x, y, scale, frame)` draws one frame with integer-scale `fillRect` and smoothing off, so a sprite pixel is exactly `scale` by `scale` device pixels (scale and position are rounded to whole pixels). Options: `tint` (a silhouette in one colour), `flipX`, `palette` (override colours by key). `frameAt(sprite, t)` is the frame that plays at `t`.
|
|
1294
|
+
|
|
1295
|
+
`drawNarrator(ctx, pose, x, y, scale, t, accent?)` draws the one recurring narrator, a 16x23 pixel character whose shirt takes the lesson's accent. `narratorSprite(pose, accent?)` and `narratorFrame(pose, t)` give the sprite and the frame at `t`. Poses: `idle`, `talk`, `point`, `think`, `celebrate`.
|
|
1296
|
+
|
|
1297
|
+

|
|
1298
|
+
|
|
1299
|
+
`idle`: arms down, a blink every couple of seconds.
|
|
1300
|
+
|
|
1301
|
+

|
|
1302
|
+
|
|
1303
|
+
`talk`: the mouth cycles closed, half, open at 8 frames a second. Drive it only while the voice is speaking.
|
|
1304
|
+
|
|
1305
|
+

|
|
1306
|
+
|
|
1307
|
+
`point`: the right arm reaches out (toward the right of the frame), a two-frame wobble. Place the thing pointed at to his right.
|
|
1308
|
+
|
|
1309
|
+

|
|
1310
|
+
|
|
1311
|
+
`think`: a hand at the chin, and three dots that appear one after another above the head.
|
|
1312
|
+
|
|
1313
|
+

|
|
1314
|
+
|
|
1315
|
+
`celebrate`: both arms up, a two-frame jump with sparkles. Use it on the payoff.
|
|
1316
|
+
|
|
1317
|
+
Props are sprites in a registry: `ball`, `ruler`, `battery`, `cable`, `bridge` (a truss section) and `bat`. `drawProp(ctx, name, x, y, scale, t?)` draws one, `getProp(name)` returns it, `propNames()` lists them. A lesson adds its own with `registerProp(name, makeSprite(...))`; a name that already exists is refused unless `overwrite` is passed, so a lesson cannot silently change a built-in.
|
|
1318
|
+
|
|
1319
|
+
### Depth without WebGL
|
|
1320
|
+
|
|
1321
|
+
- `new Parallax({ width, height, seed?, layers?, horizon?, speed?, accent? })` holds three to five layers (fewer or more throws), drawn far to near. A layer is `{ kind: "stars" | "hills" | "towers" | "dots", color, depth (0 far, 1 near), blur?, count?, amplitude? }`. Each layer is rendered once into a wrapping tile, far layers pre-blurred (`blur`), so `parallax.draw(ctx, t, camera?)` is a few `drawImage` calls. Near layers scroll faster and zoom more with the camera. With no `layers`, `defaultLayers(accent)` gives four.
|
|
1322
|
+
- `dolly(t, { from?, to, start?, duration, ease? })` returns the camera `{ scale, x, y }` at `t`; pass it to `parallax.draw`, or to `applyCamera(ctx, camera, width, height)` for foreground drawing.
|
|
1323
|
+
- `drawFloorGrid(ctx, area, t, { horizon, vanishX?, color?, rows?, cols?, speed?, fog? })` draws a perspective floor: lines converge on the horizon and scroll toward the viewer with `t`; nothing is drawn above the horizon.
|
|
1324
|
+
- `drawFog(ctx, area, horizon, { color?, strength?, reach? })` is the depth fog: a band at the horizon that fades into the ground colour.
|
|
1325
|
+
- `drawShadow(ctx, cx, cy, rx, ry, alpha?, pixel?)` is a hard-edged pixel ellipse on the ground; `drawSpriteShadow(ctx, sprite, x, y, scale, frame?, opts?)` draws a sprite's offset silhouette (draw it before the sprite).
|
|
1326
|
+
|
|
1327
|
+

|
|
1328
|
+
|
|
1329
|
+

|
|
1330
|
+
|
|
1331
|
+
A frame of the full scene (parallax, floor grid, fog, shadow, narrator, prop, caption) draws in about 12 ms at 720x1280 in headless Chromium, and the `styles-depth` test holds it under 30 ms.
|
|
1332
|
+
|
|
1333
|
+
### Accents, font and sound
|
|
1334
|
+
|
|
1335
|
+
`ACCENTS` has one accent per subject: maths blue `#5CC8FF`, physics amber `#FFB347`, computer science violet `#B58CFF`, chemistry red `#FF4D5E`, biology green `#7CFFB2` (`Subject` is `"math" | "physics" | "cs" | "chemistry" | "biology"`). `VOID` (`#0B0D14`) is the dark ground the kit is drawn against.
|
|
1336
|
+
|
|
1337
|
+
The pixel font has two paths. `drawPixelText(ctx, text, x, y, scale, color)` uses a 5x7 bitmap font written for this package (uppercase, digits and basic punctuation) and draws it with `fillRect`; nothing is fetched or vendored, so it works offline, and it is Apache-2.0 like the package. For text that goes through the normal font stack (`fitText`, captions), `PIXEL_FONT` names Press Start 2P (SIL Open Font License 1.1) and its Google Fonts stylesheet URL; the package loads nothing itself, so a lesson that wants that face adds the link and text falls back to `monospace` without it.
|
|
1338
|
+
|
|
1339
|
+
`CHIP_SOUNDS` is a chip-style sound palette as plain data: `{ name, wave: "square" | "triangle" | "sawtooth" | "noise", gain, env: { attack, decay, sustain, release }, notes: [{ at, dur, note, slideTo? }] }` with `blip`, `confirm`, `wrong`, `think`, `point`, `celebrate`, `step` and `whoosh`. `noteToHz("A4")` is 440. `scheduleChip(audioContext, sound, when)` plays one on Web Audio (noise comes from the seeded generator, so it is the same samples every time); `chipDuration(sound)` gives its length, and `registerChipSound` adds a lesson's own. Because it is data, the same palette can be rendered offline into the narration mix.
|
|
1340
|
+
|
|
1341
|
+
### Vertical layout: 720x1280
|
|
1342
|
+
|
|
1343
|
+
`LOGICAL_WIDTH` and `LOGICAL_HEIGHT` (720 and 1280, also `LOGICAL_SIZE`) are the logical canvas of a Reel. The helpers keep the platform's own interface off your content:
|
|
1344
|
+
|
|
1345
|
+
- `safeArea(width, height)` returns `{ x, y, w, h }`: the top 14% and the bottom 22% are clear, and 5% is kept at each side. At 720x1280 that is x 36, y 179, w 648, h 819 (the area ends at y 998). It is computed from proportions, so it is right for other sizes too. `insideSafeArea(width, height, rect)` tests a rectangle.
|
|
1346
|
+
- `fitText(ctx, text, maxWidth, maxLines, startSize, role?, family?, weight?)` returns the largest font size at which the text wraps into at most `maxLines` lines no wider than `maxWidth`, never below the role's minimum: `"headline"` 44, `"label"` 28, `"number"` 64 (`ROLE_MIN_SIZE`). A `startSize` below the minimum is raised to it. `fitTextLayout` takes the same arguments and returns `{ size, lines, fits }`: `fits` is false when even the minimum overflows, which means the text is too long and should be shortened, not shrunk.
|
|
1347
|
+
- `captionBand(width, height)` is the caption band: full safe width, resting on the bottom edge of the safe area, room for two lines. `drawCaption(ctx, text, width, height, style?)` fits the text at label size into it and draws it.
|
|
1348
|
+
|
|
1349
|
+

|
|
1350
|
+
|
|
1351
|
+
Reframe-by-cropping is not offered. Cropping a landscape layout to vertical cuts it, so there is no helper that does it; lay the frame out vertically with the helpers above. The renderer's `width` and `height` arguments carry the vertical size through to an explainer, which draws at that size.
|