luckiest-co 1.0.31 → 1.0.33
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/commands/plan.md +1 -0
- package/package.json +1 -1
- package/skills/luckiest-brandkit/CHANGELOG.md +8 -0
- package/skills/luckiest-brandkit/SKILL.md +10 -3
- package/skills/luckiest-brandkit-sizing/CHANGELOG.md +13 -0
- package/skills/luckiest-brandkit-sizing/SKILL.md +126 -0
- package/skills/luckiest-brandkit-sizing/references/signage-and-print.md +60 -0
- package/skills/luckiest-plan/SKILL.md +1 -0
- package/skills/luckiest-research/CHANGELOG.md +5 -0
- package/skills/luckiest-research/SKILL.md +8 -4
- package/skills/luckiest-video-studio/ATTRIBUTION.md +13 -1
- package/skills/luckiest-video-studio/CHANGELOG.md +66 -0
- package/skills/luckiest-video-studio/SECURITY.md +5 -2
- package/skills/luckiest-video-studio/SKILL.md +71 -31
- package/skills/luckiest-video-studio/references/audio.md +61 -10
- package/skills/luckiest-video-studio/references/concat.md +3 -2
- package/skills/luckiest-video-studio/references/lessons.md +44 -0
- package/skills/luckiest-video-studio/references/step-2-plan.md +32 -1
- package/skills/luckiest-video-studio/references/step-3-compose.md +28 -0
- package/skills/luckiest-video-studio/references/step-4-deliver.md +24 -1
- package/skills/luckiest-video-studio/references/storyboard.md +24 -3
- package/skills/luckiest-video-studio/scripts/qa.mjs +167 -5
- package/skills/luckiest-video-studio/scripts/qa.test.mjs +99 -1
- package/skills/luckiest-video-studio/scripts/render-scenes.mjs +196 -71
- package/skills/luckiest-video-studio/scripts/render-scenes.test.mjs +109 -0
- package/skills/luckiest-video-studio/scripts/sfx-cues.mjs +116 -0
- package/skills/luckiest-video-studio/scripts/sfx-cues.test.mjs +76 -0
- package/skills/luckiest-video-studio/scripts/stamp-format.mjs +26 -0
- package/skills/luckiest-video-studio/scripts/storyboard.schema.json +23 -0
- package/skills/luckiest-video-studio/templates/logo-line-draw.html +12 -5
- package/skills/luckiest-video-studio-art-director/ATTRIBUTION.md +1 -0
- package/skills/luckiest-video-studio-art-director/CHANGELOG.md +8 -0
- package/skills/luckiest-video-studio-art-director/SKILL.md +18 -5
- package/skills/luckiest-video-studio-cards/CHANGELOG.md +18 -0
- package/skills/luckiest-video-studio-cards/SKILL.md +22 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-agenda.html +17 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-bigtype.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-board.html +20 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-checklist.html +27 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-compare.html +40 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-deck.html +26 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-dossier.html +28 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-filmstrip.html +36 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-grid6.html +24 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-indexset.html +34 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-maplegend.html +39 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-matrix.html +35 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-numlist.html +26 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-outline.html +26 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-phases.html +34 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-quad.html +41 -10
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-roadmap.html +66 -17
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-stepper.html +42 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-toc.html +26 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-vtimeline.html +35 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-bracket.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-circle.html +21 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-classified.html +25 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-collage.html +27 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-correction.html +19 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-crt.html +15 -4
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-cutout.html +18 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-fullbleed.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-highlight.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-indexcard.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-map.html +20 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-markerbox.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-numeral.html +21 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-split.html +25 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stacked.html +26 -10
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stamp.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-ticker.html +26 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-tornstrip.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-annotated.html +29 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-arc.html +25 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-axis.html +34 -14
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bar.html +17 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bracket.html +24 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-calendar.html +24 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-callout.html +24 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-columns.html +27 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-corner.html +22 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-dots.html +27 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-engraving.html +30 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-footnote.html +20 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-frac.html +24 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-heat.html +22 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-isotype.html +29 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ledger.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-left.html +27 -10
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-magnifier.html +21 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-map.html +21 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-meter.html +26 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-multiplier.html +27 -12
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-odo.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pack.html +41 -17
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-photo.html +18 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pie.html +25 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-postage.html +24 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pricetag.html +25 -11
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-quote.html +21 -8
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ranking.html +25 -10
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-receipt.html +24 -12
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ribbon.html +34 -12
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-semi.html +22 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-spotlight.html +23 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-stamp.html +24 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-steps.html +30 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-tape.html +33 -12
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-torn.html +22 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-trend.html +23 -9
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-vs.html +30 -10
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-window.html +38 -25
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat.html +23 -4
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-timeline.html +41 -6
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-label.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-bracket.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-caption.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-circle.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-definition.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-footnote.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-magnify.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pin.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pullquote.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-spotlight.html +15 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-sticky.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-tag.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-underline.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lower-third.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-badge.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-barslab.html +26 -7
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-bracket.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-clapper.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-highlight.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-indextab.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-rail.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-ribbon.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stacked.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stamp.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-sticky.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-typecard.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/style.json +1 -1
- package/skills/luckiest-video-studio-cards/packs/01-paper-collage/tokens.css +18 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-agenda.html +23 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-beforeafter.html +30 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bento.html +34 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bigleft.html +28 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-callouts.html +36 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cardrow5.html +17 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-checklist.html +11 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cycle.html +30 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-dashboard.html +32 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck2.html +21 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck3.html +18 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-duallist.html +24 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featurecompare.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featuregrid.html +25 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flashcards.html +22 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flow.html +23 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-funnel.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-gantt.html +22 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid6.html +17 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid9.html +15 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-iconlist.html +18 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-journey.html +41 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-kpirow.html +24 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-layers.html +20 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-legend.html +19 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-levels.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-logowall.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mappoints.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-matrix.html +24 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-milestones.html +38 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mindmap.html +35 -12
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-nested.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-network.html +76 -31
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-notifs.html +21 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-numlist.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-orgchart.html +36 -16
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-outline.html +17 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-phases.html +23 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pipeline.html +25 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pricing.html +36 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-profiles.html +20 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-proscons.html +21 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pyramid.html +17 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quad.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quotegrid.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-ranked.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-roadmap.html +27 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spectrum.html +29 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-split3.html +24 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spotlightcard.html +34 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-statgrid.html +17 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-steps.html +25 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-summary.html +22 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tiercompare.html +29 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-timeline.html +26 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-toc.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tree.html +40 -15
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tricards.html +22 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-venn.html +34 -9
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-vstable.html +24 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ascend.html +10 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-aurora-bars.html +12 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-beam.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-boxed.html +26 -13
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-breath.html +14 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-chaptercard.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-column-light.html +17 -9
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-constellation.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-countdown.html +10 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-curtain.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-dawn.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-depth.html +18 -12
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-divider.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-drift-grid.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-duotone.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-eclipse.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-emblem.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-flare-sweep.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-glow-rule.html +22 -13
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gradient-word.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gridfloor.html +16 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-halo.html +16 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-horizon.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-index.html +25 -9
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-kinetic.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-lensflare.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-liquid.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-marquee.html +34 -25
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-mesh.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-monolith.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-node-title.html +17 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-numeral.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orb.html +12 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orbit.html +9 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-particles.html +7 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-pill.html +7 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-portal.html +14 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-prism.html +15 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-question.html +14 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-quoteopen.html +11 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-reveal-mask.html +6 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ribbon.html +12 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ripple.html +8 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-searchbar.html +15 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-slab.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sphere-top.html +12 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-split-reveal.html +24 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-splitpanel.html +27 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight-cone.html +16 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight.html +10 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stack.html +17 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stacked-words.html +14 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-starfield.html +7 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sweep.html +11 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-tunnel.html +14 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-type-scale.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-typed.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-underline-grow.html +13 -1
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-waveform.html +11 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-wordmark.html +11 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-annot.html +22 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-beforeafter.html +23 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bigpercent.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bracketstat.html +13 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bubble.html +7 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-cbars.html +8 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-clockface.html +8 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-column.html +12 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-compass.html +7 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-counterpill.html +11 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-curve.html +22 -10
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-delta.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dial.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-donut.html +15 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dotgrid.html +14 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-figure.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fillshape.html +11 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fraction.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-funnel.html +24 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-growtharrow.html +18 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-heatcell.html +8 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-isotype.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-layered.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-mega.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-meter.html +9 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-milestone.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-money.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiplier.html +12 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiring.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-needle.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-nodes.html +50 -9
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-odometer.html +9 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitmoons.html +21 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitstat.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pair.html +18 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-percentile.html +11 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pictobar.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-polar.html +12 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-quotestat.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-radialbars.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-range.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-rank.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ratio.html +10 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ring.html +10 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-risewall.html +18 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-score.html +11 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-segbar.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-semigauge.html +9 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-sparkline.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-spectrum.html +9 -2
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-split.html +14 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-stackedbars.html +9 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tickerstat.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tiles.html +18 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-timer.html +14 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-trendline.html +18 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-underscore.html +9 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-versus.html +18 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waffle.html +18 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waterfall.html +9 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-badge.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-brace.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bracket.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bubble.html +16 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-byline.html +17 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-callout.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-category.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-checkmark.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-chipstat.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-comparemini.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-coord.html +26 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-counter.html +17 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-crosshair.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-dashed.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-definition.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-deltachip.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-eyebrow.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-fact.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-flag.html +20 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-formula.html +17 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-hash.html +17 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-highlightbox.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-iconchip.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-info.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-infocard.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keycap.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keyword.html +12 -3
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-leader.html +16 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-legend.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-measure.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-meterchip.html +16 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-metric.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-micropie.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-minibar.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-node.html +28 -18
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-note.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-numbercallout.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-percent.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pointer.html +31 -22
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-price.html +20 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-progress.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pulse.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-qmark.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-quote.html +16 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-rating.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ribbon.html +19 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ringmark.html +27 -17
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-search.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-sparkchip.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-spec.html +25 -13
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-status.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-step.html +16 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tag.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-takeaway.html +13 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tcode.html +18 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-timestamp.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-toast.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tooltip.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-underline.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-warning.html +16 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-avatar.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-badgecard.html +12 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-barslide.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bracket.html +20 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-brandbar.html +13 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bug.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-capsule.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chapterbar.html +12 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chip.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cinemastrip.html +20 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cite.html +12 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-clockname.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-coordbar.html +16 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-corner.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cornerframe.html +16 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-countbar.html +13 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dividername.html +26 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dotline.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-doublecard.html +12 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dual.html +12 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-edgebar.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-flipcard.html +15 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-geopin.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-glasscard.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradient.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradientbar.html +12 -4
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-handlebar.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-infochips.html +11 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-lensbar.html +25 -12
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-live.html +12 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-location.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-logolock.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-micname.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minicard.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minimal.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nameplate3d.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonframe.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonpill.html +13 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nowplaying.html +15 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-orbitbadge.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-pill.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-portraitframe.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-progressname.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-quote.html +15 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ratingname.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ribbon.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-sidebracket.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-slidetab.html +15 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-social.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-spotlightname.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-stacked.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-statline.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-tagrow.html +14 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-thinstrip.html +18 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ticker.html +29 -7
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-titlebar.html +19 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-trust.html +16 -8
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-typedname.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-underbar.html +13 -5
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-waveband.html +14 -6
- package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/tokens.css +18 -8
- package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier1/t1-stat.html +4 -2
- package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier2/t2-list.html +5 -2
- package/skills/luckiest-video-studio-cards/packs/_blueprint/tokens.css +12 -4
- package/skills/luckiest-video-studio-cards/references/card-contract.md +15 -1
- package/skills/luckiest-video-studio-cards/scripts/qa-cards.mjs +14 -8
- package/skills/luckiest-video-studio-cards/templates/glass-popout/index.html +35 -11
- package/skills/luckiest-video-studio-cards/templates/glass-popout/meta.json +6 -1
- package/skills/luckiest-video-studio-cards/templates/graph-paper/index.html +15 -10
- package/skills/luckiest-video-studio-cards/templates/graph-paper/meta.json +7 -2
- package/skills/luckiest-video-studio-cuts/ATTRIBUTION.md +5 -4
- package/skills/luckiest-video-studio-cuts/CHANGELOG.md +6 -0
- package/skills/luckiest-video-studio-cuts/SKILL.md +19 -11
- package/skills/luckiest-video-studio-cuts/scripts/build-cuts-reel.mjs +63 -0
- package/skills/luckiest-video-studio-cuts/scripts/build-cuts-reel.test.mjs +35 -0
- package/skills/luckiest-video-studio-motion/ATTRIBUTION.md +4 -0
- package/skills/luckiest-video-studio-motion/CHANGELOG.md +9 -0
- package/skills/luckiest-video-studio-motion/SKILL.md +7 -3
- package/skills/luckiest-video-studio-motion/references/vocabulary.md +21 -0
- package/skills/luckiest-video-studio-motion/templates/spring.js +50 -0
- package/skills/luckiest-video-studio-motion/templates/spring.test.mjs +51 -0
- package/skills/luckiest-video-studio-recreate/ATTRIBUTION.md +2 -0
- package/skills/luckiest-video-studio-recreate/CHANGELOG.md +11 -0
- package/skills/luckiest-video-studio-recreate/SKILL.md +46 -7
- package/skills/luckiest-video-studio-reel/CHANGELOG.md +6 -0
- package/skills/luckiest-video-studio-reel/SKILL.md +9 -4
- package/skills/luckiest-video-studio-reel/templates/reel.html +36 -18
- package/skills/luckiest-video-studio-reference/CHANGELOG.md +4 -0
- package/skills/luckiest-video-studio-reference/SKILL.md +10 -3
- package/skills/luckiest-video-studio-review/ATTRIBUTION.md +54 -0
- package/skills/luckiest-video-studio-review/CHANGELOG.md +44 -0
- package/skills/luckiest-video-studio-review/LICENSE-motion-os +21 -0
- package/skills/luckiest-video-studio-review/SKILL.md +125 -0
- package/skills/luckiest-video-studio-review/editor/index.html +885 -0
- package/skills/luckiest-video-studio-review/editor/serve.mjs +111 -0
- package/skills/luckiest-video-studio-review/references/apply-feedback.md +71 -0
- package/skills/luckiest-video-studio-review/scripts/build-reel.mjs +96 -0
- package/skills/luckiest-video-studio-review/scripts/build-reel.test.mjs +62 -0
- package/skills/luckiest-video-watcher/ATTRIBUTION.md +37 -0
- package/skills/luckiest-video-watcher/CHANGELOG.md +70 -0
- package/skills/luckiest-video-watcher/LICENSE-claude-video +21 -0
- package/skills/luckiest-video-watcher/SKILL.md +181 -0
- package/skills/luckiest-video-watcher/references/watch-guide.md +159 -0
- package/skills/luckiest-video-watcher/scripts/config.py +174 -0
- package/skills/luckiest-video-watcher/scripts/download.py +207 -0
- package/skills/luckiest-video-watcher/scripts/frames.py +758 -0
- package/skills/luckiest-video-watcher/scripts/gemini.py +162 -0
- package/skills/luckiest-video-watcher/scripts/local_whisperx.py +147 -0
- package/skills/luckiest-video-watcher/scripts/runtime.py +35 -0
- package/skills/luckiest-video-watcher/scripts/setup.py +338 -0
- package/skills/luckiest-video-watcher/scripts/transcribe.py +113 -0
- package/skills/luckiest-video-watcher/scripts/watch.py +430 -0
- package/skills/luckiest-video-watcher/scripts/whisper.py +425 -0
- package/skills/luckiest-video-studio-cuts/scripts/build-edl-review.mjs +0 -114
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: luckiest-video-studio
|
|
3
|
-
description: "Make product launch videos, product demos with motion design between the demo shots, and logo motion showcases of a design portfolio, and keep every one editable after it is rendered. Reads the project or portfolio, plans a storyboard, builds motion scenes with HyperFrames, records or places demo footage, renders each scene as its own clip, then hands back an MP4 plus the editable pieces: a storyboard.json that re-renders one scene at a time, a
|
|
3
|
+
description: "Make product launch videos, product demos with motion design between the demo shots, and logo motion showcases of a design portfolio, and keep every one editable after it is rendered. Reads the project or portfolio, plans a storyboard, builds motion scenes with HyperFrames, records or places demo footage, renders each scene as its own clip, then hands back an MP4 plus the editable pieces: a storyboard.json that re-renders one scene at a time, a review player to edit copy, pin notes on the frame, and send changes back in one prompt (Concat, OpenScreen, or Diffusion Studio on request), and optional After Effects compositions. Use for 'make a launch video', 'product demo video', 'demo with motion graphics', 'logo animation', 'logo reveal', 'motion showcase of my work', 'portfolio reel', 'animate my logos', 'brand reel', 'turn my talking-head recording into a reel', 'add graphics over me talking', 'turn this into a video', 'change scene 3 of the video', or 'let me edit the video after'. For AI-generated footage, avatars, and text-to-video models use luckiest-video. For what to post and when use luckiest-social."
|
|
4
4
|
license: See ATTRIBUTION.md
|
|
5
5
|
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, AskUserQuestion
|
|
6
6
|
metadata:
|
|
7
|
-
version: "1.
|
|
7
|
+
version: "1.13.0"
|
|
8
8
|
listing_id: luckiest-video-studio
|
|
9
9
|
author: luckiest
|
|
10
10
|
---
|
|
@@ -13,19 +13,19 @@ metadata:
|
|
|
13
13
|
|
|
14
14
|
Short videos that show the real product, with motion design between the demo
|
|
15
15
|
shots, and that stay editable after the render. The editability is the point:
|
|
16
|
-
every run leaves a storyboard, per-scene clips, and a
|
|
16
|
+
every run leaves a storyboard, per-scene clips, and a review player, not just
|
|
17
17
|
an MP4.
|
|
18
18
|
|
|
19
19
|
## Staying current
|
|
20
20
|
|
|
21
21
|
On activation, call the Luckiest MCP `check_updates` tool with
|
|
22
|
-
`{ listingId: "aff888e4-9ee9-4f73-af08-74d5d09d3c10", installedSemver: "1.
|
|
22
|
+
`{ listingId: "aff888e4-9ee9-4f73-af08-74d5d09d3c10", installedSemver: "1.13.0" }`. If it returns
|
|
23
23
|
`upToDate: false`, surface the `notice` to the user once, then continue. Do nothing
|
|
24
24
|
further if `upToDate: true`. Never block on this check; if the tool is unavailable,
|
|
25
25
|
proceed.
|
|
26
26
|
|
|
27
27
|
When the skill's work is done, call the Luckiest MCP `report_usage` tool once with
|
|
28
|
-
`{ listing_id: "luckiest-video-studio", skill_version: "1.
|
|
28
|
+
`{ listing_id: "luckiest-video-studio", skill_version: "1.13.0", matched: true, success: <true if the skill completed, false otherwise> }`.
|
|
29
29
|
Metadata only, never prompt text. Never block on it; if the tool is unavailable,
|
|
30
30
|
skip silently.
|
|
31
31
|
|
|
@@ -37,7 +37,8 @@ skip silently.
|
|
|
37
37
|
[SECURITY.md](SECURITY.md).
|
|
38
38
|
2. **Show the real thing.** Use the project's actual UI, copy, and logos. Never
|
|
39
39
|
invent numbers, testimonials, or results. Charts use relative sizes until the
|
|
40
|
-
user gives real figures.
|
|
40
|
+
user gives real figures. Every number the video shows is listed once in
|
|
41
|
+
`storyboard.json` `facts` and reads the same in every scene.
|
|
41
42
|
3. **Nothing secret on screen.** Everything read can end up in a public video.
|
|
42
43
|
Never show keys, tokens, `.env` values, customer data, or private URLs.
|
|
43
44
|
4. **Local assets only.** Compositions load files copied into the output folder,
|
|
@@ -68,14 +69,15 @@ in `<skill-dir>/assets/sfx/`. Resolve it; never assume an install path.
|
|
|
68
69
|
|---|---|---|
|
|
69
70
|
| `--mode` | `launch`, `demo`, `logos` | inferred |
|
|
70
71
|
| `--tone` | preset or freeform ([references/tones.md](references/tones.md)) | inferred |
|
|
71
|
-
| `--format` | `landscape`, `vertical`, `square
|
|
72
|
+
| `--format` | `landscape`, `vertical`, `square`: the master size scenes are designed at | `landscape` |
|
|
73
|
+
| `--formats` | comma list of `landscape`, `vertical`, `square`: render the same video once per format, one file each | master only |
|
|
72
74
|
| `--duration` | seconds | per mode |
|
|
73
75
|
| `--no-music`, `--no-sfx` | flags | on |
|
|
74
76
|
| `--voice` | flag, Kokoro via HyperFrames | off |
|
|
75
77
|
| `--scene <id>` | re-render one scene of an existing run | none |
|
|
76
78
|
| `--ae` | also build After Effects compositions | off |
|
|
77
79
|
| `--ref <url-or-mp4>` | inspiration video to study first | none |
|
|
78
|
-
| `--editor` | `concat`, `openscreen`, `diffusion`, or several for the editing handoff | `
|
|
80
|
+
| `--editor` | `review`, `concat`, `openscreen`, `diffusion`, or several for the editing handoff | `review` |
|
|
79
81
|
|
|
80
82
|
If the user asks to change an existing video ("make scene 3 slower", "swap the
|
|
81
83
|
logo in the outro"), skip to **Edit an existing run** below.
|
|
@@ -99,7 +101,9 @@ video-studio-output/
|
|
|
99
101
|
final.mp4 all clips joined, poster baked as frame 0
|
|
100
102
|
poster.jpg
|
|
101
103
|
TIMING.md every scene with its in/out time and the line it covers
|
|
102
|
-
|
|
104
|
+
reel.json what the review player reads (default editor), rewritten on every render
|
|
105
|
+
qa/review-notes.json your own notes, pinned in the review player before the user opens it
|
|
106
|
+
concat/ the Concat project (with --editor concat); project.concat.txt holds its path
|
|
103
107
|
project.openscreen.txt path to the OpenScreen timeline in ~/Movies/Openscreen/<slug>/ (with --editor openscreen)
|
|
104
108
|
share-copy.txt
|
|
105
109
|
```
|
|
@@ -107,7 +111,8 @@ video-studio-output/
|
|
|
107
111
|
## Step 0: Check tools
|
|
108
112
|
|
|
109
113
|
Confirm `node`, `ffmpeg`, and `ffprobe`. HyperFrames runs via `npx hyperframes`.
|
|
110
|
-
|
|
114
|
+
The default editor, the review player (`luckiest-video-studio-review`), needs
|
|
115
|
+
only `node`. For timeline editing, Concat (`concat-cli` on `PATH`, see
|
|
111
116
|
[references/concat.md](references/concat.md)) is optional. For demo recordings,
|
|
112
117
|
OpenScreen 1.13.0 at `/Applications/Openscreen.app` is optional. Report what is
|
|
113
118
|
missing in one line and continue with what exists: without an editor the run still
|
|
@@ -199,6 +204,7 @@ scene before both.
|
|
|
199
204
|
**Read:** the HyperFrames skills `hyperframes-core`, `hyperframes-animation`,
|
|
200
205
|
`hyperframes-keyframes`, `hyperframes-creative`, `hyperframes-cli`, then
|
|
201
206
|
[references/step-3-compose.md](references/step-3-compose.md),
|
|
207
|
+
[references/lessons.md](references/lessons.md) (traps that cost a debug round),
|
|
202
208
|
[references/audio.md](references/audio.md), and the `luckiest-video-studio-motion`
|
|
203
209
|
sub-skill for easing, duration, origin, and transitions. Read the `luckiest-video-studio-composition` sub-skill for
|
|
204
210
|
focal placement, grids, and white space at each scene's hold frame. Do not enter the `hyperframes` intent
|
|
@@ -216,7 +222,13 @@ footage the user supplies; copy it into `demo/`.
|
|
|
216
222
|
|
|
217
223
|
Render every scene to `clips/` with `scripts/render-scenes.mjs` (it skips scenes
|
|
218
224
|
whose inputs did not change), join them into `final.mp4`, bake the best frame as
|
|
219
|
-
`poster.jpg` and frame 0, and write `TIMING.md` and `share-copy.txt`.
|
|
225
|
+
`poster.jpg` and frame 0, and write `TIMING.md` and `share-copy.txt`. With
|
|
226
|
+
`--formats`, finish and approve the master first, then add `formats` to the
|
|
227
|
+
storyboard: `render-scenes.mjs --stills` gives one hold-frame sheet per format to
|
|
228
|
+
check (and `qa.mjs safe --stills`) without rendering, and the render reuses the
|
|
229
|
+
master's landscape clips so only the new formats render into `clips/<format>/` and
|
|
230
|
+
`final-<format>.mp4`. Scenes re-lay out by the rules in "Build once, render every
|
|
231
|
+
format" (`step-3-compose.md`), and demo footage is cropped around each scene's `focus`.
|
|
220
232
|
|
|
221
233
|
Then run the QA gates in `scripts/qa.mjs` on the result (each exits 1 on a fail;
|
|
222
234
|
`node --test scripts/qa.test.mjs` shows each one failing its control):
|
|
@@ -227,8 +239,16 @@ node <skill-dir>/scripts/qa.mjs deadframes <output-dir>/final.mp4 # black fr
|
|
|
227
239
|
node <skill-dir>/scripts/qa.mjs legibility <output-dir>/final.mp4 # nothing readable on screen
|
|
228
240
|
node <skill-dir>/scripts/qa.mjs crossfade <output-dir>/composition # full-frame opacity fades
|
|
229
241
|
node <skill-dir>/scripts/qa.mjs motion <output-dir>/composition # ease-in entrances, scale 0 cards, short linear moves
|
|
242
|
+
node <skill-dir>/scripts/qa.mjs avsync <output-dir>/final.mp4 --expect <hero hit times> --duration <s> # audio present, length right, hits within one frame
|
|
243
|
+
node <skill-dir>/scripts/qa.mjs facts <output-dir> # on-screen numbers not in storyboard facts, em dashes on screen
|
|
244
|
+
node <skill-dir>/scripts/qa.mjs loop <output-dir>/final.mp4 # only for looping pieces: last frame matches the first
|
|
245
|
+
node <skill-dir>/scripts/qa.mjs safe <output-dir> # text or logo edges in each format's platform-covered margins
|
|
230
246
|
```
|
|
231
247
|
|
|
248
|
+
Skip `avsync` only with `--no-music --no-sfx`. Pass the hero hit times from
|
|
249
|
+
`TIMING.md` to `--expect`. A hit more than one frame off means its audio element's
|
|
250
|
+
`data-start` or the cue time is wrong.
|
|
251
|
+
|
|
232
252
|
Then run `luckiest-video-studio-composition --review` on the run. It writes
|
|
233
253
|
`qa/composition-review.md` with a verdict per scene. Fix every scene it blocks.
|
|
234
254
|
|
|
@@ -242,6 +262,17 @@ Then run `luckiest-video-studio-motion --review` on the run. It writes
|
|
|
242
262
|
`qa/motion-review.md` with a verdict per scene. Fix and re-render every scene it
|
|
243
263
|
blocks before the judge.
|
|
244
264
|
|
|
265
|
+
Then watch the result with `luckiest-video-watcher` in quick mode, local engine
|
|
266
|
+
only, with `--out-dir <output-dir>/qa/watch`. When earlier gates flagged times,
|
|
267
|
+
pass only those with `--timestamps`. It reads frames and the transcript together,
|
|
268
|
+
so it catches what the frame-only reviews miss: captions that differ from the
|
|
269
|
+
voiceover, audio that cuts out, and text clipped at a scene seam. The voiceover
|
|
270
|
+
check needs a transcription backend and is skipped for runs without voiceover.
|
|
271
|
+
With `--formats`, watch the landscape final and the other formats only at
|
|
272
|
+
flagged times. Fix every
|
|
273
|
+
`m:ss` issue it reports. If the watcher is not installed, say so in one line and
|
|
274
|
+
skip this step.
|
|
275
|
+
|
|
245
276
|
The talk and reel sub-skills add `beatsync`, `tokens`, `presence`, `face`, and `beatgrid`.
|
|
246
277
|
|
|
247
278
|
**Judge each new version against the last one.** Keep the previous render as
|
|
@@ -264,41 +295,50 @@ differences the judge named. Stop at v3, when a version loses, or when only
|
|
|
264
295
|
changes too small to see are left.
|
|
265
296
|
|
|
266
297
|
**Gate:** `final.mp4` plays end to end, every scene in `storyboard.json` has a
|
|
267
|
-
clip, the
|
|
298
|
+
clip, the seven gates pass or each failure is explained in `TIMING.md`, no scene is
|
|
268
299
|
left blocked in `qa/motion-review.md`, and
|
|
269
300
|
every judge verdict from v2 on is recorded there.
|
|
270
301
|
|
|
271
302
|
## Step 5: Hand off for editing
|
|
272
303
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
`concat-cli` is missing, say so in one line and offer `--editor openscreen`. Tell
|
|
277
|
-
the user the three ways to edit, in this order:
|
|
304
|
+
Hand the run folder to the `luckiest-video-studio-review` sub-skill. It writes
|
|
305
|
+
`reel.json`, pins your own review notes, and opens the review player in the
|
|
306
|
+
browser. Tell the user the ways to edit, in this order:
|
|
278
307
|
|
|
279
|
-
1. **
|
|
308
|
+
1. **Review player.** Edit (E) to change a scene's copy and colors, N to pin a
|
|
309
|
+
note on the frame, Approved to lock a scene, then **Send to Claude** and paste
|
|
310
|
+
the prompt here. See **Edit an existing run** below.
|
|
311
|
+
2. **Ask again.** "Change scene 3's headline" edits `storyboard.json` and
|
|
280
312
|
re-renders only that scene.
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
313
|
+
3. **Timeline** (on request). With `--editor concat`, run
|
|
314
|
+
`scripts/assemble-concat.mjs <run-dir>` and open the project named in
|
|
315
|
+
`project.concat.txt` in Concat to trim, reorder, caption, add effects, and
|
|
316
|
+
export. See [references/concat.md](references/concat.md). If `concat-cli` is
|
|
317
|
+
missing, say so in one line.
|
|
318
|
+
With `--editor openscreen`, run `scripts/assemble-openscreen.mjs` for cursor
|
|
319
|
+
zoom on demo recordings. See [references/openscreen.md](references/openscreen.md).
|
|
286
320
|
With `--editor diffusion`, run `scripts/assemble-diffusion.mjs <run-dir> --open`:
|
|
287
321
|
logo scenes become native Diffusion Studio scenes with inspector controls. See
|
|
288
322
|
[references/diffusion.md](references/diffusion.md).
|
|
289
|
-
|
|
323
|
+
4. **After Effects** (with `--ae`). Hand the run folder to the
|
|
290
324
|
`luckiest-video-studio-ae` sub-skill, which rebuilds motion and logo scenes as
|
|
291
325
|
After Effects precomps through `luckiest-ae-mcp`.
|
|
292
326
|
|
|
293
327
|
## Edit an existing run
|
|
294
328
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
`
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
329
|
+
When the user pastes a prompt from the review player (it starts with "Motion OS
|
|
330
|
+
feedback for"), hand it to `luckiest-video-studio-review`: edits set
|
|
331
|
+
`storyboard.json` values exactly, notes are read against the frame they point at,
|
|
332
|
+
and approved scenes stay untouched.
|
|
333
|
+
|
|
334
|
+
For any change, read `storyboard.json` from the run folder. Change only the scenes
|
|
335
|
+
the request touches, re-render them with `scripts/render-scenes.mjs --scene <id>`,
|
|
336
|
+
rejoin `final.mp4` and `TIMING.md`, then rerun the review sub-skill's
|
|
337
|
+
`scripts/build-reel.mjs` so the open player loads the new version. Never rebuild untouched scenes. With
|
|
338
|
+
`--editor concat`, rerun `scripts/assemble-concat.mjs` too: it starts a fresh
|
|
339
|
+
Concat project and keeps the old one as `concat-<timestamp>/`, so tell the user
|
|
340
|
+
where any edits they made in Concat now live. With `--editor openscreen` or
|
|
341
|
+
`diffusion`, rerun that editor's script too.
|
|
302
342
|
|
|
303
343
|
## Creative laws
|
|
304
344
|
|
|
@@ -187,22 +187,67 @@ When in doubt, pick fewer cues with better timing. Prefer a coherent sonic palet
|
|
|
187
187
|
|
|
188
188
|
## Timing rules
|
|
189
189
|
|
|
190
|
-
These rules apply when Hyperframes is implementing the composition and the motion timings are known
|
|
190
|
+
These rules apply when Hyperframes is implementing the composition and the motion timings are known.
|
|
191
191
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
192
|
+
Each sound has an anchor: the part of it that must land on the frame. Place the
|
|
193
|
+
anchor, not the file start.
|
|
194
|
+
|
|
195
|
+
| Sound | Anchor | Place it so |
|
|
196
|
+
|---|---|---|
|
|
197
|
+
| Pop, click, key, drop | start | it starts 0.0-0.1s before the element's first visible frame |
|
|
198
|
+
| Whoosh, swoosh | loudest point | its peak sits on the cut, so it starts before the cut |
|
|
199
|
+
| Riser, reverse swell | end | it ends on the hit it leads into |
|
|
200
|
+
| Impact, bell, boom | start | it starts on the hit frame |
|
|
201
|
+
| Success ding | start | the metric or stat is fully visible |
|
|
202
|
+
|
|
203
|
+
The bundled library has no whooshes or risers. Source them with HyperFrames
|
|
204
|
+
`media-use` (license noted) or use ones the user supplies.
|
|
205
|
+
|
|
206
|
+
- **Times come from the cue file, never by ear.** Use the scene timings in
|
|
207
|
+
`storyboard.json` and the beat or drop times from the cue JSON (see Beat and
|
|
208
|
+
cue sources below).
|
|
209
|
+
- **Layer the big moments.** The hero hit is a swell or riser ending on the frame,
|
|
210
|
+
an impact starting on it, and a low sub under it. Smaller beats get one sound.
|
|
211
|
+
- **Gain ladder.** UI detail (keys, clicks) 0.25-0.4, transitions (whooshes)
|
|
212
|
+
0.45-0.6, hits 0.7-0.9. One hero hit per scene owns its moment: drop smaller
|
|
213
|
+
cues that land within a few frames of it.
|
|
214
|
+
- **Duck the music under the hero hits.** Lower the music bed by about a third
|
|
215
|
+
for half a second around each hero hit (a short volume tween on the music
|
|
216
|
+
element), so the hit reads without raising it.
|
|
217
|
+
- **Staggered elements:** usually accent the first, final, or strongest beat;
|
|
218
|
+
only score every item when that rhythm is intentional and still feels clean.
|
|
197
219
|
|
|
198
220
|
Composition notation:
|
|
199
221
|
```
|
|
200
222
|
Scene 2 — Reveal — 3s
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
223
|
+
Riser into the reveal (1.2s long) → SFX: ends at 0.3s, so starts at -0.9s (previous scene)
|
|
224
|
+
"Horse Tinder" scales in at 0.3s → SFX: impact/impactSoft_medium_001 at 0.3s, music ducked 0.2-0.7s
|
|
225
|
+
Tagline fades up at 0.8s → (no SFX, let the reveal carry)
|
|
226
|
+
Cut to scene 3 at 3.0s → SFX: whoosh peaking at 3.0s
|
|
204
227
|
```
|
|
205
228
|
|
|
229
|
+
### Many cues: one SFX track
|
|
230
|
+
|
|
231
|
+
Past about 10 cues (typing, card stacks, a dense demo), stop writing one
|
|
232
|
+
`<audio>` element per sound. List the cues in `<output-dir>/audio/sfx_cues.json`
|
|
233
|
+
and mix them into one track:
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
node <skill-dir>/scripts/sfx-cues.mjs <output-dir>/audio/sfx_cues.json --events <output-dir>/composition
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Each cue is `{ t, file or kind, align, volume, label }`; `file` is relative to
|
|
240
|
+
`<skill-dir>/assets/sfx/` or absolute for a sourced sound, and `align` is the
|
|
241
|
+
anchor from the table above (`start`, `peak`, or `end`). Scene builders can also
|
|
242
|
+
write `composition/<scene-id>.motion.json` with local event times (`key`, `click`,
|
|
243
|
+
`pop`, `card`, `impact`, `success`, and more), and `slots` in the cue file maps each
|
|
244
|
+
scene to its start (the In column of `TIMING.md`), so every keystroke lands on its
|
|
245
|
+
frame. It writes `audio/sfx.wav` and `audio/sfx-cuesheet.md` (hand the cue sheet
|
|
246
|
+
over in Step 4). Set `"sfx": { "file": "audio/sfx.wav" }` in `storyboard.json`:
|
|
247
|
+
`render-scenes.mjs` mixes it under the joined video, like the music bed. Leave
|
|
248
|
+
those cues out of the scenes' own `<audio>` elements, and check the render with
|
|
249
|
+
`qa.mjs avsync`.
|
|
250
|
+
|
|
206
251
|
---
|
|
207
252
|
|
|
208
253
|
## Music
|
|
@@ -211,6 +256,12 @@ Scene 2 — Reveal — 3s
|
|
|
211
256
|
|
|
212
257
|
Ask the user for a music file, or use HyperFrames `media-use` to source one and keep its license note. Match energy to tone: upbeat for `default` and `app-store`, steady and clean for `polished` and `cinematic`, very low volume (0.12-0.18) for `deadpan`. Skip music only when the plan chooses silence or `--no-music` is set.
|
|
213
258
|
|
|
259
|
+
Land the track, do not just start it. Find the first strong kick or the moment the
|
|
260
|
+
groove enters (the cue JSON's `strongCues`), pick the video moment it should hit
|
|
261
|
+
(the reveal, the title, the cut into the product), and set `music.offset` and
|
|
262
|
+
`music.at` in `storyboard.json` so they meet. `render-scenes.mjs` places it there
|
|
263
|
+
and normalizes the final mix to -14 LUFS.
|
|
264
|
+
|
|
214
265
|
### In a composition
|
|
215
266
|
|
|
216
267
|
After copying files (see Asset paths above), reference them with relative paths from `composition/`:
|
|
@@ -219,7 +270,7 @@ After copying files (see Asset paths above), reference them with relative paths
|
|
|
219
270
|
<audio id="bg-music" data-start="0" data-duration="[total]" data-track-index="10" data-volume="0.35" src="assets/music/<user-track>.mp3"></audio>
|
|
220
271
|
```
|
|
221
272
|
|
|
222
|
-
Volume: 0.3-0.4 for normal music beds. Use 0.12-0.22 for deadpan or very restrained parody. Never above 0.5. SFX
|
|
273
|
+
Volume: 0.3-0.4 for normal music beds. Use 0.12-0.22 for deadpan or very restrained parody. Never above 0.5. SFX follow the gain ladder in Timing rules, with softer values for polished/deadpan.
|
|
223
274
|
|
|
224
275
|
If the music file doesn't exist, skip it and notify the user after rendering.
|
|
225
276
|
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
# Editing in Concat (`--editor concat
|
|
1
|
+
# Editing in Concat (`--editor concat`)
|
|
2
2
|
|
|
3
3
|
Concat (`jub0t/Concat`, AGPL-3.0) is a free, local video editor for macOS,
|
|
4
4
|
Windows, Linux, and Android, with a scriptable API. Exports have no watermark, it
|
|
5
5
|
needs no account, and the agent can build and export a project without anyone
|
|
6
|
-
clicking.
|
|
6
|
+
clicking. Use it when the user wants a timeline. The review player
|
|
7
|
+
(`luckiest-video-studio-review`) is the default for reviewing a run. Use OpenScreen
|
|
7
8
|
([openscreen.md](openscreen.md)) for recorded product demos with cursor zoom, and
|
|
8
9
|
Diffusion Studio ([diffusion.md](diffusion.md)) when line-draw logo scenes need to
|
|
9
10
|
stay native and editable.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Build lessons
|
|
2
|
+
|
|
3
|
+
Each of these broke a real HyperFrames build once. Read them before writing a
|
|
4
|
+
scene. The project layout rules are in `step-3-compose.md`; these are the traps
|
|
5
|
+
that layout does not cover.
|
|
6
|
+
|
|
7
|
+
## Scenes
|
|
8
|
+
|
|
9
|
+
- **No id inside a scene may equal its host slot's id.** If
|
|
10
|
+
`compositions/hook.html` has an element `id="scene-hook"` and the root hosts it in
|
|
11
|
+
`<div id="scene-hook">`, the scene never mounts and nothing errors.
|
|
12
|
+
- **Drive changing state from a tween, not a callback.** For a counter, a typed
|
|
13
|
+
line, or a canvas, tween a plain clock object from 0
|
|
14
|
+
(`tl.to(clock, { t: dur, ease: "none", onUpdate: draw }, 0)`) and draw from
|
|
15
|
+
`clock.t`. `tl.call` fires only when playback crosses it, so a renderer that
|
|
16
|
+
seeks backward or jumps into the middle shows the wrong state.
|
|
17
|
+
- **Seeded randomness only.** Use a small seeded generator (mulberry32 with a fixed
|
|
18
|
+
seed) for scatter, noise, and particles. `Math.random()` and `Date` give a
|
|
19
|
+
different frame on every render, so a one-scene re-render no longer matches.
|
|
20
|
+
- **Shared backgrounds stay in the root.** When `index.html` owns a background
|
|
21
|
+
that runs across scenes (a sky, grain, a HUD), scenes must be transparent. A
|
|
22
|
+
scene that paints its own full-frame ground hides it.
|
|
23
|
+
- **Overlap scene hosts for reveals.** When the next scene should reveal itself
|
|
24
|
+
over the last one, start its host a few tenths of a second before the last one
|
|
25
|
+
ends. Back-to-back hosts can only hard cut.
|
|
26
|
+
|
|
27
|
+
## WebGL and three.js
|
|
28
|
+
|
|
29
|
+
- **Load three.js once, in the root `<head>`**, from `composition/assets/vendor/`.
|
|
30
|
+
Loading it again inside a scene replaces the global `THREE` and drops add-ons
|
|
31
|
+
such as `TextGeometry`.
|
|
32
|
+
- **Render WebGL from the timeline.** Create the renderer with
|
|
33
|
+
`preserveDrawingBuffer: true` and call `renderer.render` from one clock tween's
|
|
34
|
+
`onUpdate`, never from `requestAnimationFrame`.
|
|
35
|
+
|
|
36
|
+
## Rendering
|
|
37
|
+
|
|
38
|
+
- **Check free disk before a long render.** HyperFrames refuses to render with
|
|
39
|
+
under about 1 GB free, and a long 1080p render wants 3 GB or more. Run
|
|
40
|
+
`df -h .` first and tell the user if space is short.
|
|
41
|
+
- **Render with fewer workers when other renders are running** (`--workers 2`), or
|
|
42
|
+
two renders on one machine starve each other and time out.
|
|
43
|
+
- **Use absolute paths in background commands.** A background shell does not keep
|
|
44
|
+
your working directory.
|
|
@@ -46,6 +46,13 @@ landing-page-only, write "none — landing-page only" and rely on Key moments in
|
|
|
46
46
|
- Interpretation: [one sentence on how this affects pacing, writing, visual energy, and restraint]
|
|
47
47
|
|
|
48
48
|
## Format: [landscape / vertical / square] — [width]x[height]
|
|
49
|
+
## Also render: [none / vertical / square / landscape]
|
|
50
|
+
Ask which formats the video goes out in when the user names more than one place to
|
|
51
|
+
post it (TikTok and YouTube, Reels and LinkedIn): vertical 1080x1920 for TikTok,
|
|
52
|
+
Reels, and Shorts, square 1080x1080 for feeds, landscape 1920x1080 for YouTube and
|
|
53
|
+
the web. Default is the master format only. Each extra format costs one more render,
|
|
54
|
+
not one more design, and is added to storyboard `formats` only after the master is
|
|
55
|
+
approved (`step-4-deliver.md`, "Other formats (last)").
|
|
49
56
|
## Duration: [target seconds]
|
|
50
57
|
|
|
51
58
|
## Visual identity (from the project)
|
|
@@ -178,7 +185,31 @@ If a scene has either of these, commit to it explicitly in the scene description
|
|
|
178
185
|
|
|
179
186
|
Hyperframes can implement both patterns well — but only if the plan specifies what's appearing, in what order, and that interaction is being simulated. The plan is the contract.
|
|
180
187
|
|
|
181
|
-
##
|
|
188
|
+
## One shape, never cut (state list)
|
|
189
|
+
|
|
190
|
+
When the product is a set of UI states (a button that becomes a loader, then a
|
|
191
|
+
player, then a chart), plan the scene as a **state list** instead of a shot list.
|
|
192
|
+
One element carries the whole scene: it morphs size, radius, color, and content
|
|
193
|
+
from state to state, a cursor drives each change with a real click, and nothing
|
|
194
|
+
cuts. Write it in `storyboard.json` as `scenes[].states`:
|
|
195
|
+
|
|
196
|
+
```json
|
|
197
|
+
"states": [
|
|
198
|
+
{ "t": 0, "label": "Send invoice", "shape": "button 240x56 r28 #1F1447" },
|
|
199
|
+
{ "t": 0.9, "label": "Sending", "shape": "loader 56x56 r28", "cursor": "click" },
|
|
200
|
+
{ "t": 1.6, "label": "Paid $2,860.50", "shape": "card 420x140 r22 #22C55E" },
|
|
201
|
+
{ "t": 3.2, "label": "Send invoice", "shape": "button 240x56 r28 #1F1447" }
|
|
202
|
+
]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
- Each state names what the viewer reads and the shape it holds. The move between
|
|
206
|
+
two states retargets one spring (`Spring.track` from the motion sub-skill), so the
|
|
207
|
+
element never restarts or stops dead.
|
|
208
|
+
- Hold each state long enough to read it (the reading-time rule below), and let
|
|
209
|
+
the cursor arrive before the click, never with it.
|
|
210
|
+
- For a loop (a social post, a hero background), the last state equals the first,
|
|
211
|
+
and `qa.mjs loop` checks that the rendered last frame matches the first.
|
|
212
|
+
|
|
182
213
|
|
|
183
214
|
Choose the music direction in the plan. Leave exact SFX file selection and exact timestamps to Hyperframes during composition, because SFX should match the actual visual implementation.
|
|
184
215
|
|
|
@@ -14,6 +14,7 @@ Create a short launch-style video for [App Name].
|
|
|
14
14
|
- Composition directory: `<output-dir>/composition/`
|
|
15
15
|
- Rendered video: `<output-dir>/final.mp4`
|
|
16
16
|
- Format: [landscape / vertical / square] — [width]x[height]
|
|
17
|
+
- Also render: [none / vertical / square / landscape] (storyboard `formats`)
|
|
17
18
|
- Duration: [15-25 seconds]
|
|
18
19
|
|
|
19
20
|
## Source Material
|
|
@@ -204,6 +205,32 @@ Learned on a real run with HyperFrames 0.8.x:
|
|
|
204
205
|
- Give every timed element an `id`, or check warns that Studio cannot edit it.
|
|
205
206
|
- Before the full render, check every scene's hold frame in one pass: `hyperframes snapshot . --at <hold1>,<hold2>,... --no-end -o ../qa/holds`, then read `qa/holds/contact-sheet.jpg`.
|
|
206
207
|
|
|
208
|
+
### Build once, render every format
|
|
209
|
+
|
|
210
|
+
When the storyboard lists `formats`, `render-scenes.mjs` renders each motion and logo
|
|
211
|
+
scene once per format from a stamped copy. The stamp sets the root `data-width`,
|
|
212
|
+
`data-height`, and `data-format` (`landscape`, `vertical`, `square`) and appends these
|
|
213
|
+
tokens after your styles:
|
|
214
|
+
|
|
215
|
+
| Token | Value |
|
|
216
|
+
|---|---|
|
|
217
|
+
| `--w`, `--h` | Canvas size in px |
|
|
218
|
+
| `--u` | One hundredth of the short side: 10.8px at all three sizes |
|
|
219
|
+
| `--safe-t`, `--safe-b`, `--safe-l`, `--safe-r` | Safe area per side, from `luckiest-video-studio-composition/references/grids-and-ratios.md`. Vertical is the strictest of TikTok, Reels, and Shorts combined: 288, 672, 119, 194 |
|
|
220
|
+
|
|
221
|
+
Write every scene so the same HTML lays out at any of the three sizes:
|
|
222
|
+
|
|
223
|
+
1. Declare the master defaults on `:root` (`--w:1920px;--h:1080px;--u:10.8px;--safe-t:54px;--safe-b:54px;--safe-l:96px;--safe-r:96px` for landscape) so the scene still previews on its own.
|
|
224
|
+
2. `html,body{width:var(--w);height:var(--h)}`. Never write the canvas size in px.
|
|
225
|
+
3. Size type, spacing, strokes, and boxes in `calc(var(--u) * n)`, never raw px. Text that would cross the safe area wraps or shrinks; it never runs into it.
|
|
226
|
+
4. Keep every word, logo, and CTA inside a box inset by the safe tokens: `position:absolute; inset:var(--safe-t) var(--safe-r) var(--safe-b) var(--safe-l)`, plus `margin:auto` and a fixed size to center it in the safe area. Padding on the composition root does not move clip elements, so put the insets on the clips themselves. Vertical's safe area sits high (288 top, 672 bottom), so center there, not on the frame.
|
|
227
|
+
5. Restack with `[data-format=vertical]` and `[data-format=square]` selectors: side-by-side rows become columns, a 12-column grid becomes 6. Never make vertical by cropping a landscape layout.
|
|
228
|
+
6. In vertical, set headline and body type 15 to 25% larger than landscape (`calc(var(--u) * 10)` where landscape uses 8), because the phone shows the whole frame smaller.
|
|
229
|
+
7. Motion distances in GSAP use the same tokens: read them once with `getComputedStyle(document.documentElement).getPropertyValue("--u")` and multiply, so a slide is the same share of the frame in every format.
|
|
230
|
+
8. Check each format's hold frame without rendering: `render-scenes.mjs <run-dir> --stills` writes `stills/<format>/sheet.png` per format, and `qa.mjs safe <run-dir> --stills` fails any text outside the format's safe area. Do this once the master is approved (`step-4-deliver.md`, "Other formats (last)"), not on every iteration.
|
|
231
|
+
|
|
232
|
+
`templates/logo-line-draw.html` is a worked example.
|
|
233
|
+
|
|
207
234
|
---
|
|
208
235
|
|
|
209
236
|
## Self-review checklist
|
|
@@ -213,6 +240,7 @@ Before moving to delivery, verify:
|
|
|
213
240
|
- [ ] `<output-dir>/composition-brief.md` exists.
|
|
214
241
|
- [ ] The brief clearly identifies the exact product moments to show.
|
|
215
242
|
- [ ] The composition uses the current Hyperframes workflow, not a hardcoded `luckiest-video-studio` template.
|
|
243
|
+
- [ ] With `formats`, every scene sizes itself with `--w`, `--h`, `--u`, and the safe tokens, and restacks under `[data-format]`; no canvas size in px.
|
|
216
244
|
- [ ] Music file is copied into `<output-dir>/composition/assets/music/`.
|
|
217
245
|
- [ ] At least one visual element subtly reacts to the music (audio-reactive treatment present), or extraction failure is documented.
|
|
218
246
|
- [ ] At least 1 major tween is beat-locked to a strong cue (a `strongCue`, or the highest-`strength` beat from `hyperframes beats`) within ±0.15s, marked `// beat-locked` (or natural timing was chosen for readability).
|
|
@@ -43,6 +43,28 @@ For final delivery:
|
|
|
43
43
|
npx hyperframes render --quality high --output ../final.mp4
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
+
## Other formats (last)
|
|
47
|
+
|
|
48
|
+
Formats come after the master 16:9 is approved, never during iteration: every format
|
|
49
|
+
multiplies render time. When the plan lists other formats:
|
|
50
|
+
|
|
51
|
+
1. Render the approved master at delivery quality with `scripts/render-scenes.mjs`
|
|
52
|
+
(no `formats` yet), so `final.mp4` and `clips/` are done.
|
|
53
|
+
2. Add `formats` to `storyboard.json` (for example `["landscape", "vertical", "square"]`).
|
|
54
|
+
3. Check layouts from stills, not video:
|
|
55
|
+
`node <skill-dir>/scripts/render-scenes.mjs <run-dir> --stills` writes one hold
|
|
56
|
+
frame per scene per format to `stills/<format>/` and a `sheet.png` for each.
|
|
57
|
+
Read the sheets, then run `node <skill-dir>/scripts/qa.mjs safe <run-dir> --stills`.
|
|
58
|
+
Fix and repeat; each pass costs about 8s per scene per format, not a render.
|
|
59
|
+
4. Render with the same `--quality` as step 1. The landscape clips are reused from
|
|
60
|
+
the 16:9 render (`reuse` in the log), so only the new formats render.
|
|
61
|
+
5. The `luckiest-video-watcher` pass already ran on the master. Do not watch the new
|
|
62
|
+
formats end to end: the stills sheets cover their layout, so watch them only at
|
|
63
|
+
times a gate flagged (`--timestamps`).
|
|
64
|
+
|
|
65
|
+
A scene's hold frame is `scenes[].hold` seconds into the scene, else 0.5s before
|
|
66
|
+
its cut. Set `hold` on a scene that exits early.
|
|
67
|
+
|
|
46
68
|
## Pick the poster frame
|
|
47
69
|
|
|
48
70
|
The poster is the still shown before the video plays — the first thing anyone sees when it's idle or unplayed. Don't leave it to the raw first frame or an arbitrary timestamp; those land on fades, mid-transitions, blank intro backgrounds, or half-rendered text.
|
|
@@ -150,6 +172,7 @@ After this step, `<output-dir>/` should contain:
|
|
|
150
172
|
```
|
|
151
173
|
<output-dir>/
|
|
152
174
|
final.mp4 — the rendered video
|
|
175
|
+
final-<format>.mp4 — one per format instead, when the storyboard lists `formats`
|
|
153
176
|
poster.jpg — the poster (best frame, for <video poster>)
|
|
154
177
|
plan.md — the plan and storyboard
|
|
155
178
|
composition-brief.md — the Hyperframes handoff brief
|
|
@@ -162,7 +185,7 @@ After this step, `<output-dir>/` should contain:
|
|
|
162
185
|
## Telling the user
|
|
163
186
|
|
|
164
187
|
After everything is done, tell the user:
|
|
165
|
-
- Where the video is (`<output-dir>/final.mp4`)
|
|
188
|
+
- Where the video is (`<output-dir>/final.mp4`, or each `final-<format>.mp4` and where it is meant to post)
|
|
166
189
|
- Where the share copy is
|
|
167
190
|
- One sentence on what the video does creatively
|
|
168
191
|
- Optionally: offer to re-roll a scene, change tone, or try a different angle
|
|
@@ -14,6 +14,7 @@ this file and re-renders only what it touched. Schema:
|
|
|
14
14
|
"mode": "demo",
|
|
15
15
|
"tone": "polished",
|
|
16
16
|
"format": { "width": 1920, "height": 1080, "fps": 30 },
|
|
17
|
+
"formats": ["landscape", "vertical", "square"],
|
|
17
18
|
"hyperframes": "0.8.84",
|
|
18
19
|
"music": { "file": "audio/bed.mp3", "volume": 0.3, "license": "user supplied" },
|
|
19
20
|
"scenes": [
|
|
@@ -27,16 +28,23 @@ this file and re-renders only what it touched. Schema:
|
|
|
27
28
|
|
|
28
29
|
| Field | Meaning |
|
|
29
30
|
|---|---|
|
|
30
|
-
| `format` |
|
|
31
|
+
| `format` | Master size and frame rate. Landscape 1920x1080, vertical 1080x1920, square 1080x1080. Scenes are designed and reviewed at this size. |
|
|
32
|
+
| `formats` | Optional. Render the same scenes once per listed format: `landscape` 1920x1080, `vertical` 1080x1920, `square` 1080x1080, all at `format.fps`. Motion and logo scenes re-lay out for each size (see "Build once, render every format" in `step-3-compose.md`); they are never cropped. Only demo footage is cropped, around `scenes[].focus`. Omit it to render `format` alone. |
|
|
31
33
|
| `hyperframes` | Pinned HyperFrames version so a re-render months later looks the same. |
|
|
32
|
-
| `music` | Optional bed mixed under the joined video, looped and faded out. Licensed files only. |
|
|
34
|
+
| `music` | Optional bed mixed under the joined video, looped and faded out. Licensed files only. `offset` skips into the track and `at` starts it in the video, so a chosen kick lands on a chosen moment: a kick 10.4s into the track on a cut at 3.0s is `"offset": 7.4, "at": 0` or `"offset": 10.4, "at": 3`. |
|
|
35
|
+
| `facts` | Every number, price, and id the video shows, as short phrases: `["3 unpaid invoices, $4,792.44 total", "Tom Becker INV-0039, 5 days late"]`. Write them in Step 2 from the project's real data. `qa.mjs facts` fails any on-screen number with two or more digits, a currency sign, a percent, or an id that no fact contains, and any em dash on screen. Add decorative numbers (a timecode, a year) here too. |
|
|
36
|
+
| `loudness` | Integrated loudness of `final.mp4` in LUFS, default `-14` (the streaming norm), two-pass with a -1.2 dBTP ceiling. `false` skips it. |
|
|
37
|
+
| `sfx` | Optional `{ "file": "audio/sfx.wav", "volume": 1 }` from `scripts/sfx-cues.mjs`, mixed under the joined video at 0 s. Cue times are global, so re-run the mixer after a scene's length changes. |
|
|
33
38
|
| `scenes[].id` | Lowercase and hyphens. Stable: edits refer to scenes by id. |
|
|
34
39
|
| `scenes[].kind` | `motion` (HyperFrames scene), `logo` (HyperFrames logo recipe), `demo` (footage). |
|
|
35
40
|
| `scenes[].composition` | For motion and logo, the sub-composition under `composition/`. Default `compositions/<id>.html`. |
|
|
36
41
|
| `scenes[].source`, `sourceStart` | For demo, the footage file and where to start in it. |
|
|
42
|
+
| `scenes[].focus` | For demo, `{ "x": 0.5, "y": 0.5 }` as fractions of the source frame: the point kept in view when the footage is cropped to a different shape (a 16:9 screen recording in a vertical cut). Set it on the cursor, the face, or the UI the line talks about. |
|
|
37
43
|
| `scenes[].variables` | Copy, colors, and file paths the composition reads. Keep editable values here, not hardcoded in HTML. |
|
|
38
44
|
| `scenes[].assets` | Other files the scene depends on (logo SVG, shared CSS). Changing one re-renders the scene. |
|
|
45
|
+
| `scenes[].states` | For a one-shape morph scene, the state list: `{ t, label, shape, cursor? }` per state, local times. See "One shape, never cut" in `step-2-plan.md`. |
|
|
39
46
|
| `scenes[].line` | One line on what the scene says or shows. Goes into `TIMING.md`. |
|
|
47
|
+
| `scenes[].hold` | Optional. Seconds into the scene where `--stills` captures its hold frame. Default 0.5s before the cut. |
|
|
40
48
|
|
|
41
49
|
## Rendering
|
|
42
50
|
|
|
@@ -45,6 +53,7 @@ node <skill-dir>/scripts/render-scenes.mjs <run-dir> # render
|
|
|
45
53
|
node <skill-dir>/scripts/render-scenes.mjs <run-dir> --scene stat # force one scene
|
|
46
54
|
node <skill-dir>/scripts/render-scenes.mjs <run-dir> --quality draft # fast pass while iterating
|
|
47
55
|
node <skill-dir>/scripts/render-scenes.mjs <run-dir> --no-join # clips only
|
|
56
|
+
node <skill-dir>/scripts/render-scenes.mjs <run-dir> --stills # hold-frame PNGs per format, no render
|
|
48
57
|
```
|
|
49
58
|
|
|
50
59
|
The script hashes each scene's JSON, its composition or footage, and its `assets`.
|
|
@@ -53,6 +62,16 @@ scenes and leaves the rest as they are. Every clip is normalized to the same siz
|
|
|
53
62
|
frame rate, and a stereo audio track, so the join is a lossless concat. It writes
|
|
54
63
|
`clips/NN-id.mp4`, `final.mp4`, and `TIMING.md`.
|
|
55
64
|
|
|
65
|
+
With `formats`, each format gets its own folder and file: `clips/<format>/NN-id.mp4`
|
|
66
|
+
and `final-<format>.mp4`, each with its own cache, so adding a format renders only
|
|
67
|
+
that format. A landscape format reuses the clips of a finished single-format 16:9
|
|
68
|
+
render at the same `--quality`, so adding formats after the master is done renders
|
|
69
|
+
only the new sizes (demo footage re-crops, which is ffmpeg only). For motion and logo scenes it writes a stamped copy of the composition
|
|
70
|
+
next to the original (`compositions/<id>.<format>.html`, root `data-width`,
|
|
71
|
+
`data-height`, and `data-format` set, plus `:root{--w;--h;--u}`), renders it, and
|
|
72
|
+
deletes the copy. A scene that sizes itself with those tokens re-lays out; one
|
|
73
|
+
hardcoded to 1920x1080 px gets clipped, which `qa.mjs` catches.
|
|
74
|
+
|
|
56
75
|
It runs `hyperframes` when it is on the PATH, otherwise `npx hyperframes@<pinned
|
|
57
76
|
version>`. Before the first `npx` run in a session, tell the user it downloads
|
|
58
77
|
HyperFrames from npm and ask.
|
|
@@ -75,4 +94,6 @@ HyperFrames from npm and ask.
|
|
|
75
94
|
| "Make the demo part shorter" | `duration` or `sourceStart` of that demo scene |
|
|
76
95
|
| "Swap scenes 2 and 4" | Reorder `scenes`; clips are reused and renamed, nothing re-renders |
|
|
77
96
|
| "Different logo in the outro" | Replace the file listed in that scene's `assets` |
|
|
78
|
-
| "Vertical version" |
|
|
97
|
+
| "Vertical version" | Add `"vertical"` to `formats`; existing formats keep their clips and only the new one renders |
|
|
98
|
+
| "Square too" | Add `"square"` to `formats` |
|
|
99
|
+
| "The crop cuts off the button" | Move that demo scene's `focus` toward the button, then `--scene <id>` |
|