@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,1099 +0,0 @@
|
|
|
1
|
-
# Semantic Template System V2 Implementation Plan
|
|
2
|
-
|
|
3
|
-
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
-
|
|
5
|
-
**Goal:** Replace palette-led card repetition with ten meaning-driven video structures, preserve a center-framed speaker, add integrated semantic doodles, and publish a newly verified real-call example.
|
|
6
|
-
|
|
7
|
-
**Architecture:** The core package will own a V2 discriminated storyboard contract, semantic classification, content construction, and director validation. Remotion will implement ten independent frame-driven structures; the HyperFrames adapter will preserve the same semantic identifiers and safety metadata. The CLI will enforce separate Gate A/B/C/D transitions and a real-artifact QA pipeline before public evidence is updated.
|
|
8
|
-
|
|
9
|
-
**Tech Stack:** TypeScript 5.9, Zod 4, React 19, Remotion 4.0.507, optional HyperFrames HTML/GSAP adapter, Vitest 4, FFmpeg/ffprobe, Node.js 20+
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## File map
|
|
14
|
-
|
|
15
|
-
### Core planning and contracts
|
|
16
|
-
|
|
17
|
-
- Create `packages/core/src/template-contracts.ts`: canonical V2 structure names, discriminated content schemas, copy limits, and placement permissions.
|
|
18
|
-
- Create `packages/core/src/content-builders.ts`: deterministic conversion from subtitle text and neighboring context into valid template content.
|
|
19
|
-
- Modify `packages/core/src/schema.ts`: V2 storyboard/beat schema and evidence/illustration contracts.
|
|
20
|
-
- Modify `packages/core/src/semantic-rules.ts`: semantic candidate classification; remove index-based visual rotation.
|
|
21
|
-
- Modify `packages/core/src/planner.ts`: eligibility scoring, safe placement, content construction, and cadence selection.
|
|
22
|
-
- Modify `packages/core/src/director-validation.ts`: semantic compatibility, diversity, copy length, evidence, side-lane, and full-screen checks.
|
|
23
|
-
- Modify `packages/core/src/reports.ts`: Gate A explanation of structure choice, evidence state, placement, and risks.
|
|
24
|
-
|
|
25
|
-
### Remotion visual implementation
|
|
26
|
-
|
|
27
|
-
- Create `packages/remotion-renderer/src/structures/shared.tsx`: typography, editorial surfaces, rails, source stamps, safe wrappers, and frame-derived helpers.
|
|
28
|
-
- Create ten focused components under `packages/remotion-renderer/src/structures/v2/`.
|
|
29
|
-
- Modify `packages/remotion-renderer/src/structures/types.ts`: discriminated V2 props.
|
|
30
|
-
- Create `packages/remotion-renderer/src/contrast.ts`: deterministic WCAG contrast calculation for visual tokens.
|
|
31
|
-
- Modify `packages/remotion-renderer/src/structures/index.ts`: V2 registry with one component identity per structure.
|
|
32
|
-
- Delete `packages/remotion-renderer/src/structures/components.tsx` after V2 registry migration.
|
|
33
|
-
- Delete `packages/remotion-renderer/src/structures/families.tsx` after all references are removed.
|
|
34
|
-
- Modify `packages/remotion-renderer/src/VideoPackaging.tsx`: pass typed content/evidence/illustrations into the selected structure and remove the generic detached doodle card.
|
|
35
|
-
- Modify `packages/remotion-renderer/src/theme.ts`: centralize presenter and subtitle bounds.
|
|
36
|
-
|
|
37
|
-
### Illustration, adapter, CLI, and evidence
|
|
38
|
-
|
|
39
|
-
- Create `packages/remotion-renderer/src/illustrations/SemanticDoodle.tsx`: integrated subject/action/outcome scene.
|
|
40
|
-
- Modify the six existing illustration components to expose explicit line, action, and result layers.
|
|
41
|
-
- Create `packages/hyperframes-adapter/src/v2-markup.ts`: structure-specific markup for the ten semantic identifiers.
|
|
42
|
-
- Modify `packages/hyperframes-adapter/src/templates.ts` and `generate.ts`: V2 structure markup and safety data.
|
|
43
|
-
- Create `scripts/lib/gates.ts`: cumulative approval checks and persisted gate records.
|
|
44
|
-
- Create `scripts/lib/artifact-qa.ts`: ffprobe, full decode, representative frame extraction, contact sheet, and manifest generation.
|
|
45
|
-
- Modify `scripts/package-video.ts`: separate Gate A/B/C/D behavior.
|
|
46
|
-
- Modify public docs, Skill instructions, examples, screenshots, checksum manifests, and CI-facing tests only after the real example passes.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
### Task 1: Introduce the V2 semantic content contract
|
|
51
|
-
|
|
52
|
-
**Files:**
|
|
53
|
-
- Create: `packages/core/src/template-contracts.ts`
|
|
54
|
-
- Modify: `packages/core/src/schema.ts`
|
|
55
|
-
- Test: `packages/core/test/schema.test.ts`
|
|
56
|
-
|
|
57
|
-
- [ ] **Step 1: Replace the vocabulary test with the V2 contract expectations**
|
|
58
|
-
|
|
59
|
-
```ts
|
|
60
|
-
import {describe, expect, it} from 'vitest';
|
|
61
|
-
import {SEMANTIC_STRUCTURES, TemplateContentSchema} from '../src/template-contracts';
|
|
62
|
-
|
|
63
|
-
describe('V2 template contracts', () => {
|
|
64
|
-
it('declares ten unique semantic structures', () => {
|
|
65
|
-
expect(SEMANTIC_STRUCTURES).toEqual([
|
|
66
|
-
'editorial-dual-rail', 'thesis-and-proof', 'bidirectional-flow',
|
|
67
|
-
'command-palette', 'four-stage-pipeline', 'before-after-scrub',
|
|
68
|
-
'evidence-panel', 'metric-odometer', 'signal-route', 'semantic-doodle',
|
|
69
|
-
]);
|
|
70
|
-
expect(new Set(SEMANTIC_STRUCTURES).size).toBe(10);
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
it('rejects content that does not satisfy the selected structure', () => {
|
|
74
|
-
expect(() => TemplateContentSchema.parse({
|
|
75
|
-
structure: 'before-after-scrub',
|
|
76
|
-
before: '手工处理',
|
|
77
|
-
criterion: '交付方式',
|
|
78
|
-
})).toThrow();
|
|
79
|
-
expect(() => TemplateContentSchema.parse({
|
|
80
|
-
structure: 'metric-odometer',
|
|
81
|
-
metrics: [{value: '3%', unit: '', label: '本次消耗'}],
|
|
82
|
-
})).toThrow(/evidenceStatus/i);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
- [ ] **Step 2: Run the focused test and verify the missing module failure**
|
|
88
|
-
|
|
89
|
-
Run: `npx vitest run packages/core/test/schema.test.ts`
|
|
90
|
-
Expected: FAIL because `template-contracts.ts` and the V2 exports do not exist.
|
|
91
|
-
|
|
92
|
-
- [ ] **Step 3: Create the canonical structures and discriminated content schema**
|
|
93
|
-
|
|
94
|
-
```ts
|
|
95
|
-
import {z} from 'zod';
|
|
96
|
-
|
|
97
|
-
export const SEMANTIC_STRUCTURES = [
|
|
98
|
-
'editorial-dual-rail', 'thesis-and-proof', 'bidirectional-flow',
|
|
99
|
-
'command-palette', 'four-stage-pipeline', 'before-after-scrub',
|
|
100
|
-
'evidence-panel', 'metric-odometer', 'signal-route', 'semantic-doodle',
|
|
101
|
-
] as const;
|
|
102
|
-
|
|
103
|
-
const short = (max: number) => z.string().trim().min(1).max(max);
|
|
104
|
-
const item = z.object({label: short(14), detail: short(22)});
|
|
105
|
-
const metric = z.object({
|
|
106
|
-
value: short(12), unit: z.string().max(8), label: short(18),
|
|
107
|
-
evidenceStatus: z.enum(['sourced', 'owner-confirmed', 'estimate']),
|
|
108
|
-
sourceLabel: z.string().max(28).optional(),
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
export const TemplateContentSchema = z.discriminatedUnion('structure', [
|
|
112
|
-
z.object({structure: z.literal('editorial-dual-rail'), kicker: short(18), headline: short(24), leftItems: z.array(item).min(1).max(3), rightItems: z.array(item).min(1).max(3), takeaway: short(24)}),
|
|
113
|
-
z.object({structure: z.literal('thesis-and-proof'), thesis: short(24), reason: short(36), sourceLabel: z.string().max(28).optional(), sourceDetail: z.string().max(48).optional()}),
|
|
114
|
-
z.object({structure: z.literal('bidirectional-flow'), leftLabel: short(14), rightLabel: short(14), forwardAction: short(18), returnAction: z.string().max(18).optional(), result: short(24)}),
|
|
115
|
-
z.object({structure: z.literal('command-palette'), commandTitle: short(20), actions: z.array(short(22)).min(2).max(5), resultState: short(22)}),
|
|
116
|
-
z.object({structure: z.literal('four-stage-pipeline'), title: short(24), stages: z.array(short(16)).min(3).max(4), output: z.string().max(22).optional()}),
|
|
117
|
-
z.object({structure: z.literal('before-after-scrub'), before: short(24), after: short(24), criterion: short(18), delta: z.string().max(18).optional()}),
|
|
118
|
-
z.object({structure: z.literal('evidence-panel'), evidenceAsset: short(120), caption: short(28), sourceLabel: short(28), interpretation: short(36)}),
|
|
119
|
-
z.object({structure: z.literal('metric-odometer'), metrics: z.array(metric).min(1).max(3)}),
|
|
120
|
-
z.object({structure: z.literal('signal-route'), nodes: z.array(short(14)).min(3).max(5), routeLabel: short(18), failureNode: z.string().max(14).optional(), result: short(22)}),
|
|
121
|
-
z.object({structure: z.literal('semantic-doodle'), subject: short(14), action: short(18), outcome: short(20), accent: z.string().regex(/^#[0-9a-f]{6}$/i), annotation: z.string().max(22).optional()}),
|
|
122
|
-
]);
|
|
123
|
-
|
|
124
|
-
export type SemanticStructure = (typeof SEMANTIC_STRUCTURES)[number];
|
|
125
|
-
export type TemplateContent = z.infer<typeof TemplateContentSchema>;
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
- [ ] **Step 4: Update the storyboard schema to version 2 and require typed content**
|
|
129
|
-
|
|
130
|
-
```ts
|
|
131
|
-
import {SEMANTIC_STRUCTURES, TemplateContentSchema} from './template-contracts';
|
|
132
|
-
|
|
133
|
-
const beatSchema = z.object({
|
|
134
|
-
id: z.string().min(1), start: z.number().min(0), end: z.number().positive(),
|
|
135
|
-
text: z.string().min(1).max(80), structure: z.enum(SEMANTIC_STRUCTURES),
|
|
136
|
-
content: TemplateContentSchema,
|
|
137
|
-
motions: z.array(z.enum(MOTION_PRIMITIVES)).min(1).max(3),
|
|
138
|
-
placement: z.enum(['left', 'right', 'full']), palette: z.enum(PALETTE_IDS),
|
|
139
|
-
directorRole: z.enum(DIRECTOR_ROLES),
|
|
140
|
-
evidence: z.object({src: z.string().min(1), label: z.string().min(1), sourceUrl: z.string().url().optional()}).optional(),
|
|
141
|
-
illustration: z.object({type: z.enum(ILLUSTRATION_SCENARIOS), label: z.string().min(1).max(32)}).optional(),
|
|
142
|
-
}).superRefine((beat, context) => {
|
|
143
|
-
if (beat.content.structure !== beat.structure) context.addIssue({code: 'custom', path: ['content', 'structure'], message: 'Content structure must match beat structure'});
|
|
144
|
-
});
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
Change the storyboard version literal from `1.0` to `2.0`, export `SemanticStructure` as `VisualStructure`, and retain the existing timing/order checks.
|
|
148
|
-
|
|
149
|
-
- [ ] **Step 5: Run schema tests**
|
|
150
|
-
|
|
151
|
-
Run: `npx vitest run packages/core/test/schema.test.ts`
|
|
152
|
-
Expected: PASS with ten unique structures, matching content discriminators, and the existing timing/safe-placement checks.
|
|
153
|
-
|
|
154
|
-
- [ ] **Step 6: Commit the contract**
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
git add packages/core/src/template-contracts.ts packages/core/src/schema.ts packages/core/test/schema.test.ts
|
|
158
|
-
git commit -m "feat: define v2 semantic template contracts"
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
### Task 2: Build deterministic semantic content and structure selection
|
|
164
|
-
|
|
165
|
-
**Files:**
|
|
166
|
-
- Create: `packages/core/src/content-builders.ts`
|
|
167
|
-
- Modify: `packages/core/src/semantic-rules.ts`
|
|
168
|
-
- Modify: `packages/core/src/planner.ts`
|
|
169
|
-
- Test: `packages/core/test/planner.test.ts`
|
|
170
|
-
|
|
171
|
-
- [ ] **Step 1: Write classification and content-construction tests**
|
|
172
|
-
|
|
173
|
-
```ts
|
|
174
|
-
it.each([
|
|
175
|
-
['首先读取素材,然后分析,再生成方案,最后执行', 'four-stage-pipeline'],
|
|
176
|
-
['从手工剪辑变成自动化工作流', 'before-after-scrub'],
|
|
177
|
-
['输入脚本,生成视频,再根据反馈修正', 'bidirectional-flow'],
|
|
178
|
-
['运行检查、审核方案、确认导出', 'command-palette'],
|
|
179
|
-
['节点从选题流向脚本再到视频', 'signal-route'],
|
|
180
|
-
['本次只消耗了3%', 'metric-odometer'],
|
|
181
|
-
])('maps %s to %s', (text, structure) => {
|
|
182
|
-
expect(classifySemanticStructure(text, 1)).toBe(structure);
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
it('builds content that validates for every planned beat', () => {
|
|
186
|
-
const result = planStoryboard(fixtureInput);
|
|
187
|
-
result.beats.forEach((beat) => {
|
|
188
|
-
expect(beat.content.structure).toBe(beat.structure);
|
|
189
|
-
expect(() => TemplateContentSchema.parse(beat.content)).not.toThrow();
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
- [ ] **Step 2: Run the planner test and verify it fails against the old rotation planner**
|
|
195
|
-
|
|
196
|
-
Run: `npx vitest run packages/core/test/planner.test.ts`
|
|
197
|
-
Expected: FAIL because `classifySemanticStructure`, V2 content, and semantic eligibility do not exist.
|
|
198
|
-
|
|
199
|
-
- [ ] **Step 3: Implement semantic classification without index-based family rotation**
|
|
200
|
-
|
|
201
|
-
```ts
|
|
202
|
-
export const classifySemanticStructure = (text: string, index: number): SemanticStructure => {
|
|
203
|
-
if (/官方|证据|截图|来源|文档/.test(text)) return 'evidence-panel';
|
|
204
|
-
if (/以前|现在|优化前|优化后|从.+变成|不是.+而是/.test(text)) return 'before-after-scrub';
|
|
205
|
-
if (/首先|然后|接着|最后|第一|第二|第三|第四/.test(text)) return 'four-stage-pipeline';
|
|
206
|
-
if (/运行|点击|打开|检查|审核|确认|输入命令/.test(text)) return 'command-palette';
|
|
207
|
-
if (/反馈|来回|双向|输入.+输出|人.+AI|AI.+人/.test(text)) return 'bidirectional-flow';
|
|
208
|
-
if (/路径|节点|流向|串联|闭环|连接/.test(text)) return 'signal-route';
|
|
209
|
-
if (/\d|百分之|%|万|千|分钟|小时/.test(text)) return 'metric-odometer';
|
|
210
|
-
if (/困难|卡住|推着|攀爬|起飞|平衡|转化/.test(text)) return 'semantic-doodle';
|
|
211
|
-
if (/因为|原因|关键|证明|意味着/.test(text)) return 'thesis-and-proof';
|
|
212
|
-
return index === 0 ? 'thesis-and-proof' : 'editorial-dual-rail';
|
|
213
|
-
};
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
- [ ] **Step 4: Implement focused content builders**
|
|
217
|
-
|
|
218
|
-
```ts
|
|
219
|
-
const clauses = (text: string) => text.split(/[,。;:,.!?!?]/).map((part) => part.trim()).filter(Boolean);
|
|
220
|
-
|
|
221
|
-
export const buildTemplateContent = (structure: SemanticStructure, text: string): TemplateContent => {
|
|
222
|
-
const parts = clauses(text);
|
|
223
|
-
if (structure === 'before-after-scrub') return {structure, before: parts[0] ?? text, after: parts[1] ?? '自动化流程', criterion: '工作方式'};
|
|
224
|
-
if (structure === 'four-stage-pipeline') return {structure, title: parts[0] ?? '执行流程', stages: [...parts, '确认结果', '完成交付'].slice(0, 4).slice(0, Math.max(3, Math.min(4, parts.length + 1)))};
|
|
225
|
-
if (structure === 'command-palette') return {structure, commandTitle: '执行清单', actions: [...parts, '检查结果'].slice(0, Math.max(2, Math.min(5, parts.length + 1))), resultState: '等待确认'};
|
|
226
|
-
if (structure === 'metric-odometer') return {structure, metrics: [{value: text.match(/\d+(?:\.\d+)?/)?.[0] ?? '1', unit: text.includes('%') ? '%' : '', label: text.slice(0, 18), evidenceStatus: /本次|我的|实测/.test(text) ? 'owner-confirmed' : 'estimate'}]};
|
|
227
|
-
if (structure === 'signal-route') return {structure, nodes: [...parts, '处理', '结果'].slice(0, Math.max(3, Math.min(5, parts.length + 2))), routeLabel: '信息路径', result: '形成闭环'};
|
|
228
|
-
if (structure === 'bidirectional-flow') return {structure, leftLabel: parts[0] ?? '输入', rightLabel: parts[1] ?? '输出', forwardAction: '处理', returnAction: '反馈', result: '持续修正'};
|
|
229
|
-
if (structure === 'semantic-doodle') return {structure, subject: '创作者', action: parts[0] ?? '推进任务', outcome: parts[1] ?? '得到结果', accent: '#e97a5f'};
|
|
230
|
-
if (structure === 'thesis-and-proof') return {structure, thesis: parts[0] ?? text, reason: parts.slice(1).join(',') || '用清晰证据支撑观点'};
|
|
231
|
-
return {structure: 'editorial-dual-rail', kicker: '核心信息', headline: parts[0] ?? text, leftItems: [{label: '现状', detail: parts[1] ?? '信息需要被整理'}], rightItems: [{label: '行动', detail: parts[2] ?? '给出清晰下一步'}], takeaway: parts.at(-1) ?? text};
|
|
232
|
-
};
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
Add explicit branches for `evidence-panel` and an optional planner evidence manifest; if a real asset is unavailable, downgrade that beat to `thesis-and-proof` rather than inventing evidence.
|
|
236
|
-
|
|
237
|
-
- [ ] **Step 5: Replace count-limited rotation with eligibility and cadence scoring**
|
|
238
|
-
|
|
239
|
-
The planner must score candidates in this order: semantic match, contract satisfiability, evidence availability, placement safety, adjacent-structure penalty, side-lane alternation, and whole-video diversity. It may use `editorial-dual-rail` as the ordinary fallback but may not select a different structure only because of the cue index.
|
|
240
|
-
|
|
241
|
-
```ts
|
|
242
|
-
const scoreCandidate = (candidate: SemanticStructure, context: SelectionContext): number =>
|
|
243
|
-
context.semanticCandidates.indexOf(candidate) * -100
|
|
244
|
-
- (candidate === context.previousStructure ? 25 : 0)
|
|
245
|
-
- (context.counts.get(candidate) ?? 0) * 4
|
|
246
|
-
+ (context.canSatisfy(candidate) ? 30 : -1000);
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
- [ ] **Step 6: Run planner and schema tests**
|
|
250
|
-
|
|
251
|
-
Run: `npx vitest run packages/core/test/planner.test.ts packages/core/test/schema.test.ts`
|
|
252
|
-
Expected: PASS; every beat has matching validated content, and the fixture maps to meaning-driven structures.
|
|
253
|
-
|
|
254
|
-
- [ ] **Step 7: Commit semantic planning**
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
git add packages/core/src/content-builders.ts packages/core/src/semantic-rules.ts packages/core/src/planner.ts packages/core/test/planner.test.ts
|
|
258
|
-
git commit -m "feat: plan structures from spoken semantics"
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
### Task 3: Enforce director, evidence, and safe-layout rules
|
|
264
|
-
|
|
265
|
-
**Files:**
|
|
266
|
-
- Modify: `packages/core/src/director-validation.ts`
|
|
267
|
-
- Modify: `packages/core/src/reports.ts`
|
|
268
|
-
- Test: `packages/core/test/director-validation.test.ts`
|
|
269
|
-
|
|
270
|
-
- [ ] **Step 1: Write failing checks for V2 quality gates**
|
|
271
|
-
|
|
272
|
-
```ts
|
|
273
|
-
it('rejects palette-only diversity, unsafe full-screen use, missing evidence, and excessive repetition', () => {
|
|
274
|
-
const result = validateDirectorPlan(makeStoryboard([
|
|
275
|
-
beat(1, {structure: 'editorial-dual-rail', placement: 'left'}),
|
|
276
|
-
beat(2, {structure: 'editorial-dual-rail', placement: 'right', palette: 'violet-sunset'}),
|
|
277
|
-
beat(3, {structure: 'editorial-dual-rail', placement: 'left', palette: 'teal-signal'}),
|
|
278
|
-
beat(4, {structure: 'evidence-panel', placement: 'full', evidence: undefined}),
|
|
279
|
-
beat(5, {structure: 'command-palette', placement: 'full', directorRole: 'definition'}),
|
|
280
|
-
]));
|
|
281
|
-
expect(result.map((issue) => issue.code)).toEqual(expect.arrayContaining([
|
|
282
|
-
'structure-run-too-long', 'evidence-missing', 'invalid-full-screen-role',
|
|
283
|
-
]));
|
|
284
|
-
});
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
- [ ] **Step 2: Run the validator test and verify new issue codes are missing**
|
|
288
|
-
|
|
289
|
-
Run: `npx vitest run packages/core/test/director-validation.test.ts`
|
|
290
|
-
Expected: FAIL because the V2 validation issue codes and content checks are not implemented.
|
|
291
|
-
|
|
292
|
-
- [ ] **Step 3: Implement V2 director validation**
|
|
293
|
-
|
|
294
|
-
```ts
|
|
295
|
-
export type DirectorIssueCode =
|
|
296
|
-
| 'structure-diversity' | 'structure-run-too-long' | 'side-repeat'
|
|
297
|
-
| 'invalid-full-screen-role' | 'evidence-missing' | 'content-contract'
|
|
298
|
-
| 'copy-too-long' | 'semantic-mismatch';
|
|
299
|
-
|
|
300
|
-
const fullScreenStructures = new Set<SemanticStructure>([
|
|
301
|
-
'four-stage-pipeline', 'before-after-scrub', 'evidence-panel',
|
|
302
|
-
'metric-odometer', 'signal-route', 'semantic-doodle', 'thesis-and-proof',
|
|
303
|
-
]);
|
|
304
|
-
|
|
305
|
-
if (storyboard.duration > 30 && uniqueStructures < 8) {
|
|
306
|
-
issues.push({code: 'structure-diversity', message: 'Videos over 30 seconds should use eight semantically valid structures'});
|
|
307
|
-
}
|
|
308
|
-
if (beat.structure === 'evidence-panel' && !beat.evidence) {
|
|
309
|
-
issues.push({code: 'evidence-missing', beatId: beat.id, message: 'Evidence panels require a real source asset'});
|
|
310
|
-
}
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
Track consecutive structure runs, ordinary side-lane repetition, full-screen role/structure permission, matching `beat.content.structure`, and content-schema errors. The maximum identical consecutive structure run is two.
|
|
314
|
-
|
|
315
|
-
- [ ] **Step 4: Expand Gate A reports with decision evidence**
|
|
316
|
-
|
|
317
|
-
Add `Why`, `Content contract`, `Evidence status`, and `Risk` columns to `storyboardMarkdown()`. Add the distinct-structure count and director issue count to `gateABrief()`.
|
|
318
|
-
|
|
319
|
-
```ts
|
|
320
|
-
| ID | Time | Structure | Why | Placement | Evidence | Copy |
|
|
321
|
-
|---|---:|---|---|---|---|---|
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
- [ ] **Step 5: Run core tests**
|
|
325
|
-
|
|
326
|
-
Run: `npx vitest run packages/core/test`
|
|
327
|
-
Expected: PASS; director-invalid fixtures produce precise issue codes and valid fixtures remain clean.
|
|
328
|
-
|
|
329
|
-
- [ ] **Step 6: Commit the director gates**
|
|
330
|
-
|
|
331
|
-
```bash
|
|
332
|
-
git add packages/core/src/director-validation.ts packages/core/src/reports.ts packages/core/test/director-validation.test.ts
|
|
333
|
-
git commit -m "feat: enforce semantic director quality gates"
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
### Task 4: Establish shared editorial tokens and typed structure props
|
|
339
|
-
|
|
340
|
-
**Files:**
|
|
341
|
-
- Create: `packages/remotion-renderer/src/structures/shared.tsx`
|
|
342
|
-
- Modify: `packages/remotion-renderer/src/structures/types.ts`
|
|
343
|
-
- Create: `packages/remotion-renderer/src/contrast.ts`
|
|
344
|
-
- Modify: `packages/remotion-renderer/src/theme.ts`
|
|
345
|
-
- Test: `packages/remotion-renderer/test/structures.test.tsx`
|
|
346
|
-
|
|
347
|
-
- [ ] **Step 1: Write tests for protected lanes, typed content, and shared hierarchy**
|
|
348
|
-
|
|
349
|
-
```ts
|
|
350
|
-
it('keeps critical side content outside the center and subtitle reserves', () => {
|
|
351
|
-
expect(presenterSafeZones).toEqual({
|
|
352
|
-
center: {startPercent: 35, endPercent: 65},
|
|
353
|
-
left: {startPercent: 5, endPercent: 32},
|
|
354
|
-
right: {startPercent: 68, endPercent: 95},
|
|
355
|
-
subtitleBottomPercent: 18,
|
|
356
|
-
});
|
|
357
|
-
expect(sideLaneStyle('left')).toMatchObject({left: '5%', width: '27%', bottom: '18%'});
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
it('keeps normal and large text at WCAG AA contrast', () => {
|
|
361
|
-
expect(contrastRatio('#f6f2e8', '#0b1325')).toBeGreaterThanOrEqual(4.5);
|
|
362
|
-
expect(contrastRatio('#55d7ff', '#0b1325')).toBeGreaterThanOrEqual(3);
|
|
363
|
-
});
|
|
364
|
-
|
|
365
|
-
it('requires full-screen surfaces to preserve a presenter window or use a dim layer', () => {
|
|
366
|
-
const html = renderToStaticMarkup(<FullScreenSurface mode="presenter-window" palette={PALETTES['deep-ocean']}><span>结论</span></FullScreenSurface>);
|
|
367
|
-
expect(html).toContain('data-presenter-window="35-65"');
|
|
368
|
-
expect(html).toContain('data-subtitle-reserve="18"');
|
|
369
|
-
});
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
- [ ] **Step 2: Run the renderer structure test and verify it fails**
|
|
373
|
-
|
|
374
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx`
|
|
375
|
-
Expected: FAIL because `sideLaneStyle` and V2 structure props do not exist.
|
|
376
|
-
|
|
377
|
-
- [ ] **Step 3: Define typed props and optional illustration renderer**
|
|
378
|
-
|
|
379
|
-
```ts
|
|
380
|
-
import type {ComponentType} from 'react';
|
|
381
|
-
import type {TemplateContent} from '../../../core/src/template-contracts';
|
|
382
|
-
import type {IllustrationProps} from '../illustrations/types';
|
|
383
|
-
|
|
384
|
-
export type StructureProps = {
|
|
385
|
-
content: TemplateContent;
|
|
386
|
-
progress: number;
|
|
387
|
-
palette: Palette;
|
|
388
|
-
placement: 'left' | 'right' | 'full';
|
|
389
|
-
evidence?: {src: string; label: string; sourceUrl?: string};
|
|
390
|
-
Illustration?: ComponentType<IllustrationProps>;
|
|
391
|
-
};
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
- [ ] **Step 4: Implement shared primitives**
|
|
395
|
-
|
|
396
|
-
`shared.tsx` must export `Kicker`, `EditorialRule`, `NumberedItem`, `SourceStamp`, `SideSurface`, `FullScreenSurface`, `clamp01`, `phase`, and `rise`. Every primitive receives explicit colors and frame-derived progress.
|
|
397
|
-
|
|
398
|
-
```tsx
|
|
399
|
-
export const phase = (progress: number, start: number, end: number): number =>
|
|
400
|
-
clamp01((progress - start) / Math.max(.001, end - start));
|
|
401
|
-
|
|
402
|
-
export const EditorialRule = ({progress, color}: {progress: number; color: string}) => (
|
|
403
|
-
<div data-editorial-rule style={{height: 6, width: `${Math.round(phase(progress, .1, .7) * 100)}%`, background: color, borderRadius: 999}}/>
|
|
404
|
-
);
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
`FullScreenSurface` accepts `mode: 'presenter-window' | 'dim'`. Presenter-window mode leaves the center `35%–65%` transparent. Dim mode may darken A-roll but must keep the lower `18%` free of critical content.
|
|
408
|
-
|
|
409
|
-
- [ ] **Step 5: Implement deterministic contrast calculation**
|
|
410
|
-
|
|
411
|
-
```ts
|
|
412
|
-
const channel = (value: number): number => {
|
|
413
|
-
const normalized = value / 255;
|
|
414
|
-
return normalized <= .04045 ? normalized / 12.92 : ((normalized + .055) / 1.055) ** 2.4;
|
|
415
|
-
};
|
|
416
|
-
|
|
417
|
-
export const contrastRatio = (foreground: string, background: string): number => {
|
|
418
|
-
const rgb = (hex: string) => [1, 3, 5].map((offset) => Number.parseInt(hex.slice(offset, offset + 2), 16));
|
|
419
|
-
const luminance = (hex: string) => {
|
|
420
|
-
const [r, g, b] = rgb(hex).map(channel);
|
|
421
|
-
return .2126 * r + .7152 * g + .0722 * b;
|
|
422
|
-
};
|
|
423
|
-
const [lighter, darker] = [luminance(foreground), luminance(background)].sort((a, b) => b - a);
|
|
424
|
-
return (lighter + .05) / (darker + .05);
|
|
425
|
-
};
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
- [ ] **Step 6: Update theme lane helpers**
|
|
429
|
-
|
|
430
|
-
```ts
|
|
431
|
-
export const sideLaneStyle = (side: 'left' | 'right') => ({
|
|
432
|
-
position: 'absolute', top: '7%', bottom: '18%', width: '27%',
|
|
433
|
-
...(side === 'left' ? {left: '5%'} : {right: '5%'}),
|
|
434
|
-
} as const);
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
- [ ] **Step 7: Run focused tests and typecheck**
|
|
438
|
-
|
|
439
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx && npm run typecheck`
|
|
440
|
-
Expected: PASS for shared helpers; remaining old structures may require temporary test fixture updates within this task.
|
|
441
|
-
|
|
442
|
-
- [ ] **Step 8: Commit shared foundations**
|
|
443
|
-
|
|
444
|
-
```bash
|
|
445
|
-
git add packages/remotion-renderer/src/structures/shared.tsx packages/remotion-renderer/src/structures/types.ts packages/remotion-renderer/src/contrast.ts packages/remotion-renderer/src/theme.ts packages/remotion-renderer/test/structures.test.tsx
|
|
446
|
-
git commit -m "feat: add center-presenter editorial foundations"
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
---
|
|
450
|
-
|
|
451
|
-
### Task 5: Implement the six editorial and functional Remotion structures
|
|
452
|
-
|
|
453
|
-
**Files:**
|
|
454
|
-
- Create: `packages/remotion-renderer/src/structures/v2/EditorialDualRail.tsx`
|
|
455
|
-
- Create: `packages/remotion-renderer/src/structures/v2/ThesisAndProof.tsx`
|
|
456
|
-
- Create: `packages/remotion-renderer/src/structures/v2/BidirectionalFlow.tsx`
|
|
457
|
-
- Create: `packages/remotion-renderer/src/structures/v2/CommandPalette.tsx`
|
|
458
|
-
- Create: `packages/remotion-renderer/src/structures/v2/FourStagePipeline.tsx`
|
|
459
|
-
- Create: `packages/remotion-renderer/src/structures/v2/BeforeAfterScrub.tsx`
|
|
460
|
-
- Test: `packages/remotion-renderer/test/structures.test.tsx`
|
|
461
|
-
|
|
462
|
-
- [ ] **Step 1: Add distinct-identity tests for the first six components**
|
|
463
|
-
|
|
464
|
-
```ts
|
|
465
|
-
const expected = {
|
|
466
|
-
'editorial-dual-rail': 'dual-rail',
|
|
467
|
-
'thesis-and-proof': 'thesis-proof',
|
|
468
|
-
'bidirectional-flow': 'bidirectional-flow',
|
|
469
|
-
'command-palette': 'command-palette',
|
|
470
|
-
'four-stage-pipeline': 'four-stage-pipeline',
|
|
471
|
-
'before-after-scrub': 'before-after-scrub',
|
|
472
|
-
} as const;
|
|
473
|
-
|
|
474
|
-
for (const [structure, identity] of Object.entries(expected)) {
|
|
475
|
-
const html = renderStructure(structure, fixtureContent[structure]);
|
|
476
|
-
expect(html).toContain(`data-structure-identity="${identity}"`);
|
|
477
|
-
expect(html).toContain('data-critical-content="true"');
|
|
478
|
-
}
|
|
479
|
-
expect(new Set(Object.values(expected)).size).toBe(6);
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
- [ ] **Step 2: Run the test and verify all six modules are absent**
|
|
483
|
-
|
|
484
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx`
|
|
485
|
-
Expected: FAIL with missing component imports or registry entries.
|
|
486
|
-
|
|
487
|
-
- [ ] **Step 3: Implement `EditorialDualRail` and `ThesisAndProof`**
|
|
488
|
-
|
|
489
|
-
`EditorialDualRail` uses two framed side rails around the transparent center, numbered items, an editorial top line, and a bottom takeaway above the caption reserve. `ThesisAndProof` uses a large thesis on one side and a separately bordered proof/source area on the other.
|
|
490
|
-
|
|
491
|
-
```tsx
|
|
492
|
-
export const EditorialDualRail = (props: StructureProps): ReactElement => {
|
|
493
|
-
if (props.content.structure !== 'editorial-dual-rail') throw new Error('EditorialDualRail received incompatible content');
|
|
494
|
-
const {content, progress, palette} = props;
|
|
495
|
-
return <AbsoluteFill data-structure-identity="dual-rail" data-critical-content="true">
|
|
496
|
-
<SideSurface side="left" palette={palette}>{content.leftItems.map((item, index) => <NumberedItem key={item.label} index={index + 1} {...item} progress={phase(progress, .15 + index * .12, .55 + index * .12)}/>)}</SideSurface>
|
|
497
|
-
<SideSurface side="right" palette={palette}>{content.rightItems.map((item, index) => <NumberedItem key={item.label} index={index + 1} {...item} progress={phase(progress, .25 + index * .12, .65 + index * .12)}/>)}</SideSurface>
|
|
498
|
-
</AbsoluteFill>;
|
|
499
|
-
};
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
- [ ] **Step 4: Implement `BidirectionalFlow` and `CommandPalette`**
|
|
503
|
-
|
|
504
|
-
Use two anchored nodes and distinct forward/return SVG routes for `BidirectionalFlow`. Use a focused-action cursor, 2–5 rows, and a final status stamp for `CommandPalette`; do not use command styling for conceptual benefits.
|
|
505
|
-
|
|
506
|
-
- [ ] **Step 5: Implement `FourStagePipeline` and `BeforeAfterScrub`**
|
|
507
|
-
|
|
508
|
-
Use connected stages with persistent completion states for `FourStagePipeline`. Use exactly two anchored states and a deterministic scrub divider for `BeforeAfterScrub`.
|
|
509
|
-
|
|
510
|
-
```tsx
|
|
511
|
-
const scrub = `${Math.round(18 + phase(progress, .12, .82) * 64)}%`;
|
|
512
|
-
return <FullScreenSurface data-structure-identity="before-after-scrub" style={{clipPath: `inset(0 ${100 - Number.parseFloat(scrub)}% 0 0)`}}>...</FullScreenSurface>;
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
- [ ] **Step 6: Run tests and typecheck**
|
|
516
|
-
|
|
517
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx && npm run typecheck`
|
|
518
|
-
Expected: PASS for six independent identities and all typed content narrowing.
|
|
519
|
-
|
|
520
|
-
- [ ] **Step 7: Commit the first structure group**
|
|
521
|
-
|
|
522
|
-
```bash
|
|
523
|
-
git add packages/remotion-renderer/src/structures/v2 packages/remotion-renderer/test/structures.test.tsx
|
|
524
|
-
git commit -m "feat: add editorial and workflow structures"
|
|
525
|
-
```
|
|
526
|
-
|
|
527
|
-
---
|
|
528
|
-
|
|
529
|
-
### Task 6: Implement evidence, metric, route, and integrated doodle structures
|
|
530
|
-
|
|
531
|
-
**Files:**
|
|
532
|
-
- Create: `packages/remotion-renderer/src/structures/v2/EvidencePanel.tsx`
|
|
533
|
-
- Create: `packages/remotion-renderer/src/structures/v2/MetricOdometer.tsx`
|
|
534
|
-
- Create: `packages/remotion-renderer/src/structures/v2/SignalRoute.tsx`
|
|
535
|
-
- Create: `packages/remotion-renderer/src/structures/v2/SemanticDoodle.tsx`
|
|
536
|
-
- Create: `packages/remotion-renderer/src/illustrations/SemanticDoodle.tsx`
|
|
537
|
-
- Modify: `packages/remotion-renderer/src/illustrations/types.ts`
|
|
538
|
-
- Modify: `packages/remotion-renderer/src/illustrations/index.ts`
|
|
539
|
-
- Test: `packages/remotion-renderer/test/structures.test.tsx`
|
|
540
|
-
- Test: `packages/remotion-renderer/test/illustrations.test.tsx`
|
|
541
|
-
|
|
542
|
-
- [ ] **Step 1: Write failing tests for structure identity and doodle layering**
|
|
543
|
-
|
|
544
|
-
```ts
|
|
545
|
-
it('renders evidence, metric, route, and doodle as independent structures', () => {
|
|
546
|
-
expect(renderV2('evidence-panel')).toContain('data-structure-identity="evidence-panel"');
|
|
547
|
-
expect(renderV2('metric-odometer')).toContain('data-structure-identity="metric-odometer"');
|
|
548
|
-
expect(renderV2('signal-route')).toContain('data-structure-identity="signal-route"');
|
|
549
|
-
expect(renderV2('semantic-doodle')).toContain('data-structure-identity="semantic-doodle"');
|
|
550
|
-
});
|
|
551
|
-
|
|
552
|
-
it('renders doodle line, action, and outcome layers without a generic paper card', () => {
|
|
553
|
-
const html = renderToStaticMarkup(<SemanticDoodle progress={.72} accent="#e97a5f" subject="创作者" action="推动流程" outcome="完成交付"/>);
|
|
554
|
-
expect(html).toContain('data-doodle-layer="line"');
|
|
555
|
-
expect(html).toContain('data-doodle-layer="action"');
|
|
556
|
-
expect(html).toContain('data-doodle-layer="outcome"');
|
|
557
|
-
expect(html).toContain('fill="none"');
|
|
558
|
-
expect(html).not.toContain('data-generic-paper-card');
|
|
559
|
-
});
|
|
560
|
-
```
|
|
561
|
-
|
|
562
|
-
- [ ] **Step 2: Run tests and verify the four structures/layers are missing**
|
|
563
|
-
|
|
564
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx packages/remotion-renderer/test/illustrations.test.tsx`
|
|
565
|
-
Expected: FAIL with missing V2 components and doodle layers.
|
|
566
|
-
|
|
567
|
-
- [ ] **Step 3: Implement evidence and metric structures**
|
|
568
|
-
|
|
569
|
-
`EvidencePanel` gives the source asset the largest surface, renders the source label adjacent to it, and reveals interpretation last. `MetricOdometer` requires the evidence-status badge and never animates a value that cannot be safely parsed as a number.
|
|
570
|
-
|
|
571
|
-
```tsx
|
|
572
|
-
const numeric = /^-?\d+(?:\.\d+)?$/.test(metric.value);
|
|
573
|
-
const shown = numeric ? interpolateNumber(Number(metric.value), phase(progress, .18, .72)) : metric.value;
|
|
574
|
-
```
|
|
575
|
-
|
|
576
|
-
- [ ] **Step 4: Implement `SignalRoute` with explicit SVG safety**
|
|
577
|
-
|
|
578
|
-
All route paths must set `fill="none"`, `stroke`, `strokeWidth`, `strokeLinecap`, and `strokeDasharray` inline. Node count is 3–5; activation is driven by `phase(progress, ...)`.
|
|
579
|
-
|
|
580
|
-
- [ ] **Step 5: Implement the integrated semantic doodle**
|
|
581
|
-
|
|
582
|
-
```tsx
|
|
583
|
-
export type IllustrationProps = {
|
|
584
|
-
progress: number; accent: string;
|
|
585
|
-
subject?: string; action?: string; outcome?: string;
|
|
586
|
-
};
|
|
587
|
-
|
|
588
|
-
export const SemanticDoodle = ({progress, accent, subject = '人物', action = '执行', outcome = '结果'}: IllustrationProps) => (
|
|
589
|
-
<svg viewBox="0 0 640 360" role="img" aria-label={`${subject}${action}${outcome}`}>
|
|
590
|
-
<g data-doodle-layer="line" fill="none" stroke="#252933">...</g>
|
|
591
|
-
<g data-doodle-layer="action" opacity={phase(progress, .2, .65)}>...</g>
|
|
592
|
-
<g data-doodle-layer="outcome" opacity={phase(progress, .55, .95)}>...</g>
|
|
593
|
-
</svg>
|
|
594
|
-
);
|
|
595
|
-
```
|
|
596
|
-
|
|
597
|
-
The scene uses transparent composition or context-matched local fills; it does not mount inside the old detached warm-paper card.
|
|
598
|
-
|
|
599
|
-
- [ ] **Step 6: Run illustration, structure, and type tests**
|
|
600
|
-
|
|
601
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx packages/remotion-renderer/test/illustrations.test.tsx && npm run typecheck`
|
|
602
|
-
Expected: PASS; all ten structures are independently identifiable and doodles retain explicit SVG safety.
|
|
603
|
-
|
|
604
|
-
- [ ] **Step 7: Commit the second structure group**
|
|
605
|
-
|
|
606
|
-
```bash
|
|
607
|
-
git add packages/remotion-renderer/src/structures/v2 packages/remotion-renderer/src/illustrations packages/remotion-renderer/test
|
|
608
|
-
git commit -m "feat: add evidence metrics routes and semantic doodles"
|
|
609
|
-
```
|
|
610
|
-
|
|
611
|
-
---
|
|
612
|
-
|
|
613
|
-
### Task 7: Replace family aliases and wire the V2 composition
|
|
614
|
-
|
|
615
|
-
**Files:**
|
|
616
|
-
- Modify: `packages/remotion-renderer/src/structures/index.ts`
|
|
617
|
-
- Delete: `packages/remotion-renderer/src/structures/components.tsx`
|
|
618
|
-
- Delete: `packages/remotion-renderer/src/structures/families.tsx`
|
|
619
|
-
- Modify: `packages/remotion-renderer/src/VideoPackaging.tsx`
|
|
620
|
-
- Modify: `packages/remotion-renderer/src/Root.tsx`
|
|
621
|
-
- Test: `packages/remotion-renderer/test/composition.test.ts`
|
|
622
|
-
- Test: `packages/remotion-renderer/test/structures.test.tsx`
|
|
623
|
-
|
|
624
|
-
- [ ] **Step 1: Add a registry-identity test that proves aliases are gone**
|
|
625
|
-
|
|
626
|
-
```ts
|
|
627
|
-
it('maps every V2 structure to a unique component function', () => {
|
|
628
|
-
const components = Object.values(structureRegistry).map((entry) => entry.Component);
|
|
629
|
-
expect(Object.keys(structureRegistry).sort()).toEqual([...SEMANTIC_STRUCTURES].sort());
|
|
630
|
-
expect(new Set(components).size).toBe(10);
|
|
631
|
-
});
|
|
632
|
-
```
|
|
633
|
-
|
|
634
|
-
- [ ] **Step 2: Run the registry test and verify the existing six-family alias design fails**
|
|
635
|
-
|
|
636
|
-
Run: `npx vitest run packages/remotion-renderer/test/structures.test.tsx`
|
|
637
|
-
Expected: FAIL because multiple names still share the same family component.
|
|
638
|
-
|
|
639
|
-
- [ ] **Step 3: Register one component per semantic structure**
|
|
640
|
-
|
|
641
|
-
```ts
|
|
642
|
-
export const structureRegistry: Record<SemanticStructure, StructureDefinition> = {
|
|
643
|
-
'editorial-dual-rail': define('side', EditorialDualRail),
|
|
644
|
-
'thesis-and-proof': define('side', ThesisAndProof),
|
|
645
|
-
'bidirectional-flow': define('side', BidirectionalFlow),
|
|
646
|
-
'command-palette': define('side', CommandPalette),
|
|
647
|
-
'four-stage-pipeline': define('full', FourStagePipeline),
|
|
648
|
-
'before-after-scrub': define('full', BeforeAfterScrub),
|
|
649
|
-
'evidence-panel': define('full', EvidencePanel),
|
|
650
|
-
'metric-odometer': define('full', MetricOdometer),
|
|
651
|
-
'signal-route': define('full', SignalRoute),
|
|
652
|
-
'semantic-doodle': define('full', SemanticDoodleStructure),
|
|
653
|
-
};
|
|
654
|
-
```
|
|
655
|
-
|
|
656
|
-
- [ ] **Step 4: Pass typed content and integrated assets from `BeatOverlay`**
|
|
657
|
-
|
|
658
|
-
```tsx
|
|
659
|
-
<Structure
|
|
660
|
-
content={beat.content}
|
|
661
|
-
progress={progress}
|
|
662
|
-
palette={palette}
|
|
663
|
-
placement={beat.placement}
|
|
664
|
-
evidence={beat.evidence}
|
|
665
|
-
Illustration={Illustration ?? undefined}
|
|
666
|
-
/>
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
Remove the generic illustration lane and generic evidence card from `VideoPackaging.tsx`; the selected structure owns those layout decisions.
|
|
670
|
-
|
|
671
|
-
- [ ] **Step 5: Update the default composition to a valid V2 storyboard**
|
|
672
|
-
|
|
673
|
-
Use `version: '2.0'`, `structure: 'thesis-and-proof'`, matching content, full placement, and the existing continuous media behavior.
|
|
674
|
-
|
|
675
|
-
- [ ] **Step 6: Run renderer tests and production composition discovery**
|
|
676
|
-
|
|
677
|
-
Run: `npm run typecheck && npx vitest run packages/remotion-renderer/test && npm run build`
|
|
678
|
-
Expected: PASS; Remotion lists `VideoPackaging`, and the registry exposes ten unique components.
|
|
679
|
-
|
|
680
|
-
- [ ] **Step 7: Delete the old family files and verify no references remain**
|
|
681
|
-
|
|
682
|
-
Run: `rg -n "ImpactFamily|GradientFamily|SupportingFamily|families|components" packages/remotion-renderer/src`
|
|
683
|
-
Expected: no matches referring to the removed family implementation.
|
|
684
|
-
|
|
685
|
-
- [ ] **Step 8: Commit the V2 composition**
|
|
686
|
-
|
|
687
|
-
```bash
|
|
688
|
-
git add packages/remotion-renderer/src packages/remotion-renderer/test
|
|
689
|
-
git commit -m "refactor: wire independent v2 remotion structures"
|
|
690
|
-
```
|
|
691
|
-
|
|
692
|
-
---
|
|
693
|
-
|
|
694
|
-
### Task 8: Bring the optional HyperFrames output onto the V2 contract
|
|
695
|
-
|
|
696
|
-
**Files:**
|
|
697
|
-
- Create: `packages/hyperframes-adapter/src/v2-markup.ts`
|
|
698
|
-
- Modify: `packages/hyperframes-adapter/src/templates.ts`
|
|
699
|
-
- Modify: `packages/hyperframes-adapter/src/generate.ts`
|
|
700
|
-
- Test: `packages/hyperframes-adapter/test/generate.test.ts`
|
|
701
|
-
|
|
702
|
-
- [ ] **Step 1: Write tests for structure-specific markup and safety metadata**
|
|
703
|
-
|
|
704
|
-
```ts
|
|
705
|
-
it('preserves all V2 identifiers and does not collapse them into one generic shell', () => {
|
|
706
|
-
const project = generateHyperFramesProject(v2StoryboardWithTenBeats());
|
|
707
|
-
for (const structure of SEMANTIC_STRUCTURES) {
|
|
708
|
-
expect(project.html).toContain(`data-semantic-structure="${structure}"`);
|
|
709
|
-
}
|
|
710
|
-
expect(new Set(SEMANTIC_STRUCTURES.map((name) => markupIdentity(name))).size).toBe(10);
|
|
711
|
-
expect(project.html).toContain('data-presenter-safe-center="35-65"');
|
|
712
|
-
expect(project.html).toContain('data-subtitle-safe-bottom="18"');
|
|
713
|
-
});
|
|
714
|
-
```
|
|
715
|
-
|
|
716
|
-
- [ ] **Step 2: Run the adapter test and verify the generic beat shell fails**
|
|
717
|
-
|
|
718
|
-
Run: `npx vitest run packages/hyperframes-adapter/test/generate.test.ts`
|
|
719
|
-
Expected: FAIL because current markup uses one generic heading/rail shell.
|
|
720
|
-
|
|
721
|
-
- [ ] **Step 3: Implement ten markup renderers**
|
|
722
|
-
|
|
723
|
-
```ts
|
|
724
|
-
const renderers: Record<SemanticStructure, (beat: StoryboardBeat) => string> = {
|
|
725
|
-
'editorial-dual-rail': renderDualRail,
|
|
726
|
-
'thesis-and-proof': renderThesisProof,
|
|
727
|
-
'bidirectional-flow': renderBidirectionalFlow,
|
|
728
|
-
'command-palette': renderCommandPalette,
|
|
729
|
-
'four-stage-pipeline': renderPipeline,
|
|
730
|
-
'before-after-scrub': renderBeforeAfter,
|
|
731
|
-
'evidence-panel': renderEvidence,
|
|
732
|
-
'metric-odometer': renderMetric,
|
|
733
|
-
'signal-route': renderSignalRoute,
|
|
734
|
-
'semantic-doodle': renderDoodle,
|
|
735
|
-
};
|
|
736
|
-
```
|
|
737
|
-
|
|
738
|
-
Each renderer escapes text, emits the semantic identifier, and uses the same content contract; evidence URLs and labels must be escaped.
|
|
739
|
-
|
|
740
|
-
- [ ] **Step 4: Generate seek-safe motion per structure**
|
|
741
|
-
|
|
742
|
-
Use paused GSAP timelines driven by absolute storyboard seconds. Avoid runtime timers, random values, and stateful CSS transitions. Keep `appearsBy` and `staysInFrame` assertions for every beat.
|
|
743
|
-
|
|
744
|
-
- [ ] **Step 5: Run adapter tests and public scan**
|
|
745
|
-
|
|
746
|
-
Run: `npx vitest run packages/hyperframes-adapter/test/generate.test.ts && npm run verify:public`
|
|
747
|
-
Expected: PASS; ten identifiers and safety metadata are present, and no forbidden local data is introduced.
|
|
748
|
-
|
|
749
|
-
- [ ] **Step 6: Commit adapter parity**
|
|
750
|
-
|
|
751
|
-
```bash
|
|
752
|
-
git add packages/hyperframes-adapter
|
|
753
|
-
git commit -m "feat: preserve v2 semantics in hyperframes output"
|
|
754
|
-
```
|
|
755
|
-
|
|
756
|
-
---
|
|
757
|
-
|
|
758
|
-
### Task 9: Separate Gate A/B/C/D and add artifact-level QA
|
|
759
|
-
|
|
760
|
-
**Files:**
|
|
761
|
-
- Create: `scripts/lib/gates.ts`
|
|
762
|
-
- Create: `scripts/lib/artifact-qa.ts`
|
|
763
|
-
- Modify: `scripts/package-video.ts`
|
|
764
|
-
- Test: `tests/gate-cli.test.ts`
|
|
765
|
-
- Test: `tests/artifact-qa.test.ts`
|
|
766
|
-
|
|
767
|
-
- [ ] **Step 1: Write CLI gate-transition tests**
|
|
768
|
-
|
|
769
|
-
```ts
|
|
770
|
-
it('stops at Gate A without approval', () => {
|
|
771
|
-
const result = runCli(baseArgs);
|
|
772
|
-
expect(result.stdout).toContain('Gate A complete');
|
|
773
|
-
expect(exists('run/renders/packaged.mp4')).toBe(false);
|
|
774
|
-
});
|
|
775
|
-
|
|
776
|
-
it('refuses render unless every cumulative approval is explicit', () => {
|
|
777
|
-
const result = runCli([...baseArgs, '--approve-gate-a', '--approve-gate-b', '--approve-gate-c', '--render']);
|
|
778
|
-
expect(result.status).not.toBe(0);
|
|
779
|
-
expect(result.stderr).toMatch(/approve-gate-d/i);
|
|
780
|
-
});
|
|
781
|
-
```
|
|
782
|
-
|
|
783
|
-
- [ ] **Step 2: Run the new tests and verify the current two-flag flow fails**
|
|
784
|
-
|
|
785
|
-
Run: `npx vitest run tests/gate-cli.test.ts tests/artifact-qa.test.ts`
|
|
786
|
-
Expected: FAIL because separate gates and artifact helpers do not exist.
|
|
787
|
-
|
|
788
|
-
- [ ] **Step 3: Implement cumulative approval parsing**
|
|
789
|
-
|
|
790
|
-
```ts
|
|
791
|
-
export type Gate = 'A' | 'B' | 'C' | 'D';
|
|
792
|
-
export const approvedGate = (args: Args): Gate => {
|
|
793
|
-
if (args['approve-gate-d'] === true) return 'D';
|
|
794
|
-
if (args['approve-gate-c'] === true) return 'C';
|
|
795
|
-
if (args['approve-gate-b'] === true) return 'B';
|
|
796
|
-
if (args['approve-gate-a'] === true) return 'A';
|
|
797
|
-
return 'A';
|
|
798
|
-
};
|
|
799
|
-
|
|
800
|
-
export const requireCumulativeApprovals = (args: Args, target: Gate): void => {
|
|
801
|
-
const required = target === 'D'
|
|
802
|
-
? ['approve-gate-a', 'approve-gate-b', 'approve-gate-c', 'approve-gate-d']
|
|
803
|
-
: target === 'C' ? ['approve-gate-a', 'approve-gate-b', 'approve-gate-c']
|
|
804
|
-
: target === 'B' ? ['approve-gate-a', 'approve-gate-b'] : [];
|
|
805
|
-
const missing = required.filter((name) => args[name] !== true);
|
|
806
|
-
if (missing.length) throw new Error(`Missing explicit approvals: ${missing.map((name) => `--${name}`).join(', ')}`);
|
|
807
|
-
};
|
|
808
|
-
```
|
|
809
|
-
|
|
810
|
-
The exact behavior is: no approval writes Gate A only; A+B writes composition inputs; A+B+C generates review stills and QA without final MP4; A+B+C+D plus `--render` produces the final artifact.
|
|
811
|
-
|
|
812
|
-
- [ ] **Step 4: Implement artifact verification**
|
|
813
|
-
|
|
814
|
-
`artifact-qa.ts` must expose `probeOutput`, `decodeEntireFile`, `extractRepresentativeFrames`, `detectBlackFrames`, `buildContactSheet`, and `writeRenderManifest`. All subprocess calls use argument arrays, `shell: false`, and checked exit codes.
|
|
815
|
-
|
|
816
|
-
```ts
|
|
817
|
-
export const decodeEntireFile = (file: string): void => {
|
|
818
|
-
const result = spawnSync('ffmpeg', ['-v', 'error', '-i', file, '-f', 'null', '-'], {stdio: 'pipe', shell: false, windowsHide: true});
|
|
819
|
-
if (result.status !== 0) throw new Error(`Full decode failed: ${result.stderr.toString('utf8')}`);
|
|
820
|
-
};
|
|
821
|
-
```
|
|
822
|
-
|
|
823
|
-
- [ ] **Step 5: Extract eight semantically representative frames**
|
|
824
|
-
|
|
825
|
-
Select one midpoint from eight distinct structures; if the storyboard contains fewer than eight structures, Gate C fails. Use FFmpeg to extract exact frames and `tile=4x2` to create the contact sheet. Record each file, timestamp, structure, SHA-256, dimensions, and source output SHA-256.
|
|
826
|
-
|
|
827
|
-
- [ ] **Step 6: Run CLI and QA tests**
|
|
828
|
-
|
|
829
|
-
Run: `npx vitest run tests/gate-cli.test.ts tests/artifact-qa.test.ts`
|
|
830
|
-
Expected: PASS; no final render is possible without cumulative explicit approvals.
|
|
831
|
-
|
|
832
|
-
- [ ] **Step 7: Commit gate enforcement and QA**
|
|
833
|
-
|
|
834
|
-
```bash
|
|
835
|
-
git add scripts/lib scripts/package-video.ts tests/gate-cli.test.ts tests/artifact-qa.test.ts
|
|
836
|
-
git commit -m "feat: enforce four-gate rendering and artifact qa"
|
|
837
|
-
```
|
|
838
|
-
|
|
839
|
-
---
|
|
840
|
-
|
|
841
|
-
### Task 10: Update Skill instructions and tests before the real call
|
|
842
|
-
|
|
843
|
-
**Files:**
|
|
844
|
-
- Modify: `SKILL.md`
|
|
845
|
-
- Modify: `references/director-rules.md`
|
|
846
|
-
- Modify: `references/visual-structures.md`
|
|
847
|
-
- Modify: `references/motion-and-illustration.md`
|
|
848
|
-
- Modify: `references/gates.md`
|
|
849
|
-
- Modify: `references/qa-and-troubleshooting.md`
|
|
850
|
-
- Modify: `docs/USAGE.md`
|
|
851
|
-
- Modify: `package.json`
|
|
852
|
-
- Modify: `package-lock.json`
|
|
853
|
-
- Modify: `tests/skill/skill-contract.test.ts`
|
|
854
|
-
- Modify: `tests/readme-integrity.test.ts`
|
|
855
|
-
|
|
856
|
-
- [ ] **Step 1: Write tests for the public Skill contract**
|
|
857
|
-
|
|
858
|
-
```ts
|
|
859
|
-
it('documents the ten V2 structures and the cumulative gate flow', () => {
|
|
860
|
-
const skill = readFileSync('SKILL.md', 'utf8');
|
|
861
|
-
for (const name of SEMANTIC_STRUCTURES) expect(skill).toContain(name);
|
|
862
|
-
expect(skill).toContain('--approve-gate-d');
|
|
863
|
-
expect(skill).toContain('35%–65%');
|
|
864
|
-
expect(skill).toContain('18%');
|
|
865
|
-
});
|
|
866
|
-
|
|
867
|
-
it('preserves the requested closing contact', () => {
|
|
868
|
-
expect(readFileSync('README.md', 'utf8')).toContain('感兴趣的朋友欢迎咨询业务微信:nanaya093');
|
|
869
|
-
});
|
|
870
|
-
```
|
|
871
|
-
|
|
872
|
-
- [ ] **Step 2: Run Skill contract tests and verify V2 documentation is missing**
|
|
873
|
-
|
|
874
|
-
Run: `npx vitest run tests/skill/skill-contract.test.ts tests/readme-integrity.test.ts`
|
|
875
|
-
Expected: FAIL because current docs still advertise the old 18-name/six-family system and old render flags.
|
|
876
|
-
|
|
877
|
-
- [ ] **Step 3: Rewrite the structure, gate, and illustration references**
|
|
878
|
-
|
|
879
|
-
Document the exact trigger, required fields, forbidden usage, placement, and motion contract for each V2 structure. Explain that doodles clarify action/transformation and never act as evidence. Show Remotion as the default full implementation and HyperFrames as an optional compatible output.
|
|
880
|
-
|
|
881
|
-
- [ ] **Step 4: Bump the package release to 0.2.0**
|
|
882
|
-
|
|
883
|
-
Run: `npm version 0.2.0 --no-git-tag-version`
|
|
884
|
-
Expected: `package.json` and `package-lock.json` both report `0.2.0`; no Git tag is created.
|
|
885
|
-
|
|
886
|
-
- [ ] **Step 5: Update usage commands to the four gates**
|
|
887
|
-
|
|
888
|
-
```bash
|
|
889
|
-
# Gate A
|
|
890
|
-
npm run package-video -- --video ./input.mp4 --srt ./input.srt --out ./run --renderer remotion --captions burned-in
|
|
891
|
-
|
|
892
|
-
# Gate B
|
|
893
|
-
npm run package-video -- --video ./input.mp4 --srt ./input.srt --out ./run --renderer remotion --captions burned-in --approve-gate-a --approve-gate-b
|
|
894
|
-
|
|
895
|
-
# Gate C review
|
|
896
|
-
npm run package-video -- --video ./input.mp4 --srt ./input.srt --out ./run --renderer remotion --captions burned-in --approve-gate-a --approve-gate-b --approve-gate-c
|
|
897
|
-
|
|
898
|
-
# Gate D final render
|
|
899
|
-
npm run package-video -- --video ./input.mp4 --srt ./input.srt --out ./run --renderer remotion --captions burned-in --approve-gate-a --approve-gate-b --approve-gate-c --approve-gate-d --render
|
|
900
|
-
```
|
|
901
|
-
|
|
902
|
-
- [ ] **Step 6: Run documentation and public-repository tests**
|
|
903
|
-
|
|
904
|
-
Run: `npx vitest run tests/skill/skill-contract.test.ts tests/readme-integrity.test.ts tests/public-verifier.test.ts && npm run verify:public`
|
|
905
|
-
Expected: PASS; the requested closing copy is unchanged and the repository remains clean.
|
|
906
|
-
|
|
907
|
-
- [ ] **Step 7: Commit the V2 Skill contract**
|
|
908
|
-
|
|
909
|
-
```bash
|
|
910
|
-
git add SKILL.md references docs/USAGE.md package.json package-lock.json tests/skill/skill-contract.test.ts tests/readme-integrity.test.ts
|
|
911
|
-
git commit -m "docs: teach the v2 semantic packaging workflow"
|
|
912
|
-
```
|
|
913
|
-
|
|
914
|
-
---
|
|
915
|
-
|
|
916
|
-
### Task 11: Run the real example through Gate A and stop for approval
|
|
917
|
-
|
|
918
|
-
**Files:**
|
|
919
|
-
- Regenerate: `examples/auto-editing-0/input-manifest.json`
|
|
920
|
-
- Regenerate: `examples/auto-editing-0/storyboard.json`
|
|
921
|
-
- Regenerate: `examples/auto-editing-0/README.md`
|
|
922
|
-
- Create: `examples/auto-editing-0/GATE_A.md`
|
|
923
|
-
|
|
924
|
-
- [ ] **Step 1: Copy authorized inputs only into ignored runtime input paths**
|
|
925
|
-
|
|
926
|
-
Use `examples/auto-editing-0/private-input/`, which must remain excluded by `.gitignore`. Confirm `git status --short` does not show the source video or subtitle file.
|
|
927
|
-
|
|
928
|
-
- [ ] **Step 2: Execute Gate A only**
|
|
929
|
-
|
|
930
|
-
Run:
|
|
931
|
-
|
|
932
|
-
```bash
|
|
933
|
-
npm run package-video -- --video examples/auto-editing-0/private-input/input.mp4 --srt examples/auto-editing-0/private-input/input.srt --out examples/auto-editing-0/run-v2 --renderer remotion --captions burned-in
|
|
934
|
-
```
|
|
935
|
-
|
|
936
|
-
Expected: command reports `Gate A complete`; no final MP4 exists; the storyboard contains V2 content and at least eight semantically valid structures.
|
|
937
|
-
|
|
938
|
-
- [ ] **Step 3: Validate the Gate A plan**
|
|
939
|
-
|
|
940
|
-
Run: `node -e "const s=require('./examples/auto-editing-0/run-v2/storyboard.json'); const u=new Set(s.beats.map(b=>b.structure)); if(u.size<8) throw new Error('fewer than eight structures'); console.log([...u])"`
|
|
941
|
-
Expected: eight or more V2 semantic identifiers, no content/structure mismatch, and no invented evidence.
|
|
942
|
-
|
|
943
|
-
- [ ] **Step 4: Present Gate A to Nana and stop**
|
|
944
|
-
|
|
945
|
-
Provide the structure list, full-screen timestamps, side-lane alternation, doodle timestamps, evidence status, maximum scene duration, and factual-risk notes. Do not run Gate B/C/D until Nana explicitly approves this exact example.
|
|
946
|
-
|
|
947
|
-
- [ ] **Step 5: After approval, commit only public Gate A derivatives**
|
|
948
|
-
|
|
949
|
-
```bash
|
|
950
|
-
git add examples/auto-editing-0/input-manifest.json examples/auto-editing-0/storyboard.json examples/auto-editing-0/README.md examples/auto-editing-0/GATE_A.md
|
|
951
|
-
git commit -m "docs: record v2 real-call gate a"
|
|
952
|
-
```
|
|
953
|
-
|
|
954
|
-
---
|
|
955
|
-
|
|
956
|
-
### Task 12: Produce Gate B/C review evidence and stop for visual approval
|
|
957
|
-
|
|
958
|
-
**Files:**
|
|
959
|
-
- Create: `examples/auto-editing-0/GATE_B.md`
|
|
960
|
-
- Create: `examples/auto-editing-0/GATE_C.md`
|
|
961
|
-
- Create: `examples/auto-editing-0/run-v2/review/` ignored runtime artifacts
|
|
962
|
-
|
|
963
|
-
- [ ] **Step 1: Run cumulative Gate B and Gate C after explicit Gate A approval**
|
|
964
|
-
|
|
965
|
-
Run:
|
|
966
|
-
|
|
967
|
-
```bash
|
|
968
|
-
npm run package-video -- --video examples/auto-editing-0/private-input/input.mp4 --srt examples/auto-editing-0/private-input/input.srt --out examples/auto-editing-0/run-v2 --renderer remotion --captions burned-in --approve-gate-a --approve-gate-b --approve-gate-c
|
|
969
|
-
```
|
|
970
|
-
|
|
971
|
-
Expected: eight review stills and a contact sheet exist; final `packaged.mp4` does not exist.
|
|
972
|
-
|
|
973
|
-
- [ ] **Step 2: Run automated visual checks**
|
|
974
|
-
|
|
975
|
-
Run: `npm test && npm run typecheck && npm run build`
|
|
976
|
-
Expected: all tests pass; center-lane, subtitle-band, copy-length, contrast, structure-count, and SVG checks report no errors.
|
|
977
|
-
|
|
978
|
-
- [ ] **Step 3: Manually review all eight frames**
|
|
979
|
-
|
|
980
|
-
Review for: real structural difference, content hierarchy, speaker-face clearance, burned-in subtitle clearance, evidence legibility, doodle action/result, no repeated universal card, and no color-only variation.
|
|
981
|
-
|
|
982
|
-
- [ ] **Step 4: Present the contact sheet to Nana and stop**
|
|
983
|
-
|
|
984
|
-
Do not perform Gate D final rendering until Nana explicitly approves the reviewed V2 look.
|
|
985
|
-
|
|
986
|
-
- [ ] **Step 5: Commit Gate B/C reports only after approval**
|
|
987
|
-
|
|
988
|
-
```bash
|
|
989
|
-
git add examples/auto-editing-0/GATE_B.md examples/auto-editing-0/GATE_C.md
|
|
990
|
-
git commit -m "docs: record v2 visual review gates"
|
|
991
|
-
```
|
|
992
|
-
|
|
993
|
-
---
|
|
994
|
-
|
|
995
|
-
### Task 13: Render Gate D, replace public evidence, and verify the final artifact
|
|
996
|
-
|
|
997
|
-
**Files:**
|
|
998
|
-
- Replace: `docs/assets/previews/auto-editing-0-*.png`
|
|
999
|
-
- Replace: `docs/assets/previews/auto-editing-0-contact-sheet.jpg`
|
|
1000
|
-
- Modify: `examples/auto-editing-0/preview-manifest.json`
|
|
1001
|
-
- Modify: `examples/auto-editing-0/QA_REPORT.md`
|
|
1002
|
-
- Modify: `README.md`
|
|
1003
|
-
- Modify: `docs/EXAMPLES.md`
|
|
1004
|
-
- Modify: `examples/auto-editing-0/README.md`
|
|
1005
|
-
|
|
1006
|
-
- [ ] **Step 1: Run Gate D only after explicit export approval**
|
|
1007
|
-
|
|
1008
|
-
Run:
|
|
1009
|
-
|
|
1010
|
-
```bash
|
|
1011
|
-
npm run package-video -- --video examples/auto-editing-0/private-input/input.mp4 --srt examples/auto-editing-0/private-input/input.srt --out examples/auto-editing-0/run-v2 --renderer remotion --captions burned-in --approve-gate-a --approve-gate-b --approve-gate-c --approve-gate-d --render
|
|
1012
|
-
```
|
|
1013
|
-
|
|
1014
|
-
Expected: final MP4 exists, render exits zero, artifact manifest records SHA-256, ffprobe fields, full decode, black-frame result, eight frame records, and contact-sheet checksum.
|
|
1015
|
-
|
|
1016
|
-
- [ ] **Step 2: Independently verify the final output**
|
|
1017
|
-
|
|
1018
|
-
Run:
|
|
1019
|
-
|
|
1020
|
-
```bash
|
|
1021
|
-
ffprobe -v error -show_entries format=duration,size:stream=codec_name,width,height,r_frame_rate,sample_rate,channels -of json examples/auto-editing-0/run-v2/renders/packaged.mp4
|
|
1022
|
-
ffmpeg -v error -i examples/auto-editing-0/run-v2/renders/packaged.mp4 -f null -
|
|
1023
|
-
```
|
|
1024
|
-
|
|
1025
|
-
Expected: 1920×1080, 30fps H.264 video, AAC audio, duration aligned with source within the documented tolerance, and full decode with no errors.
|
|
1026
|
-
|
|
1027
|
-
- [ ] **Step 3: Replace old previews with the eight verified V2 frames**
|
|
1028
|
-
|
|
1029
|
-
Copy only the eight manifest-listed frames and generated contact sheet into `docs/assets/previews/`. Remove the six old frame files. Ensure every README path resolves.
|
|
1030
|
-
|
|
1031
|
-
- [ ] **Step 4: Update README facts from the new manifest**
|
|
1032
|
-
|
|
1033
|
-
Update structure count, frame count, duration, output codec, file size, and SHA-256. Do not estimate these fields. Preserve the full requested closing section verbatim, ending in `nanaya093`.
|
|
1034
|
-
|
|
1035
|
-
- [ ] **Step 5: Run the complete repository gate**
|
|
1036
|
-
|
|
1037
|
-
Run:
|
|
1038
|
-
|
|
1039
|
-
```bash
|
|
1040
|
-
npm run verify:all
|
|
1041
|
-
npm audit --omit=dev
|
|
1042
|
-
git diff --check
|
|
1043
|
-
git status --short
|
|
1044
|
-
```
|
|
1045
|
-
|
|
1046
|
-
Expected: tests, typecheck, build, public scan, audit, and diff check pass; status contains only intended public derivatives and source inputs remain untracked and ignored.
|
|
1047
|
-
|
|
1048
|
-
- [ ] **Step 6: Regenerate checksums and re-run the public scan**
|
|
1049
|
-
|
|
1050
|
-
Run: `npm run checksums && npm run verify:public`
|
|
1051
|
-
Expected: checksum manifest matches all tracked release files and public verification reports `ok: true`.
|
|
1052
|
-
|
|
1053
|
-
- [ ] **Step 7: Commit the verified V2 public evidence**
|
|
1054
|
-
|
|
1055
|
-
```bash
|
|
1056
|
-
git add README.md docs examples/auto-editing-0 scripts package.json package-lock.json
|
|
1057
|
-
git commit -m "feat: publish verified semantic template system v2"
|
|
1058
|
-
```
|
|
1059
|
-
|
|
1060
|
-
---
|
|
1061
|
-
|
|
1062
|
-
### Task 14: Final branch review and authorized GitHub update
|
|
1063
|
-
|
|
1064
|
-
**Files:**
|
|
1065
|
-
- Review all files changed since `50dfc4f`
|
|
1066
|
-
|
|
1067
|
-
- [ ] **Step 1: Review scope and secrets**
|
|
1068
|
-
|
|
1069
|
-
Run:
|
|
1070
|
-
|
|
1071
|
-
```bash
|
|
1072
|
-
git diff --stat 50dfc4f..HEAD
|
|
1073
|
-
git diff --check 50dfc4f..HEAD
|
|
1074
|
-
git log --oneline 50dfc4f..HEAD
|
|
1075
|
-
npm run verify:all
|
|
1076
|
-
```
|
|
1077
|
-
|
|
1078
|
-
Expected: only V2 contracts, implementations, tests, docs, and verified public evidence changed; all gates pass.
|
|
1079
|
-
|
|
1080
|
-
- [ ] **Step 2: Inspect tracked binary files and local paths**
|
|
1081
|
-
|
|
1082
|
-
Run: `git ls-files | rg "\.(mp4|mov|mkv|wav|mp3|srt|env|pem|key)$"`
|
|
1083
|
-
Expected: no source media, source subtitle, environment, or key files are tracked.
|
|
1084
|
-
|
|
1085
|
-
- [ ] **Step 3: Confirm GitHub scope with Nana**
|
|
1086
|
-
|
|
1087
|
-
Report the commit list, final render evidence, screenshot contact sheet, output hash, test results, and any remaining risks. Do not push while any verification is failing.
|
|
1088
|
-
|
|
1089
|
-
- [ ] **Step 4: Push only after the already-authorized public-update scope remains unchanged**
|
|
1090
|
-
|
|
1091
|
-
```bash
|
|
1092
|
-
git push -u origin design/semantic-template-system-v2
|
|
1093
|
-
```
|
|
1094
|
-
|
|
1095
|
-
Expected: remote branch is created. Merge or direct-main update follows the user's chosen GitHub workflow; no deployment or unrelated repository changes occur.
|
|
1096
|
-
|
|
1097
|
-
- [ ] **Step 5: Verify the remote repository and CI**
|
|
1098
|
-
|
|
1099
|
-
Check the remote commit SHA, README image rendering, and GitHub Actions result. The task is complete only when the public page shows the new real-call evidence and CI passes.
|