@autoaiai/aicut 0.1.11 → 0.1.13
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/MANUAL.md +94 -94
- package/package.json +1 -1
- package/skills/aicut-motion/SKILL.md +69 -3
- package/skills/aicut-motion/THIRD_PARTY_NOTICES.md +14 -0
- package/skills/aicut-motion/assets/atlas/lib/harness.js +116 -0
- package/skills/aicut-motion/assets/atlas/lib/sound.js +274 -0
- package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/code.js +937 -0
- package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/001-flat-vector-science/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/code.js +909 -0
- package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/002-watercolor-wash/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/code.js +881 -0
- package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/003-shadow-puppet-theatre/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/code.js +897 -0
- package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/004-whiteboard-explainer/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/code.js +814 -0
- package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/005-psychedelic-poster/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/code.js +990 -0
- package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/006-tech-glow-explainer/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/code.js +994 -0
- package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/007-papercraft-models/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/code.js +792 -0
- package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/008-1940s-film-noir/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/code.js +840 -0
- package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/009-manim-style-math/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/code.js +1126 -0
- package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/010-illuminated-manuscript/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/code.js +854 -0
- package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/011-editorial-essay-collage/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/code.js +1124 -0
- package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/012-bioluminescent-deep-sea/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/code.js +728 -0
- package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/013-product-launch-reveal/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/code.js +664 -0
- package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/014-halftone-pop-panel/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/code.js +991 -0
- package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/015-isometric-pastel/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/code.js +801 -0
- package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/016-oscilloscope-vector-art/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/code.js +692 -0
- package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/017-risograph-zine/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/code.js +756 -0
- package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/018-claymation-set/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/code.js +922 -0
- package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/019-neon-sign-at-night/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/code.js +852 -0
- package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/020-kawaii-anime/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/code.js +724 -0
- package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/021-ukiyo-e-woodblock/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/code.js +793 -0
- package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/022-16-bit-pixel-odyssey/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/code.js +846 -0
- package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/023-chalkboard-lesson/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/code.js +1008 -0
- package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/024-cut-paper-diorama/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/code.js +680 -0
- package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/025-cathedral-glass/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/code.js +633 -0
- package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/026-editorial-chart/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/code.js +757 -0
- package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/027-synthwave-outrun/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/code.js +828 -0
- package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/028-origami-studio/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/code.js +697 -0
- package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/029-linocut-relief-print/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/code.js +687 -0
- package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/030-holographic-foil-card/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/code.js +727 -0
- package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/031-voxel-diorama/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/code.js +903 -0
- package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/032-sumi-e-ink-wash/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/code.js +662 -0
- package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/033-etch-a-sketch-toy/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/code.js +951 -0
- package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/034-cosmic-star-chart/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/code.js +759 -0
- package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/035-punk-zine-collage/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/code.js +738 -0
- package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/036-thermal-camera/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/code.js +793 -0
- package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/037-engineering-blueprint/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/code.js +673 -0
- package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/038-impasto-night/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/code.js +907 -0
- package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/039-win95-desktop/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/code.js +833 -0
- package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/040-low-poly-faceted/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/041-manga-page/code.js +845 -0
- package/skills/aicut-motion/assets/atlas/styles/041-manga-page/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/041-manga-page/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/code.js +496 -0
- package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/042-wood-type-letterpress/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/043-light-painting/code.js +635 -0
- package/skills/aicut-motion/assets/atlas/styles/043-light-painting/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/043-light-painting/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/code.js +799 -0
- package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/044-felt-patchwork/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/code.js +547 -0
- package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/045-phosphor-terminal/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/code.js +592 -0
- package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/046-glassmorphism-ui/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/code.js +768 -0
- package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/047-tarot-card/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/048-transit-map/code.js +666 -0
- package/skills/aicut-motion/assets/atlas/styles/048-transit-map/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/048-transit-map/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/code.js +559 -0
- package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/049-gouache-travel-poster/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/code.js +943 -0
- package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/050-napkin-sketch/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/code.js +606 -0
- package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/051-art-deco-foil/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/code.js +730 -0
- package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/052-radiograph-on-lightbox/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/code.js +782 -0
- package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/053-vaporwave/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/code.js +504 -0
- package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/054-ebru-paper-marbling/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/code.js +517 -0
- package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/055-isotype-pictograms/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/code.js +713 -0
- package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/056-soft-3d-clay/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/code.js +717 -0
- package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/057-cross-stitch-sampler/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/code.js +540 -0
- package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/058-constructivist-propaganda/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/code.js +524 -0
- package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/059-pocket-monochrome/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/code.js +934 -0
- package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/060-botanical-plate/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/code.js +690 -0
- package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/061-kinetic-type/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/code.js +612 -0
- package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/062-byzantine-mosaic/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/code.js +666 -0
- package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/063-y2k-liquid-chrome/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/code.js +651 -0
- package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/064-sticky-note-wall/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/code.js +656 -0
- package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/065-vintage-newsprint/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/code.js +672 -0
- package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/066-hidden-line-wireframe/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/code.js +548 -0
- package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/067-memphis-group/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/code.js +989 -0
- package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/068-ballpoint-notebook/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/code.js +440 -0
- package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/069-op-art-sphere/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/code.js +895 -0
- package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/070-topographic-survey/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/code.js +563 -0
- package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/071-pointillist-afternoon/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/code.js +627 -0
- package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/072-vector-arcade-1980/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/code.js +1096 -0
- package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/073-patent-drawing/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/code.js +595 -0
- package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/074-bauhaus-poster/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/code.js +665 -0
- package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/075-bitmap-paint-doodle/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/code.js +645 -0
- package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/076-nail-thread-string-art/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/code.js +436 -0
- package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/077-ridgeline/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/code.js +1237 -0
- package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/078-sketchbook-graphite/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/code.js +622 -0
- package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/079-teletext-page/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/code.js +524 -0
- package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/080-silkscreen-grid/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/code.js +689 -0
- package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/081-guilloch-security-print/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/code.js +574 -0
- package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/082-ascii-demoscene/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/code.js +469 -0
- package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/083-international-typographic-style/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/084-flow-field/code.js +531 -0
- package/skills/aicut-motion/assets/atlas/styles/084-flow-field/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/084-flow-field/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/code.js +675 -0
- package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/085-macpaint-1984/style.json +13 -0
- package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/code.js +609 -0
- package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/poster.jpg +0 -0
- package/skills/aicut-motion/assets/atlas/styles/086-multi-scale-truchet/style.json +13 -0
- package/skills/aicut-motion/references/motion-delivery.md +55 -0
- package/skills/aicut-motion/references/style-index.json +690 -0
- package/skills/aicut-motion/references/style-research.md +73 -0
- package/skills/aicut-motion/references/style-selection.md +71 -0
- package/skills/aicut-motion/scripts/atlas-viewer.html +195 -0
- package/skills/aicut-motion/scripts/atlas.mjs +109 -0
- package/studio/server/fetch-github.mjs +14 -3
- package/studio/server/server.mjs +40 -3
- package/studio/server/skill-summaries.mjs +60 -0
- package/studio/server/skills.mjs +121 -7
- package/studio/server/styles-store.mjs +235 -0
- package/studio/server/template-posters.mjs +2 -2
- package/studio/server/templates-page.mjs +93 -93
- package/studio/server/templates.mjs +32 -7
- package/studio/ui/dist/assets/ExportCenter-DasulhAv.js +1 -0
- package/studio/ui/dist/assets/SettingsModal-BZw0Hz2_.js +2 -0
- package/studio/ui/dist/assets/es-C8XPZARI.js +1 -0
- package/studio/ui/dist/assets/index-BjJVmBzB.js +1623 -0
- package/studio/ui/dist/assets/index-C3BfKZFO.css +1 -0
- package/studio/ui/dist/assets/ja-BeNkdaEj.js +1 -0
- package/studio/ui/dist/assets/ko-DcTVhdzK.js +1 -0
- package/studio/ui/dist/assets/zh-CN-Cg51ctbL.js +1 -0
- package/studio/ui/dist/index.html +2 -2
- package/skills/30x-web-to-video/SKILL.md +0 -421
- package/skills/30x-web-to-video/examples/INDEX.md +0 -26
- package/skills/30x-web-to-video/references/animations.md +0 -539
- package/skills/30x-web-to-video/references/audio.md +0 -256
- package/skills/30x-web-to-video/references/components.md +0 -340
- package/skills/30x-web-to-video/references/lottie.md +0 -174
- package/skills/30x-web-to-video/references/visual-effects.md +0 -157
- package/skills/30x-web-to-video/remotion-best-practices/rules/audio.md +0 -169
- package/skills/30x-web-to-video/remotion-best-practices/rules/calculate-metadata.md +0 -134
- package/skills/30x-web-to-video/remotion-best-practices/rules/charts.md +0 -120
- package/skills/30x-web-to-video/remotion-best-practices/rules/compositions.md +0 -154
- package/skills/30x-web-to-video/remotion-best-practices/rules/ffmpeg.md +0 -38
- package/skills/30x-web-to-video/remotion-best-practices/rules/fonts.md +0 -152
- package/skills/3d-asset-generation/SKILL.md +0 -142
- package/skills/action-fight-prompt/SKILL.md +0 -136
- package/skills/action-fight-prompt/references/camera-and-impact.md +0 -64
- package/skills/action-fight-prompt/references/example-15s-duel.md +0 -59
- package/skills/action-fight-prompt/references/scene-patterns.md +0 -80
- package/skills/ad-creative-video/SKILL.md +0 -205
- package/skills/ad-creative-video/references/batch-ad-pipeline.md +0 -289
- package/skills/ad-creative-video/references/platform-specs.md +0 -72
- package/skills/after-effects/SKILL.md +0 -123
- package/skills/after-effects/references/export-recipes.md +0 -168
- package/skills/after-effects/references/expression-library.md +0 -184
- package/skills/after-effects/references/expressions.md +0 -134
- package/skills/after-effects/references/performance-triage.md +0 -138
- package/skills/after-effects/references/project-hygiene.md +0 -188
- package/skills/ai-media-quality-review/SKILL.md +0 -72
- package/skills/ai-product-video/SKILL.md +0 -296
- package/skills/ai-product-video/references/aesthetic-rules.md +0 -177
- package/skills/ai-product-video/references/final-review.md +0 -110
- package/skills/ai-product-video/references/guided-free-creation.md +0 -194
- package/skills/ai-product-video/references/music-beat-sync.md +0 -219
- package/skills/ai-product-video/references/pipeline.md +0 -392
- package/skills/ai-product-video/references/sequences/promo-energy-arc.md +0 -50
- package/skills/ai-product-video/references/shots/ATTRIBUTION.md +0 -65
- package/skills/ai-product-video/references/shots/camera/basic-3d-scene.md +0 -37
- package/skills/ai-product-video/references/shots/camera/crash-zoom-punch.md +0 -39
- package/skills/ai-product-video/references/shots/camera/cursor-flyover.md +0 -38
- package/skills/ai-product-video/references/shots/camera/depth-layer-moves.md +0 -40
- package/skills/ai-product-video/references/shots/camera/graze-face-tour.md +0 -57
- package/skills/anidoodle/SKILL.md +0 -185
- package/skills/anidoodle/references/anatomy.md +0 -91
- package/skills/anidoodle/references/backends-and-adapters.md +0 -82
- package/skills/anidoodle/references/camera.md +0 -148
- package/skills/anidoodle/references/craft-bar.md +0 -72
- package/skills/anidoodle/references/determinism-and-contract.md +0 -46
- package/skills/anidoodle/references/formats.md +0 -121
- package/skills/anidoodle/references/motion-grammar.md +0 -234
- package/skills/anidoodle/references/music/compose.md +0 -388
- package/skills/anidoodle/references/music/sound-design.md +0 -245
- package/skills/anidoodle/references/music/sounds-licenses.md +0 -69
- package/skills/anidoodle/references/music/styles/lofi-electronic.md +0 -112
- package/skills/anidoodle/references/music/styles/music-box.md +0 -57
- package/skills/animated-component-libraries/SKILL.md +0 -820
- package/skills/animated-component-libraries/references/customization_guide.md +0 -699
- package/skills/animated-component-libraries/references/magic_ui_components.md +0 -422
- package/skills/animated-component-libraries/references/react_bits_components.md +0 -587
- package/skills/animated-infographic/SKILL.md +0 -211
- package/skills/animated-infographic/references/sequenced-infographic.md +0 -286
- package/skills/appshot-core/SKILL.md +0 -872
- package/skills/article-highlights/SKILL.md +0 -151
- package/skills/avatar-mix/SKILL.md +0 -301
- package/skills/bang-motion/SKILL.md +0 -583
- package/skills/bang-motion/references/ae-bridge-higgsfield.md +0 -160
- package/skills/bang-motion/references/anti-ppt.md +0 -110
- package/skills/bang-motion/references/architecture.md +0 -188
- package/skills/bang-motion/references/explainer.md +0 -579
- package/skills/bang-motion/references/kartun-panggung.md +0 -221
- package/skills/bang-motion/references/opener-konsep.md +0 -817
- package/skills/bang-motion/references/roadmap.md +0 -85
- package/skills/bang-motion/references/techniques.md +0 -690
- package/skills/beat-sync-edit/SKILL.md +0 -148
- package/skills/book-video-factory/SKILL.md +0 -139
- package/skills/book-video-factory/references/first-run.md +0 -50
- package/skills/book-video-factory/references/paper-collage-explainer.md +0 -127
- package/skills/book-video-factory/references/quality-gates.md +0 -87
- package/skills/book-video-production/SKILL.md +0 -211
- package/skills/brag/SKILL.md +0 -195
- package/skills/brag/references/audio.md +0 -312
- package/skills/brag/references/step-1-inspect.md +0 -125
- package/skills/brag/references/step-2-plan.md +0 -234
- package/skills/brag/references/step-3-compose.md +0 -199
- package/skills/brag/references/step-4-deliver.md +0 -141
- package/skills/brag/references/tones.md +0 -231
- package/skills/brand-setup/SKILL.md +0 -228
- package/skills/brewreel/SKILL.md +0 -491
- package/skills/brewreel/docs/broll.en.md +0 -252
- package/skills/brewreel/docs/broll.md +0 -252
- package/skills/brewreel/docs/custom-shot.en.md +0 -66
- package/skills/brewreel/docs/custom-shot.md +0 -103
- package/skills/brewreel/docs/faq.en.md +0 -90
- package/skills/brewreel/docs/faq.md +0 -90
- package/skills/brewreel/docs/features.en.md +0 -157
- package/skills/brewreel/docs/features.md +0 -157
- package/skills/brewreel/docs/gallery.en.md +0 -44
- package/skills/brewreel/docs/gallery.md +0 -44
- package/skills/brewreel/docs/how-it-works.en.md +0 -64
- package/skills/brewreel/docs/how-it-works.md +0 -64
- package/skills/caption-animation/SKILL.md +0 -216
- package/skills/caption-animation/references/word-timed-captions.md +0 -254
- package/skills/cartcut-editing/SKILL.md +0 -615
- package/skills/cartcut-editing/references/html-typography.md +0 -277
- package/skills/cassette-video-edit/SKILL.md +0 -129
- package/skills/ccvideo/SKILL.md +0 -264
- package/skills/chekhov-dramaturgy/SKILL.md +0 -367
- package/skills/chekhov-dramaturgy/reference.md +0 -375
- package/skills/chengfeng-check-updates/SKILL.md +0 -283
- package/skills/cinematic-product-promo-skill/SKILL.md +0 -295
- package/skills/cinematic-product-promo-skill/references/aesthetic-rules.md +0 -187
- package/skills/cinematic-product-promo-skill/references/final-review.md +0 -116
- package/skills/cinematic-product-promo-skill/references/guided-free-creation.md +0 -199
- package/skills/cinematic-product-promo-skill/references/jianying-export.md +0 -183
- package/skills/cinematic-product-promo-skill/references/music-beat-sync.md +0 -257
- package/skills/cinematic-product-promo-skill/references/pipeline.md +0 -393
- package/skills/cinematic-product-promo-skill/references/sequences/promo-energy-arc.md +0 -50
- package/skills/cinematic-product-promo-skill/references/shots/ATTRIBUTION.md +0 -65
- package/skills/cinematic-product-promo-skill/references/shots/camera/basic-3d-scene.md +0 -37
- package/skills/cinematic-product-promo-skill/references/shots/camera/crash-zoom-punch.md +0 -39
- package/skills/cinematic-product-promo-skill/references/shots/camera/cursor-flyover.md +0 -38
- package/skills/cinematic-product-promo-skill/references/shots/camera/depth-layer-moves.md +0 -40
- package/skills/claude-gif/SKILL.md +0 -211
- package/skills/claude-gif/references/gif-optimization.md +0 -209
- package/skills/claude-gif/references/perfect-loops.md +0 -295
- package/skills/claude-gif/references/platform-specs.md +0 -138
- package/skills/claude-gif/references/prompt-engineering.md +0 -211
- package/skills/claude-gif/references/remotion-gif.md +0 -560
- package/skills/codex-video-pipeline/SKILL.md +0 -213
- package/skills/codex-video-pipeline/examples/ai-meeting-notes/INPUT.md +0 -10
- package/skills/codex-video-pipeline/examples/ai-meeting-notes/expected/action-list.md +0 -22
- package/skills/codex-video-pipeline/references/captions.md +0 -39
- package/skills/codex-video-pipeline/references/cover-system.md +0 -72
- package/skills/codex-video-pipeline/references/cross-platform.md +0 -77
- package/skills/codex-video-pipeline/references/example-run.md +0 -54
- package/skills/codex-video-pipeline/references/first-run.md +0 -130
- package/skills/codex-video-pipeline/references/project-contract.md +0 -54
- package/skills/codex-video-pipeline/references/quality-gates.md +0 -44
- package/skills/codex-video-pipeline/references/research-and-script.md +0 -50
- package/skills/collage-broll-explainers/SKILL.md +0 -429
- package/skills/create-onboarding-video/SKILL.md +0 -233
- package/skills/cs-shotcraft-skill/SKILL.md +0 -218
- package/skills/cs-shotcraft-skill/references/aesthetic-rules.md +0 -207
- package/skills/cs-shotcraft-skill/references/camera-table.md +0 -88
- package/skills/cs-shotcraft-skill/references/engineering.md +0 -132
- package/skills/cs-shotcraft-skill/references/final-review.md +0 -118
- package/skills/cs-shotcraft-skill/references/guided-free-creation.md +0 -199
- package/skills/cs-shotcraft-skill/references/jianying-export.md +0 -183
- package/skills/cs-shotcraft-skill/references/music-beat-sync.md +0 -257
- package/skills/cs-shotcraft-skill/references/pipeline.md +0 -408
- package/skills/cs-shotcraft-skill/references/product-machine.md +0 -56
- package/skills/cs-shotcraft-skill/references/sequences/promo-energy-arc.md +0 -50
- package/skills/cs-shotcraft-skill/references/shots/ATTRIBUTION.md +0 -65
- package/skills/cs-shotcraft-skill/references/shots/camera/basic-3d-scene.md +0 -37
- package/skills/cut-video/SKILL.md +0 -387
- package/skills/cyxj-hyperframes-overlay/SKILL.md +0 -75
- package/skills/cyxj-remotion-evolve/SKILL.md +0 -123
- package/skills/cyxj-remotion-evolve-vibe-motion/SKILL.md +0 -123
- package/skills/demo-video-creation-skill/SKILL.md +0 -152
- package/skills/demo-video-creation-skill/references/capture-workflow.md +0 -74
- package/skills/demo-video-creation-skill/references/qc-checklist.md +0 -61
- package/skills/demo-video-creation-skill/references/remotion-ffmpeg.md +0 -94
- package/skills/demo-video-creation-skill/references/storytelling.md +0 -86
- package/skills/demo-video-creation-skill/references/visual-system.md +0 -83
- package/skills/demoday/SKILL.md +0 -148
- package/skills/develop-premiere-pro-mcp/SKILL.md +0 -131
- package/skills/diagram-animation/SKILL.md +0 -200
- package/skills/diagram-animation/references/diagram-and-chart-recipes.md +0 -218
- package/skills/diagram-tour/SKILL.md +0 -287
- package/skills/diagram-tour/examples/agent-architecture/agent-architecture-tour.md +0 -78
- package/skills/docvideoer/SKILL.md +0 -139
- package/skills/draftcut/SKILL.md +0 -104
- package/skills/draftcut/docs/agent-bootstrap.md +0 -64
- package/skills/draftcut/docs/approvals.md +0 -45
- package/skills/draftcut/docs/audio-first-migration.md +0 -35
- package/skills/draftcut/docs/configuration.md +0 -54
- package/skills/draftcut/docs/getting-started.md +0 -63
- package/skills/draftcut/docs/harness-case-study.en.md +0 -23
- package/skills/draftcut/docs/harness-case-study.md +0 -47
- package/skills/draftcut/references/01-plan.md +0 -30
- package/skills/draftcut/references/03-deliver.md +0 -26
- package/skills/draftcut/references/04-reference-theme-prompt.md +0 -7
- package/skills/draftcut/references/05-social-loudness.md +0 -58
- package/skills/draftcut/references/06-modern-components.md +0 -72
- package/skills/easyedit/SKILL.md +0 -66
- package/skills/erduo-broll-loop-engineering/SKILL.md +0 -136
- package/skills/erduo-broll-loop-engineering/references/animation-craft.md +0 -208
- package/skills/erduo-broll-loop-engineering/references/first-run-onboarding.md +0 -107
- package/skills/erduo-broll-loop-engineering/references/handoff-template.md +0 -70
- package/skills/erduo-broll-loop-engineering/references/motion-layout-lint.md +0 -122
- package/skills/erduo-broll-loop-engineering/references/parent-review-checklist.md +0 -171
- package/skills/erduo-broll-loop-engineering/references/prompt-first-workflow.md +0 -322
- package/skills/erduo-broll-loop-engineering/references/remotion-backend.md +0 -334
- package/skills/erduo-broll-loop-engineering/references/runtime/remotion-hyperframes-map.md +0 -76
- package/skills/erduo-broll-loop-engineering/references/runtime/runtime-contract.md +0 -174
- package/skills/erduo-broll-loop-engineering/references/runtime/runtime-selection.md +0 -135
- package/skills/erduo-broll-loop-engineering/references/shotcraft/remotion-sources/SOURCE.md +0 -7
- package/skills/erduo-broll-loop-engineering/references/shotcraft/upstream-attribution.md +0 -65
- package/skills/explainer-assets/SKILL.md +0 -98
- package/skills/explainer-video/SKILL.md +0 -146
- package/skills/framewright/SKILL.md +0 -324
- package/skills/framewright/references/audio.md +0 -230
- package/skills/framewright/references/guide.md +0 -276
- package/skills/framewright/references/painting.md +0 -425
- package/skills/framewright/references/photo.md +0 -75
- package/skills/framewright/references/questionnaire.md +0 -115
- package/skills/framewright/references/styles.md +0 -388
- package/skills/framewright/references/troubleshooting.md +0 -119
- package/skills/framewright/references/world.md +0 -215
- package/skills/gbro-collage-broll/SKILL.md +0 -435
- package/skills/gbro-collage-info/SKILL.md +0 -135
- package/skills/gbro-collage-info/references/motion-grammar.md +0 -66
- package/skills/gbro-collage-info/references/production.md +0 -67
- package/skills/gbro-collage-info/references/style-system.md +0 -38
- package/skills/gemini-tts/SKILL.md +0 -208
- package/skills/gemini-tts/references/prompting-guide.md +0 -169
- package/skills/gen/SKILL.md +0 -282
- package/skills/ghost-editor/SKILL.md +0 -437
- package/skills/ghost-editor/docs/HOW-IT-WORKS.md +0 -82
- package/skills/ghost-editor/docs/PLAYBOOK.md +0 -139
- package/skills/ghost-editor/docs/THIRD_PARTY/audio.md +0 -17
- package/skills/ghost-editor/docs/THIRD_PARTY/audioqa.md +0 -13
- package/skills/ghost-editor/docs/THIRD_PARTY/captions.md +0 -20
- package/skills/ghost-editor/docs/THIRD_PARTY/fonts.md +0 -17
- package/skills/ghost-editor/docs/THIRD_PARTY/kinetic.md +0 -22
- package/skills/ghost-editor/docs/THIRD_PARTY/looks.md +0 -22
- package/skills/ghost-editor/docs/THIRD_PARTY/matte.md +0 -20
- package/skills/ghost-editor/docs/THIRD_PARTY/models.md +0 -11
- package/skills/ghost-editor/docs/THIRD_PARTY/runtime.md +0 -13
- package/skills/ghost-editor/docs/THIRD_PARTY/shaders.md +0 -15
- package/skills/git-story-film/SKILL.md +0 -220
- package/skills/git-story-film/examples/raven-story/FONTS.md +0 -8
- package/skills/git-story-film/examples/raven-story/OUTLINE.md +0 -93
- package/skills/git-story-film/references/craft.md +0 -148
- package/skills/git-story-film/references/directing.md +0 -185
- package/skills/git-story-film/references/forms.md +0 -150
- package/skills/git-story-film/references/production.md +0 -150
- package/skills/git-story-film/references/story.md +0 -137
- package/skills/git-story-film/references/text-and-fonts.md +0 -90
- package/skills/guizang-product-video-skill/SKILL.md +0 -96
- package/skills/guizang-product-video-skill/references/audio-and-qa.md +0 -113
- package/skills/guizang-product-video-skill/references/audio-sourcing.md +0 -80
- package/skills/guizang-product-video-skill/references/case-study.md +0 -63
- package/skills/guizang-product-video-skill/references/component-pipeline.md +0 -86
- package/skills/guizang-product-video-skill/references/cover.md +0 -43
- package/skills/guizang-product-video-skill/references/direction.md +0 -91
- package/skills/guizang-product-video-skill/references/onboarding.md +0 -98
- package/skills/guizang-product-video-skill/references/repo-and-style.md +0 -44
- package/skills/guizang-product-video-skill/references/review.md +0 -38
- package/skills/guizang-product-video-skill/references/starter.md +0 -168
- package/skills/guizang-product-video-skill/references/story-and-copy.md +0 -88
- package/skills/guizang-product-video-skill/references/visual-vocabulary.md +0 -78
- package/skills/guofeng-paper-video/SKILL.md +0 -159
- package/skills/guofeng-paper-video/style/design.md +0 -43
- package/skills/guofeng-paper-video/style/palette.md +0 -21
- package/skills/guofeng-paper-video/style/prompts/01-/345/210/206/351/225/234/350/241/250.md +0 -19
- package/skills/guofeng-paper-video/style/prompts/02-/347/224/237/346/210/220/347/272/270/347/211/207.md +0 -37
- package/skills/guofeng-paper-video/style/prompts/03-/351/205/215/351/237/263/350/204/232/346/234/254.md +0 -27
- package/skills/guofeng-paper-video/style//345/210/206/351/225/234/344/270/216/345/233/276/345/261/202/350/247/204/350/214/203.md +0 -67
- package/skills/guofeng-paper-video/style//347/272/270/347/211/207/347/264/240/346/235/220/350/247/204/350/214/203.md +0 -29
- package/skills/hand-drawn-explainer-video-nikola/SKILL.md +0 -113
- package/skills/hand-drawn-explainer-video-nikola/docs/ARCHITECTURE.md +0 -18
- package/skills/hand-drawn-explainer-video-nikola/docs/CONFIGURATION.md +0 -22
- package/skills/hand-drawn-explainer-video-nikola/docs/STYLES.md +0 -28
- package/skills/hand-drawn-explainer-video-nikola/docs/TROUBLESHOOTING.md +0 -35
- package/skills/hand-drawn-explainer-video-nikola/examples/program-animation/skill-demo/DESIGN.md +0 -24
- package/skills/hand-drawn-explainer-video-nikola/references/automation-workflow.md +0 -67
- package/skills/hand-drawn-explainer-video-nikola/references/output-example.md +0 -79
- package/skills/hand-drawn-explainer-video-nikola/references/preflight-and-recovery.md +0 -49
- package/skills/hand-drawn-explainer-video-nikola/references/style-guide.md +0 -82
- package/skills/hand-drawn-explainer-video-nikola/references/style-selection-and-updates.md +0 -39
- package/skills/hand-drawn-explainer-video-nikola/references/upstream-whiteboard-review.md +0 -30
- package/skills/hand-drawn-explainer-video-nikola/references/voiceover.md +0 -37
- package/skills/hbg-life-simulation/SKILL.md +0 -285
- package/skills/hbg-life-simulation/references/image-generation.md +0 -53
- package/skills/hbg-life-simulation/references/local-account-api.md +0 -112
- package/skills/hbg-life-simulation/references/opening-system.md +0 -45
- package/skills/hbg-life-simulation/references/project-spec.md +0 -62
- package/skills/hbg-life-simulation/references/render-and-qa.md +0 -107
- package/skills/hbg-life-simulation/references/storyboarding.md +0 -69
- package/skills/hbg-life-simulation/references/style-system.md +0 -80
- package/skills/hbg-life-simulation/references/visual-system.md +0 -44
- package/skills/heygen-avatar/SKILL.md +0 -489
- package/skills/heygen-avatar/references/asset-routing.md +0 -86
- package/skills/heygen-avatar/references/avatar-creation.md +0 -181
- package/skills/heygen-avatar/references/troubleshooting.md +0 -137
- package/skills/heytea-doodle-poster/SKILL.md +0 -132
- package/skills/heytea-doodle-poster/references/desktop-pet-character-modes.md +0 -103
- package/skills/heytea-doodle-poster/references/desktop-pet-environment.md +0 -122
- package/skills/heytea-doodle-poster/references/desktop-pet-pack.md +0 -106
- package/skills/heytea-doodle-poster/references/desktop-pet-workflow.md +0 -264
- package/skills/heytea-doodle-poster/references/evaluation.md +0 -246
- package/skills/heytea-doodle-poster/references/lettering-guide.md +0 -213
- package/skills/heytea-doodle-poster/references/mixed-media-style-guide.md +0 -101
- package/skills/heytea-doodle-poster/references/monster-poster-workflow.md +0 -56
- package/skills/heytea-doodle-poster/references/style-guide.md +0 -412
- package/skills/heytea-doodle-poster-hosted/SKILL.md +0 -132
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-character-modes.md +0 -103
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-environment.md +0 -122
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-pack.md +0 -106
- package/skills/heytea-doodle-poster-hosted/references/desktop-pet-workflow.md +0 -264
- package/skills/heytea-doodle-poster-hosted/references/evaluation.md +0 -246
- package/skills/heytea-doodle-poster-hosted/references/lettering-guide.md +0 -213
- package/skills/heytea-doodle-poster-hosted/references/mixed-media-style-guide.md +0 -101
- package/skills/heytea-doodle-poster-hosted/references/monster-poster-workflow.md +0 -56
- package/skills/heytea-doodle-poster-hosted/references/style-guide.md +0 -412
- package/skills/html2video/SKILL.md +0 -290
- package/skills/html2video/references/cjk-type.md +0 -173
- package/skills/html2video/references/editorial.md +0 -145
- package/skills/html2video/references/narration.md +0 -111
- package/skills/html2video/references/pitfalls.md +0 -238
- package/skills/html2video/references/shots.md +0 -198
- package/skills/html2video/references/storyboard.md +0 -323
- package/skills/hyperdirector/SKILL.md +0 -202
- package/skills/hyperdirector/docs/audio-workflow.md +0 -160
- package/skills/hyperdirector/docs/audio-workflow.zh-CN.md +0 -244
- package/skills/hyperdirector/docs/brand-kit-setup.md +0 -322
- package/skills/hyperdirector/docs/brand-kit-setup.zh-CN.md +0 -277
- package/skills/hyperdirector/docs/cursor-development-notes.md +0 -474
- package/skills/hyperdirector/docs/faq.md +0 -285
- package/skills/hyperdirector/docs/faq.zh-CN.md +0 -198
- package/skills/hyperdirector/docs/first-video.md +0 -320
- package/skills/hyperdirector/docs/first-video.zh-CN.md +0 -265
- package/skills/hyperdirector/docs/installation.md +0 -254
- package/skills/hyperdirector/docs/installation.zh-CN.md +0 -222
- package/skills/hyperdirector/docs/quickstart.md +0 -203
- package/skills/hyperframes/SKILL.md +0 -117
- package/skills/hyperframes/references/captions.md +0 -46
- package/skills/hyperframes/references/film.md +0 -48
- package/skills/hyperframes/references/format.md +0 -158
- package/skills/hyperframes/references/look.md +0 -69
- package/skills/hyperframes/references/motion.md +0 -95
- package/skills/hyperframes/references/overlays.md +0 -39
- package/skills/hyperframes/references/review.md +0 -51
- package/skills/hyperframes/references/runtimes.md +0 -69
- package/skills/hyperframes/references/skill-lifecycle.md +0 -49
- package/skills/hyperframes/references/sound.md +0 -43
- package/skills/hyperframes/references/spec.md +0 -76
- package/skills/hyperframes/references/story.md +0 -103
- package/skills/hyperframes-motion-director/SKILL.md +0 -920
- package/skills/hyperframes-motion-director/references/asset-choreography-and-render-qa.md +0 -185
- package/skills/hyperframes-motion-director/references/audio-sync.md +0 -83
- package/skills/hyperframes-motion-director/references/design-engineering.md +0 -156
- package/skills/hyperframes-motion-director/references/gsap-choreography.md +0 -202
- package/skills/hyperframes-motion-director/references/hyperframes-stability.md +0 -99
- package/skills/hyperframes-motion-director/references/imagegen-asset-pipeline.md +0 -227
- package/skills/hyperframes-motion-director/references/motion-background-system.md +0 -165
- package/skills/hyperframes-motion-director/references/motion-craft.md +0 -182
- package/skills/hyperframes-motion-director/references/premium-product-promo.md +0 -287
- package/skills/hyperframes-motion-director/references/text-over-background-layout.md +0 -221
- package/skills/hyperframes-motion-director/references/visual-standard.md +0 -174
- package/skills/hyperframes-motion-director/references/workflow.md +0 -320
- package/skills/hypit/SKILL.md +0 -367
- package/skills/hypit/references/creation/brief.md +0 -93
- package/skills/hypit/references/creation/script-and-time.md +0 -259
- package/skills/hypit/references/creation/transformations.md +0 -143
- package/skills/hypit/references/playbooks/craft/b-roll.md +0 -94
- package/skills/hypit/references/playbooks/craft/caption-tracking.md +0 -126
- package/skills/hypit/references/playbooks/craft/captions.md +0 -253
- package/skills/hypit/references/playbooks/craft/generated-dependencies.md +0 -38
- package/skills/hypit/references/playbooks/craft/graphic-compositions.md +0 -85
- package/skills/hypit/references/playbooks/craft/motion-graphics.md +0 -68
- package/skills/hypit/references/playbooks/craft/screen-demonstrations.md +0 -51
- package/skills/hypit/references/playbooks/craft/sound-mix.md +0 -70
- package/skills/hypit/references/playbooks/formats/narration-led-demo.md +0 -87
- package/skills/image/SKILL.md +0 -153
- package/skills/image/references/characters.md +0 -86
- package/skills/image/references/creative-direction.md +0 -137
- package/skills/image/references/de-slop.md +0 -95
- package/skills/image/references/dimensional.md +0 -88
- package/skills/image/references/editing.md +0 -112
- package/skills/image/references/golden-rules.md +0 -198
- package/skills/image/references/gpt-image.md +0 -228
- package/skills/image/references/models.md +0 -78
- package/skills/image/references/multi-panel.md +0 -354
- package/skills/image/references/nano-banana.md +0 -150
- package/skills/image/references/patterns/character-design.md +0 -150
- package/skills/image/references/patterns/ecommerce.md +0 -124
- package/skills/image-smixs/SKILL.md +0 -153
- package/skills/image-smixs/references/characters.md +0 -86
- package/skills/image-smixs/references/creative-direction.md +0 -137
- package/skills/image-smixs/references/de-slop.md +0 -95
- package/skills/image-smixs/references/dimensional.md +0 -88
- package/skills/image-smixs/references/editing.md +0 -112
- package/skills/image-smixs/references/golden-rules.md +0 -198
- package/skills/image-smixs/references/gpt-image.md +0 -228
- package/skills/image-smixs/references/models.md +0 -78
- package/skills/image-smixs/references/multi-panel.md +0 -354
- package/skills/image-smixs/references/nano-banana.md +0 -150
- package/skills/image-smixs/references/patterns/character-design.md +0 -150
- package/skills/image-smixs/references/patterns/ecommerce.md +0 -124
- package/skills/image-story-video-wizard/SKILL.md +0 -148
- package/skills/image-story-video-wizard/docs/ARTICLE_ALIGNMENT.md +0 -29
- package/skills/image-story-video-wizard/references/host-routing.md +0 -44
- package/skills/image-story-video-wizard/references/state-schema.md +0 -79
- package/skills/image-story-video-wizard/references/workflow.md +0 -203
- package/skills/image-story-video-wizard/references/writing-and-review.md +0 -60
- package/skills/ip-as-logo/SKILL.md +0 -151
- package/skills/ip-as-logo-s1dashu/SKILL.md +0 -151
- package/skills/jtxvideo-skill/SKILL.md +0 -337
- package/skills/kinetic-reel/SKILL.md +0 -140
- package/skills/kinetic-reel/examples/work-reel-26/STORYBOARD.md +0 -51
- package/skills/kinetic-reel/references/sound.md +0 -40
- package/skills/kinetic-reel/references/style-guide.md +0 -79
- package/skills/knowledge-explainer-skill/SKILL.md +0 -149
- package/skills/knowledge-explainer-skill/examples/ai_video_3steps.md +0 -61
- package/skills/knowledge-explainer-skill/examples/algorithm_bubble.md +0 -20
- package/skills/knowledge-explainer-skill/examples/before_after_demo.md +0 -38
- package/skills/knowledge-explainer-skill/examples/cta_outro.md +0 -11
- package/skills/knowledge-explainer-skill/examples/double_pendulum.md +0 -20
- package/skills/knowledge-explainer-skill/examples/paper_fold.md +0 -20
- package/skills/knowledge-explainer-skill/examples/script.md +0 -40
- package/skills/lanshu-create-ai-presenter-video/SKILL.md +0 -253
- package/skills/lanshu-create-ai-presenter-video/references/editing.md +0 -67
- package/skills/lanshu-create-ai-presenter-video/references/generation.md +0 -94
- package/skills/lanshu-create-ai-presenter-video/references/qa-recovery.md +0 -83
- package/skills/lanshu-create-ai-presenter-video/references/styled-explainer.md +0 -189
- package/skills/laoxu-video-script/SKILL.md +0 -117
- package/skills/laoxu-video-script/references/cases.md +0 -305
- package/skills/laoxu-video-script/references/de-ai.md +0 -32
- package/skills/laoxu-video-script/references/diagnostics.md +0 -67
- package/skills/laoxu-video-script/references/format.md +0 -62
- package/skills/laoxu-video-script/references/formulas.md +0 -43
- package/skills/laoxu-video-script/references/method.md +0 -115
- package/skills/laoxu-video-script/references/motifs-and-lines.md +0 -829
- package/skills/laoxu-video-script/references/persona.md +0 -38
- package/skills/laoxu-video-script/references/qihao-path.md +0 -35
- package/skills/laoxu-video-script/references/qihao-xinfa.md +0 -39
- package/skills/laoxu-video-script/references/redlines.md +0 -26
- package/skills/lemo-opuscar/SKILL.md +0 -67
- package/skills/lipnardo/SKILL.md +0 -308
- package/skills/lipnardo/examples/batch-personalized.md +0 -44
- package/skills/lipnardo/examples/photo-to-avatar-pipeline.md +0 -56
- package/skills/lipnardo/examples/single-video.md +0 -44
- package/skills/lipnardo/references/avatar-types.md +0 -42
- package/skills/lipnardo/references/credit-costs.md +0 -39
- package/skills/lipnardo/references/error-codes.md +0 -66
- package/skills/lipnardo/references/heygen-api-reference.md +0 -416
- package/skills/ll-video-decomposer/SKILL.md +0 -105
- package/skills/ll-video-decomposer/references/audiovisual-analysis-guide.md +0 -44
- package/skills/ll-video-decomposer/references/evidence-and-confidence-rules.md +0 -41
- package/skills/ll-video-decomposer/references/multi-video-comparison-template.md +0 -48
- package/skills/ll-video-decomposer/references/single-video-report-template.md +0 -47
- package/skills/ll-video-decomposer/references/tool-discovery-workflow.md +0 -30
- package/skills/ll-video-decomposer/references/transcription-routing.md +0 -65
- package/skills/ll-video-decomposer/references/video-acquisition-workflow.md +0 -30
- package/skills/ltx2-video/SKILL.md +0 -193
- package/skills/ltx2-video/references/mode_ux.md +0 -293
- package/skills/make-ai-short/SKILL.md +0 -130
- package/skills/make-blender-education-video/SKILL.md +0 -247
- package/skills/make-blender-education-video/references/evidence-and-explanation.md +0 -62
- package/skills/make-blender-education-video/references/github-workflow-discovery.md +0 -55
- package/skills/make-blender-education-video/references/production-workflow.md +0 -62
- package/skills/make-blender-education-video/references/story-patterns.md +0 -65
- package/skills/make-blender-education-video/references/visual-quality.md +0 -82
- package/skills/manage-storyboard-projects/SKILL.md +0 -128
- package/skills/manim-composer/SKILL.md +0 -176
- package/skills/manim-composer/references/narrative-patterns.md +0 -125
- package/skills/manim-composer/references/scene-examples.md +0 -216
- package/skills/manim-composer/references/visual-techniques.md +0 -223
- package/skills/manim-composer/templates/scenes-template.md +0 -147
- package/skills/monet-ai-editor-monet/SKILL.md +0 -367
- package/skills/motion-graphics/SKILL.md +0 -206
- package/skills/motion-graphics/references/craft.md +0 -136
- package/skills/motion-graphics/references/engine.md +0 -130
- package/skills/motion-graphics/references/export.md +0 -67
- package/skills/motion-graphics/references/physics.md +0 -100
- package/skills/motion-graphics/references/verify.md +0 -124
- package/skills/motion-video/SKILL.md +0 -133
- package/skills/motion-video/references/audio-and-beat-sync.md +0 -109
- package/skills/motion-video/references/composition-contract.md +0 -107
- package/skills/motion-video/references/production-pipeline.md +0 -147
- package/skills/motion-video/references/style-comic-spiderverse.md +0 -87
- package/skills/motion-video/references/style-glass-keynote.md +0 -69
- package/skills/motion-video-maker/SKILL.md +0 -1452
- package/skills/motion-video-maker/reference/components.md +0 -451
- package/skills/motion-video-maker/reference/workflow.md +0 -190
- package/skills/motioncraft/SKILL.md +0 -221
- package/skills/motioncraft/references/animation-system.md +0 -57
- package/skills/motioncraft/references/assets-and-licensing.md +0 -21
- package/skills/motioncraft/references/customization.md +0 -52
- package/skills/motioncraft/references/gpu-cloud-render.md +0 -15
- package/skills/motioncraft/references/music.md +0 -43
- package/skills/motioncraft/references/phase1-planning-and-preview.md +0 -74
- package/skills/motioncraft/references/phase2-timeline-audio.md +0 -33
- package/skills/motioncraft/references/phase3-pixel-review.md +0 -13
- package/skills/motioncraft/references/phase4-templates.md +0 -30
- package/skills/motioncraft/references/preflight.md +0 -27
- package/skills/motioncraft/references/qa.md +0 -53
- package/skills/motioncraft/references/reference-analysis.md +0 -37
- package/skills/narrator-ai-cli/SKILL.md +0 -256
- package/skills/narrator-ai-cli/references/magic-video.md +0 -205
- package/skills/narrator-ai-cli/references/operations.md +0 -230
- package/skills/narrator-ai-cli/references/resources.md +0 -126
- package/skills/narrator-ai-cli/references/workflows.md +0 -332
- package/skills/newcut-video-clipping/SKILL.md +0 -194
- package/skills/newcut-video-clipping/references/examples.md +0 -59
- package/skills/newcut-video-clipping/references/provider-config.md +0 -110
- package/skills/newcut-video-clipping/references/quality-check.md +0 -35
- package/skills/newcut-video-clipping/references/semantic-plan.md +0 -65
- package/skills/notes-to-video/SKILL.md +0 -476
- package/skills/openchatcut/SKILL.md +0 -100
- package/skills/openchatcut/references/editing-workflow.md +0 -54
- package/skills/openchatcut/references/getting-started.md +0 -106
- package/skills/openchatcut/references/known-errors.md +0 -62
- package/skills/openstoryline-install/SKILL.md +0 -228
- package/skills/orca-motion/SKILL.md +0 -100
- package/skills/orca-motion/references/api.md +0 -100
- package/skills/orca-motion/references/integration.md +0 -59
- package/skills/orca-motion/references/kinetic-type.md +0 -59
- package/skills/orca-motion/references/principles.md +0 -76
- package/skills/package-talking-head-video/SKILL.md +0 -90
- package/skills/package-talking-head-video/docs/EXAMPLES.md +0 -18
- package/skills/package-talking-head-video/docs/TROUBLESHOOTING.md +0 -29
- package/skills/package-talking-head-video/docs/USAGE.md +0 -83
- package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-multicolor-center-speaker.md +0 -144
- package/skills/package-talking-head-video/docs/superpowers/plans/2026-08-08-semantic-template-system-v2.md +0 -1099
- package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-multicolor-center-speaker-design.md +0 -154
- package/skills/package-talking-head-video/docs/superpowers/specs/2026-08-08-semantic-template-system-v2-design.md +0 -365
- package/skills/package-talking-head-video/examples/auto-editing-0/GATE_A.md +0 -56
- package/skills/package-talking-head-video/examples/auto-editing-0/GATE_D.md +0 -8
- package/skills/package-talking-head-video/examples/auto-editing-0/QA_REPORT.md +0 -34
- package/skills/package-talking-head-video/references/director-rules.md +0 -29
- package/skills/package-talking-head-video/references/motion-and-illustration.md +0 -25
- package/skills/paper-cut/SKILL.md +0 -164
- package/skills/paper-cut/references/asset-spec.md +0 -47
- package/skills/paper-cut/references/audio-and-chatcut.md +0 -26
- package/skills/paper-cut/references/hyperframes-assembly.md +0 -47
- package/skills/paper-cut/references/image-led-production.md +0 -65
- package/skills/paper-cut/references/storyboard-schema.md +0 -48
- package/skills/paper-cut/references/workflow.md +0 -39
- package/skills/personal-ip-brand-intro/SKILL.md +0 -216
- package/skills/personal-ip-brand-intro/references/intake-schema.md +0 -79
- package/skills/personal-ip-brand-intro/references/music-upload-workflow.md +0 -40
- package/skills/personal-ip-brand-intro/references/originality-rules.md +0 -42
- package/skills/personal-ip-brand-intro/references/qa-checklist.md +0 -60
- package/skills/personal-ip-brand-intro/references/rhythm-routing.md +0 -41
- package/skills/personal-ip-brand-intro/references/storyboard-contract.md +0 -42
- package/skills/pixel2motion/SKILL.md +0 -279
- package/skills/pixel2motion/references/html-delivery-template.md +0 -42
- package/skills/pixel2motion/references/motion-personality.md +0 -109
- package/skills/pixel2motion/references/reveal-patterns.md +0 -163
- package/skills/pixel2motion/references/ribbon-fitting.md +0 -90
- package/skills/pixel2motion/references/twelve-principles-for-logos.md +0 -116
- package/skills/premiere-batch-delivery/SKILL.md +0 -71
- package/skills/premiere-pro-mcp/SKILL.md +0 -161
- package/skills/promo-creator-skills/SKILL.md +0 -209
- package/skills/promo-creator-skills/references/mureka_prompt_guide.md +0 -251
- package/skills/promo-creator-skills/references/product_promo_bgm_prompting.md +0 -100
- package/skills/promo-video/SKILL.md +0 -408
- package/skills/qisi-video-remix/SKILL.md +0 -134
- package/skills/qisi-video-remix/examples/creative-plan.md +0 -133
- package/skills/qisi-video-remix/references/delivery-guide.md +0 -63
- package/skills/reel-video/SKILL.md +0 -237
- package/skills/remotion-ad-video/SKILL.md +0 -252
- package/skills/remotion-ad-video/references/ad-aesthetic-qa.md +0 -60
- package/skills/remotion-ad-video/references/ad-brief-contract.md +0 -235
- package/skills/remotion-ad-video/references/ad-exemplars.md +0 -186
- package/skills/remotion-ad-video/references/ad-intake.md +0 -54
- package/skills/remotion-ad-video/references/asset-harvest.md +0 -56
- package/skills/remotion-ad-video/references/audio-caption-system.md +0 -202
- package/skills/remotion-ad-video/references/concept-contract.md +0 -128
- package/skills/remotion-ad-video/references/creative-direction.md +0 -146
- package/skills/remotion-ad-video/references/fast-test-workflow.md +0 -86
- package/skills/remotion-ad-video/references/game-ad-patterns.md +0 -75
- package/skills/remotion-ad-video/references/hyperframes-output.md +0 -90
- package/skills/remotion-ad-video/references/industry-angle-library.md +0 -71
- package/skills/remotion-ads/SKILL.md +0 -278
- package/skills/remotion-ads/references/ad-copywriting.md +0 -229
- package/skills/remotion-ads/references/animations.md +0 -693
- package/skills/remotion-ads/references/brand-config-template.md +0 -355
- package/skills/remotion-ads/references/captions.md +0 -529
- package/skills/remotion-ads/references/carousels.md +0 -580
- package/skills/remotion-ads/references/components.md +0 -897
- package/skills/remotion-ads/references/copy-frameworks.md +0 -144
- package/skills/remotion-ads/references/formats.md +0 -436
- package/skills/remotion-ads/references/gemini-tts.md +0 -473
- package/skills/remotion-ads/references/html-in-canvas.md +0 -555
- package/skills/remotion-ads/references/local-assets.md +0 -543
- package/skills/remotion-ads/references/music.md +0 -656
- package/skills/remotion-code-motion-explainer/SKILL.md +0 -178
- package/skills/remotion-code-motion-explainer/references/code-motion-design.md +0 -86
- package/skills/remotion-code-motion-explainer/references/motion-production-patterns.md +0 -93
- package/skills/remotion-code-motion-explainer/references/production-and-qc.md +0 -99
- package/skills/remotion-code-motion-explainer/references/reference-reconstruction.md +0 -48
- package/skills/remotion-code-motion-explainer/references/ui-motion-shot-library.md +0 -62
- package/skills/remotion-motion-graphics/SKILL.md +0 -169
- package/skills/remotion-motion-graphics/references/patterns.md +0 -355
- package/skills/remotion-motion-graphics/references/polish.md +0 -102
- package/skills/remotion-motion-graphics/references/scaffold.md +0 -144
- package/skills/remotion-motion-graphics/references/traps.md +0 -152
- package/skills/remotion-resemble-ai/SKILL.md +0 -879
- package/skills/remotion-resemble-ai/rules/resemble-captions.md +0 -350
- package/skills/remotion-resemble-ai/rules/resemble-remotion-integration.md +0 -305
- package/skills/remotion-resemble-ai/rules/resemble-setup.md +0 -284
- package/skills/remotion-resemble-ai/rules/resemble-streaming-tts.md +0 -225
- package/skills/remotion-resemble-ai/rules/resemble-sync-tts.md +0 -239
- package/skills/remotion-resemble-ai/rules/resemble-voices.md +0 -213
- package/skills/remotion-resemble-ai/rules/visual-animations.md +0 -567
- package/skills/riffkit/SKILL.md +0 -196
- package/skills/riffkit/examples/any-look-styles.md +0 -11
- package/skills/riffkit/examples/faceless-and-auto.md +0 -16
- package/skills/riffkit/examples/localize-spanish.md +0 -18
- package/skills/riffkit/examples/tiktok-shop-product.md +0 -22
- package/skills/riffkit/references/anchor.md +0 -62
- package/skills/riffkit/references/api.md +0 -806
- package/skills/riffkit/references/details.md +0 -153
- package/skills/riffkit/references/errors.md +0 -69
- package/skills/riffkit/references/intents.md +0 -29
- package/skills/saas-motion-video/SKILL.md +0 -71
- package/skills/script-to-video/SKILL.md +0 -2627
- package/skills/shorts/SKILL.md +0 -372
- package/skills/shorts/references/caption-styles.md +0 -105
- package/skills/shorts/references/platform-specs.md +0 -149
- package/skills/shorts/references/remotion-patterns.md +0 -180
- package/skills/shorts/references/scoring-rubric.md +0 -106
- package/skills/smart-video-editor/SKILL.md +0 -327
- package/skills/smart-video-editor/docs/FONTS.md +0 -57
- package/skills/story-telling/SKILL.md +0 -222
- package/skills/story-telling/rules/composition.md +0 -130
- package/skills/story-telling/rules/images.md +0 -119
- package/skills/story-telling/rules/models.md +0 -98
- package/skills/story-telling/rules/narration.md +0 -87
- package/skills/story-telling/rules/pitfalls.md +0 -140
- package/skills/story-telling/rules/story-formats.md +0 -108
- package/skills/story-telling/rules/story-json.md +0 -143
- package/skills/story-telling/rules/voices.md +0 -114
- package/skills/story-telling/rules/workflow.md +0 -105
- package/skills/story-to-handdrawn-video/SKILL.md +0 -216
- package/skills/story-to-handdrawn-video/references/asset-workflow.md +0 -24
- package/skills/story-to-handdrawn-video/references/reference-style-workflow.md +0 -27
- package/skills/su-card-to-video/SKILL.md +0 -103
- package/skills/talking-head-video-pipeline/SKILL.md +0 -224
- package/skills/talking-head-video-pipeline/examples/prompts.md +0 -217
- package/skills/talking-head-video-pipeline/references/asr-adapters.md +0 -51
- package/skills/talking-head-video-pipeline/references/caption-workflow.md +0 -53
- package/skills/talking-head-video-pipeline/references/export-recipes.md +0 -78
- package/skills/talking-head-video-pipeline/references/layout-safety.md +0 -49
- package/skills/talking-head-video-pipeline/references/video-use-integration.md +0 -71
- package/skills/talking-head-video-pipeline/references/workflows/captions.md +0 -52
- package/skills/talking-head-video-pipeline/references/workflows/design.md +0 -77
- package/skills/talking-head-video-pipeline/references/workflows/doctor.md +0 -51
- package/skills/talking-head-video-pipeline/references/workflows/export.md +0 -50
- package/skills/talking-head-video-pipeline/references/workflows/init.md +0 -51
- package/skills/talking-head-video-pipeline/references/workflows/learn.md +0 -36
- package/skills/text-to-lottie/SKILL.md +0 -202
- package/skills/text-to-lottie/references/chapterization-transition-grammar.md +0 -132
- package/skills/text-to-lottie/references/design-taste.md +0 -292
- package/skills/text-to-lottie/references/lottie-spec-map.md +0 -82
- package/skills/text-to-lottie/references/motion-taste.md +0 -260
- package/skills/text-to-lottie/references/player-contract.md +0 -325
- package/skills/text-to-lottie/references/recipe-camera-scene-motion.md +0 -65
- package/skills/text-to-lottie/references/recipe-data-stats.md +0 -104
- package/skills/text-to-lottie/references/recipe-diagram-technical.md +0 -106
- package/skills/text-to-lottie/references/recipe-loaders-icons.md +0 -70
- package/skills/text-to-lottie/references/recipe-logo.md +0 -72
- package/skills/text-to-lottie/references/recipe-lower-thirds.md +0 -62
- package/skills/text-to-lottie/references/recipe-product-promo.md +0 -99
- package/skills/ultrademo/SKILL.md +0 -212
- package/skills/video-assemble/SKILL.md +0 -101
- package/skills/video-assemble-zenstory-ai/SKILL.md +0 -153
- package/skills/video-assemble-zenstory-ai/references/audio-modes.md +0 -63
- package/skills/video-assemble-zenstory-ai/references/explicit-audio-mix.md +0 -77
- package/skills/video-assemble-zenstory-ai/references/jianying/SOURCE.md +0 -14
- package/skills/video-assemble-zenstory-ai/references/narration-adoption.md +0 -103
- package/skills/video-assemble-zenstory-ai/references/packaging.md +0 -44
- package/skills/video-assemble-zenstory-ai/references/source-score.md +0 -146
- package/skills/video-assemble-zenstory-ai/references/subtitle-track.md +0 -202
- package/skills/video-editing/SKILL.md +0 -688
- package/skills/video-explainer/SKILL.md +0 -163
- package/skills/video-explainer/references/brief-to-script.md +0 -56
- package/skills/video-explainer/references/errors-and-privacy.md +0 -18
- package/skills/video-explainer/references/motion-storyboard.md +0 -82
- package/skills/video-explainer/references/render-and-verify.md +0 -62
- package/skills/video-explainer/references/review-gate.md +0 -82
- package/skills/video-explainer/references/setup-and-doctor.md +0 -33
- package/skills/video-script-builder/SKILL.md +0 -329
- package/skills/video-script-builder/examples/quick-start-transcript.md +0 -19
- package/skills/video-script-builder/references/audio-workflow.md +0 -84
- package/skills/video-script-builder/references/caption-components.md +0 -70
- package/skills/video-script-builder/references/common-pitfalls.md +0 -80
- package/skills/video-script-builder/references/component-catalog.md +0 -197
- package/skills/video-script-builder/references/component-recipes.md +0 -165
- package/skills/video-script-builder/references/gsap-patterns.md +0 -112
- package/skills/video-script-builder/references/pacing-rules.md +0 -78
- package/skills/video-script-builder/references/quality-checklist.md +0 -98
- package/skills/video-script-builder/references/remotion-patterns.md +0 -211
- package/skills/video-script-builder/references/shader-transitions.md +0 -115
- package/skills/video-script-builder/references/taste-principles.md +0 -160
- package/skills/video-scrub/SKILL.md +0 -216
- package/skills/video-scrub/references/profiles.md +0 -89
- package/skills/video-scrub/references/residue-map.md +0 -204
- package/skills/video-short-maker/SKILL.md +0 -182
- package/skills/video-shot-analysis-feishu/SKILL.md +0 -173
- package/skills/video-shotcraft/SKILL.md +0 -267
- package/skills/video-shotcraft/docs/deepseek-harness.md +0 -69
- package/skills/video-shotcraft/references/aesthetic-rules.md +0 -177
- package/skills/video-shotcraft/references/final-review.md +0 -112
- package/skills/video-shotcraft/references/guided-free-creation.md +0 -199
- package/skills/video-shotcraft/references/jianying-export.md +0 -182
- package/skills/video-shotcraft/references/music-beat-sync.md +0 -219
- package/skills/video-shotcraft/references/pipeline.md +0 -390
- package/skills/video-shotcraft/references/sequences/promo-energy-arc.md +0 -50
- package/skills/video-shotcraft/references/shots/ATTRIBUTION.md +0 -65
- package/skills/video-shotcraft/references/shots/camera/basic-3d-scene.md +0 -37
- package/skills/video-shotcraft/references/shots/camera/crash-zoom-punch.md +0 -39
- package/skills/video-shotcraft/references/shots/camera/cursor-flyover.md +0 -38
- package/skills/video-shotcraft-vincentwei10/SKILL.md +0 -316
- package/skills/video-shotcraft-vincentwei10/references/aesthetic-rules.md +0 -187
- package/skills/video-shotcraft-vincentwei10/references/final-review.md +0 -116
- package/skills/video-shotcraft-vincentwei10/references/guided-free-creation.md +0 -199
- package/skills/video-shotcraft-vincentwei10/references/jianying-export.md +0 -183
- package/skills/video-shotcraft-vincentwei10/references/music-beat-sync.md +0 -257
- package/skills/video-shotcraft-vincentwei10/references/pipeline.md +0 -401
- package/skills/video-shotcraft-vincentwei10/references/publish-upload-post.md +0 -111
- package/skills/video-shotcraft-vincentwei10/references/sequences/promo-energy-arc.md +0 -50
- package/skills/video-shotcraft-vincentwei10/references/shots/ATTRIBUTION.md +0 -62
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/basic-3d-scene.md +0 -41
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/crash-zoom-punch.md +0 -52
- package/skills/video-shotcraft-vincentwei10/references/shots/camera/cursor-flyover.md +0 -39
- package/skills/video-structure-analyzer/SKILL.md +0 -148
- package/skills/video-structure-analyzer/examples/xhs-rook-time-spend/xhs-rook-time-spend_/346/213/211/347/211/207/346/213/206/350/247/243.md +0 -50
- package/skills/video-structure-analyzer/examples/xhs-smelly-cat/xhs-smelly-cat_/346/213/211/347/211/207/346/213/206/350/247/243.md +0 -19
- package/skills/video-toolkit/SKILL.md +0 -686
- package/skills/videocut/SKILL.md +0 -159
- package/skills/videodb/SKILL.md +0 -497
- package/skills/videodb/reference/api-reference.md +0 -741
- package/skills/videodb/reference/capture-reference.md +0 -399
- package/skills/videodb/reference/capture.md +0 -110
- package/skills/videodb/reference/editor-reference.md +0 -506
- package/skills/videodb/reference/editor.md +0 -389
- package/skills/videodb/reference/generative.md +0 -344
- package/skills/videodb/reference/indexing-reference.md +0 -481
- package/skills/videodb/reference/indexing.md +0 -537
- package/skills/videodb/reference/legacy/index-reference.md +0 -223
- package/skills/videodb/reference/legacy/index.md +0 -241
- package/skills/videodb/reference/legacy/search.md +0 -249
- package/skills/videodb/reference/migration.md +0 -113
- package/skills/vlog-auto-edit/SKILL.md +0 -982
- package/skills/vlog-auto-edit/examples/project_structure.md +0 -84
- package/skills/vox-animated-ad-mcp/SKILL.md +0 -419
- package/skills/vox-director/SKILL.md +0 -351
- package/skills/vox-director/references/beat-layer.md +0 -143
- package/skills/vox-director/references/host-mode.md +0 -120
- package/skills/vox-director/references/local-engine.md +0 -73
- package/skills/vox-director/references/models-and-gotchas.md +0 -91
- package/skills/vox-director/references/prompt-guide.md +0 -275
- package/skills/vox-director/references/voices.md +0 -59
- package/skills/xingchen-vox-collage/SKILL.md +0 -251
- package/skills/xingchen-vox-collage/references/asset-layer-contract.md +0 -98
- package/skills/xingchen-vox-collage/references/creative-exploration.md +0 -19
- package/skills/xingchen-vox-collage/references/learned-branches.md +0 -34
- package/skills/xingchen-vox-collage/references/remotion-scene-contract.md +0 -77
- package/skills/xingchen-vox-collage/references/visual-language.md +0 -74
- package/skills/xingchen-vox-collage/references/visual-qa.md +0 -59
- package/skills/youtube/SKILL.md +0 -147
- package/skills/youtube/references/algorithm-guide.md +0 -59
- package/skills/youtube/references/analytics-benchmarks.md +0 -67
- package/skills/youtube/references/dataforseo-integration.md +0 -51
- package/skills/youtube/references/monetization-guide.md +0 -62
- package/skills/youtube/references/repurposing-guide.md +0 -54
- package/skills/youtube/references/retention-scripting-guide.md +0 -75
- package/skills/youtube/references/seo-playbook.md +0 -77
- package/skills/youtube/references/shorts-playbook.md +0 -64
- package/skills/youtube/references/thumbnail-ctr-guide.md +0 -73
- package/skills/youtube-shorts-factory/SKILL.md +0 -358
- package/skills/youtube-shorts-factory/resources/adaptation-guide.md +0 -133
- package/skills/youtube-shorts-factory/resources/storyboard-template.md +0 -271
- package/skills/youtube-shorts-factory/resources/workflow-steps.md +0 -139
- package/studio/ui/dist/assets/ExportCenter-DEyy1vs_.js +0 -1
- package/studio/ui/dist/assets/SettingsModal-CQmsA2A2.js +0 -2
- package/studio/ui/dist/assets/es-AqUfIkAy.js +0 -1
- package/studio/ui/dist/assets/index-C7moXjTY.css +0 -1
- package/studio/ui/dist/assets/index-DdU5QNpY.js +0 -1623
- package/studio/ui/dist/assets/ja-YwiCB4QQ.js +0 -1
- package/studio/ui/dist/assets/ko-CKtBPDze.js +0 -1
- package/studio/ui/dist/assets/zh-CN-DtNEwKWJ.js +0 -1
|
@@ -1,1452 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: motion-video-maker
|
|
3
|
-
description: "motion-video-maker: the method the original skill taught, run as an AICUT film — pages that draw any moment t, cut on tracks. Runs in AICUT: the film is film.html, a page per shot, drawn by `aicut look` and `aicut render`."
|
|
4
|
-
license: MIT
|
|
5
|
-
source: "GordenSun/react-bits-video"
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# motion-video-maker
|
|
9
|
-
|
|
10
|
-
## Running it in AICUT
|
|
11
|
-
|
|
12
|
-
AICUT's film is `film.html`: it cuts pages, footage, pictures and sound together on tracks. A page is a web page that
|
|
13
|
-
sets `window.film = { frame(t) }` and draws that moment — no framework, no build step, no composition object, no
|
|
14
|
-
`registerRoot`. Five shots are five pages cut together, not one page that changes scene, so each shot stays trimmable
|
|
15
|
-
and replaceable in Studio.
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
npx -y @autoaiai/aicut@latest # the manual: the format and the commands, always current
|
|
19
|
-
npx -y @autoaiai/aicut@latest open . # make this folder a film and print Studio's address
|
|
20
|
-
npx -y @autoaiai/aicut@latest look # a contact sheet of the whole film, its sound, and a determinism check
|
|
21
|
-
npx -y @autoaiai/aicut@latest look 4.5 # one frame, full size — look at the PNG, not at the code
|
|
22
|
-
npx -y @autoaiai/aicut@latest render # the MP4, beside film.html
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
Run the manual before the first film: it is authoritative for the format, and this skill is about the method above it.
|
|
26
|
-
|
|
27
|
-
Where the words below name another program's part, it becomes this:
|
|
28
|
-
|
|
29
|
-
| elsewhere | in AICUT |
|
|
30
|
-
|---|---|
|
|
31
|
-
| composition, timeline, project file | `film.html`; tracks and clips inside it |
|
|
32
|
-
| a scene, a sequence, a slide | a page (`pages/<name>.html`) cut onto a track |
|
|
33
|
-
| `useCurrentFrame()`, `interpolate()` | `frame(t)` — the picture depends only on `t`, never on state or `Date.now()` |
|
|
34
|
-
| a still, a screengrab | `aicut look <t>` |
|
|
35
|
-
| `render` / `build` / `export` | `aicut render` (the person can also export from Studio) |
|
|
36
|
-
| a dev server, a preview window | `aicut open` and the Studio address it prints |
|
|
37
|
-
|
|
38
|
-
Hard rules that hold whatever the method says: the picture depends only on `t`; every value in the person's prompt is
|
|
39
|
-
binding; look at the frames `look` writes before saying a film is done.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
A self-contained skill for authoring **cinematic HTML animations** and
|
|
43
|
-
rendering them to **frame-accurate MP4** video. One composition = one HTML
|
|
44
|
-
file driven by a tiny deterministic timeline runtime.
|
|
45
|
-
|
|
46
|
-
## Hard Rules — READ FIRST (non-negotiable)
|
|
47
|
-
|
|
48
|
-
These prevent the bugs we keep seeing in agent-generated videos.
|
|
49
|
-
`scripts/lint.mjs` enforces most of them and exits non-zero on violations.
|
|
50
|
-
|
|
51
|
-
| ❌ Don't | ✅ Do |
|
|
52
|
-
|---|---|
|
|
53
|
-
| `style="font-size: 180px"` on a long heading | use `.title-2xl` / `.title-xl` / `.title-lg` class (see [Typography limits](#typography-limits)) |
|
|
54
|
-
| `.text-aurora` (blue-cyan gradient) over a cool palette | match palette family → use `.text-on-cool` instead |
|
|
55
|
-
| `data-background` without `data-palette` and without `data-colors` | always pick a named palette (`cool-deep`, `warm-glow`, etc.) |
|
|
56
|
-
| `style="position: relative"` on a `[data-background]` element | leave it alone — CSS already sets `position: absolute` |
|
|
57
|
-
| `Math.random()` / `Date.now()` / `new Date()` inside `<script>` | use `__mvm.random("seed")` / pass `t` from `mvm-seek` event |
|
|
58
|
-
| odd `data-width` / `data-height` (e.g. 1921×1081) | use even integers — H.264 refuses odd dimensions |
|
|
59
|
-
| `data-animation-out` on a non-final scene without a `<div data-transition>` | bridge the cut with a transition (pixel-dissolve / iris / glitch / wipe-left / flash) |
|
|
60
|
-
| inline `<style>` with `transition:` / `@keyframes` | use `data-animation` + the runtime — CSS transitions don't seek and break determinism |
|
|
61
|
-
| fade non-final scenes to opacity 0 | only the **last** scene may fade to black; everything else must hand off via a transition |
|
|
62
|
-
| `background-image: url(...)` (CSS bg image, browser doesn't fire load event) | use `<img class="bg-img" style="position:absolute;inset:0;">` |
|
|
63
|
-
| `gsap.utils.random(...)` / `Math.random()` inside any `gsap.to/from/timeline` value | wrap with `__mvm.random("seed")` or pass a deterministic precomputed value — see [GSAP integration](#gsap-integration--every-plugin-deterministic-bridged) |
|
|
64
|
-
| `setTimeout(() => gsap.to(...), 1000)` / wall-clock-driven GSAP construction | build the timeline at parse-time, anchor it with `__mvmGsap.timeline({at: <s>})` so `mvm-seek` drives it |
|
|
65
|
-
| Importing / referencing `ScrollTrigger` / `ScrollSmoother` / `Draggable` / `Observer` / `InertiaPlugin` | these need user interaction that doesn't exist in offline render — use a GSAP timeline driven by `mvm-seek` instead |
|
|
66
|
-
| Loading `gsap-bridge.js` BEFORE `gsap.min.js` and the plugin scripts | always load gsap core + plugins FIRST, then the bridge — the bridge only registers what already exists on `window` |
|
|
67
|
-
|
|
68
|
-
Run `node scripts/lint.mjs path/to/index.html` before rendering. Add
|
|
69
|
-
`--strict` in CI so warnings also fail.
|
|
70
|
-
|
|
71
|
-
## Determinism Contract
|
|
72
|
-
|
|
73
|
-
Two renders of the same HTML file MUST produce byte-identical MP4 output.
|
|
74
|
-
The runtime + render pipeline already enforce this — but author code can
|
|
75
|
-
break it. The rules:
|
|
76
|
-
|
|
77
|
-
1. **Never call `Math.random()`** in inline scripts. Use one of:
|
|
78
|
-
- `window.__mvm.random("a-stable-string-seed")` → stateful PRNG function
|
|
79
|
-
- `window.__mvm.randomSample("seed")` → one deterministic value
|
|
80
|
-
2. **Never call `Date.now()` / `new Date()` / `performance.now()`** for
|
|
81
|
-
anything visible. Time MUST come from the `mvm-seek` event detail.
|
|
82
|
-
3. **Never use CSS `transition` / `animation`** on stage elements — those
|
|
83
|
-
don't respect the timeline's seek mechanism, so they play in preview
|
|
84
|
-
but appear "frozen" in the rendered MP4.
|
|
85
|
-
4. **Never use `setTimeout` / `setInterval`** to drive visuals. The renderer
|
|
86
|
-
issues `seek(t)` at 30 fps step boundaries; any wall-clock-driven code
|
|
87
|
-
will skip frames.
|
|
88
|
-
5. **All async resources go through `delayRender` / `continueRender`**:
|
|
89
|
-
```js
|
|
90
|
-
const h = window.__mvm.delayRender('Loading hero image');
|
|
91
|
-
img.onload = () => window.__mvm.continueRender(h);
|
|
92
|
-
img.onerror = () => window.__mvm.cancelRender(new Error('hero image failed'));
|
|
93
|
-
```
|
|
94
|
-
The renderer waits for `__mvm.ready === true` (i.e. all handles cleared)
|
|
95
|
-
before screenshotting each frame; failures surface immediately with the
|
|
96
|
-
pending handle labels printed.
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
## Scene Transitions — non-negotiable rules
|
|
100
|
-
|
|
101
|
-
Borrowed from Hyperframes. Failing these is the #1 reason a video feels
|
|
102
|
-
"choppy" or "broken".
|
|
103
|
-
|
|
104
|
-
1. **Every scene boundary must have a `<div data-transition>`.** Pick one
|
|
105
|
-
of: `pixel-dissolve` / `iris` / `glitch` / `wipe-left` / `wipe-right`
|
|
106
|
-
/ `wipe-up` / `wipe-down` / `flash`. The transition straddles the cut.
|
|
107
|
-
2. **Every text/element must have a `data-animation` (entrance).** Don't
|
|
108
|
-
appear out of nothing — fade, slide, drop, mask in.
|
|
109
|
-
3. **Don't add `data-animation-out` to a non-final scene.** The transition
|
|
110
|
-
IS the exit. Adding an extra fade-out makes the screen go blank for
|
|
111
|
-
~0.3s and looks like a bug. `scripts/lint.mjs` flags this as `E005`.
|
|
112
|
-
4. **Only the final scene may fade to opacity 0.** Earlier scenes hand off
|
|
113
|
-
via the transition; the last scene closes the video.
|
|
114
|
-
|
|
115
|
-
```html
|
|
116
|
-
<!-- Scene 1 -->
|
|
117
|
-
<div data-background="meta-balls" data-palette="warm-glow"
|
|
118
|
-
data-clip data-start="0" data-duration="5.8"
|
|
119
|
-
data-animation="fadeIn"></div> <!-- ✅ entrance only -->
|
|
120
|
-
|
|
121
|
-
<!-- Transition (bridges 5.3s → 6.0s) -->
|
|
122
|
-
<div data-transition="pixel-dissolve" data-start="5.3" data-duration="0.7"></div>
|
|
123
|
-
|
|
124
|
-
<!-- Scene 2 starts at 5.8s -->
|
|
125
|
-
<div data-background="liquid-ether" data-palette="cool-deep"
|
|
126
|
-
data-clip data-start="5.8" data-duration="5.5"
|
|
127
|
-
data-animation="fadeIn"></div> <!-- ✅ no data-animation-out -->
|
|
128
|
-
|
|
129
|
-
## Style Presets — 8 recipes to start from or hybridise
|
|
130
|
-
|
|
131
|
-
Each preset is a **complete vibe**: palette + typography + animation
|
|
132
|
-
pattern + transition + pacing. They're not classes you import; they're
|
|
133
|
-
**templates you copy from** when you want a recognisable look. Hybridise
|
|
134
|
-
freely — use Asian Ink typography with Glitch Tech transitions, etc.
|
|
135
|
-
|
|
136
|
-
### 1. Cinematic Trailer
|
|
137
|
-
|
|
138
|
-
> Big serif over warm darkness. Long beats, single ideas per scene.
|
|
139
|
-
> Feels like a film opening.
|
|
140
|
-
|
|
141
|
-
| | |
|
|
142
|
-
|---|---|
|
|
143
|
-
| **Palette** | `warm-glow` / `warm-ember` / `mono-deep` |
|
|
144
|
-
| **Background** | `meta-balls` (slow `data-intensity="0.8"`) / `lightning` (sparingly) / solid `#0a0606` |
|
|
145
|
-
| **Typography** | `.title-3xl` or `.title-2xl`, `cn-serif` (Noto Serif SC), `letter-spacing: 0.04em` |
|
|
146
|
-
| **Text color** | `.text-on-warm` (off-white) or `#FFE87A` |
|
|
147
|
-
| **Entrance** | `data-text-animation="split-text"` with `data-stagger="0.06"` `data-easing="easeOutQuart"` |
|
|
148
|
-
| **Pacing** | 5–8s per scene, hold one idea at a time |
|
|
149
|
-
| **Transitions** | `flash` (0.4s) between climactic beats, `iris` (1.0s) for softer cuts |
|
|
150
|
-
| **Camera** | `data-camera-zoom="1.08"` (slow push-in) on hero shots |
|
|
151
|
-
| **Avoid** | bright pinks, fast cuts, springBouncy, glitch-text |
|
|
152
|
-
|
|
153
|
-
### 2. Glitch Tech / Cyberpunk
|
|
154
|
-
|
|
155
|
-
> Hard cuts, electric edges, decrypting text. Reads "future" or "hacker".
|
|
156
|
-
|
|
157
|
-
| | |
|
|
158
|
-
|---|---|
|
|
159
|
-
| **Palette** | `cool-neon` / `prismatic-cyber` / `mono-ink` |
|
|
160
|
-
| **Background** | `lightning` (`data-intensity="1.4"`), `prismatic-burst`, `letter-glitch` canvas |
|
|
161
|
-
| **Typography** | `.title-xl` mono fonts (`cn-mono` / JetBrains Mono), `text-transform: uppercase`, `letter-spacing: 0.25em` |
|
|
162
|
-
| **Text color** | `.text-on-prismatic` (white + halo) or `#5BC0EB` / `#FFD400` accents |
|
|
163
|
-
| **Entrance** | `data-text-animation="decrypted-text"` / `glitch-text` / `scramble-text` |
|
|
164
|
-
| **Pacing** | 1.5–3s clips, **lots of them**. Quick rhythm. |
|
|
165
|
-
| **Transitions** | `glitch` (0.5s) almost everywhere, occasional `pixel-dissolve` (0.4s) |
|
|
166
|
-
| **Effects** | `data-effect="electric-border"` on hero card, `star-border` accents |
|
|
167
|
-
| **Avoid** | cn-brush, slow ease, warm palettes, single-scene 8s holds |
|
|
168
|
-
|
|
169
|
-
### 3. Asian Ink / 中国风水墨
|
|
170
|
-
|
|
171
|
-
> 留白、宋体、行楷。Soft paper background, brushed accents, slow rhythm.
|
|
172
|
-
|
|
173
|
-
| | |
|
|
174
|
-
|---|---|
|
|
175
|
-
| **Palette** | `light-paper` (background) or `warm-ember` (subtle dark) |
|
|
176
|
-
| **Background** | solid `#f7f5ef` paper, or `aurora warm-ember` very faint, or a `iridescence` shader at `data-intensity="0.3"` |
|
|
177
|
-
| **Typography** | `cn-serif` (Noto Serif SC) for body, `cn-brush` (Ma Shan Zheng / Long Cang) for hero accents, `.title-2xl` to `.title-3xl` |
|
|
178
|
-
| **Text color** | `.text-on-light` (deep ink `#1a0a08`) or `#3a1c08` |
|
|
179
|
-
| **Entrance** | `data-animation="unmaskUp"` or `unmaskRight` slow (`data-in-duration="1.2"`), `data-easing="easeInOutQuart"` |
|
|
180
|
-
| **Pacing** | 6–10s per scene. Let the brush strokes breathe. |
|
|
181
|
-
| **Transitions** | `wipe-up` or `wipe-left` (1.2s) with `data-color="#f7f5ef"`, soft `flash` (0.5s) |
|
|
182
|
-
| **Special** | red seal stamp: small square `mvm-card` with cn-brush "印", `data-animation="dropIn"` |
|
|
183
|
-
| **Avoid** | electric-border, glitch, neon palettes, mono fonts |
|
|
184
|
-
|
|
185
|
-
### 4. Data Story
|
|
186
|
-
|
|
187
|
-
> Hero numbers + supporting cards. Each stat lands with weight.
|
|
188
|
-
|
|
189
|
-
| | |
|
|
190
|
-
|---|---|
|
|
191
|
-
| **Palette** | `cool-deep` (background), accents via `.mvm-stat--red/cool/warm` borders |
|
|
192
|
-
| **Background** | `liquid-ether cool-deep` or `iridescence cool-violet`, kept moving but quiet |
|
|
193
|
-
| **Typography** | `.mvm-stat` preset (built-in 120px digit + label), `.title-lg` for section headers |
|
|
194
|
-
| **Entrance** | `data-text-animation="count-up"` + `data-odometer="true"` on every number; stat cards `data-animation="magneticIn"` / `dropIn` / `slideBlurIn` (alternate for variety) |
|
|
195
|
-
| **Pacing** | 3.5–5s per stat, 1s in / 2s hold / 1s out |
|
|
196
|
-
| **Transitions** | `iris` (0.7s) between stat groups, `pixel-dissolve` between sections |
|
|
197
|
-
| **Layout** | 1, 2, or 3 stats stacked vertically with `gap: 32px` |
|
|
198
|
-
| **Avoid** | text-aurora, glitch-text, busy shaders behind the numbers |
|
|
199
|
-
|
|
200
|
-
### 5. Pop Vibrant
|
|
201
|
-
|
|
202
|
-
> Saturated colors, bouncy springs, candy. Reads "consumer brand" or
|
|
203
|
-
> "playful product".
|
|
204
|
-
|
|
205
|
-
| | |
|
|
206
|
-
|---|---|
|
|
207
|
-
| **Palette** | `prismatic-vapor` / `prismatic-magic` / custom `data-colors="#FF3CAC,#FFD400,#2af598,#5BC0EB"` |
|
|
208
|
-
| **Background** | `meta-balls`, `iridescence` at high `data-intensity="1.2"` |
|
|
209
|
-
| **Typography** | `cn-sans` (Noto Sans SC) bold, `.title-xl`/`title-2xl`, can mix multiple sizes in one scene |
|
|
210
|
-
| **Entrance** | `data-easing="springBouncy"` or `springWobbly` everywhere; `data-animation="cubeIn"` / `flipInX` / `magneticIn` (rotate per scene for variety) |
|
|
211
|
-
| **Pacing** | 3–5s clips, lots of motion |
|
|
212
|
-
| **Transitions** | `pixel-dissolve` with bright `data-color="#FFD400"`, occasional `flash` |
|
|
213
|
-
| **Avoid** | cn-serif, slow ease, mono palette |
|
|
214
|
-
|
|
215
|
-
### 6. Minimal Editorial
|
|
216
|
-
|
|
217
|
-
> 90% empty space. Tiny eyebrow over a giant serif. One movement at a time.
|
|
218
|
-
|
|
219
|
-
| | |
|
|
220
|
-
|---|---|
|
|
221
|
-
| **Palette** | `mono-graphite` or solid `#0a0a14` (no shader) |
|
|
222
|
-
| **Background** | `<div>` with solid color OR `iridescence cool-violet` at `data-intensity="0.25"` |
|
|
223
|
-
| **Typography** | One huge `.title-3xl` (160px) + one tiny `.body-sm` eyebrow; serif everywhere |
|
|
224
|
-
| **Entrance** | `unmaskUp` very slow (`data-in-duration="1.4"`), `easeInOutQuart` |
|
|
225
|
-
| **Pacing** | 8–12s per scene, very few scenes (3–4 total in 30s) |
|
|
226
|
-
| **Camera** | `data-camera-zoom="1.06"` ken-burns push on background, **never on text** |
|
|
227
|
-
| **Transitions** | `wipe-up` (1.2s) only |
|
|
228
|
-
| **Avoid** | crowded compositions, multiple animations per scene, decorative effects |
|
|
229
|
-
|
|
230
|
-
### 7. Liquid Dreamy
|
|
231
|
-
|
|
232
|
-
> Iridescent shaders, soft text, ethereal pacing. Reads "calm" or "luxury".
|
|
233
|
-
|
|
234
|
-
| | |
|
|
235
|
-
|---|---|
|
|
236
|
-
| **Palette** | `cool-violet` / `prismatic-vapor` |
|
|
237
|
-
| **Background** | `iridescence` (`data-intensity="0.7" data-scale="1.4"`), layered with a `aurora` at low opacity |
|
|
238
|
-
| **Typography** | `cn-wenkai` (LXGW WenKai), `.title-2xl`, `letter-spacing: 0.12em` |
|
|
239
|
-
| **Text color** | `.text-on-cool-soft` (warm cream) |
|
|
240
|
-
| **Entrance** | `data-animation="slideBlurIn"` `data-easing="springGentle"`; `blur-text` for body |
|
|
241
|
-
| **Pacing** | 6–8s scenes, slow drift |
|
|
242
|
-
| **Transitions** | long `flash` (0.8s) with `data-color="#9d8df1"` (lavender), `iris` (1.2s) |
|
|
243
|
-
| **Avoid** | hard cuts, glitch, springBouncy, primary colors |
|
|
244
|
-
|
|
245
|
-
### 8. Documentary
|
|
246
|
-
|
|
247
|
-
> Sepia-ish, slow zoom on stills, somber typography, long holds.
|
|
248
|
-
|
|
249
|
-
| | |
|
|
250
|
-
|---|---|
|
|
251
|
-
| **Palette** | `warm-autumn` / `mono-graphite` (desaturated) |
|
|
252
|
-
| **Background** | A real `<img>` photo (b/w or duotone via CSS `filter: grayscale(80%) sepia(20%)`) OR `aurora warm-autumn` at low intensity |
|
|
253
|
-
| **Typography** | `cn-serif`, `.title-lg`/`title-md`, body uses `.body-md` |
|
|
254
|
-
| **Entrance** | `fadeIn` + `data-camera-zoom="1.15"` (slow ken-burns); subtitles use `unmaskUp` |
|
|
255
|
-
| **Pacing** | 8–14s per scene, **lots of held screen time** |
|
|
256
|
-
| **Transitions** | `wipe-right` (1.5s) only; very slow `flash` (0.6s) for chapter breaks |
|
|
257
|
-
| **Avoid** | shaders, bright colors, fast text animations |
|
|
258
|
-
|
|
259
|
-
### Hybridising — yes, do it
|
|
260
|
-
|
|
261
|
-
The presets are starting points, not boxes. Real "stand-out" videos
|
|
262
|
-
cross-pollinate:
|
|
263
|
-
|
|
264
|
-
- **"Cinematic + Glitch"** — warm palette + serif type + occasional
|
|
265
|
-
glitch transition + decrypted-text eyebrow. Hero shot stays cinematic,
|
|
266
|
-
intro chyrons feel tech.
|
|
267
|
-
- **"Asian Ink + Data Story"** — paper background + ink red stat
|
|
268
|
-
numbers + cn-brush labels. Annual report visual language.
|
|
269
|
-
- **"Liquid Dreamy + Pop Vibrant"** — iridescent shader + bouncy spring.
|
|
270
|
-
Reads "beauty / cosmetics brand".
|
|
271
|
-
|
|
272
|
-
When in doubt: **commit to one style for 80% of the runtime, sprinkle
|
|
273
|
-
the other style on 1 scene as contrast**. Pure-blend rarely reads.
|
|
274
|
-
|
|
275
|
-
```
|
|
276
|
-
motion-video-maker/
|
|
277
|
-
├── runtime/ # timeline.js, components.js, spring.js, shaders.js,
|
|
278
|
-
│ │ # transitions.js, effects.js, styles.css,
|
|
279
|
-
│ │ # contrast-check.js, layout-check.js,
|
|
280
|
-
│ │ # gsap-bridge.js (← determinism bridge for GSAP)
|
|
281
|
-
│ └── gsap/ # gsap.min.js + every plugin we ship: CustomEase,
|
|
282
|
-
│ # CustomWiggle, CustomBounce, EasePack,
|
|
283
|
-
│ # DrawSVGPlugin, MorphSVGPlugin, MotionPathPlugin,
|
|
284
|
-
│ # Physics2DPlugin, PhysicsPropsPlugin, Flip,
|
|
285
|
-
│ # SplitText, ScrambleTextPlugin, TextPlugin
|
|
286
|
-
├── assets/fonts/ # 12 open-source Chinese fonts (auto-installed)
|
|
287
|
-
├── scripts/ # render.mjs, preview.mjs, install-fonts.mjs,
|
|
288
|
-
│ # new-video.mjs, debug.mjs, snap.mjs, lint.mjs
|
|
289
|
-
├── templates/ # base.html, diagnostic.html, showcase.html,
|
|
290
|
-
│ # effects-showcase.html (signature effects sampler)
|
|
291
|
-
├── examples/ # time-flies/ (30s reference)
|
|
292
|
-
│ # raycast-deep-dive/ (40s v1: canvas only)
|
|
293
|
-
│ # raycast-deep-dive-v2/ (40s v2: + spring + shaders + transitions)
|
|
294
|
-
│ # raycast-deep-dive-v3/ (40s v3: + electric-border / image-trail / odometer)
|
|
295
|
-
│ # gsap-showcase/ (42s GSAP plugin sampler — every plugin in one file)
|
|
296
|
-
└── reference/ # components.md, workflow.md
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
## Creative Latitude — these are tools, not training wheels
|
|
300
|
-
|
|
301
|
-
The Hard Rules above prevent **broken** videos. They are NOT a recipe for
|
|
302
|
-
**good** videos. Many compositions look identical because agents stop at
|
|
303
|
-
"safe and lint-clean" instead of pushing the medium. **Push the medium.**
|
|
304
|
-
|
|
305
|
-
What "push the medium" means in practice:
|
|
306
|
-
|
|
307
|
-
1. **Pick a STYLE first, primitives second.** Don't reach for `split-text`
|
|
308
|
-
+ `fadeIn` + `meta-balls` by reflex. Decide what the video should
|
|
309
|
-
*feel* like (see [Style decision tree](#style-decision-tree)), then
|
|
310
|
-
pick primitives that serve that feeling. The same primitive read
|
|
311
|
-
differently in different styles — `split-text` at 0.04 stagger feels
|
|
312
|
-
urgent and confident; the same animation at 0.2 stagger with `springGentle`
|
|
313
|
-
easing feels meditative.
|
|
314
|
-
|
|
315
|
-
2. **Combine primitives to invent new effects.** Every "signature" effect
|
|
316
|
-
in this Skill (electric-border, image-trail, odometer flip) is a
|
|
317
|
-
composition of simpler parts. You can do the same:
|
|
318
|
-
- `mask-text` + `gradient-text` on a duplicate layered behind = neon
|
|
319
|
-
edge title that bleeds color through the negative space.
|
|
320
|
-
- `image-trail` + a small camera-pan = parallax-feeling depth.
|
|
321
|
-
- Two `liquid-ether` shaders with different `data-palette` and
|
|
322
|
-
opposite `data-scale`, blended `mix-blend-mode: screen` =
|
|
323
|
-
iridescent fluid impossible to get with one shader.
|
|
324
|
-
- `wave-text` with `data-amplitude="3"` + `springSnap` = subtle
|
|
325
|
-
"breathing" hero title for slow scenes.
|
|
326
|
-
|
|
327
|
-
3. **Bend the timeline.** A 30s video doesn't need 6 scenes of 5s each.
|
|
328
|
-
- Cinematic trailers spend 8s on a single hero shot then sprint
|
|
329
|
-
through 4 quick cuts in 6s.
|
|
330
|
-
- Glitch / tech videos use very short clips (1.2–2s) with hard cuts
|
|
331
|
-
between shaders + glitch transitions.
|
|
332
|
-
- Editorial / minimalist videos hold one scene for 12s with a slow
|
|
333
|
-
`kenBurnsIn` on the background.
|
|
334
|
-
|
|
335
|
-
4. **Custom animations are welcome.** If none of the built-in
|
|
336
|
-
`data-animation` values fit, you can:
|
|
337
|
-
- Write your own keyframe-like animation by listening to `mvm-seek`
|
|
338
|
-
and applying transforms based on `event.detail.time`. See
|
|
339
|
-
`runtime/components.js` for the pattern.
|
|
340
|
-
- Use `data-effect="custom"` with inline `style="--my-anim-progress: ..."`
|
|
341
|
-
to drive your own CSS variables off the timeline.
|
|
342
|
-
- Compose multiple `data-animation` by nesting elements with
|
|
343
|
-
independent animations.
|
|
344
|
-
|
|
345
|
-
5. **Camera moves**. Wrap a scene in `<div class="mvm-cam" data-camera-zoom="1.15"
|
|
346
|
-
data-camera-pan-x="-40" data-camera-pan-y="20">` and the whole scene
|
|
347
|
-
slowly zooms / pans across its lifetime. Subtle camera moves are the
|
|
348
|
-
single biggest "I am watching a film, not a slideshow" cue.
|
|
349
|
-
|
|
350
|
-
You are encouraged to read users' descriptive cues literally and translate
|
|
351
|
-
them. "Cinematic", "elegant", "punchy", "ink wash", "data-driven", "playful",
|
|
352
|
-
"otherworldly", "vintage", "futurist", "documentary" — each maps to a
|
|
353
|
-
different combination of palette / typography / motion. See
|
|
354
|
-
[Style Presets](#style-presets) for 8 ready-made recipes you can adopt or
|
|
355
|
-
hybridise.
|
|
356
|
-
|
|
357
|
-
## Style decision tree — pick by user intent
|
|
358
|
-
|
|
359
|
-
When the user describes the *feeling* but not the parts, use this map:
|
|
360
|
-
|
|
361
|
-
| User mentions... | Style preset | Why |
|
|
362
|
-
|---|---|---|
|
|
363
|
-
| "电影感 / cinematic / trailer / epic" | **Cinematic Trailer** | slow + big serif + warm/mono + flash transitions |
|
|
364
|
-
| "科技 / cyber / tech / futurist / glitch" | **Glitch Tech** | electric-border + glitch-text + prismatic/cool + fast cuts |
|
|
365
|
-
| "水墨 / 中国风 / 书法 / 古典 / ink" | **Asian Ink** | cn-brush + paper palette + slow unmask + Ma Shan Zheng |
|
|
366
|
-
| "数据 / data / report / 业绩 / stats" | **Data Story** | odometer + mvm-stat + cards + drop / magnetic entry |
|
|
367
|
-
| "活泼 / playful / pop / bouncy / 卡通" | **Pop Vibrant** | saturated + springBouncy + meta-balls + cube/flip |
|
|
368
|
-
| "极简 / minimal / 高级 / editorial / 杂志" | **Minimal Editorial** | huge serif + lots of whitespace + slow ken burns |
|
|
369
|
-
| "梦幻 / 流体 / liquid / dreamy / 治愈" | **Liquid Dreamy** | iridescence + slow + soft + warm-soft tones |
|
|
370
|
-
| "纪录片 / documentary / 历史 / 沉稳" | **Documentary** | desaturated + ken-burns + long holds + serif body |
|
|
371
|
-
| 没说,但内容像 PPT 介绍 | **Cinematic Trailer** | safest default, looks production-grade |
|
|
372
|
-
| 没说,但内容是产品发布 | **Glitch Tech** or **Cinematic** | depends on product vibe |
|
|
373
|
-
|
|
374
|
-
If the user mixes cues ("中国风但要现代感"), **hybridise**: take Asian Ink's
|
|
375
|
-
typography + palette and Cinematic Trailer's camera moves + flash.
|
|
376
|
-
|
|
377
|
-
**You decide.** Don't always ask back — read the prompt for tone cues and
|
|
378
|
-
commit to a style. Variety is the goal.
|
|
379
|
-
|
|
380
|
-
---
|
|
381
|
-
|
|
382
|
-
**Every composition MUST include this script chain in this order:**
|
|
383
|
-
|
|
384
|
-
```html
|
|
385
|
-
<script src="../../runtime/spring.js"></script> <!-- physics -->
|
|
386
|
-
<script src="../../runtime/timeline.js"></script> <!-- seekable timeline -->
|
|
387
|
-
<script src="../../runtime/components.js"></script> <!-- text / canvas bg -->
|
|
388
|
-
<script src="../../runtime/shaders.js"></script> <!-- WebGL shader bg -->
|
|
389
|
-
<script src="../../runtime/transitions.js"></script> <!-- scene transitions -->
|
|
390
|
-
<script src="../../runtime/effects.js"></script> <!-- electric / star / image-trail -->
|
|
391
|
-
|
|
392
|
-
<!-- GSAP — load any plugins you'll use BEFORE the bridge.
|
|
393
|
-
The bridge tolerates missing plugins; drop ones you don't need. -->
|
|
394
|
-
<script src="../../runtime/gsap/gsap.min.js"></script>
|
|
395
|
-
<script src="../../runtime/gsap/CustomEase.min.js"></script>
|
|
396
|
-
<script src="../../runtime/gsap/EasePack.min.js"></script>
|
|
397
|
-
<script src="../../runtime/gsap/SplitText.min.js"></script>
|
|
398
|
-
<script src="../../runtime/gsap/DrawSVGPlugin.min.js"></script>
|
|
399
|
-
<script src="../../runtime/gsap/MorphSVGPlugin.min.js"></script>
|
|
400
|
-
<script src="../../runtime/gsap/MotionPathPlugin.min.js"></script>
|
|
401
|
-
<script src="../../runtime/gsap/Physics2DPlugin.min.js"></script>
|
|
402
|
-
<script src="../../runtime/gsap/Flip.min.js"></script>
|
|
403
|
-
<script src="../../runtime/gsap/ScrambleTextPlugin.min.js"></script>
|
|
404
|
-
<script src="../../runtime/gsap-bridge.js"></script> <!-- MUST come AFTER gsap -->
|
|
405
|
-
|
|
406
|
-
## Quick Start
|
|
407
|
-
|
|
408
|
-
# 1) One-time setup (installs Chinese fonts; idempotent)
|
|
409
|
-
node scripts/install-fonts.mjs
|
|
410
|
-
|
|
411
|
-
# 2) Scaffold a new composition
|
|
412
|
-
node scripts/new-video.mjs my-video --duration 12 --fps 30 --bg aurora
|
|
413
|
-
|
|
414
|
-
# 3) Live-preview in a browser
|
|
415
|
-
node scripts/preview.mjs examples/my-video/index.html
|
|
416
|
-
|
|
417
|
-
# → http://localhost:5173/examples/my-video/index.html
|
|
418
|
-
|
|
419
|
-
# 4) Render to MP4 (frame-accurate, deterministic)
|
|
420
|
-
node scripts/render.mjs examples/my-video/index.html examples/my-video/output.mp4
|
|
421
|
-
```
|
|
422
|
-
See [`examples/time-flies/index.html``index.html` for a
|
|
423
|
-
complete 30-second reference composition that exercises every component.
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
## How a Composition Works
|
|
427
|
-
|
|
428
|
-
A composition is **one HTML file** with three layers:
|
|
429
|
-
|
|
430
|
-
1. **`<div id="stage" data-*>`** — declares pixel size, fps, total duration.
|
|
431
|
-
2. **`[data-background]`** — full-bleed animated backgrounds (canvas).
|
|
432
|
-
3. **`[data-clip]`** — any element that appears, moves, or animates.
|
|
433
|
-
|
|
434
|
-
```html
|
|
435
|
-
<div id="stage" data-composition-id="my-video"
|
|
436
|
-
data-width="1920" data-height="1080"
|
|
437
|
-
data-fps="30" data-duration="10">
|
|
438
|
-
|
|
439
|
-
<div data-background="aurora"
|
|
440
|
-
data-colors="#3a1c71,#d76d77,#ffaf7b"></div>
|
|
441
|
-
|
|
442
|
-
<h1 class="title text-aurora"
|
|
443
|
-
data-clip data-start="0.5" data-duration="9"
|
|
444
|
-
data-text-animation="split-text"
|
|
445
|
-
data-stagger="0.06" data-char-duration="0.9">你好,世界</h1>
|
|
446
|
-
|
|
447
|
-
<p class="subtitle"
|
|
448
|
-
data-clip data-start="1.4" data-duration="8"
|
|
449
|
-
data-animation="fadeInUp" data-in-duration="0.8">第一帧</p>
|
|
450
|
-
</div>
|
|
451
|
-
|
|
452
|
-
<script src="../../runtime/timeline.js"></script>
|
|
453
|
-
<script src="../../runtime/components.js"></script>
|
|
454
|
-
```
|
|
455
|
-
The renderer (`render.mjs`) launches headless Chromium, sets
|
|
456
|
-
`window.__mvmRenderMode = true` to suppress the wall-clock preview loop,
|
|
457
|
-
then for every frame `i` calls `window.__mvm.seek(i / fps)` and screenshots
|
|
458
|
-
the page. Frames are encoded to H.264 MP4 via FFmpeg.
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
## Composition Attributes Reference
|
|
462
|
-
|
|
463
|
-
### Stage (`#stage`)
|
|
464
|
-
|
|
465
|
-
| Attribute | Purpose | Example |
|
|
466
|
-
|---|---|---|
|
|
467
|
-
| `data-width` / `data-height` | Canvas pixel size | `1920` / `1080` |
|
|
468
|
-
| `data-fps` | Frames per second | `30` (recommended) |
|
|
469
|
-
| `data-duration` | Total seconds | `30` |
|
|
470
|
-
| `data-background` | Page-level bg color | `#0a0a0f` |
|
|
471
|
-
|
|
472
|
-
### Clip (`[data-clip]`)
|
|
473
|
-
|
|
474
|
-
Governs **visibility window** and outer **in/out animation** of any element.
|
|
475
|
-
|
|
476
|
-
| Attribute | Purpose |
|
|
477
|
-
|---|---|
|
|
478
|
-
| `data-start` | When the clip first appears (seconds) |
|
|
479
|
-
| `data-duration` | How long the clip stays visible |
|
|
480
|
-
| `data-animation` (or `data-animation-in`) | In animation: `fadeIn` `fadeInUp` `fadeInDown` `fadeInLeft` `fadeInRight` `slideUp` `slideDown` `zoomIn` `zoomOut` `pop` `blurIn` `blurOut` `rotateIn` `swing3D` `floatIn` |
|
|
481
|
-
| `data-animation-out` | Out animation (any of the above ending in `Out` or any name from the list) |
|
|
482
|
-
| `data-in-duration` / `data-out-duration` | Animation duration (default 0.6s) |
|
|
483
|
-
| `data-easing` / `data-easing-out` | Standard: `linear` `easeIn` `easeOut` `easeInOut` `easeOutCubic` `easeInOutCubic` `easeOutQuart` `easeInOutQuart` `easeOutQuint` `easeOutExpo` `easeInOutExpo` `easeOutBack` `easeOutElastic` `easeOutBounce`. **Spring physics**: `springGentle` `springSoft` `springSnap` `springSmooth` `springBouncy` `springWobbly` `springStiff` |
|
|
484
|
-
| `data-hide-mode` | **`visibility` (default — keeps the layout slot so siblings DON'T jump when a later element fades in)** or `display` (legacy — removes from layout). Set `display` only when you actually want surrounding content to collapse into the empty space. |
|
|
485
|
-
| `data-scrim` | Auto-inject a backdrop layer behind the element so text stays readable on busy shader/particle backgrounds. Values: `card` (translucent dark pill + blur), `blur` (semi-dark + backdrop-filter blur), `radial` (radial darkness fade), `auto` (radial + auto drop-shadow). Tune with `data-scrim-padding`, `data-scrim-opacity`, `data-scrim-radius`, `data-scrim-color`, `data-scrim-blur`. |
|
|
486
|
-
|
|
487
|
-
**Available outer-animation presets** (for `data-animation` / `data-animation-in` / `data-animation-out`):
|
|
488
|
-
|
|
489
|
-
| Group | Names |
|
|
490
|
-
|---|---|
|
|
491
|
-
| **Fade / slide** | `fadeIn` `fadeOut` `fadeInUp` `fadeInDown` `fadeInLeft` `fadeInRight` `slideUp` `slideDown` |
|
|
492
|
-
| **Scale / pop** | `zoomIn` `zoomOut` `pop` `kenBurnsIn` `irisIn` |
|
|
493
|
-
| **Blur** | `blurIn` `blurOut` `slideBlurIn` |
|
|
494
|
-
| **Rotate / 3D** | `rotateIn` `swing3D` `flipInX` `flipInY` `cubeIn` `skewIn` |
|
|
495
|
-
| **Mask reveal** | `unmaskUp` `unmaskDown` `unmaskLeft` `unmaskRight` (clip-path inset – feels cinematic) |
|
|
496
|
-
| **Physics-ish** | `floatIn` `magneticIn` `dropIn` `glitchIn` |
|
|
497
|
-
|
|
498
|
-
> **Variety tip:** when you have N parallel elements (cards, list items, layers), give each one a *different* preset from a different group — that's exactly what turns a "generic" composition into a polished one.
|
|
499
|
-
|
|
500
|
-
### Text animations (`[data-text-animation]`)
|
|
501
|
-
|
|
502
|
-
Use **on the element whose text you want to animate**. Combine with `data-clip` so the element has a defined visibility window. The text component reads `data-anim-duration` for its own animation length, falling back to `data-duration`.
|
|
503
|
-
|
|
504
|
-
| `data-text-animation` | Effect | Key attributes |
|
|
505
|
-
|---|---|---|
|
|
506
|
-
| `split-text` | Per-char staggered fade+slide | `data-stagger` `data-char-duration` `data-travel` `data-split-mode` (`char`/`word`) |
|
|
507
|
-
| `blur-text` | Per-char blur → focus | `data-stagger` `data-char-duration` |
|
|
508
|
-
| `shiny-text` | Metallic sheen sweep | `data-speed` |
|
|
509
|
-
| `gradient-text` | Animated rainbow sweep | `data-colors` `data-speed` |
|
|
510
|
-
| `glitch-text` | RGB split + jitter | `data-intensity` |
|
|
511
|
-
| `decrypted-text` | Hacker-style decode | `data-anim-duration` |
|
|
512
|
-
| `type-text` | Typewriter + blinking cursor | `data-cps` (chars/second) |
|
|
513
|
-
| `rotating-text` | Cycle through phrases | `data-phrases` (pipe-separated) `data-each` |
|
|
514
|
-
| `count-up` | Animated number counter — set `data-odometer="true"` for **mechanical-flip rendering** (each digit is a separate column that gently rotates as it carries) | `data-from` `data-to` `data-anim-duration` `data-decimals` `data-prefix` `data-suffix` `data-separator` `data-odometer` |
|
|
515
|
-
| `shuffle-text` | Char shuffle reveal | `data-anim-duration` |
|
|
516
|
-
| `mask-text` | Whole-text clip-path reveal — wipe direction set by `data-mask-from` (`left` / `right` / `top` / `bottom` / `center`). **Note:** does NOT compose well with `.text-raycast` / `.text-aurora` / `.text-fire` gradient classes that use `-webkit-text-fill-color: transparent` (Chromium hides the gradient under a clip-path). Use on solid-color text or pair with `data-scrim`. | `data-mask-from` `data-anim-duration` `data-easing` |
|
|
517
|
-
| `wave-text` | Per-char vertical sine wave that travels across the text — characters ride the crest into place. | `data-stagger` `data-char-duration` `data-amplitude` `data-wave` `data-easing` |
|
|
518
|
-
| `scramble-text` | Symbol/digit scramble that resolves left→right (more aggressive than `shuffle-text` — uses `!@#$%&*+={}[]\\|01101001`). Great for technical labels. | `data-anim-duration` |
|
|
519
|
-
|
|
520
|
-
### Backgrounds (`[data-background]`)
|
|
521
|
-
|
|
522
|
-
Absolute-positioned full-stage backgrounds — both Canvas2D and WebGL.
|
|
523
|
-
|
|
524
|
-
**Canvas backgrounds** (lighter, no GPU):
|
|
525
|
-
|
|
526
|
-
| `data-background` | Effect | Key attributes |
|
|
527
|
-
|---|---|---|
|
|
528
|
-
| `aurora` | Lightful gradient orbs | `data-colors` |
|
|
529
|
-
| `particles` | Drifting particle field | `data-count` `data-color` `data-size` `data-seed` |
|
|
530
|
-
| `starfield` | Galaxy / parallax stars | `data-count` `data-speed` `data-seed` `data-bg` |
|
|
531
|
-
| `threads` | Sinusoidal flowing lines | `data-lines` `data-color` `data-bg` |
|
|
532
|
-
| `waves` | Layered ocean waves | `data-colors` `data-bg` |
|
|
533
|
-
| `dot-grid` | Pulsing radial dot grid | `data-gap` `data-color` `data-bg` |
|
|
534
|
-
| `hyperspeed` | Radial speed-line warp | `data-count` `data-colors` `data-seed` |
|
|
535
|
-
| `letter-glitch` | Matrix-style char cells | `data-cell` `data-colors` `data-bg` |
|
|
536
|
-
| `noise` | Film-grain overlay | `data-strength` |
|
|
537
|
-
| `magnet-lines` | Vector-field grid where short line segments align toward animated magnetic poles | `data-colors` `data-poles` `data-gap` `data-length` `data-bg` |
|
|
538
|
-
| `ribbons` | Multi-layer parametric flowing ribbons with glow | `data-colors` `data-count` `data-bg` |
|
|
539
|
-
|
|
540
|
-
**WebGL fragment-shader backgrounds** (richer, real shaders — require `shaders.js`):
|
|
541
|
-
|
|
542
|
-
| `data-background` | Effect | Common attributes |
|
|
543
|
-
|---|---|---|
|
|
544
|
-
| `liquid-ether` | Domain-warped fbm fluid, iridescent rim | `data-colors` (4 stops) `data-intensity` `data-scale` |
|
|
545
|
-
| `iridescence` | Curved rainbow interference bands | `data-colors` `data-intensity` `data-scale` `data-seed` |
|
|
546
|
-
| `prismatic-burst` | Center-radiating volumetric light + chromatic split | `data-colors` `data-intensity` |
|
|
547
|
-
| `lightning` | Procedural lightning bolts with flicker + glow | `data-colors` `data-intensity` `data-seed` |
|
|
548
|
-
| `plasma` | Classic organic plasma turbulence | `data-colors` `data-intensity` `data-scale` |
|
|
549
|
-
| `beams` | Crossing rotating light beams + hot spot | `data-colors` `data-intensity` |
|
|
550
|
-
| `meta-balls` | N orbiting isosurface meta-balls with gradient fill + chromatic edge highlight | `data-colors` `data-intensity` `data-scale` `data-seed` |
|
|
551
|
-
|
|
552
|
-
All shader backgrounds accept `data-colors` as 4 hex stops (e.g. `"#FF6363,#FF8B5E,#FFD400,#0a0a16"`).
|
|
553
|
-
|
|
554
|
-
### Scene transitions (`[data-transition]`)
|
|
555
|
-
|
|
556
|
-
Place a `<div data-transition="..." data-start="..." data-duration="...">`
|
|
557
|
-
**anywhere inside `#stage`** — it auto-mounts a fullscreen overlay canvas
|
|
558
|
-
that paints the transition over everything from `start` to `start+duration`.
|
|
559
|
-
|
|
560
|
-
| `data-transition` | Effect | Extra attributes |
|
|
561
|
-
|---|---|---|
|
|
562
|
-
| `wipe-up` / `wipe-down` / `wipe-left` / `wipe-right` | Solid bar sweeps across | `data-color` `data-easing` |
|
|
563
|
-
| `wipe` (with `data-dir="diag"`) | Diagonal sweep | as above |
|
|
564
|
-
| `iris` / `circle-reveal` | Circular mask shrinks then expands | `data-color` `data-easing` |
|
|
565
|
-
| `pixel-dissolve` | Deterministic tile reveal + hide | `data-color` `data-tile` |
|
|
566
|
-
| `shape` | Twin-shape morph with circle erase | `data-color` `data-easing` |
|
|
567
|
-
| `flash` | Quick full-screen flash | `data-color` (white default) |
|
|
568
|
-
| `glitch` | RGB-split + horizontal panel tear | — |
|
|
569
|
-
|
|
570
|
-
The full transition window is `duration`; half-way through (`p=0.5`) the
|
|
571
|
-
overlay is fully opaque so the underlying scenes can swap invisibly.
|
|
572
|
-
|
|
573
|
-
### Effects (`[data-fx]`)
|
|
574
|
-
|
|
575
|
-
| `data-fx` | Effect | Key attributes |
|
|
576
|
-
|---|---|---|
|
|
577
|
-
| `clock` | Analog clock with hands | `data-speed` (time multiplier) |
|
|
578
|
-
|
|
579
|
-
### Element-level effects (`[data-effect]`)
|
|
580
|
-
|
|
581
|
-
Decorations that attach to **an existing element** and animate around it.
|
|
582
|
-
Inspired by react-bits' ElectricBorder / StarBorder / ImageTrail.
|
|
583
|
-
|
|
584
|
-
| `data-effect` | Effect | Key attributes |
|
|
585
|
-
|---|---|---|
|
|
586
|
-
| `electric-border` | RGB-split, noise-perturbed electric arcs flowing around the element's rounded perimeter | `data-color` `data-color2` `data-color3` `data-intensity` `data-speed` `data-padding` `data-border-radius` |
|
|
587
|
-
| `star-border` | N glowing 4-point stars orbit the perimeter with comet trails | `data-color` `data-count` `data-tail` `data-speed` `data-size` `data-padding` |
|
|
588
|
-
| `image-trail` | While the element is *entering*, draws N ghost copies that lag the in-animation progress, fading out behind it. Reads the element's `data-animation` to reuse its in-style. | `data-trail-count` `data-trail-stride` `data-trail-decay` |
|
|
589
|
-
|
|
590
|
-
```html
|
|
591
|
-
<!-- card with electric flowing border, perfect for "chosen" highlights -->
|
|
592
|
-
<div class="card chosen"
|
|
593
|
-
data-effect="electric-border"
|
|
594
|
-
data-color="#FF6363" data-color2="#FFD400" data-color3="#5BC0EB"
|
|
595
|
-
data-intensity="1.3" data-speed="1.4" data-padding="22"
|
|
596
|
-
data-border-radius="18"
|
|
597
|
-
data-clip data-start="2" data-duration="6"
|
|
598
|
-
data-animation="pop" data-easing="springBouncy"
|
|
599
|
-
style="opacity:0;">CHOSEN</div>
|
|
600
|
-
|
|
601
|
-
<!-- title with image-trail during its slide-in -->
|
|
602
|
-
<h1 data-effect="image-trail"
|
|
603
|
-
data-trail-count="5" data-trail-stride="0.06" data-trail-decay="0.7"
|
|
604
|
-
data-clip data-start="0" data-duration="4"
|
|
605
|
-
data-animation="fadeInLeft" data-in-duration="0.9"
|
|
606
|
-
data-easing="springSmooth">FLOW</h1>
|
|
607
|
-
|
|
608
|
-
## GSAP integration — every plugin, deterministic, bridged
|
|
609
|
-
|
|
610
|
-
The runtime now bundles **GSAP 3.15** plus every plugin Webflow makes free
|
|
611
|
-
(see lineage). All of them animate on the same `mvm-seek` clock as
|
|
612
|
-
the native runtime — two renders are still byte-identical.
|
|
613
|
-
|
|
614
|
-
### What you get
|
|
615
|
-
|
|
616
|
-
| Capability | Plugin | data-* attribute | Programmatic |
|
|
617
|
-
|---|---|---|---|
|
|
618
|
-
| Tween any CSS / transform property with arbitrary ease | core | `data-gsap-from` / `data-gsap-to` | `__mvmGsap.timeline({at}).to(...)` |
|
|
619
|
-
| Per-line / -word / -char text reveals with masks | SplitText | `data-gsap-split="lines,words,chars"` | `SplitText.create(...)` then tween |
|
|
620
|
-
| Stroke draw on an SVG path | DrawSVGPlugin | `data-draw-svg="0% 100%"` | `gsap.fromTo(path, {drawSVG:'0 0'}, {drawSVG:'100%'})` |
|
|
621
|
-
| Morph one SVG path into another | MorphSVGPlugin | `data-morph-to="#otherPath"` | `gsap.to(p, {morphSVG:'#x'})` |
|
|
622
|
-
| Animate any element along an SVG path | MotionPathPlugin | `data-motion-path="#pathId"` | `gsap.to(el, {motionPath:{path}})` |
|
|
623
|
-
| Velocity / angle / gravity physics | Physics2DPlugin | `data-physics2d='{"velocity":300,"angle":-80,"gravity":600}'` | `gsap.to(el, {physics2D: {...}})` |
|
|
624
|
-
| Per-property velocity / acceleration | PhysicsPropsPlugin | (programmatic only) | `gsap.to(el, {physicsProps: {x:{velocity}}})` |
|
|
625
|
-
| FLIP layout transitions between scenes | Flip | `class="mvm-flip" data-flip-id="x" data-flip-at="3.0"` | `Flip.getState() / Flip.from()` |
|
|
626
|
-
| Decoder scramble | ScrambleTextPlugin | `data-scramble='{"text":"DONE"}'` | `gsap.to(el, {scrambleText: {...}})` |
|
|
627
|
-
| Type / replace text content over time | TextPlugin | (programmatic only) | `gsap.to(el, {text: "new"})` |
|
|
628
|
-
| Custom cubic / SVG easing curves | CustomEase | `data-easing="mvm.<name>"` | `__mvmGsap.registerCustomEase(name, def)` |
|
|
629
|
-
| Wiggle / oscillating ease | CustomWiggle | `data-easing="mywiggle"` | `CustomWiggle.create("mywiggle", {...})` |
|
|
630
|
-
| Real bounce ease | CustomBounce | `data-easing="mybounce"` | `CustomBounce.create("mybounce", {...})` |
|
|
631
|
-
| SlowMo / RoughEase / ExpoScaleEase | EasePack | `data-easing="slow(0.7,0.7)"` etc. | string in any tween's `ease` |
|
|
632
|
-
|
|
633
|
-
**Deliberately omitted** (because they need user interaction that
|
|
634
|
-
doesn't exist in offline render):
|
|
635
|
-
|
|
636
|
-
- `ScrollTrigger` / `ScrollSmoother` — there is no scroll
|
|
637
|
-
- `Draggable` / `Observer` / `InertiaPlugin` — there is no pointer
|
|
638
|
-
|
|
639
|
-
If you reference these, `scripts/lint.mjs` raises `W006`. Replace
|
|
640
|
-
them with a timeline that you anchor onto `gsap.globalTimeline` —
|
|
641
|
-
the bridge will seek into it on every `mvm-seek`.
|
|
642
|
-
|
|
643
|
-
### How the bridge works (the determinism contract)
|
|
644
|
-
|
|
645
|
-
1. The bridge calls `gsap.ticker.lagSmoothing(0)` and removes
|
|
646
|
-
`gsap.updateRoot` from `gsap.ticker` so GSAP's RAF clock never
|
|
647
|
-
advances anything on its own in render mode.
|
|
648
|
-
2. On every `mvm-seek` event the bridge calls
|
|
649
|
-
`gsap.updateRoot(seekTime)` — the official "drive me from a
|
|
650
|
-
custom clock" API. Every tween, child timeline, and plugin
|
|
651
|
-
advances to that exact absolute second. ([gsap.com/docs](https://gsap.com/docs/v3/GSAP/gsap.updateRoot()))
|
|
652
|
-
3. The bridge proxies `window.__mvm.easing` so any GSAP ease string
|
|
653
|
-
(e.g. `"power2.inOut"`, `"back.out(1.7)"`, `"elastic.out(1, 0.3)"`)
|
|
654
|
-
silently resolves through `gsap.parseEase(...)` and is then
|
|
655
|
-
available to the *native* `data-animation` system too. So you
|
|
656
|
-
can write `data-animation="fadeInUp" data-easing="back.out(1.6)"`
|
|
657
|
-
and the runtime now understands it.
|
|
658
|
-
4. Anything you author with `data-gsap-from` / `data-gsap-to` / etc.
|
|
659
|
-
becomes a `gsap.fromTo(...)` tween anchored at the host element's
|
|
660
|
-
`data-start + data-gsap-delay`. The clip's lifecycle still owns
|
|
661
|
-
visibility — GSAP only handles the tween itself.
|
|
662
|
-
|
|
663
|
-
> **Author hard-rules:**
|
|
664
|
-
> - Don't wrap `gsap.to()` / `gsap.from()` in `setTimeout` /
|
|
665
|
-
> `setInterval` / `requestAnimationFrame`. Wall-clock timers
|
|
666
|
-
> bypass `gsap.updateRoot` and produce different output every
|
|
667
|
-
> render. `lint.mjs W007` flags this.
|
|
668
|
-
> - Don't call `gsap.utils.random()` — it uses `Math.random` under
|
|
669
|
-
> the hood. Wrap with `__mvm.random("seed")` or pass a
|
|
670
|
-
> pre-computed deterministic value. `lint.mjs W008` flags this.
|
|
671
|
-
> - Build the timeline at parse-time; don't try to construct new
|
|
672
|
-
> tweens inside an `mvm-seek` handler (that fires every frame
|
|
673
|
-
> and would create thousands of tweens).
|
|
674
|
-
|
|
675
|
-
### Declarative recipes — copy these
|
|
676
|
-
|
|
677
|
-
#### 1) Drop-in tween (works on any element with `data-clip`)
|
|
678
|
-
|
|
679
|
-
```html
|
|
680
|
-
<h1 class="title text-readable"
|
|
681
|
-
data-clip data-start="2.0" data-duration="6"
|
|
682
|
-
data-gsap-from='{"y":120,"opacity":0,"rotationX":-30}'
|
|
683
|
-
data-gsap-to='{"y":0,"opacity":1,"rotationX":0}'
|
|
684
|
-
data-gsap-duration="1.0"
|
|
685
|
-
data-gsap-ease="back.out(1.4)">Hello GSAP</h1>
|
|
686
|
-
```
|
|
687
|
-
#### 2) Pro SplitText (line / word / char reveal with mask)
|
|
688
|
-
```
|
|
689
|
-
```html
|
|
690
|
-
<h1 class="title"
|
|
691
|
-
data-clip data-start="0.6" data-duration="5"
|
|
692
|
-
data-gsap-split="lines,words,chars"
|
|
693
|
-
data-gsap-mask="lines"
|
|
694
|
-
data-gsap-stagger="0.05" data-gsap-duration="0.9"
|
|
695
|
-
data-gsap-y="120" data-gsap-ease="power3.out">动画引擎</h1>
|
|
696
|
-
```
|
|
697
|
-
`data-gsap-mask="lines"` clips each line to its own bounding box —
|
|
698
|
-
characters that translate up appear "lifted" out of an invisible
|
|
699
|
-
slot. Combine with a serif font for an editorial feel.
|
|
700
|
-
|
|
701
|
-
#### 3) DrawSVG — animate a stroke
|
|
702
|
-
```
|
|
703
|
-
```html
|
|
704
|
-
<svg class="logo" viewBox="0 0 1100 520">
|
|
705
|
-
<path d="M 80 440 L 80 100 L 240 360 L 400 100 L 400 440"
|
|
706
|
-
fill="none" stroke="#FFD400" stroke-width="4"
|
|
707
|
-
data-clip data-start="6.4" data-duration="5"
|
|
708
|
-
data-draw-svg="0% 100%"
|
|
709
|
-
data-gsap-duration="1.6"
|
|
710
|
-
data-gsap-ease="power2.inOut" />
|
|
711
|
-
</svg>
|
|
712
|
-
```
|
|
713
|
-
The path MUST have a visible `stroke` (CSS or attribute). Multiple
|
|
714
|
-
paths can share `data-clip data-start` to draw simultaneously, or
|
|
715
|
-
stagger them by 0.2-0.5s for a "logotype building itself" effect.
|
|
716
|
-
|
|
717
|
-
#### 4) MorphSVG — square → triangle → star
|
|
718
|
-
|
|
719
|
-
Hide the target shapes (so they don't render their own strokes/fill),
|
|
720
|
-
keep the visible morphing path, and animate it through targets:
|
|
721
|
-
```
|
|
722
|
-
```html
|
|
723
|
-
<svg viewBox="0 0 540 540">
|
|
724
|
-
<!-- targets are visibility:hidden so only their `d` matters -->
|
|
725
|
-
<path id="shape-triangle" style="visibility:hidden"
|
|
726
|
-
d="M 270 60 L 480 470 L 60 470 Z" />
|
|
727
|
-
<path id="shape-star" style="visibility:hidden"
|
|
728
|
-
d="M 270 60 L 320 220 L 480 220 L 350 320 L 400 480
|
|
729
|
-
L 270 380 L 140 480 L 190 320 L 60 220 L 220 220 Z" />
|
|
730
|
-
|
|
731
|
-
<!-- The visible path morphs through them. First hop is declarative,
|
|
732
|
-
further hops are sequenced on a real GSAP timeline. -->
|
|
733
|
-
<path id="morph"
|
|
734
|
-
d="M 80 80 L 460 80 L 460 460 L 80 460 Z"
|
|
735
|
-
fill="none" stroke="#5BC0EB" stroke-width="6"
|
|
736
|
-
data-clip data-start="12.4" data-duration="5"
|
|
737
|
-
data-morph-to="#shape-triangle"
|
|
738
|
-
data-gsap-duration="1.0" />
|
|
739
|
-
</svg>
|
|
740
|
-
|
|
741
|
-
<script>
|
|
742
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
743
|
-
const tl = window.__mvmGsap.timeline({ at: 13.6 });
|
|
744
|
-
tl.to('#morph', { morphSVG: '#shape-star', duration: 1, ease: 'power2.inOut' })
|
|
745
|
-
.to('#morph', { morphSVG: '#shape-circle', duration: 1, ease: 'power2.inOut' }, '+=0.4');
|
|
746
|
-
});
|
|
747
|
-
</script>
|
|
748
|
-
```
|
|
749
|
-
#### 5) MotionPath — anything along an SVG path
|
|
750
|
-
```
|
|
751
|
-
```html
|
|
752
|
-
<svg class="track" viewBox="0 0 1280 540" style="position:absolute;top:50%;left:50%;
|
|
753
|
-
transform:translate(-50%,-50%); width:1280px; height:540px;">
|
|
754
|
-
<path id="rocket-path" d="M 60 480 C 260 480 360 60 640 270
|
|
755
|
-
C 920 480 1020 60 1220 60"
|
|
756
|
-
fill="none" stroke="#FFD400" stroke-width="2"
|
|
757
|
-
stroke-dasharray="4 6" />
|
|
758
|
-
</svg>
|
|
759
|
-
|
|
760
|
-
<div style="position:absolute; left:0; top:0; font-size:84px;"
|
|
761
|
-
data-clip data-start="18.6" data-duration="5"
|
|
762
|
-
data-motion-path="#rocket-path"
|
|
763
|
-
data-motion-path-rotate="true"
|
|
764
|
-
data-gsap-duration="4.6"
|
|
765
|
-
data-gsap-ease="power1.inOut">🚀</div>
|
|
766
|
-
```
|
|
767
|
-
`data-motion-path-rotate="true"` rotates the host to follow the
|
|
768
|
-
tangent of the curve (great for arrows, comets, planes).
|
|
769
|
-
|
|
770
|
-
#### 6) Physics2D confetti — programmatic, deterministic
|
|
771
|
-
```
|
|
772
|
-
```html
|
|
773
|
-
<div id="conf-host" style="position:absolute; left:960px; top:540px;"></div>
|
|
774
|
-
<script>
|
|
775
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
776
|
-
const host = document.getElementById('conf-host');
|
|
777
|
-
const palette = ['#FF6363', '#FFD400', '#5BC0EB', '#9d8df1', '#2af598'];
|
|
778
|
-
const rng = window.__mvm.random('confetti'); // deterministic PRNG
|
|
779
|
-
const tl = window.__mvmGsap.timeline({ at: 24.6 }); // anchor at 24.6s
|
|
780
|
-
for (let i = 0; i < 60; i++) {
|
|
781
|
-
const dot = document.createElement('div');
|
|
782
|
-
Object.assign(dot.style, {
|
|
783
|
-
position:'absolute', left:'0', top:'0',
|
|
784
|
-
width:'22px', height:'22px', borderRadius:'4px',
|
|
785
|
-
background: palette[Math.floor(rng() * palette.length)],
|
|
786
|
-
});
|
|
787
|
-
host.appendChild(dot);
|
|
788
|
-
const angle = -90 + (rng() * 160 - 80);
|
|
789
|
-
const velocity = 700 + rng() * 700;
|
|
790
|
-
const gravity = 1400 + rng() * 400;
|
|
791
|
-
const dur = 2.4 + rng() * 0.9;
|
|
792
|
-
tl.to(dot, { physics2D: { velocity, angle, gravity },
|
|
793
|
-
rotation: (rng() - 0.5) * 1080,
|
|
794
|
-
duration: dur, ease: 'none' }, 0);
|
|
795
|
-
tl.to(dot, { opacity: 0, duration: 0.6, ease: 'power2.in' }, dur - 0.6);
|
|
796
|
-
}
|
|
797
|
-
});
|
|
798
|
-
</script>
|
|
799
|
-
```
|
|
800
|
-
Use `__mvm.random("seed")` for the RNG so the burst pattern is
|
|
801
|
-
identical between renders. Lint rule `W008` enforces this.
|
|
802
|
-
|
|
803
|
-
#### 7) ScrambleText — decoder reveal
|
|
804
|
-
```
|
|
805
|
-
```html
|
|
806
|
-
<p class="text-readable"
|
|
807
|
-
data-clip data-start="30.6" data-duration="5"
|
|
808
|
-
data-scramble='{"text":"DECRYPTING ACCESS","chars":"upperAndLowerCase"}'
|
|
809
|
-
data-gsap-duration="2.0">▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓</p>
|
|
810
|
-
|
|
811
|
-
<!-- with custom CJK character pool -->
|
|
812
|
-
<p data-clip data-start="32" data-duration="3"
|
|
813
|
-
data-scramble='{"text":"动画即数据","chars":"龙腾虎跃春夏秋冬天地"}'
|
|
814
|
-
data-gsap-duration="1.4">?????</p>
|
|
815
|
-
```
|
|
816
|
-
`chars` accepts:
|
|
817
|
-
- `"upperAndLowerCase"` / `"upperCase"` / `"lowerCase"` — Latin
|
|
818
|
-
- `"01"` — binary
|
|
819
|
-
- any string of glyphs to cycle through (works perfectly with CJK)
|
|
820
|
-
|
|
821
|
-
#### 8) Programmatic timeline — full GSAP sequencing
|
|
822
|
-
|
|
823
|
-
When you want to choreograph 10+ elements in one scene:
|
|
824
|
-
```
|
|
825
|
-
```html
|
|
826
|
-
<script>
|
|
827
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
828
|
-
const cells = document.querySelectorAll('.grid-cell');
|
|
829
|
-
// Custom ease registered via the bridge
|
|
830
|
-
window.__mvmGsap.registerCustomEase(
|
|
831
|
-
'mvm.swoop',
|
|
832
|
-
'M0,0 C0.2,0.0 0.0,0.6 0.4,0.85 0.7,1.05 0.8,0.98 1,1'
|
|
833
|
-
);
|
|
834
|
-
const tl = window.__mvmGsap.timeline({ at: 36.4 });
|
|
835
|
-
tl.from(cells, {
|
|
836
|
-
y: 240, opacity: 0, scale: 0.4, rotation: -12,
|
|
837
|
-
stagger: { each: 0.06, from: 'center' },
|
|
838
|
-
duration: 0.9, ease: 'mvm.swoop',
|
|
839
|
-
}, 0)
|
|
840
|
-
.to(cells, {
|
|
841
|
-
scale: 1.08, duration: 0.4, ease: 'sine.inOut',
|
|
842
|
-
stagger: { each: 0.04, from: 'edges' },
|
|
843
|
-
yoyo: true, repeat: 1,
|
|
844
|
-
}, 1.4)
|
|
845
|
-
.to(cells, {
|
|
846
|
-
rotationY: 360, duration: 1.2, ease: 'power2.inOut',
|
|
847
|
-
stagger: { each: 0.08, from: 'start', grid: [2, 4], axis: 'x' },
|
|
848
|
-
}, 2.6);
|
|
849
|
-
});
|
|
850
|
-
</script>
|
|
851
|
-
```
|
|
852
|
-
`__mvmGsap.timeline({at: 36.4})` returns a real `gsap.timeline()`
|
|
853
|
-
that has been added to `gsap.globalTimeline` at absolute time
|
|
854
|
-
`36.4s`. Internal positioning (`0`, `1.4`, `'+=0.2'`, `'<'`, …)
|
|
855
|
-
follows GSAP's [position parameter](https://gsap.com/docs/v3/GSAP/Timeline)
|
|
856
|
-
verbatim.
|
|
857
|
-
```
|
|
858
|
-
|
|
859
|
-
### CustomEase / CustomWiggle / CustomBounce / EasePack
|
|
860
|
-
|
|
861
|
-
These plug straight into the runtime's existing easing table. Once
|
|
862
|
-
the bridge mounts, `data-easing="<gsap-ease-name>"` works on any
|
|
863
|
-
mvm-native preset:
|
|
864
|
-
|
|
865
|
-
```html
|
|
866
|
-
<!-- power easings (the most useful for video pacing) -->
|
|
867
|
-
<h1 data-animation="fadeInUp" data-easing="power3.out">…</h1>
|
|
868
|
-
<h2 data-animation="slideBlurIn" data-easing="expo.inOut">…</h2>
|
|
869
|
-
|
|
870
|
-
<!-- back / elastic / bounce -->
|
|
871
|
-
<p data-animation="pop" data-easing="back.out(1.7)">…</p>
|
|
872
|
-
<p data-animation="dropIn" data-easing="elastic.out(1, 0.3)">…</p>
|
|
873
|
-
|
|
874
|
-
<!-- EasePack -->
|
|
875
|
-
<p data-animation="fadeIn" data-easing="slow(0.7, 0.7, false)">…</p>
|
|
876
|
-
<p data-animation="zoomIn" data-easing="rough({clamp:true,points:20})">…</p>
|
|
877
|
-
|
|
878
|
-
<!-- Author-defined CustomEase -->
|
|
879
|
-
<script>
|
|
880
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
881
|
-
window.__mvmGsap.registerCustomEase('mvm.swoop',
|
|
882
|
-
'M0,0 C0.2,0.0 0.0,0.6 0.4,0.85 0.7,1.05 0.8,0.98 1,1');
|
|
883
|
-
});
|
|
884
|
-
</script>
|
|
885
|
-
<h1 data-animation="fadeInUp" data-easing="mvm.swoop">…</h1>
|
|
886
|
-
|
|
887
|
-
<!-- CustomWiggle / CustomBounce -->
|
|
888
|
-
<script>
|
|
889
|
-
CustomWiggle.create('myWiggle', { wiggles: 6, type: 'random' });
|
|
890
|
-
CustomBounce.create('myBounce', { strength: 0.7, squash: 3 });
|
|
891
|
-
</script>
|
|
892
|
-
<div data-gsap-from='{"rotation":-30}' data-gsap-to='{"rotation":30}'
|
|
893
|
-
data-gsap-duration="1.5" data-gsap-ease="myWiggle">…</div>
|
|
894
|
-
|
|
895
|
-
### When to use mvm-native vs GSAP
|
|
896
|
-
|
|
897
|
-
| Goal | Use |
|
|
898
|
-
|---|---|
|
|
899
|
-
| Quick entrance from the 24-preset table (`fadeInUp`, `unmaskUp`, `magneticIn`, …) | mvm `data-animation=` |
|
|
900
|
-
| Per-character text animation that doesn't need lines or masks | mvm `data-text-animation="split-text"` |
|
|
901
|
-
| Stagger over arbitrary properties / arbitrary easing | GSAP `data-gsap-from` / `data-gsap-to` |
|
|
902
|
-
| Line-aware split, mask reveal, autoSplit on font-load | GSAP `data-gsap-split` |
|
|
903
|
-
| Stroke draw, shape morph, motion path | GSAP plugins (DrawSVG / MorphSVG / MotionPath) |
|
|
904
|
-
| Particle bursts with physics | GSAP `Physics2DPlugin` |
|
|
905
|
-
| Choreographing 5+ elements with overlapping time positions | `__mvmGsap.timeline({at})` |
|
|
906
|
-
| Layout transitions between scenes (FLIP) | GSAP `Flip` |
|
|
907
|
-
| Custom mathematical ease curve (cubic-bezier or SVG path) | GSAP `CustomEase` (use anywhere) |
|
|
908
|
-
|
|
909
|
-
The two systems compose freely — use whichever reads best for the
|
|
910
|
-
scene. Existing examples (`time-flies`, `raycast-deep-dive-v*`)
|
|
911
|
-
still use the mvm-native attributes; new compositions are
|
|
912
|
-
encouraged to mix the two for richer motion.
|
|
913
|
-
|
|
914
|
-
### Where to look
|
|
915
|
-
|
|
916
|
-
- **`runtime/gsap-bridge.js`** — the determinism layer. Read this
|
|
917
|
-
to understand exactly how `mvm-seek` drives every GSAP tween.
|
|
918
|
-
- **`runtime/gsap/`** — bundled GSAP 3.15 + every plugin (UMD).
|
|
919
|
-
- **`examples/gsap-showcase/index.html`** — 7-scene 42s reference
|
|
920
|
-
exercising each plugin (SplitText / DrawSVG / MorphSVG /
|
|
921
|
-
MotionPath / Physics2D / ScrambleText / programmatic timeline +
|
|
922
|
-
CustomEase). Render with `npm run render:gsap`.
|
|
923
|
-
|
|
924
|
-
## Typography limits — never write `font-size: 180px` for a long title
|
|
925
|
-
|
|
926
|
-
The stage is **1920×1080**. At that width, "Motion Video Maker" wraps
|
|
927
|
-
mid-word once you go above ~140px; longer phrases like
|
|
928
|
-
"HTML 驱动的电影级动画引擎" need even smaller sizes. Always pick from
|
|
929
|
-
the safe scale instead of writing px:
|
|
930
|
-
|
|
931
|
-
```html
|
|
932
|
-
<!-- ✅ Safe — fits 1920px stage for typical 15–22 char titles -->
|
|
933
|
-
<h1 class="title-2xl text-on-warm">Motion Video Maker</h1>
|
|
934
|
-
|
|
935
|
-
<!-- ✅ Also safe — for shorter, punchier hero titles -->
|
|
936
|
-
<h1 class="title-3xl text-on-cool">时间飞逝</h1>
|
|
937
|
-
|
|
938
|
-
<!-- ❌ Don't do this — wraps to two left-aligned lines on a 1920 stage -->
|
|
939
|
-
<h1 style="font-size: 180px;">Motion Video Maker</h1>
|
|
940
|
-
|
|
941
|
-
### Safe font-size scale (verified non-wrapping @ 1920×1080)
|
|
942
|
-
|
|
943
|
-
| Class | font-size | Safe up to (latin / CJK) |
|
|
944
|
-
|---|---|---|
|
|
945
|
-
| `.title-3xl` | 160px | 14 chars / 12 chars |
|
|
946
|
-
| `.title-2xl` | 130px | 18 chars / 15 chars |
|
|
947
|
-
| `.title-xl` | 100px | 22 chars / 18 chars |
|
|
948
|
-
| `.title-lg` | 80px | 28 chars / 22 chars |
|
|
949
|
-
| `.title-md` | 60px | 38 chars / 28 chars |
|
|
950
|
-
| `.title-sm` | 44px | wide subtitles |
|
|
951
|
-
| `.body-lg/md/sm` | 40/32/24px | paragraphs |
|
|
952
|
-
|
|
953
|
-
The runtime ships `layout-check.js`: any heading that wraps or extends
|
|
954
|
-
past the stage edge produces a `[mvm-layout]` console.warn during
|
|
955
|
-
rendering, and the render script prints a summary at the end so you
|
|
956
|
-
know to dial down the font size before re-rendering.
|
|
957
|
-
|
|
958
|
-
### Center by default
|
|
959
|
-
|
|
960
|
-
The runtime now applies `text-align: center; margin: 0 auto; max-width: 92%`
|
|
961
|
-
to every `#stage h1–h6, #stage p`. Flex containers no longer cause
|
|
962
|
-
left-aligned titles when text wraps. Set `text-align: left` (or
|
|
963
|
-
`.pos-left` / `.pos-right`) on the element if you actually want it
|
|
964
|
-
off-center.
|
|
965
|
-
|
|
966
|
-
## Background palette + matching text class — the PALETTE PAIR rule
|
|
967
|
-
|
|
968
|
-
This is the **#1 thing other agents got wrong** in the wild: choosing
|
|
969
|
-
a shader palette and a text gradient class from the same hue family,
|
|
970
|
-
producing invisible text. Examples observed:
|
|
971
|
-
|
|
972
|
-
- `.text-aurora` (cyan/blue/violet gradient) on `liquid-ether` with a
|
|
973
|
-
blue/violet `data-colors` → text vanishes into the background.
|
|
974
|
-
- `.text-fire` (yellow/orange/red gradient) on `meta-balls` with a
|
|
975
|
-
red/orange `data-colors` → text vanishes into the background.
|
|
976
|
-
|
|
977
|
-
To eliminate this entire class of bugs, the runtime now ships
|
|
978
|
-
**named palettes** for every shader and **matching text classes** that
|
|
979
|
-
have been hand-tuned for 4.5:1 contrast against that palette family.
|
|
980
|
-
You only ever have to pick one of each.
|
|
981
|
-
|
|
982
|
-
### Named palettes (`data-palette="..."`)
|
|
983
|
-
|
|
984
|
-
| Family | Palette names | Best with text class |
|
|
985
|
-
|---|---|---|
|
|
986
|
-
| **Cool** (blue / violet) | `cool-deep` `cool-arctic` `cool-neon` `cool-violet` | `.text-on-cool` (warm yellow) / `.text-on-cool-soft` |
|
|
987
|
-
| **Warm** (red / orange / gold) | `warm-glow` `warm-sunset` `warm-ember` `warm-autumn` | `.text-on-warm` (cool white-blue) / `.text-on-warm-soft` |
|
|
988
|
-
| **Prismatic** (rainbow / vapor) | `prismatic-cyber` `prismatic-vapor` `prismatic-magic` | `.text-on-prismatic` (pure white + heavy halo) |
|
|
989
|
-
| **Mono** (deep neutral) | `mono-deep` `mono-ink` `mono-graphite` | `.text-on-mono` (warm yellow) |
|
|
990
|
-
| **Light** (paper / misty) | `light-paper` `light-misty` | `.text-on-light` (dark ink) |
|
|
991
|
-
|
|
992
|
-
```html
|
|
993
|
-
<!-- ✅ Cool palette + cool text class -->
|
|
994
|
-
<div data-background="liquid-ether" data-palette="cool-deep"
|
|
995
|
-
data-clip data-start="0" data-duration="6"
|
|
996
|
-
data-animation="fadeIn" data-animation-out="fadeOut"></div>
|
|
997
|
-
|
|
998
|
-
<div class="scene-scrim" data-clip data-hide-mode="visibility"
|
|
999
|
-
data-start="0" data-duration="5.5"
|
|
1000
|
-
style="position:absolute; inset:0; z-index:10; display:flex; ...">
|
|
1001
|
-
<p class="eyebrow text-on-cool">ANIMATION COMPONENTS</p>
|
|
1002
|
-
<h1 class="text-on-cool" style="font-size:120px; color:#fff;">标题</h1>
|
|
1003
|
-
</div>
|
|
1004
|
-
|
|
1005
|
-
<!-- ❌ Don't do this — .text-aurora over a cool shader = invisible -->
|
|
1006
|
-
<h1 class="text-aurora" ...>标题</h1>
|
|
1007
|
-
|
|
1008
|
-
### Drop-in stat-card preset (`.mvm-stat`)
|
|
1009
|
-
|
|
1010
|
-
When showing numeric stats on any shader, use the `.mvm-stat` family
|
|
1011
|
-
to skip color-picking entirely. Pair the border accent with the
|
|
1012
|
-
scene's palette family:
|
|
1013
|
-
|
|
1014
|
-
```html
|
|
1015
|
-
<!-- Cool-themed scene → red/cool/warm accents from .mvm-stat--* -->
|
|
1016
|
-
<div class="mvm-stat mvm-stat--red"
|
|
1017
|
-
data-clip ... data-animation="magneticIn">
|
|
1018
|
-
<span class="mvm-stat-num" data-text-animation="count-up" data-odometer="true"
|
|
1019
|
-
data-from="0" data-to="17">0</span>
|
|
1020
|
-
<span class="mvm-stat-label">种文字动画</span>
|
|
1021
|
-
</div>
|
|
1022
|
-
```
|
|
1023
|
-
The stat card has a solid dark plate built-in (no contrast worry),
|
|
1024
|
-
white digits, muted serif label, and the accent border lets you
|
|
1025
|
-
differentiate three or four stats by hue without changing text color.
|
|
1026
|
-
|
|
1027
|
-
See **[`examples/skill-intro/index.html``index.html`** — 6 scenes,
|
|
1028
|
-
6 different palettes, 0 contrast warnings.
|
|
1029
|
-
```
|
|
1030
|
-
|
|
1031
|
-
## Color & contrast contract — READ THIS FIRST
|
|
1032
|
-
|
|
1033
|
-
The runtime gives every composition a **white-on-dark default**. Follow
|
|
1034
|
-
three rules and your text will always be visible:
|
|
1035
|
-
|
|
1036
|
-
### Rule 1 — Always link `runtime/styles.css` BEFORE author CSS
|
|
1037
|
-
|
|
1038
|
-
```html
|
|
1039
|
-
<head>
|
|
1040
|
-
<link rel="stylesheet" href="../../runtime/styles.css" /> <!-- FIRST -->
|
|
1041
|
-
<link rel="stylesheet" href="../../assets/fonts/fonts.css" />
|
|
1042
|
-
<style>/* your overrides */</style>
|
|
1043
|
-
</head>
|
|
1044
|
-
```
|
|
1045
|
-
Without this, `#stage` has no default `color`/`background-color` and
|
|
1046
|
-
the browser falls back to **black-on-white** — invisible against the
|
|
1047
|
-
dark backgrounds you probably want.
|
|
1048
|
-
```
|
|
1049
|
-
|
|
1050
|
-
### Rule 2 — If you set `background: light` on ANY element, also set `color: dark` (and vice versa)
|
|
1051
|
-
|
|
1052
|
-
`#stage` defaults to `background: var(--mvm-bg, #0a0a0f)` and
|
|
1053
|
-
`color: var(--mvm-text, #fff)`. Every descendant inherits the white
|
|
1054
|
-
text **unless** you (or a class you apply) explicitly changes it.
|
|
1055
|
-
|
|
1056
|
-
This is the #1 mistake: an agent writes
|
|
1057
|
-
```html
|
|
1058
|
-
<div style="background: white; padding: 30px;">
|
|
1059
|
-
<h2>这个会看不见</h2>
|
|
1060
|
-
</div>
|
|
1061
|
-
```
|
|
1062
|
-
…and the heading inherits white → invisible on white card. **Solution:**
|
|
1063
|
-
use the paired utility classes, NEVER write half-pairs.
|
|
1064
|
-
|
|
1065
|
-
| If your container has… | Use this class |
|
|
1066
|
-
|---|---|
|
|
1067
|
-
| Dark background | `.mvm-card-dark` — paints dark + sets text white |
|
|
1068
|
-
| Light background | `.mvm-card-light` — paints light + sets text dark |
|
|
1069
|
-
| Need just text color | `.mvm-light` (white) / `.mvm-dark` (#0a0a0f) |
|
|
1070
|
-
| Need full-scene theme flip | `.mvm-bg-light` / `.mvm-bg-dark` on the scene wrapper |
|
|
1071
|
-
| Need a tonal mute | `.mvm-light-muted` / `.mvm-dark-muted` |
|
|
1072
|
-
```
|
|
1073
|
-
```html
|
|
1074
|
-
<!-- ✅ Good — paired class -->
|
|
1075
|
-
<div class="mvm-card-light">
|
|
1076
|
-
<h2>清晰可见 — 亮卡片自动配深字</h2>
|
|
1077
|
-
</div>
|
|
1078
|
-
|
|
1079
|
-
<!-- ✅ Good — explicit pair -->
|
|
1080
|
-
<div style="background:#FFD400; color:#1a0a08; padding:30px;">
|
|
1081
|
-
<h2>also fine — explicit dark text on yellow</h2>
|
|
1082
|
-
</div>
|
|
1083
|
-
|
|
1084
|
-
<!-- ❌ Bad — only background, color forgotten -->
|
|
1085
|
-
<div style="background: white; padding: 30px;">
|
|
1086
|
-
<h2>invisible — inherits white from #stage</h2>
|
|
1087
|
-
</div>
|
|
1088
|
-
|
|
1089
|
-
### Rule 3 — Run the contrast checker (it's automatic during render)
|
|
1090
|
-
|
|
1091
|
-
`runtime/contrast-check.js` runs on every `mvm-seek` tick and walks
|
|
1092
|
-
every visible text element under `#stage`, computes the WCAG luminance
|
|
1093
|
-
ratio against its effective background, and emits a `console.warn` for
|
|
1094
|
-
any element under **2.2:1** (essentially invisible).
|
|
1095
|
-
|
|
1096
|
-
`render.mjs` collects those warnings and prints a one-shot summary at
|
|
1097
|
-
the end of the export so you never ship an MP4 with hidden text:
|
|
1098
|
-
|
|
1099
|
-
```
|
|
1100
|
-
[mvm] ⚠ 2 LOW-CONTRAST TEXT ISSUE(S) DETECTED
|
|
1101
|
-
[mvm] • text "看不见" (color rgb(255,255,255)) on background rgba(255,255,255,1)
|
|
1102
|
-
[mvm] at <h2.subtitle>. Fix: add .mvm-light / .mvm-card-dark, or set color/background explicitly.
|
|
1103
|
-
```
|
|
1104
|
-
```
|
|
1105
|
-
`templates/contrast-test.html` is a self-test page with 4 cells (2 bad
|
|
1106
|
-
+ 2 good) you can use as a regression test of the safety net.
|
|
1107
|
-
```
|
|
1108
|
-
|
|
1109
|
-
### Theming an entire composition
|
|
1110
|
-
|
|
1111
|
-
```html
|
|
1112
|
-
<!-- Light-themed composition: flip --mvm-bg and --mvm-text on #stage -->
|
|
1113
|
-
<div id="stage"
|
|
1114
|
-
style="--mvm-bg: #f7f5ef; --mvm-text: #0a0a0f;"
|
|
1115
|
-
data-width="1920" data-height="1080" data-fps="30" data-duration="10">
|
|
1116
|
-
<!-- now every default-text descendant is DARK on light, automatic -->
|
|
1117
|
-
</div>
|
|
1118
|
-
|
|
1119
|
-
## Keeping text readable on busy backgrounds
|
|
1120
|
-
|
|
1121
|
-
Shader / particle / video backgrounds tend to swallow typography. The
|
|
1122
|
-
skill provides a **3-layer defense** — pick the strongest layer your
|
|
1123
|
-
scene needs:
|
|
1124
|
-
|
|
1125
|
-
### Layer 1 — `.scene-scrim` on the scene container (recommended baseline)
|
|
1126
|
-
|
|
1127
|
-
Adds a CSS-only radial dark vignette covering the entire scene area,
|
|
1128
|
-
sitting between the shader background and the foreground content.
|
|
1129
|
-
Every text inside gets a "free" 30–60% darkness lift with no per-text
|
|
1130
|
-
tuning.
|
|
1131
|
-
|
|
1132
|
-
| Class | Darkness profile |
|
|
1133
|
-
|---|---|
|
|
1134
|
-
| `.scene-scrim` | Radial 35–60% center→edge (default) |
|
|
1135
|
-
| `.scene-scrim-soft` | 15–35% (subtle) |
|
|
1136
|
-
| `.scene-scrim-strong` | 55–80% (heavy — turns bright backgrounds nearly black) |
|
|
1137
|
-
| `.scene-scrim-top` | Linear 0–85% top edge (lower-third style) |
|
|
1138
|
-
| `.scene-scrim-bottom` | Linear bottom edge gradient |
|
|
1139
|
-
|
|
1140
|
-
```html
|
|
1141
|
-
<!-- Scene 4 in raycast-deep-dive-v4: iridescence shader auto-darkened -->
|
|
1142
|
-
<div class="scene-scrim"
|
|
1143
|
-
data-clip data-hide-mode="visibility"
|
|
1144
|
-
data-start="14.5" data-duration="7.5"
|
|
1145
|
-
style="z-index: 10; position: absolute; inset: 0;">
|
|
1146
|
-
... scene content ...
|
|
1147
|
-
</div>
|
|
1148
|
-
```
|
|
1149
|
-
> **Important:** apply `.scene-scrim` to a container that already has
|
|
1150
|
-
> `position: absolute / fixed / relative`. The `.scene-scrim` style
|
|
1151
|
-
> does NOT set position itself (so it doesn't clobber your layout).
|
|
1152
|
-
```
|
|
1153
|
-
|
|
1154
|
-
### Layer 2 — per-element wrappers when you need guaranteed contrast
|
|
1155
|
-
|
|
1156
|
-
| Helper | What it does | When to use |
|
|
1157
|
-
|---|---|---|
|
|
1158
|
-
| `.text-readable` | Multi-layer dark `text-shadow` only (safe with gradient text classes) | Default for any title sitting on a shader |
|
|
1159
|
-
| `.text-stroke-dark` | 2px dark `-webkit-text-stroke` with `paint-order: stroke fill` | Solid-color body text |
|
|
1160
|
-
| `.text-stroke-dark-thick` | 4px dark stroke variant | Captions on very bright backgrounds |
|
|
1161
|
-
| `.text-glow-dark` | Heavy dark `text-shadow` alone | When you want extra "lift" without strokes |
|
|
1162
|
-
| `.text-card` | Translucent dark rounded pill `backdrop-filter: blur(20px)` | Quotes / hero lower-thirds (best on shaders that support backdrop-filter) |
|
|
1163
|
-
| **`.text-plate`** | **Solid dark `rgba(6,8,14,0.82)` rounded pill — NO backdrop-filter, works in EVERY render path** | **Use when you absolutely cannot afford the text to blend in** |
|
|
1164
|
-
| `.text-plate-tight` / `-loose` / `-soft` / `-hard` | Padding & opacity variants of `.text-plate` | |
|
|
1165
|
-
| `.text-scrim` | Built-in radial CSS scrim around the element | Pure CSS, render-frame-buffer safe |
|
|
1166
|
-
| `data-scrim="card / radial / blur / auto"` | Runtime injects a backdrop element behind the host | One-off "make it readable" |
|
|
1167
|
-
| `.scrim-top` / `.scrim-bottom` | Top/bottom edge gradient bars (lower-third feel) | News-ticker / broadcast captions |
|
|
1168
|
-
|
|
1169
|
-
### Layer 3 — color-pairing rule of thumb
|
|
1170
|
-
|
|
1171
|
-
If your text uses a *warm* gradient (`.text-raycast`, `.text-fire`,
|
|
1172
|
-
`.text-gold`), give it a **cool** background shader (`liquid-ether`
|
|
1173
|
-
with blue/violet palette, `iridescence` with cool stops). If your
|
|
1174
|
-
text is *cool* (`.text-blue`, `.text-aurora`), choose a warm-dark
|
|
1175
|
-
background. This single rule eliminates most readability bugs.
|
|
1176
|
-
|
|
1177
|
-
### Known gotchas (documented from real-world v3 → v4 fixes)
|
|
1178
|
-
|
|
1179
|
-
1. **`-webkit-text-fill-color: transparent` + 3D `transform` breaks
|
|
1180
|
-
gradient text in Chromium.** `flipInX/Y`, `cubeIn`, `swing3D`,
|
|
1181
|
-
and `irisIn` introduce perspective; if you must use them, switch
|
|
1182
|
-
to solid `color: white` + `text-shadow` instead of a gradient class.
|
|
1183
|
-
That's what closing-title in `raycast-deep-dive-v4` does.
|
|
1184
|
-
2. **`-webkit-text-stroke` on transparent-gradient text makes it
|
|
1185
|
-
appear hollow** — `.text-readable` deliberately uses only
|
|
1186
|
-
`text-shadow` (no stroke, no `filter`) so it composes safely with
|
|
1187
|
-
`.text-raycast` / `.text-aurora`.
|
|
1188
|
-
3. **`mask-text` (clip-path) + gradient text also fails** in
|
|
1189
|
-
Chromium screenshot mode — fall back to `split-text` for gradient
|
|
1190
|
-
titles.
|
|
1191
|
-
|
|
1192
|
-
```html
|
|
1193
|
-
<!-- Hero title on a busy shader: cool background + warm gradient + readable -->
|
|
1194
|
-
<div data-background="liquid-ether"
|
|
1195
|
-
data-colors="#06061a,#1a1240,#2a2070,#0a3055"></div>
|
|
1196
|
-
<h1 class="hero-title text-raycast text-readable"
|
|
1197
|
-
style="filter: drop-shadow(0 8px 40px rgba(255,99,99,0.5))
|
|
1198
|
-
drop-shadow(0 4px 12px rgba(0,0,0,0.9));"
|
|
1199
|
-
data-clip data-start="0.7" data-duration="3.3"
|
|
1200
|
-
data-text-animation="split-text">RAYCAST 2.0</h1>
|
|
1201
|
-
|
|
1202
|
-
<!-- Closing quote with an explicit dark card -->
|
|
1203
|
-
<p class="quote-text text-readable text-card"
|
|
1204
|
-
style="padding: 32px 80px;"
|
|
1205
|
-
data-clip data-start="35" data-duration="3"
|
|
1206
|
-
data-text-animation="wave-text">代码只是手段,产品才是目的。</p>
|
|
1207
|
-
|
|
1208
|
-
<!-- Generic "make it readable" -->
|
|
1209
|
-
<h2 data-scrim="auto" data-scrim-padding="32"
|
|
1210
|
-
data-clip data-start="5" data-duration="4">任何标题</h2>
|
|
1211
|
-
|
|
1212
|
-
## Layout stability — siblings never jump when another sibling enters
|
|
1213
|
-
|
|
1214
|
-
Earlier versions used `display: none` as the default hide state, which
|
|
1215
|
-
meant a later sibling appearing would re-trigger flex/grid layout and
|
|
1216
|
-
push already-visible siblings around. **From this version on,
|
|
1217
|
-
`data-hide-mode` defaults to `"visibility"` instead.**
|
|
1218
|
-
|
|
1219
|
-
What that means in practice:
|
|
1220
|
-
|
|
1221
|
-
- A hidden clip still **occupies its layout slot** (its width / height
|
|
1222
|
-
are reserved in the flex/grid track).
|
|
1223
|
-
- When a sibling fades in, surrounding siblings keep their pixel
|
|
1224
|
-
position — **zero jump**.
|
|
1225
|
-
- Your `transform` animations (translate, rotate, scale) still move the
|
|
1226
|
-
visual position freely; only the layout slot is preserved.
|
|
1227
|
-
|
|
1228
|
-
If you actually want the legacy "fully remove from layout" behaviour
|
|
1229
|
-
(e.g. for a corner element that should completely disappear and let
|
|
1230
|
-
surrounding content collapse into its slot), opt in explicitly:
|
|
1231
|
-
|
|
1232
|
-
```html
|
|
1233
|
-
<div data-clip data-hide-mode="display"
|
|
1234
|
-
data-start="3" data-duration="2">temporary tooltip</div>
|
|
1235
|
-
```
|
|
1236
|
-
See `examples/raycast-deep-dive-v4/stability-readability.jpg` for a
|
|
1237
|
-
visual proof: 5 timestamps of the same scene, every already-visible
|
|
1238
|
-
element stays exactly where it was while new elements enter.
|
|
1239
|
-
```
|
|
1240
|
-
|
|
1241
|
-
## Animation variety — avoid the "fadeIn everything" trap
|
|
1242
|
-
|
|
1243
|
-
A common mistake is to apply the same entrance animation to every
|
|
1244
|
-
element in a scene. The runtime ships **24 outer-animation presets**
|
|
1245
|
-
across 6 groups so you can mix them:
|
|
1246
|
-
|
|
1247
|
-
```html
|
|
1248
|
-
<!-- A row of 4 cards, each with a DIFFERENT animation preset -->
|
|
1249
|
-
<div class="card" data-animation="unmaskLeft" data-easing="easeInOutQuart">...</div>
|
|
1250
|
-
<div class="card" data-animation="slideBlurIn" data-easing="springSoft">...</div>
|
|
1251
|
-
<div class="card" data-animation="magneticIn" data-easing="springBouncy">...</div>
|
|
1252
|
-
<div class="card" data-animation="glitchIn" data-easing="easeOutCubic">...</div>
|
|
1253
|
-
```
|
|
1254
|
-
This is exactly the technique used in `examples/raycast-deep-dive-v4/`
|
|
1255
|
-
to upgrade from a "generic" v3 to a polished v4.
|
|
1256
|
-
```
|
|
1257
|
-
|
|
1258
|
-
## Authoring Workflow
|
|
1259
|
-
|
|
1260
|
-
1. **Pick a duration.** 6–15s is great for hooks; 30s for fuller pieces.
|
|
1261
|
-
2. **Sketch scenes by time.** E.g.: 0–4s opener, 4–9s point 1, 9–18s data, 18–30s finale.
|
|
1262
|
-
3. **Pick one background per scene** (cross-fade by giving the prior bg `data-animation-out="fadeOut"`).
|
|
1263
|
-
4. **Wrap each scene** in a container with `data-clip` (the default `data-hide-mode="visibility"` keeps the child layout stable) so all children share the same visibility window:
|
|
1264
|
-
```html
|
|
1265
|
-
<div class="scene center"
|
|
1266
|
-
data-clip data-hide-mode="visibility"
|
|
1267
|
-
data-start="4.0" data-duration="5.0">
|
|
1268
|
-
... clips here ...
|
|
1269
|
-
</div>
|
|
1270
|
-
```
|
|
1271
|
-
5. **Use `text-animation` for kinetic text**, plain `data-animation` for outer transforms (zoom, slide, fade).
|
|
1272
|
-
6. **Preview at 15fps first** to iterate quickly:
|
|
1273
|
-
```
|
|
1274
|
-
```
|
|
1275
|
-
7. **Render final at 30fps**:
|
|
1276
|
-
```
|
|
1277
|
-
|
|
1278
|
-
## Common Patterns
|
|
1279
|
-
|
|
1280
|
-
### Gradient text + character split
|
|
1281
|
-
|
|
1282
|
-
The runtime detects `color: transparent` + `background-clip: text` parents and
|
|
1283
|
-
copies the gradient onto each split span, so the effect survives. Use the
|
|
1284
|
-
preset classes `.text-aurora`, `.text-fire`, `.text-gold`, `.text-silver`.
|
|
1285
|
-
|
|
1286
|
-
```html
|
|
1287
|
-
<h1 class="title text-fire"
|
|
1288
|
-
data-clip data-start="0" data-duration="4"
|
|
1289
|
-
data-text-animation="split-text" data-stagger="0.08">光阴似箭</h1>
|
|
1290
|
-
|
|
1291
|
-
### Scene-wide entrance + per-element timing
|
|
1292
|
-
|
|
1293
|
-
Outer scene controls visibility; inner clips animate in staggered:
|
|
1294
|
-
|
|
1295
|
-
```html
|
|
1296
|
-
<div class="scene center" data-clip data-hide-mode="visibility"
|
|
1297
|
-
data-start="10" data-duration="6">
|
|
1298
|
-
<h1 data-clip data-start="10.2" data-duration="5.6"
|
|
1299
|
-
data-text-animation="split-text">标题</h1>
|
|
1300
|
-
<p data-clip data-start="11.0" data-duration="4.8"
|
|
1301
|
-
data-animation="fadeInUp">副标题</p>
|
|
1302
|
-
</div>
|
|
1303
|
-
|
|
1304
|
-
### Animated counter (plain or odometer-flip)
|
|
1305
|
-
|
|
1306
|
-
```html
|
|
1307
|
-
<!-- plain (textContent updated per frame) -->
|
|
1308
|
-
<span data-clip data-start="5" data-duration="6"
|
|
1309
|
-
data-text-animation="count-up"
|
|
1310
|
-
data-from="0" data-to="86400" data-anim-duration="3"
|
|
1311
|
-
data-separator="," data-easing="easeOutExpo">0</span>
|
|
1312
|
-
|
|
1313
|
-
<!-- odometer: per-digit columns rotate mechanically as they carry -->
|
|
1314
|
-
<span style="font-size:200px; font-weight:900;"
|
|
1315
|
-
data-clip data-start="5" data-duration="6"
|
|
1316
|
-
data-text-animation="count-up"
|
|
1317
|
-
data-odometer="true"
|
|
1318
|
-
data-from="0" data-to="86400" data-anim-duration="3"
|
|
1319
|
-
data-separator="," data-easing="easeOutExpo">0</span>
|
|
1320
|
-
```
|
|
1321
|
-
> **Odometer caveat:** the inner per-digit divs do **not** inherit
|
|
1322
|
-
> `background-clip: text` gradients. Use a solid `color` on the counter
|
|
1323
|
-
> element instead of `.text-aurora` / `.text-fire`.
|
|
1324
|
-
```
|
|
1325
|
-
|
|
1326
|
-
### Cross-fading backgrounds
|
|
1327
|
-
|
|
1328
|
-
```html
|
|
1329
|
-
<div data-clip data-start="0" data-duration="12"
|
|
1330
|
-
data-animation="fadeIn" data-animation-out="fadeOut"
|
|
1331
|
-
data-background="aurora"></div>
|
|
1332
|
-
<div data-clip data-start="11.5" data-duration="8"
|
|
1333
|
-
data-animation="fadeIn" data-animation-out="fadeOut"
|
|
1334
|
-
data-background="dot-grid"></div>
|
|
1335
|
-
|
|
1336
|
-
## Chinese Typography
|
|
1337
|
-
|
|
1338
|
-
Twelve preinstalled families (`assets/fonts/fonts.css`):
|
|
1339
|
-
|
|
1340
|
-
* **`Noto Sans SC`** 400/700/900 — modern sans
|
|
1341
|
-
* **`Noto Serif SC`** 400/900 — classical serif
|
|
1342
|
-
* **`LXGW WenKai`** 400 — calligraphic wenkai (霞鹜文楷)
|
|
1343
|
-
* **`ZCOOL XiaoWei`** / **`ZCOOL KuaiLe`** / **`ZCOOL QingKe HuangYou`** — display
|
|
1344
|
-
* **`Ma Shan Zheng`** (马善政毛笔) — brush strokes
|
|
1345
|
-
* **`Long Cang`** (龙藏体) — calligraphic flow
|
|
1346
|
-
* **`Liu Jian Mao Cao`** (柳建毛草) — running script
|
|
1347
|
-
|
|
1348
|
-
**Default body family changed in v5** — now prefers `Noto Serif SC`
|
|
1349
|
-
(思源宋体) → `LXGW WenKai` (霞鹜文楷) → `STSong` / `Songti SC`, falling
|
|
1350
|
-
back to the modern Noto Sans family. This gives Chinese text a more
|
|
1351
|
-
literary / elegant feel out of the box. When you need the impact-heavy
|
|
1352
|
-
modern look (e.g. big digit displays, monospace eyebrows), opt in via:
|
|
1353
|
-
|
|
1354
|
-
| Class | Family stack | When to use |
|
|
1355
|
-
|---|---|---|
|
|
1356
|
-
| `.cn-serif` | Noto Serif SC → Source Han Serif → STSong | Default body / titles (elegant) |
|
|
1357
|
-
| `.cn-wenkai` (aliased to `.wenkai`) | LXGW WenKai → Noto Serif SC | Poetic quotes, calligraphic body |
|
|
1358
|
-
| `.cn-sans` | Noto Sans SC → PingFang → YaHei | Big digit numbers / poster labels |
|
|
1359
|
-
| `.cn-mono` (aliased to `.mono`) | JetBrains Mono | Code / timestamps / eyebrows |
|
|
1360
|
-
| `.cn-poster` | ZCOOL XiaoWei → Noto Serif SC | Decorative posters |
|
|
1361
|
-
| `.cn-brush` | Ma Shan Zheng → Long Cang → LXGW WenKai | 毛笔 brush titles (≤ 8 chars) |
|
|
1362
|
-
| `.cn-running` | Long Cang → Liu Jian Mao Cao | 行草 running script |
|
|
1363
|
-
|
|
1364
|
-
`.title` / `.title-md` / `.title-sm` / `.huge` now default to the serif
|
|
1365
|
-
family with looser tracking (`letter-spacing: 0.02em`) which makes large
|
|
1366
|
-
Chinese headlines breathe properly. Add `.cn-sans` to force sans:
|
|
1367
|
-
|
|
1368
|
-
```html
|
|
1369
|
-
<!-- elegant default — serif 思源宋体 Black -->
|
|
1370
|
-
<h1 class="title">岁月静好</h1>
|
|
1371
|
-
|
|
1372
|
-
<!-- modern poster look -->
|
|
1373
|
-
<h1 class="title cn-sans" style="letter-spacing: -0.02em;">2026 KEYNOTE</h1>
|
|
1374
|
-
|
|
1375
|
-
<!-- calligraphic poem -->
|
|
1376
|
-
<p class="cn-wenkai" style="font-size: 60px;">「春水初生,春林初盛」</p>
|
|
1377
|
-
|
|
1378
|
-
<!-- brush 4-char title -->
|
|
1379
|
-
<h1 class="cn-brush" style="font-size: 280px;">活在当下</h1>
|
|
1380
|
-
```
|
|
1381
|
-
Other helper classes: `.subtitle`, `.caption`, `.text-gold`,
|
|
1382
|
-
`.text-aurora`, `.text-fire`, `.text-silver`, `.text-stroke`, `.glow`,
|
|
1383
|
-
`.glow-cool`, plus the readability stack (`.text-readable`,
|
|
1384
|
-
`.text-stroke-dark`, `.text-plate`, `.text-card`).
|
|
1385
|
-
|
|
1386
|
-
To add additional fonts, drop a TTF/OTF/WOFF2 into `assets/fonts/` and append
|
|
1387
|
-
an `@font-face` rule to `assets/fonts/fonts.css`, or extend the manifest in
|
|
1388
|
-
`scripts/install-fonts.mjs` and re-run it.
|
|
1389
|
-
```
|
|
1390
|
-
|
|
1391
|
-
## Render Options
|
|
1392
|
-
|
|
1393
|
-
```
|
|
1394
|
-
| Option | Default | Notes |
|
|
1395
|
-
|---|---|---|
|
|
1396
|
-
| `fps=` | from `data-fps` | Override frame rate |
|
|
1397
|
-
| `duration=` | from `data-duration` | Override duration (s) |
|
|
1398
|
-
| `width=` / `height=` | from `data-*` | Override stage size |
|
|
1399
|
-
| `crf=` | `18` | x264 quality (lower = better, 16 archival, 23 web) |
|
|
1400
|
-
| `preset=` | `slow` | `ultrafast` for previews, `medium`/`slow` for finals |
|
|
1401
|
-
| `keepFrames=1` | off | Keep PNG sequence beside the MP4 |
|
|
1402
|
-
```
|
|
1403
|
-
|
|
1404
|
-
## Debugging
|
|
1405
|
-
|
|
1406
|
-
If something doesn't appear:
|
|
1407
|
-
|
|
1408
|
-
1. `node scripts/debug.mjs <input.html> <time> <selector>`
|
|
1409
|
-
Dumps each matching element's computed `display` / `visibility` /
|
|
1410
|
-
`opacity` / `transform` / bounding rect at that instant.
|
|
1411
|
-
2. `node scripts/snap.mjs <input.html> <time> <out.png>`
|
|
1412
|
-
Saves a high-res single-frame screenshot for visual inspection.
|
|
1413
|
-
3. Open `scripts/preview.mjs` in a browser — the wall-clock loop runs and
|
|
1414
|
-
any JS error appears in DevTools.
|
|
1415
|
-
|
|
1416
|
-
## Lineage — What this skill borrows from where
|
|
1417
|
-
|
|
1418
|
-
| Borrowed from | What we took |
|
|
1419
|
-
|---|---|
|
|
1420
|
-
| **react-bits** | Component taxonomy (text / animations / backgrounds / decorations); naming (`split-text`, `blur-text`, `decrypted-text`, `iridescence`, `liquid-ether`, `prismatic-burst`, `lightning`, `plasma`, `beams`, `meta-balls`, `pixel-dissolve`, `electric-border`, `star-border`, `image-trail`, `magnet-lines`, `ribbons`, `odometer`); the "shader background" idea (we wrote our own GLSL from scratch instead of porting OGL). |
|
|
1421
|
-
| **motion.dev / framer-motion** | Closed-form spring physics math (damped harmonic oscillator) for `springGentle/Soft/Snap/Smooth/Bouncy/Wobbly/Stiff`. |
|
|
1422
|
-
| **hyperframes** | HTML-native composition; `data-*` attribute API; single `index.html` per video; puppeteer-screenshot frame capture. |
|
|
1423
|
-
| **remotion** | Frame-accurate deterministic seek; image2pipe → ffmpeg encoder; chrome launch flags; `delayRender` / `continueRender` / `cancelRender` API. |
|
|
1424
|
-
| **GSAP** ([greensock/gsap-skills](https://github.com/greensock/gsap-skills)) | The full animation engine — core tweens, timelines, easing, plus every plugin (SplitText, DrawSVGPlugin, MorphSVGPlugin, MotionPathPlugin, Physics2DPlugin, PhysicsPropsPlugin, Flip, ScrambleTextPlugin, TextPlugin, CustomEase, CustomWiggle, CustomBounce, EasePack). All free and bundled in `runtime/gsap/`; integrated through `runtime/gsap-bridge.js` which routes `gsap.updateRoot` through `mvm-seek` for byte-identical determinism. |
|
|
1425
|
-
|
|
1426
|
-
The shader backgrounds (`liquid-ether`, `iridescence`, `meta-balls`, etc.)
|
|
1427
|
-
are NOT ports of react-bits' OGL implementations — they are hand-written
|
|
1428
|
-
GLSL fragment shaders using FBM noise, polar warps, isosurface fields and
|
|
1429
|
-
procedural primitives. Element-level effects (`electric-border`,
|
|
1430
|
-
`star-border`, `image-trail`) and canvas decorations (`magnet-lines`,
|
|
1431
|
-
`ribbons`) are likewise re-implemented from scratch on plain Canvas2D, so
|
|
1432
|
-
the runtime stays zero-dependency.
|
|
1433
|
-
|
|
1434
|
-
## Additional Resources
|
|
1435
|
-
|
|
1436
|
-
- **[reference/components.md](reference/components.md)** — full per-component prop tables and gotchas.
|
|
1437
|
-
- **[reference/workflow.md](reference/workflow.md)** — step-by-step recipes (data video, ad bumper, social hook).
|
|
1438
|
-
- **[examples/time-flies/index.html`index.html`** — annotated 30s reference composition.
|
|
1439
|
-
- **[examples/raycast-deep-dive-v2/index.html`index.html`** — 40s deep-dive showing spring + shader + transition together.
|
|
1440
|
-
- **[examples/raycast-deep-dive-v3/index.html`index.html`** — 40s v3 with electric-border on Hybrid card + magnet-lines architecture + image-trail rows + odometer memory counters.
|
|
1441
|
-
- **[examples/raycast-deep-dive-v4/index.html`index.html`** — 40s v4: text-readability pass (`.scene-scrim` on every scene, gradient-on-3D-transform fixes), `data-hide-mode="visibility"` default that eliminates layout jitter, Scene-2 layout overhauled to centered flex (no more right-edge overflow on "macOS + Windows" tag), and 12+ different animation presets across 7 scenes.
|
|
1442
|
-
- **[examples/gsap-showcase/index.html`index.html`** — 42s GSAP plugin sampler: SplitText (line-mask + char stagger, Scene 1) → DrawSVG (4-stroke "MVM" wordmark, Scene 2) → MorphSVG (square→triangle→star→circle→square, Scene 3) → MotionPath (rocket on a curved path, Scene 4) → Physics2D (60-piece confetti burst, Scene 5) → ScrambleText (Latin + CJK pools, Scene 6) → programmatic GSAP timeline + CustomEase + 4-axis grid stagger (Scene 7). Render with `npm run render:gsap`.
|
|
1443
|
-
- **[examples/time-flies-v2/index.html`index.html`** — 42s reflective piece on time. Showcases the elegant serif default (思源宋体 Black for 「时间飞逝」/「活在当下」titles, 霞鹜文楷 for poetic quotes), 7 different shader backgrounds, 6 inter-scene transitions, 12+ entrance animations, and the full odometer chain (463 → 70 → 3,600 → 86,400 → 525,600). See `contact-sheet.jpg`.
|
|
1444
|
-
- **[examples/optimization-v5-summary.jpg`optimization-v5-summary.jpg`** — 6-frame proof that both v5 fixes landed: typography upgrade + Scene 2 overflow fix.
|
|
1445
|
-
- **[templates/showcase.html`showcase.html`** — 6-cell grid that renders every shader at once.
|
|
1446
|
-
- **[templates/effects-showcase.html`effects-showcase.html`** — 6-cell sampler for electric-border, star-border, image-trail, meta-balls, magnet-lines, ribbons.
|
|
1447
|
-
- **[templates/readable-showcase.html`readable-showcase.html`** — 12-cell grid that tests `.text-readable` / `data-scrim` against busy shaders, plus a sampler for the 10 new outer-animation and 3 new text-animation presets.
|
|
1448
|
-
|
|
1449
|
-
## Source
|
|
1450
|
-
|
|
1451
|
-
Rewritten for AICUT from [`GordenSun/react-bits-video`](https://github.com/GordenSun/react-bits-video)
|
|
1452
|
-
(MIT), SKILL.md. The method is that skill's own; the way it runs is AICUT's.
|