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.
Files changed (499) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/commands/plan.md +1 -0
  4. package/package.json +1 -1
  5. package/skills/luckiest-brandkit/CHANGELOG.md +8 -0
  6. package/skills/luckiest-brandkit/SKILL.md +10 -3
  7. package/skills/luckiest-brandkit-sizing/CHANGELOG.md +13 -0
  8. package/skills/luckiest-brandkit-sizing/SKILL.md +126 -0
  9. package/skills/luckiest-brandkit-sizing/references/signage-and-print.md +60 -0
  10. package/skills/luckiest-plan/SKILL.md +1 -0
  11. package/skills/luckiest-research/CHANGELOG.md +5 -0
  12. package/skills/luckiest-research/SKILL.md +8 -4
  13. package/skills/luckiest-video-studio/ATTRIBUTION.md +13 -1
  14. package/skills/luckiest-video-studio/CHANGELOG.md +66 -0
  15. package/skills/luckiest-video-studio/SECURITY.md +5 -2
  16. package/skills/luckiest-video-studio/SKILL.md +71 -31
  17. package/skills/luckiest-video-studio/references/audio.md +61 -10
  18. package/skills/luckiest-video-studio/references/concat.md +3 -2
  19. package/skills/luckiest-video-studio/references/lessons.md +44 -0
  20. package/skills/luckiest-video-studio/references/step-2-plan.md +32 -1
  21. package/skills/luckiest-video-studio/references/step-3-compose.md +28 -0
  22. package/skills/luckiest-video-studio/references/step-4-deliver.md +24 -1
  23. package/skills/luckiest-video-studio/references/storyboard.md +24 -3
  24. package/skills/luckiest-video-studio/scripts/qa.mjs +167 -5
  25. package/skills/luckiest-video-studio/scripts/qa.test.mjs +99 -1
  26. package/skills/luckiest-video-studio/scripts/render-scenes.mjs +196 -71
  27. package/skills/luckiest-video-studio/scripts/render-scenes.test.mjs +109 -0
  28. package/skills/luckiest-video-studio/scripts/sfx-cues.mjs +116 -0
  29. package/skills/luckiest-video-studio/scripts/sfx-cues.test.mjs +76 -0
  30. package/skills/luckiest-video-studio/scripts/stamp-format.mjs +26 -0
  31. package/skills/luckiest-video-studio/scripts/storyboard.schema.json +23 -0
  32. package/skills/luckiest-video-studio/templates/logo-line-draw.html +12 -5
  33. package/skills/luckiest-video-studio-art-director/ATTRIBUTION.md +1 -0
  34. package/skills/luckiest-video-studio-art-director/CHANGELOG.md +8 -0
  35. package/skills/luckiest-video-studio-art-director/SKILL.md +18 -5
  36. package/skills/luckiest-video-studio-cards/CHANGELOG.md +18 -0
  37. package/skills/luckiest-video-studio-cards/SKILL.md +22 -7
  38. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-agenda.html +17 -6
  39. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-bigtype.html +15 -5
  40. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-board.html +20 -6
  41. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-checklist.html +27 -6
  42. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-compare.html +40 -9
  43. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-deck.html +26 -6
  44. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-dossier.html +28 -9
  45. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-filmstrip.html +36 -5
  46. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-grid6.html +24 -6
  47. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-indexset.html +34 -6
  48. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-maplegend.html +39 -8
  49. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-matrix.html +35 -7
  50. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-numlist.html +26 -7
  51. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-outline.html +26 -6
  52. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-phases.html +34 -7
  53. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-quad.html +41 -10
  54. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-roadmap.html +66 -17
  55. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-stepper.html +42 -7
  56. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-toc.html +26 -8
  57. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-overview-vtimeline.html +35 -9
  58. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-bracket.html +16 -4
  59. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-circle.html +21 -5
  60. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-classified.html +25 -7
  61. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-collage.html +27 -9
  62. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-correction.html +19 -7
  63. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-crt.html +15 -4
  64. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-cutout.html +18 -8
  65. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-fullbleed.html +18 -5
  66. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-highlight.html +15 -5
  67. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-indexcard.html +18 -5
  68. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-map.html +20 -8
  69. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-markerbox.html +12 -5
  70. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-numeral.html +21 -7
  71. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-split.html +25 -9
  72. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stacked.html +26 -10
  73. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-stamp.html +14 -5
  74. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-ticker.html +26 -9
  75. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-section-tornstrip.html +13 -4
  76. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-annotated.html +29 -9
  77. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-arc.html +25 -7
  78. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-axis.html +34 -14
  79. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bar.html +17 -8
  80. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-bracket.html +24 -8
  81. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-calendar.html +24 -9
  82. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-callout.html +24 -5
  83. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-columns.html +27 -9
  84. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-corner.html +22 -9
  85. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-dots.html +27 -8
  86. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-engraving.html +30 -8
  87. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-footnote.html +20 -8
  88. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-frac.html +24 -8
  89. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-heat.html +22 -8
  90. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-isotype.html +29 -8
  91. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ledger.html +18 -6
  92. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-left.html +27 -10
  93. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-magnifier.html +21 -8
  94. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-map.html +21 -9
  95. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-meter.html +26 -9
  96. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-multiplier.html +27 -12
  97. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-odo.html +18 -5
  98. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pack.html +41 -17
  99. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-photo.html +18 -7
  100. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pie.html +25 -8
  101. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-postage.html +24 -8
  102. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-pricetag.html +25 -11
  103. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-quote.html +21 -8
  104. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ranking.html +25 -10
  105. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-receipt.html +24 -12
  106. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-ribbon.html +34 -12
  107. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-semi.html +22 -7
  108. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-spotlight.html +23 -9
  109. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-stamp.html +24 -7
  110. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-steps.html +30 -9
  111. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-tape.html +33 -12
  112. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-torn.html +22 -9
  113. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-trend.html +23 -9
  114. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-vs.html +30 -10
  115. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat-window.html +38 -25
  116. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-stat.html +23 -4
  117. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier1/t1-timeline.html +41 -6
  118. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-label.html +10 -3
  119. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-bracket.html +9 -2
  120. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-caption.html +12 -5
  121. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-circle.html +10 -3
  122. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-definition.html +10 -3
  123. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-footnote.html +11 -4
  124. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-magnify.html +9 -2
  125. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pin.html +9 -2
  126. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-pullquote.html +10 -3
  127. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-spotlight.html +15 -2
  128. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-sticky.html +9 -2
  129. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-tag.html +10 -3
  130. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lb-underline.html +9 -2
  131. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lower-third.html +9 -2
  132. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-badge.html +10 -3
  133. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-barslab.html +26 -7
  134. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-bracket.html +9 -2
  135. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-clapper.html +9 -2
  136. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-highlight.html +9 -2
  137. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-indextab.html +10 -3
  138. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-rail.html +9 -2
  139. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-ribbon.html +9 -2
  140. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stacked.html +9 -2
  141. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-stamp.html +9 -2
  142. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-sticky.html +9 -2
  143. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/cards/tier2/t2-lt-typecard.html +9 -2
  144. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/style.json +1 -1
  145. package/skills/luckiest-video-studio-cards/packs/01-paper-collage/tokens.css +18 -8
  146. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-agenda.html +23 -5
  147. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-beforeafter.html +30 -6
  148. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bento.html +34 -8
  149. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-bigleft.html +28 -6
  150. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-callouts.html +36 -7
  151. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cardrow5.html +17 -4
  152. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-checklist.html +11 -3
  153. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-cycle.html +30 -6
  154. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-dashboard.html +32 -5
  155. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck2.html +21 -5
  156. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-deck3.html +18 -4
  157. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-duallist.html +24 -4
  158. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featurecompare.html +19 -5
  159. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-featuregrid.html +25 -4
  160. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flashcards.html +22 -5
  161. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-flow.html +23 -4
  162. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-funnel.html +19 -5
  163. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-gantt.html +22 -6
  164. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid6.html +17 -4
  165. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-grid9.html +15 -4
  166. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-iconlist.html +18 -3
  167. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-journey.html +41 -6
  168. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-kpirow.html +24 -6
  169. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-layers.html +20 -5
  170. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-legend.html +19 -4
  171. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-levels.html +19 -5
  172. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-logowall.html +18 -6
  173. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mappoints.html +18 -5
  174. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-matrix.html +24 -6
  175. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-milestones.html +38 -5
  176. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-mindmap.html +35 -12
  177. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-nested.html +13 -5
  178. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-network.html +76 -31
  179. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-notifs.html +21 -3
  180. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-numlist.html +16 -4
  181. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-orgchart.html +36 -16
  182. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-outline.html +17 -3
  183. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-phases.html +23 -5
  184. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pipeline.html +25 -4
  185. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pricing.html +36 -8
  186. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-profiles.html +20 -5
  187. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-proscons.html +21 -6
  188. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-pyramid.html +17 -4
  189. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quad.html +13 -5
  190. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-quotegrid.html +19 -5
  191. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-ranked.html +19 -5
  192. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-roadmap.html +27 -5
  193. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spectrum.html +29 -6
  194. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-split3.html +24 -5
  195. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-spotlightcard.html +34 -8
  196. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-statgrid.html +17 -5
  197. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-steps.html +25 -4
  198. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-summary.html +22 -5
  199. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tiercompare.html +29 -6
  200. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-timeline.html +26 -5
  201. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-toc.html +15 -5
  202. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tree.html +40 -15
  203. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-tricards.html +22 -4
  204. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-venn.html +34 -9
  205. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-overview-vstable.html +24 -5
  206. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ascend.html +10 -4
  207. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-aurora-bars.html +12 -4
  208. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-beam.html +11 -4
  209. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-boxed.html +26 -13
  210. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-breath.html +14 -3
  211. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-chaptercard.html +13 -4
  212. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-column-light.html +17 -9
  213. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-constellation.html +15 -6
  214. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-countdown.html +10 -4
  215. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-curtain.html +9 -3
  216. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-dawn.html +13 -4
  217. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-depth.html +18 -12
  218. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-divider.html +10 -3
  219. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-drift-grid.html +11 -4
  220. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-duotone.html +16 -4
  221. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-eclipse.html +11 -4
  222. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-emblem.html +12 -5
  223. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-flare-sweep.html +14 -6
  224. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-glow-rule.html +22 -13
  225. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gradient-word.html +15 -5
  226. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-gridfloor.html +16 -2
  227. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-halo.html +16 -5
  228. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-horizon.html +16 -4
  229. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-index.html +25 -9
  230. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-kinetic.html +10 -3
  231. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-lensflare.html +10 -3
  232. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-liquid.html +12 -5
  233. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-marquee.html +34 -25
  234. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-mesh.html +13 -4
  235. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-monolith.html +9 -3
  236. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-node-title.html +17 -1
  237. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-numeral.html +13 -4
  238. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orb.html +12 -2
  239. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-orbit.html +9 -1
  240. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-particles.html +7 -1
  241. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-pill.html +7 -1
  242. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-portal.html +14 -2
  243. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-prism.html +15 -2
  244. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-question.html +14 -2
  245. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-quoteopen.html +11 -2
  246. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-reveal-mask.html +6 -1
  247. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ribbon.html +12 -1
  248. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-ripple.html +8 -1
  249. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-searchbar.html +15 -2
  250. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-slab.html +9 -2
  251. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sphere-top.html +12 -3
  252. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-split-reveal.html +24 -7
  253. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-splitpanel.html +27 -4
  254. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight-cone.html +16 -3
  255. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-spotlight.html +10 -2
  256. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stack.html +17 -4
  257. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-stacked-words.html +14 -3
  258. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-starfield.html +7 -1
  259. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-sweep.html +11 -2
  260. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-tunnel.html +14 -4
  261. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-type-scale.html +9 -2
  262. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-typed.html +9 -2
  263. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-underline-grow.html +13 -1
  264. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-waveform.html +11 -2
  265. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-section-wordmark.html +11 -3
  266. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-annot.html +22 -7
  267. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-beforeafter.html +23 -6
  268. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bigpercent.html +10 -3
  269. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bracketstat.html +13 -3
  270. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-bubble.html +7 -3
  271. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-cbars.html +8 -3
  272. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-clockface.html +8 -4
  273. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-column.html +12 -4
  274. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-compass.html +7 -3
  275. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-counterpill.html +11 -3
  276. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-curve.html +22 -10
  277. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-delta.html +13 -4
  278. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dial.html +9 -3
  279. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-donut.html +15 -4
  280. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-dotgrid.html +14 -4
  281. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-figure.html +9 -3
  282. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fillshape.html +11 -3
  283. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-fraction.html +11 -5
  284. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-funnel.html +24 -8
  285. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-growtharrow.html +18 -4
  286. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-heatcell.html +8 -3
  287. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-isotype.html +16 -4
  288. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-layered.html +10 -3
  289. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-mega.html +9 -3
  290. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-meter.html +9 -4
  291. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-milestone.html +9 -3
  292. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-money.html +16 -4
  293. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiplier.html +12 -4
  294. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-multiring.html +10 -3
  295. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-needle.html +10 -3
  296. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-nodes.html +50 -9
  297. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-odometer.html +9 -4
  298. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitmoons.html +21 -8
  299. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-orbitstat.html +9 -3
  300. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pair.html +18 -3
  301. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-percentile.html +11 -3
  302. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-pictobar.html +11 -4
  303. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-polar.html +12 -2
  304. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-quotestat.html +15 -5
  305. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-radialbars.html +18 -6
  306. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-range.html +12 -5
  307. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-rank.html +13 -5
  308. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ratio.html +10 -5
  309. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-ring.html +10 -3
  310. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-risewall.html +18 -2
  311. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-score.html +11 -4
  312. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-segbar.html +9 -3
  313. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-semigauge.html +9 -4
  314. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-sparkline.html +9 -3
  315. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-spectrum.html +9 -2
  316. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-split.html +14 -4
  317. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-stackedbars.html +9 -4
  318. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tickerstat.html +18 -5
  319. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-tiles.html +18 -4
  320. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-timer.html +14 -4
  321. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-trendline.html +18 -4
  322. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-underscore.html +9 -3
  323. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-versus.html +18 -5
  324. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waffle.html +18 -4
  325. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier1/t1-stat-waterfall.html +9 -4
  326. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-badge.html +13 -4
  327. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-brace.html +13 -4
  328. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bracket.html +13 -4
  329. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-bubble.html +16 -4
  330. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-byline.html +17 -5
  331. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-callout.html +13 -4
  332. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-category.html +14 -5
  333. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-checkmark.html +13 -4
  334. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-chipstat.html +13 -4
  335. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-comparemini.html +14 -5
  336. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-coord.html +26 -8
  337. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-counter.html +17 -6
  338. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-crosshair.html +18 -6
  339. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-dashed.html +19 -5
  340. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-definition.html +14 -5
  341. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-deltachip.html +15 -6
  342. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-eyebrow.html +14 -5
  343. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-fact.html +14 -5
  344. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-flag.html +20 -7
  345. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-formula.html +17 -7
  346. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-hash.html +17 -5
  347. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-highlightbox.html +13 -4
  348. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-iconchip.html +13 -4
  349. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-info.html +14 -5
  350. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-infocard.html +13 -4
  351. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keycap.html +13 -4
  352. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-keyword.html +12 -3
  353. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-leader.html +16 -5
  354. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-legend.html +14 -5
  355. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-measure.html +14 -5
  356. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-meterchip.html +16 -7
  357. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-metric.html +15 -6
  358. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-micropie.html +15 -6
  359. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-minibar.html +15 -6
  360. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-node.html +28 -18
  361. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-note.html +14 -5
  362. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-numbercallout.html +18 -6
  363. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-percent.html +15 -6
  364. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pointer.html +31 -22
  365. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-price.html +20 -8
  366. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-progress.html +15 -6
  367. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-pulse.html +14 -5
  368. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-qmark.html +15 -6
  369. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-quote.html +16 -7
  370. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-rating.html +14 -5
  371. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ribbon.html +19 -6
  372. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-ringmark.html +27 -17
  373. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-search.html +14 -5
  374. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-sparkchip.html +15 -6
  375. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-spec.html +25 -13
  376. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-status.html +15 -6
  377. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-step.html +16 -7
  378. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tag.html +14 -5
  379. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-takeaway.html +13 -4
  380. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tcode.html +18 -6
  381. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-timestamp.html +15 -6
  382. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-toast.html +15 -6
  383. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-tooltip.html +14 -5
  384. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-underline.html +14 -5
  385. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lb-warning.html +16 -7
  386. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-avatar.html +12 -5
  387. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-badgecard.html +12 -6
  388. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-barslide.html +11 -5
  389. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bracket.html +20 -7
  390. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-brandbar.html +13 -7
  391. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-bug.html +12 -5
  392. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-capsule.html +14 -5
  393. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chapterbar.html +12 -5
  394. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-chip.html +11 -5
  395. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cinemastrip.html +20 -8
  396. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cite.html +12 -6
  397. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-clockname.html +11 -5
  398. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-coordbar.html +16 -6
  399. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-corner.html +11 -5
  400. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-cornerframe.html +16 -6
  401. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-countbar.html +13 -7
  402. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dividername.html +26 -6
  403. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dotline.html +11 -5
  404. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-doublecard.html +12 -6
  405. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-dual.html +12 -6
  406. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-edgebar.html +11 -5
  407. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-flipcard.html +15 -5
  408. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-geopin.html +11 -5
  409. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-glasscard.html +11 -5
  410. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradient.html +11 -5
  411. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-gradientbar.html +12 -4
  412. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-handlebar.html +11 -5
  413. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-infochips.html +11 -5
  414. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-lensbar.html +25 -12
  415. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-live.html +12 -6
  416. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-location.html +14 -6
  417. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-logolock.html +14 -6
  418. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-micname.html +14 -6
  419. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minicard.html +13 -5
  420. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-minimal.html +13 -5
  421. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nameplate3d.html +13 -5
  422. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonframe.html +14 -5
  423. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-neonpill.html +13 -6
  424. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-nowplaying.html +15 -7
  425. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-orbitbadge.html +13 -5
  426. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-pill.html +14 -6
  427. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-portraitframe.html +14 -6
  428. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-progressname.html +13 -5
  429. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-quote.html +15 -7
  430. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ratingname.html +14 -6
  431. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ribbon.html +13 -5
  432. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-sidebracket.html +13 -5
  433. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-slidetab.html +15 -6
  434. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-social.html +14 -6
  435. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-spotlightname.html +14 -6
  436. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-stacked.html +13 -5
  437. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-statline.html +13 -5
  438. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-tagrow.html +14 -5
  439. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-thinstrip.html +18 -8
  440. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-ticker.html +29 -7
  441. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-titlebar.html +19 -5
  442. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-trust.html +16 -8
  443. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-typedname.html +13 -5
  444. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-underbar.html +13 -5
  445. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/cards/tier2/t2-lt-waveband.html +14 -6
  446. package/skills/luckiest-video-studio-cards/packs/02-aurora-glass/tokens.css +18 -8
  447. package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier1/t1-stat.html +4 -2
  448. package/skills/luckiest-video-studio-cards/packs/_blueprint/cards/tier2/t2-list.html +5 -2
  449. package/skills/luckiest-video-studio-cards/packs/_blueprint/tokens.css +12 -4
  450. package/skills/luckiest-video-studio-cards/references/card-contract.md +15 -1
  451. package/skills/luckiest-video-studio-cards/scripts/qa-cards.mjs +14 -8
  452. package/skills/luckiest-video-studio-cards/templates/glass-popout/index.html +35 -11
  453. package/skills/luckiest-video-studio-cards/templates/glass-popout/meta.json +6 -1
  454. package/skills/luckiest-video-studio-cards/templates/graph-paper/index.html +15 -10
  455. package/skills/luckiest-video-studio-cards/templates/graph-paper/meta.json +7 -2
  456. package/skills/luckiest-video-studio-cuts/ATTRIBUTION.md +5 -4
  457. package/skills/luckiest-video-studio-cuts/CHANGELOG.md +6 -0
  458. package/skills/luckiest-video-studio-cuts/SKILL.md +19 -11
  459. package/skills/luckiest-video-studio-cuts/scripts/build-cuts-reel.mjs +63 -0
  460. package/skills/luckiest-video-studio-cuts/scripts/build-cuts-reel.test.mjs +35 -0
  461. package/skills/luckiest-video-studio-motion/ATTRIBUTION.md +4 -0
  462. package/skills/luckiest-video-studio-motion/CHANGELOG.md +9 -0
  463. package/skills/luckiest-video-studio-motion/SKILL.md +7 -3
  464. package/skills/luckiest-video-studio-motion/references/vocabulary.md +21 -0
  465. package/skills/luckiest-video-studio-motion/templates/spring.js +50 -0
  466. package/skills/luckiest-video-studio-motion/templates/spring.test.mjs +51 -0
  467. package/skills/luckiest-video-studio-recreate/ATTRIBUTION.md +2 -0
  468. package/skills/luckiest-video-studio-recreate/CHANGELOG.md +11 -0
  469. package/skills/luckiest-video-studio-recreate/SKILL.md +46 -7
  470. package/skills/luckiest-video-studio-reel/CHANGELOG.md +6 -0
  471. package/skills/luckiest-video-studio-reel/SKILL.md +9 -4
  472. package/skills/luckiest-video-studio-reel/templates/reel.html +36 -18
  473. package/skills/luckiest-video-studio-reference/CHANGELOG.md +4 -0
  474. package/skills/luckiest-video-studio-reference/SKILL.md +10 -3
  475. package/skills/luckiest-video-studio-review/ATTRIBUTION.md +54 -0
  476. package/skills/luckiest-video-studio-review/CHANGELOG.md +44 -0
  477. package/skills/luckiest-video-studio-review/LICENSE-motion-os +21 -0
  478. package/skills/luckiest-video-studio-review/SKILL.md +125 -0
  479. package/skills/luckiest-video-studio-review/editor/index.html +885 -0
  480. package/skills/luckiest-video-studio-review/editor/serve.mjs +111 -0
  481. package/skills/luckiest-video-studio-review/references/apply-feedback.md +71 -0
  482. package/skills/luckiest-video-studio-review/scripts/build-reel.mjs +96 -0
  483. package/skills/luckiest-video-studio-review/scripts/build-reel.test.mjs +62 -0
  484. package/skills/luckiest-video-watcher/ATTRIBUTION.md +37 -0
  485. package/skills/luckiest-video-watcher/CHANGELOG.md +70 -0
  486. package/skills/luckiest-video-watcher/LICENSE-claude-video +21 -0
  487. package/skills/luckiest-video-watcher/SKILL.md +181 -0
  488. package/skills/luckiest-video-watcher/references/watch-guide.md +159 -0
  489. package/skills/luckiest-video-watcher/scripts/config.py +174 -0
  490. package/skills/luckiest-video-watcher/scripts/download.py +207 -0
  491. package/skills/luckiest-video-watcher/scripts/frames.py +758 -0
  492. package/skills/luckiest-video-watcher/scripts/gemini.py +162 -0
  493. package/skills/luckiest-video-watcher/scripts/local_whisperx.py +147 -0
  494. package/skills/luckiest-video-watcher/scripts/runtime.py +35 -0
  495. package/skills/luckiest-video-watcher/scripts/setup.py +338 -0
  496. package/skills/luckiest-video-watcher/scripts/transcribe.py +113 -0
  497. package/skills/luckiest-video-watcher/scripts/watch.py +430 -0
  498. package/skills/luckiest-video-watcher/scripts/whisper.py +425 -0
  499. 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 Concat editor project to trim, caption, and export (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."
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.8.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 timeline project, not just
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.8.1" }`. If it returns
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.8.1", matched: true, success: <true if the skill completed, false otherwise> }`.
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` | `landscape` |
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 | `concat` |
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
- concat/ the Concat project (default editor); project.concat.txt holds its path
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
- For timeline editing, Concat (`concat-cli` on `PATH`, see
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 five gates pass or each failure is explained in `TIMING.md`, no scene is
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
- **Read:** [references/concat.md](references/concat.md)
274
-
275
- Write the Concat project with `scripts/assemble-concat.mjs <run-dir>`. If
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. **Ask again.** "Change scene 3's headline" edits `storyboard.json` and
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
- 2. **Timeline.** Open the project named in `project.concat.txt` in Concat to trim,
282
- reorder, caption, add effects, and export.
283
- With `--editor openscreen`, run `scripts/assemble-openscreen.mjs` instead (or as
284
- well) for cursor zoom on demo recordings. See
285
- [references/openscreen.md](references/openscreen.md).
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
- 3. **After Effects** (with `--ae`). Hand the run folder to the
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
- Read `storyboard.json` from the run folder. Change only the scenes the request
296
- touches, re-render them with `scripts/render-scenes.mjs --scene <id>`, rejoin
297
- `final.mp4` and `TIMING.md`, then rerun `scripts/assemble-concat.mjs`. Never
298
- rebuild untouched scenes. Rerunning it starts a fresh Concat project and keeps the
299
- old one as `concat-<timestamp>/`, so tell the user where any edits they made in
300
- Concat now live. With `--editor openscreen` or `diffusion`, rerun
301
- that editor's script too.
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
- - Align SFX to the **start** of the animation, not the end
193
- - Entry pop: 0.0–0.1s before the element's first visible frame
194
- - Transition: at the transition start time
195
- - Success ding: at the moment the metric/stat is fully visible
196
- - For staggered elements: usually accent the first, final, or strongest beat; only score every item when that rhythm is intentional and still feels clean
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
- "Horse Tinder" scales in at 0.3s → SFX: impact/impactSoft_medium_001 at 0.2s
202
- Tagline fades up at 0.8s → (no SFX, let the reveal carry)
203
- Transition at 3.0s → SFX: interface/drop_001 at 2.9s
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 at 0.55-0.85, with softer values for polished/deadpan.
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`, the default)
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. That is why it is the default editor. Use OpenScreen
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
- ## Audio planning
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` | Output size and frame rate. Landscape 1920x1080, vertical 1080x1920, square 1080x1080. |
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" | Change `format`; every scene re-renders |
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>` |